工业控制系统(ICS)安全专家必备的测试工具和安全资源

Posted EMLab攻防实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工业控制系统(ICS)安全专家必备的测试工具和安全资源相关的知识,希望对你有一定的参考价值。

工业控制系统(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和下一代传输基础设施蜜罐。

数据

4SICS ICS Lab PCAPS 4SICS的“Geek Lounge”是一个包含PLC、RTU、服务器、工业网络设备(交换机,防火墙等)的ICS实验室。这些设备可用于4SICS物理参与者进行“测试”,并从这些设备中获取流量。
DEF CON 23 ICS Village PCAPS 来自第23届DEF CON的PCAPS。
ICS Map 从Shodan收集的数据创建的地图显示ICS设备。数据可用于进一步分析。
ICS Radar Shodan从几种ICS协议收集的数据在地球仪上可视化。
S4x15 ICS Village 在比赛中使用的S4x15 CTF的PCAPS。
S7 PCAP samples Wireshark S7协议解析器插件的示例文件。
SCADAPASS 着名的SCADA StrangeLove默认/硬编码密码列表。
TRISIS/TRITON/HATMAN malware repository 存储库包含针对Triconex安全仪表系统(SIS)控制器的TRISIS / TRITON / HATMAN恶意软件的原始和反编译文件。

订阅和新闻

ICS-CERT Alerts ICS-CERT Alert提要旨在及时通知关键基础设施所有者和运营商有关可能影响关键基础设施计算网络的威胁或活动。
ICS-CERT RSS Feed 美国ICS-CERT的RSS源列出了新闻和最新发布的漏洞建议。
Industrial Security Alerts 西门子通过此页面和RSS提要为其工业系统提供警报。
North American Electric Reliability Corporation (NERC) Alerts NERC为大型电气系统(BES)安全建议和行业建议提供警报。
ABB Cybersecurity Alerts and Notifications ABB为其网络安全事件和软件漏洞提供警报。
Schneider Electric Cybersecurity Alerts and Notifications 从施耐德电气软件获取网络安全和合规性的最新更新和警报。

会议和会议资料

CS3STHLM 斯德哥尔摩SCADA和工业控制系统网络安全国际峰会 – 是一次年度峰会,聚集关键流程和行业中最重要的利益相关方。CS3STHLM自2014年起组织起来,并迅速成为北欧首屈一指的ICS安全峰会。
CS4CA 关键资产网络安全是一个全球系列峰会,重点关注关键基础设施的网络安全。
SANS ICS Summit Archives 全球举办的SANS ICS峰会演讲材料的中央存储库。
SANS ICS Cybersecurity Conference (WeissCon) 这个会议在创始人Joe Weiss之后被称为WeissCon,现在由SecurityWeek拥有并运营,并且通常每年10月在美国不同地点运营。

相关文献

Library of Resources for Industrial Control System Cyber Security SCADAhacker.com的ICS / SCADA网络安全资源的最终列表。
Applied Cyber Security and the Smart Grid 应用网络安全与智能电网:Eric D. Knapp和Raj Samani在现代电力基础设施中实施安全控制。
A Collection of Resources for Getting Started in ICS/SCADA Cybersecurity Robert M. Lee对ICS和SCADA安全方面的一些优秀资源的想法。
Hacker Machine Interface – The State of SCADA HMI Vulnerabilities 来自趋势科技零日行动团队的TrendLabs研究报告介绍SCADA和HMI安全的当前状态。
Handbook of SCADA/Control Systems Security 本综合手册涵盖了基本的安全概念,方法以及与全球公用事业和工业设施中使用的监控和数据采集(SCADA)和其他工业控制系统有关的信息。
SCADA Cybersecurity Framework 描述什么是SCADA网络安全框架应包含的文件。
Industrial Network Security, Second Edition 工业网络安全第二版:保护智能电网,SCADA和其他工业控制系统的关键基础设施网络,Eric D. Knapp和Joel Thomas Langill。
Power System SCADA and Smart Grids 本书汇集了电力系统监控和数据采集(SCADA)的基本原理和可能的应用功能。不是面向安全的,面向电力系统的,而是SCADA的一个很好的入门书。
NIST SP 800-82, Revision 2 工业控制系统(ICS)安全指南由NIST提供。
The Industrial Control System Cyber Kill Chain 这份SANS论文描述了ICS Cyber Kill Chain。它将洛克希德·马丁公司的杀伤链调整成典型的、针对集成电路系统的两个阶段攻击。
An Abbreviated History of Automation, Industrial Control Systems, and Cybersecurity 这份SANS论文着眼于ICS网络安全的背景,非常值得阅读,以确保您了解过去二十年来发生的许多事件,以及他们如何激励今天ICS的安全性。
Control Engineering – Networking and Security – CyberSecurity Control Engineering杂志的网络安全新闻和文献。

介绍ICS、SCADA和PLC

PLC Training Org Site组织了所有与SCADA系统相关的重要主题。安全与10个学习阶段密切相关,但这对于刚开始学习的人来说是一篇很棒的安全性文章。
Control System Basics YouTube视频解释控制系统的基础知识,包括这些系统用于感知和创建物理变化以采取行动的逻辑类型。
SCADA Systems – Utility 101 Session with Rusty Wiliiams 公用事业行业专业人士Rusty Williams从电力公用事业角度解释SCADA。
Control System Lectures 布赖恩道格拉斯YouTube视频系列,他以一种非常容易处理的方式涵盖了广泛的控制系统主题。
The PLC Professor PLC教授和他的网站plcprofessor.com包含了很多用于学习可编程逻辑控制器(PLC)和其他类型的控制系统及其逻辑是什么以及如何工作的很好的资源。
Serial Communications RS232 and RS485 Real Time Automation的John Rinaldi介绍了串行通信RS232和RS485。
All You Need To Know About MODBUS-RTU Real Time Automation的John Rinaldi介绍了MODBUS-RTU。
MODBUS Data Structures Real Time Automation的John Rinaldi描述了MODBUS数据结构。
All You Need to Know About MODBUS-TCP Real Time Automation的John Rinaldi介绍了MODBUS-TCP。
How Ethernet TCP/IP is Used by Industrial Protocols Real Time Automation的John Rinaldi介绍了以太网TCP / IP。

 下面是部分软件用法及运行截图:

1、CSET 8.1

工业控制系统(ICS)安全专家必备的测试工具和安全资源

工业控制系统(ICS)安全专家必备的测试工具和安全资源

2、Digital Bond’s ICS Enumeration Tools 

该脚本是基于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等。。

详细的使用安装请点击

3、mbtget

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

用法:

工业控制系统(ICS)安全专家必备的测试工具和安全资源

root@kali:~# mbtget -a 1000 127.0.0.1values:1 (ad 01000): 52544
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
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

4、MODBUS Penetration Testing Framework 

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) >

5、SCADAShutdownTool

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网络,工业控制系统和控制器上扫描,模糊和执行远程命令。对于使用此工具造成的任何损害,本站概不负责。

运行截图:

工业控制系统(ICS)安全专家必备的测试工具和安全资源

6、splonebox

splonebox是一个开源网络评估工具,专注于工业控制系统。它提供了对您的网络及其设备的持续分析。模块化设计允许编写额外的插件。

监控和数据采集(SCADA)是总结工业控制系统(ICS)设备的流行词。这些设备专门用于控制工业流程,如生产线甚至钻孔工厂。通常情况下,ICS由可编程逻辑控制器(PLC),执行器和传感器组成。通常情况下,工业网络还包括附加设备,如人机界面(HMI)或网关。

运行界面:

篇幅有限,还有很多没有展示,等待大家自己去探索。



以上是关于工业控制系统(ICS)安全专家必备的测试工具和安全资源的主要内容,如果未能解决你的问题,请参考以下文章

信息安全工程师笔记-工控安全需求分析与安全保护工程

工控安全简单入门

工控安全入门分析

工控系统的指纹识别技术

资深网工必备的:五个免费的网络安全工具,每一个都是神器

工业控制系统安全等级评估整理(工具篇)