Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ICS-TestBed-Framework — 部署具有 IEC 60870-5-104 和 OPC-UA 节点的逼真虚拟 SCADA/ICS 测试平台,支持攻击模拟、合法数据包生成和红队安全演练。 | Kitploit
工具/GitHubGitHub/pmaynard/ics-testbed-framework
数据包嗅探与分析SCADA/ICS安全网络安全渗透测试红队实验室与实践
GitHubpmaynard/ics-testbed-framework

ICS-TestBed-Framework

部署具有 IEC 60870-5-104 和 OPC-UA 节点的逼真虚拟 SCADA/ICS 测试平台,支持攻击模拟、合法数据包生成和红队安全演练。

查看仓库
70267年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ICS TestBed Framework

本文提出了一个可扩展的框架,用于在本地(或远程)自动部署多台虚拟机,以复现监控与数据采集(SCADA)网络。该框架包括多个模拟传感器和执行器的虚拟主机,并由人机界面(HMI)控制这些主机。 该框架包含一组自动化脚本,用于构建和部署数量可变的虚拟机,这些虚拟机预先配置为充当远程终端单元(RTU)、HMI 或数据历史记录器(Data Historian)。本工作包含符合标准的 IEC 60870-5-104(IEC104)和 OPC 统一架构(OPC-UA)实现,并具备支持 Modbus-TCP(Modbus)和 IEC61850 等其他协议的能力。

这使研究人员能够构建可配置为复现真实 SCADA 网络部署的测试平台。该框架基于开源库构建,并在自由软件基金会批准的许可证(GNU General Public License version 3)下发布。

示例操作

asciicast

潜在用例

  • 数据包生成:第一个用例的目标是从大量设备生成网络流量,并具有高度的领域保真度,理想情况下流量中应包含过程信息。如前所述,从实时系统创建数据集并不总是可行的:这非常耗费人力,需要找到合适的分流点并获得工厂运营方的批准。这可能会受到工厂运营和策略的限制,因为干扰正在运行的网络可能导致不可预见的情况并泄露可识别信息。数据包生成可用于在将拟议的 SCADA 网络更改部署到实时系统之前对其进行测试。它还可以使用看似合法的数据包对设备进行压力测试。有趣的研究用例包括对尚未应用于 ICS 网络的不同网络范式(如 ICN 或 IPv6)进行实验。

  • 攻击模拟:该用例考虑对 SCADA 系统进行复杂攻击的模拟,旨在对复制的 ICS 网络进行风险分析,同时不影响实时系统。红队可以使用该测试平台尝试攻破测试平台节点,同时分析后果并进行完整的数据包捕获分析。如果攻击成功,可以在部署额外对策的情况下重新执行该过程,从而在安全背景下测试新对策及其对现场流程的影响。红队演练的网络捕获可以发布为开放数据集,用于验证 IDS,其他研究人员可以复现并确认其结果。

  • 代理基准测试:该用例的目标是支持基于代理的主机系统基准测试,由于供应商限制,这类测试通常不会在实时系统上执行。除非代理获得供应商的信任,否则通常被禁止部署,否则会有违约风险。通过使用能够准确代表真实工业现场的测试平台,可以在不造成干扰的情况下监控基于代理的软件的使用情况。只要测试平台可以自由修改、功能准确并且能够与物理硬件集成,就可以对代理进行基准测试。

  • 扩展受限硬件:最后一个用例是扩展现有的物理测试平台,以包含现有硬件无法实现的通信协议和配置。这可能需要使用网络模拟器来扩展网络设备,以及使用过程模拟器来扩展过程控制设备。通过将虚拟硬件和物理硬件耦合在一起,可以创建复杂且高度逼真的测试平台,从而能够创建和分析结合多种协议和设备的大型部署。此用例可以与其他用例一起使用,以增强其效果。

本地构建和运行

克隆仓库并安装所需依赖:

root@kitploit:~
git clone --recurse-submodules [email protected]:PMaynard/ICS-TestBed-Framework.git
sudo apt install openjdk-8-jdk maven

构建:

root@kitploit:~
mvn clean package
mvn package -DskipTests # Skip tests.

启动一个 RTU:

root@kitploit:~
java -jar node/target/node-1.0.jar
shell> rtu
shell> rtu-iec104port 2404
shell> rtu-listen 127.0.0.1
shell> run

启动一个 HMI:

root@kitploit:~
java -jar node/target/node-1.0.jar
shell> hmi
shell> hmi-interval 1000
shell> remote-hosts 127.0.0.1
shell> run

在虚拟机中自动部署

默认配置将部署 1 个 HMI 和 4 个 RTU。HMI 将使用 IEC104 和 OPC-UA 集成各 RTU。各 RTU 配置为返回随机过程数据。

先决条件 (Vagrant+VirtualBox)

请使用最新版本的 Vagrant,而不是预构建/发行版包,因为这些脚本使用了最新版本 Vagrant 的功能。如果使用 Ubuntu 18.04.1 LTS 应该没问题。

root@kitploit:~
git clone https://github.com/mitchellh/vagrant.git /opt/vagrant
cd /opt/vagrant
bundle install
bundle --binstubs exec
ln -sf /opt/vagrant/exec/vagrant /usr/local/bin/vagrant 

[可选] 创建虚拟机镜像

这是一个可选的开发步骤。它会构建一个预先配置好用于运行测试平台节点的虚拟机镜像。如果你不想创建最新版本,默认选项是从 Vagrant 的镜像仓库获取一个与 master 分支保持同步的稳定镜像。

Packer 用于创建适用于 VirtualBox 和 Vagrant 的虚拟机镜像:

root@kitploit:~
cd vagrant_image
packer build vagrant-node.json
vagrant box add testbed-node vagrant.box

部署

警告 你至少需要 4GB 可用内存。

根据需要向 Vagrantfile 中添加任何附加信息,例如静态 IP 地址和内存使用情况。

默认 IP 设置为 10.50.50.*。.200 用于 HMI,101-105 用于 RTU。每台虚拟机默认分配的内存为 512MB。

root@kitploit:~
vagrant up
vagrant ssh hmi
vagrant ssh rtu-1 # 1-5
vagrant halt
vagrant destroy 

示例数据集

使用默认部署配置创建了一个示例数据集。PCAP 可以从此处下载。IEC104 MITM 是使用位于此处的 ettercap 插件执行的。

  • [主机-扫描 13:45]:使用 Nmap 全网扫描进行基本网络侦察。CMD:'nmap -sn 10.50.50.*'

  • [主机-扫描 13:47]:基本网络侦察,查找可访问的 [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} 服务器。CMD:'nmap 10.50.50.* -p 2404'

  • [主机-扫描 13:47]:对已识别的 [RTU]{acronym-label="RTU" acronym-form="plural+short"} 节点进行完整端口扫描。CMD: 'nmap 10.50.50.101-105 -A'

  • [主机-扫描 13:49]:使用 [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} 协议探测节点的主动 [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} 扫描[^1]。CMD:'nmap -Pn -n -d --script iec-identify.nse --script-args='iec-identify.timeout=500' -p 2404 10.50.50.101-105'

  • [主机-MITM 14:19]:对 RTU-1 和 HMI 执行 [MITM]{acronym-label="MITM" acronym-form="singular+short"}。CMD:'ettercap -i enp0s8 -T -M arp -P spoof_104 /10.50.50.101/ /10.50.50.150/'

数据集的数量明细如下所示:

相关项目

  • https://github.com/flesueur/mi-lxc
  • https://github.com/nsec/the-internet
  • https://minicps.readthedocs.io/en/latest/

引用

请使用以下格式引用该框架:

root@kitploit:~
@conference{
 author   = "Peter Maynard and Kieran McLaughlin and Sakir Sezer",
 title 	  = "An Open Framework for Deploying Experimental SCADA Testbed Networks",
 journal  = "5th International Symposium for ICS & SCADA Cyber Security Research",
 year 	  = "2018"
}

数据集可以使用 DOI 引用:10.6084/m9.figshare.6133457.v1

完整论文可在以下网址找到:https://petermaynard.co.uk/publication/an-open-framework-for-deploying-experimental-scada-testbed-networks/

下载工具
主机IPIEC104OPC-UA其他总计
HMI10.50.50.15026,158017,68843,846
Historian10.50.50.151014,69514,92729,622
RTU-110.50.50.1013,5922,9405,54312,075
RTU-210.50.50.1023,6652,9415,87612,482
RTU-310.50.50.1033,6682,9405,79312,404
RTU-410.50.50.1043,6902,9405,77112,404
RTU-510.50.50.1053,5769307,93312,442
MITM10.50.50.992,39003,4495,839
SCAN10.50.50.315028,35128,366