
工业控制系统(ICS)通常被安全行业用来测试网络和应用中的漏洞。在这里,您可以找到综合工业控制系统(ICS)工具列表,其中包括在所有企业环境中执行渗透测试操作。
工业管理系统(ICS / SCADA)现在是网络攻击者的主要目标,这些攻击者试图破坏生产基地和公共设施
工业控制系统(ICS)工具
| CSET | 网络安全评估工具(CSET®)协助组织保护其关键的国家网络资产。这个工具为用户提供了一个系统的和可重复的方法来评估他们的网络系统和网络的安全状况。它包括与所有工业控制和IT系统相关的高级和详细问题。 |
|---|
| Digital Bond’s 3S CoDeSys Tools | Digital Bond创建了三个与运行CoDeSys的PLC进行交互的工具,包括命令外壳,文件传输和NMap脚本。 |
| Digital Bond’s ICS Enumeration Tools | Redpoint是一个数字债券研究项目,用于使用nmap扩展来枚举ICS应用程序和设备。它可以在评估期间用于发现ICS设备并提取有助于二次测试的信息。Redpoint工具使用合法的协议或应用程序命令来发现和枚举设备和应用程序。没有任何努力来利用或崩溃任何东西,但要明智和谨慎。 |
| GRASSMARLIN | GRASSMARLIN为工业控制系统(ICS)和监控和数据采集(SCADA)网络提供IP网络环境意识,以支持网络安全。被动地映射并直观显示ICS / SCADA网络拓扑结构,同时安全地对这些关键的网络物理系统进行设备发现,记帐和报告。 |
| mbtget | mbtget – 简单的perl脚本,用于从命令行创建一些modbus事务。 |
| MiniCPS | MiniCPS:新加坡科技与设计大学(SUTD)网络物理系统安全研究工具包。 |
| MODBUS Penetration Testing Framework | smod是一种模块化的框架,可以用来测试modbus协议所需的各种诊断和攻击功能。这是一个使用Python和Scapy的完整的Modbus协议实现。该框架可用于执行漏洞评估。 |
| ModbusPal | ModbusPal是MODBUS从站模拟器。其目的是提供一个易于使用的界面,并具有复制和实际复制MODBUS环境的功能。 |
| ModScan | ModScan是一种新工具,用于映射基于SCADA MODBUS TCP的网络。 |
| NetToPLCSim | 用于PLC仿真软件Siemens PLCSim的TCP / IP网络扩展。 |
| Opendnp3 | Opendnp3是Apache许可证下提供的IEEE-1815(DNP3)的实际参考实现。 |
| PLCinject | PLCinject可用于将代码注入到PLC中。 |
| plcscan | 通过s7comm或modbus协议扫描PLC设备的工具。 |
| Quickdraw IDS | Digital Bond的Quickdraw IDS项目包括用于SCADA设备的Snort规则和用于网络通信的所谓预处理器。预处理器提供了显着的附加价值,因为它们能够重建Snort使用的协议和状态。 |
| SCADAShutdownTool | SCADAShutdownTool是一个工业控制系统自动化和测试工具,允许安全研究人员和专家测试SCADA安全系统,枚举从属控制器,读取控制器的寄存器值并重写寄存器数据。 |
| Snap7 | Snap7是一款开源的32/64位多平台以太网通信套件,用于与西门子S7 PLC进行本地连接。新款CPU 1200/1500,旧款S7200,小型LOGO 0BA7 / 0BA8和SINAMICS Drives也得到部分支持。 |
| S7 Password Bruteforcer | 使用字典强制从PCAP使用的S7实例密码的工具, 由SCADAStrangelove创建。 |
| splonebox | splonebox是一款专注于模块化的开源网络评估工具。它提供了对网络及其设备的持续分析。一个主要的设计决策是定制插件的开发,包括用于工业通信协议的插件。 |
| Wireshark | Wireshark是世界上最重要的网络协议分析器。它可以让你从微观层面看到网络上发生的事情。这是许多行业和教育机构的事实(并且通常是法律上的)标准。它支持ICS中使用的许多协议。 |
发行套件
| Moki Linux | Moki是Kali的一项修改,将各种ICS / SCADA工具集成到互联网上,创建一个针对ICS / SCADA专业测试人员的定制Kali Linux。 |
|---|
| SamuraiSTFU | SamuraiSTFU为传统网络和网络渗透测试提供了最佳的安全工具,为嵌入式和射频测试增加了专用工具,在健康的能源行业背景下,文档和样本文件混合在一起,其中包括SCADA、智能仪表和其他类型的能源部门系统提供完整的测试实验室。 |
蜜罐
| Conpot | Conpot是一款低交互式服务器端的工业控制系统蜜罐,其设计易于部署,修改和扩展。它具有易于定制和行为模拟等特点,并且可以通过真实的HMI进行扩展。在Honeynet项目下构建和维护。 |
|---|
| GasPot | GasPot是设计用来模拟Veeder Root Gaurdian AST的蜜罐。这些油罐压力表在石油和天然气工业中常见于加油站油罐,以帮助储存燃料。GasPot被设计为尽可能随机化,所以没有两个实例看起来完全一样。 |
| T-Pot | T-Pot是在码头集装箱中运行的几个蜜罐的组合。Suricata和ELK堆栈用于安全监控和可视化。其中包括Conpot和eMobility,它们是ICS和下一代传输基础设施蜜罐。 |
数据
订阅和新闻
会议和会议资料
相关文献
介绍ICS、SCADA和PLC
下面是部分软件用法及运行截图:
官方在Youtube提供了一些使用视频,视频地址
该脚本是基于Nmap下的脚本,下载后,您需要将其移至NSE Scripts目录中
BACnet-discover-enumerate.nse - 识别和枚举BACnet设备
codesys-v2-discover.nse - 识别并列举CoDeSys V2控制器
enip-enumerate.nse - 识别并列举来自罗克韦尔自动化和其他供应商的EtherNet / IP设备
fox-info.nse - 识别并列举Niagara Fox设备
modicon-info.nse - 识别并列举Schneider Electric Modicon PLC
omron-info.nse - 识别并列举欧姆龙PLC
pcworx-info.nse - 识别并枚举支持PC Worx协议的PLC
proconos-info.nse - 识别并列举支持ProConOS的PLC
s7-enumerate.nse - 识别并列举西门子SIMATIC S7 PLC等。。
详细的使用安装请点击
Modbus是一种标准的串行通信协议,用于连接工业PLC(以及其他许多事物)。通过该模块,您可以通过MBclient对象访问此协议的TCP和RTU版本。可以看看http://en.wikipedia.org/wiki/Modbus了解详情。
安装:
git clone https://github.com/sourceperl/mbtget.gitcd mbtget
perl Makefile.PL
make
sudo make install
用法:

读取modbus服务器127.0.0.1上的地址1000处的字数据
root@kali:~# mbtget -a 1000 127.0.0.1values:1 (ad 01000): 52544
在modbus服务器plc-1.domaine.net的地址1000处读取10个字的数据
root@kali:~# mbtget -n 10 -a 1000 plc-1.domaine.netvalues:1 (ad 01000): 525442 (ad 01001): 336193 (ad 01002): 610104 (ad 01003): 118785 (ad 01004): 601426 (ad 01005): 217147 (ad 01006): 141828 (ad 01007): 643429 (ad 01008): 1851110 (ad 01009): 59909
在modbus服务器127.0.0.1上的地址1000处写入一个字值333,并启用转储模式
root@kali:~# mbtget -w6 333 -a 1000 -d 127.0.0.1Tx
[10 01 00 00 00 06 01] 06 03 E8 01 4D
Rx
[10 01 00 00 00 06 01] 06 03 E8 01 4D
word write ok
MODBUS渗透测试框架,smod是一个模块化框架,可以用来测试modbus协议所需的各种诊断和攻击功能。这是一个使用Python和Scapy的完整的Modbus协议实现。这个软件可以在python 2.7.x下的Linux / OSX上运行。
近年来,Summery SCADA(过程控制网络)系统已经从专有封闭网络转向开源解决方案和支持TCP / IP的网络。这使他们容易受到我们传统计算机网络面临的相同安全漏洞的影响。Modbus / TCP协议被用作参考协议来显示测试台在对电力系统协议执行网络攻击时的有效性。
#一个展示基础知识的小演示
root@kali:~/smod# python smod.py
_______
< SMOD >
-------
\ ^__^
\ (xx)\_______
(__)\ )\/\
U ||----w |
|| ||
--=[MODBUS Penetration Test FrameWork
--+--=[Version : 1.0.4
--+--=[Modules : 23
--+--=[Coder : Farzin Enddo
--=[github : www.github.com/enddo
SMOD >help
Command Description
------- -----------
back Move back from the current context
exit Exit the console
exploit Run module
help Help menu
show Displays modules of a given type, or all modules
set Sets a variable to a value
use Selects a module by name
SMOD >show modules
Modules Description
------- -----------
modbus/dos/arp DOS with Arp Poisoning
modbus/dos/galilRIO DOS Galil RIO-47100
modbus/dos/writeAllCoils DOS With Write All Coils
modbus/dos/writeAllRegister DOS With Write All Register Function
modbus/dos/writeSingleCoils DOS With Write Single Coil Function
modbus/dos/writeSingleRegister DOS Write Single Register Function
modbus/function/fuzzing Fuzzing Modbus Functions
modbus/function/readCoils Fuzzing Read Coils Function
modbus/function/readCoilsException Fuzzing Read Coils Exception Function
modbus/function/readDiscreteInput Fuzzing Read Discrete Inputs Function
modbus/function/readDiscreteInputException Fuzzing Read Discrete Inputs Exception Function
modbus/function/readExceptionStatus Fuzzing Read Exception Status Function
modbus/function/readHoldingRegister Fuzzing Read Holding Registers Function
modbus/function/readHoldingRegisterException Fuzzing Read Holding Registers Exception Function
modbus/function/readInputRegister Fuzzing Read Input Registers Function
modbus/function/readInputRegisterException Fuzzing Read Input Registers Exception Function
modbus/function/writeSingleCoils Fuzzing Write Single Coil Function
modbus/function/writeSingleRegister Fuzzing Write Single Register Function
modbus/scanner/arpWatcher ARP Watcher
modbus/scanner/discover Check Modbus Protocols
modbus/scanner/getfunc Enumeration Function on Modbus
modbus/scanner/uid Brute Force UID
modbus/sniff/arp Arp Poisoning
SMOD >
蛮力Modbus UID
SMOD >use modbus/scanner/uid
SMOD modbus(uid) >show options
Name Current Setting Required Description
---- --------------- -------- -----------
Function 1 False Function code, Defualt:Read Coils.
Output True False The stdout save in output directory
RHOSTS True The target address range or CIDR identifier
RPORT 502 False The port number for modbus protocol
Threads 1 False The number of concurrent threads
SMOD modbus(uid) >set RHOSTS 192.168.1.6SMOD modbus(uid) >exploit
[+] Module Brute Force UID Start
[+] Start Brute Force UID on : 192.168.1.6[+] UID on 192.168.1.6 is : 10SMOD modbus(uid) >
在Modbus上的枚举功能
SMOD >use modbus/scanner/getfunc
SMOD modbus(getfunc) >show options
Name Current Setting Required Description
---- --------------- -------- -----------
Output True False The stdout save in output directory
RHOSTS True The target address range or CIDR identifier
RPORT 502 False The port number for modbus protocol
Threads 1 False The number of concurrent threads
UID None True Modbus Slave UID.
SMOD modbus(getfunc) >set RHOSTS 192.168.1.6SMOD modbus(getfunc) >set UID 10SMOD modbus(getfunc) >exploit
[+] Module Get Function Start
[+] Looking for supported function codes on 192.168.1.6[+] Function Code 1(Read Coils) is supported.
[+] Function Code 2(Read Discrete Inputs) is supported.
[+] Function Code 3(Read Multiple Holding Registers) is supported.
[+] Function Code 4(Read Input Registers) is supported.
[+] Function Code 5(Write Single Coil) is supported.
[+] Function Code 6(Write Single Holding Register) is supported.
[+] Function Code 7(Read Exception Status) is supported.
[+] Function Code 8(Diagnostic) is supported.
[+] Function Code 15(Write Multiple Coils) is supported.
[+] Function Code 16(Write Multiple Holding Registers) is supported.
[+] Function Code 17(Report Slave ID) is supported.
[+] Function Code 20(Read File Record) is supported.
[+] Function Code 21(Write File Record) is supported.
[+] Function Code 22(Mask Write Register) is supported.
[+] Function Code 23(Read/Write Multiple Registers) is supported.
SMOD modbus(getfunc) >
模糊读取线圈功能
SMOD >use modbus/function/readCoils
SMOD modbus(readCoils) >show options
Name Current Setting Required Description
---- --------------- -------- -----------
Output True False The stdout save in output directory
Quantity 0x0001 True Registers Values.
RHOSTS True The target address range or CIDR identifier
RPORT 502 False The port number for modbus protocol
StartAddr 0x0000 True Start Address.
Threads 1 False The number of concurrent threads
UID None True Modbus Slave UID.
SMOD modbus(readCoils) >set RHOSTS 192.168.1.6SMOD modbus(readCoils) >set UID 10SMOD modbus(readCoils) >exploit
[+] Module Read Coils Function Start
[+] Connecting to 192.168.1.6[+] Response is :###[ ModbusADU ]###
transId = 0x2
protoId = 0x0
len = 0x4
unitId = 0xa###[ Read Coils Answer ]###
funcCode = 0x1
byteCount = 1L
coilStatus= [0]
SMOD modbus(readCoils) >
SCADAShutdownTool是一个工业控制系统自动化和测试工具,允许安全研究人员和专家测试SCADA安全系统,枚举从属控制器,读取控制器的寄存器值并重写寄存器数据。SCADAShutdownTool允许枚举控制器的所有寄存器类型,包括线圈输出,数字输入,模拟输入,保持寄存器和扩展寄存器。
SCADAShutdownTool可以以不同的模式运行,包括:
安全模式:只读并列出非零值。
实模式:仅重写非零值。
积极模式:重写所有控制器寄存器。
控制器寄存器可以用用户指定的默认值或“关闭值”重新写入。
SCADAShutdownTool仅为研究目的而开发,强烈建议您不要将此工具用于非法目的。
下载:
SCADAShutdownTool v1.0 Beta
https://0xicf.wordpress.com/tools/scada-shutdown-tool
https://github.com/0xICF/SCADAShutdownTool
使用:
./SCADAShutdownTool.py
警告:
SCADAShutdownTool允许恶意攻击者在SCADA网络,工业控制系统和控制器上扫描,模糊和执行远程命令。对于使用此工具造成的任何损害,本站概不负责。
运行截图:

splonebox是一个开源网络评估工具,专注于工业控制系统。它提供了对您的网络及其设备的持续分析。模块化设计允许编写额外的插件。
监控和数据采集(SCADA)是总结工业控制系统(ICS)设备的流行词。这些设备专门用于控制工业流程,如生产线甚至钻孔工厂。通常情况下,ICS由可编程逻辑控制器(PLC),执行器和传感器组成。通常情况下,工业网络还包括附加设备,如人机界面(HMI)或网关。
运行界面:
篇幅有限,还有很多没有展示,等待大家自己去探索。
原文链接:https://www.freebuf.com/sectool/174567.html