第1页
⿊黑客眼中的⼯工控4.0
——⼯工控系统安全威胁与应对探索 by Kimon
第2页
关于我
• 中国科技⼤大学苏研院 • ADF安全研究团队 • 物联⺴⽹网安全、⼯工控安全
⺩王启蒙 Kimon qmwang@vip.126.com
第3页
提纲
• ⼯工控背景 • ⼯工控系统 • ⼊入侵⽅方式 • 应对探索
第4页
⼯工业4.0与两化融合
第6页
⼯工控系统
• ICS ⼯工业控制系统 • SCADA 数据采集与监控系统 • DCS 分散式控制系统
第7页
SCADA系统
第8页
SCADA系统
第9页
⼯工控组件
• PLC可编程逻辑控制器 • RTU远程控制单元 • HMI⼈人机交互界⾯面 • 现场设备
第10页
PLC
• PLC实质是⼀一种⽤用于⼯工业 的计算机
• CPU、存储器、输⼊入输出 接⼝口电路、功能模块、通 信模块、电源
• 输⼊入采样阶段、⽤用户程序 执⾏行阶段、数据刷新阶段
• 梯形图LAD 顺序流程图SFC 指令表IL
(
/
第11页
威胁趋势
~2010
~2014 ICS-CERT
2013 “Dragonfly 2012 Flame 2011 Duqu
第12页
威胁来源
协议安全
⺴⽹网络隔离
安全意识
漏洞管理
第13页
⼯工业⺴⽹网络协议
• Modbus • S3/S5/S7 • DNP3 • Profinet • Ethernet/IP •…
第14页
Modbus协议
• 全球第⼀一个真正⽤用于⼯工业现场 的总线协议
• 施耐德电⼦子(Schneider Electric)发布于1979年
• 标准开放,免费使⽤用 • ⺫⽬目前作为⼯工业标准⼯工业⺴⽹网络传
输协议之⼀一
第15页
Modbus协议
• Master/Slave模式
master
• 8位地址⻓长度,每个Master可⽀支 持247个Slave
Initiate request
func code data req
• 简单清晰的协议内容 • ⽆无加密与⾝身份认证
Receive response
slave
Perform action Initiate response
func code data resp
第16页
Modbus协议
Additional address
Function code
PDU
ADU
Data
Error check
Modbus Frame
第17页
Modbus协议
IP Packet
TCP TransactionID ProtocolID Length
Packet
2 Byte
2 Byte 2 Byte
Unit ID 1 Byte
Function Code 1 Byte
Data 256 or ..
ADU
PDU
Modbus TCP Frame
第18页
Modbus协议
Function Name Read Coils
Write Single Coil Write Multiple Coils Read Input Register Write Single Register Read/Write Multiple Register
Function Code
0x01 0x05
0x15
0x04 0x06 0x23
第19页
Modbus协议
维基百科——Modbus所有功能码 http://en.wikipedia.org/wiki/Modbus
第20页
Modbus协议
TransactionID ProtocolID Length
UnitID
FunctionCode
Data
第21页
Modbus协议
RS-232/RS-485 Network
Modbus TCP
第22页
⼊入侵⽅方式
⼯工业化信息化融合推进 ⼯工控组件脆弱性
设备升级维护成本⾼高 安全意识薄弱
攻击⾯面
更脆弱的系统 更多的攻击⾯面
模拟环境 探索发现⺫⽬目标
协议分析 设备识别 攻击⼯工具/框架 ⼿手动攻击测试
第23页
模拟环境
[ModbusPal]
Slave节点仿真模拟 http://modbuspal.sourceforge.net/
第24页
⺴⽹网络分析
[Wireshark]
https://www.wireshark.org/ Modbus/S7/DNP3协议解析
第25页
本地模拟攻防
[mbtget]
Perl脚本Modbus协议⼯工具 https://github.com/sourceperl/mbtget
第26页
本地模拟攻防
[Metasploit Framework] auxiliary/scanner/scada/modbus_findunitid
auxiliary/scanner/scada/modbusclient auxiliary/scanner/scada/modbusdetected
第27页
探索发现⺫⽬目标
PLC、RTU..⼯工控设备 ⽆无⼀一幸免
⺴⽹网络空间 搜索引擎
⿊黑暗“Google”
第28页
探索发现⺫⽬目标
[Nmap]
modbus-discover.nse modbus-enum.nse
注意 《NIST SP800-82》 1.降低扫描速度—scan-delay=1 2.TCP替代UDP 3.避免使⽤用nmap指纹识别 -sC 4.不推荐nmap 5.不要尝试对运⾏行中的设备进⾏行测试
第29页
探索发现⺫⽬目标
[plcscan]
TCP/502 TCP/102端⼝口PLC识别⼯工具 code.google.com/p/plcscan
第30页
探索发现⺫⽬目标
[ModTest]
针对Modbus分析协议、扫描、指纹识别、Fuzzing、甄别蜜罐 https://github.com/ameng929/ModTest
第31页
探索发现⺫⽬目标
[ModTest]
Modbus分析协议 https://github.com/ameng929/ModTest
第32页
探索发现⺫⽬目标
[ModTest]
Modbus Fuzzing https://github.com/ameng929/ModTest
⽅方式: 针对Function Code 针对Diagnostics Code
发现: 90/91/99功能码 识别⼯工控蜜罐的⽅方式 拒绝服务
第33页
探索发现⺫⽬目标
[ModTest]
Modbus 指纹识别 https://github.com/ameng929/ModTest
识别更多的plc设备信息 更邪恶的⼊入侵⽅方式 …
第34页
⼊入侵⽅方式
[Unity Pro XL]
施耐德PLC编程软件 http://www.schneider-electric.com/
第35页
⼊入侵⽅方式
[Unity Pro XL]
施耐德PLC编程软件 http://www.schneider-electric.com/
发现: 可远程接⼊入设备 但远程传输项⺫⽬目失败 原因: Unity Pro XL版本多样 兼容性差
第36页
⼊入侵⽅方式
分析Unity Pro XL软件协议、认证⽅方式
软件使⽤用Modbus功能码90进⾏行通信 协议内容⽆无加密!
第37页
⼊入侵⽅方式
分析Unity Pro XL软件协议、认证⽅方式 通过90功能码进⾏行⾝身份识别与握⼿手请求、消息同步
通过ModTest测试,90功能码协议⽆无认证,可进⾏行包重放
第38页
⼊入侵⽅方式
分析Unity Pro XL软件协议、认证⽅方式
协议中发现读取PLC设备信息通信数据
0x00, 0x0f, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x5a, 0x00, 0x20,
0x00, 0x14, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf6, 0x03
重放请求,获得PLC设备项⺫⽬目信息
针对应答数据选择针对的Unity Pro XL软件
V5.0
Unity Pro XL 5.0
第39页
⼊入侵⽅方式
通过针对版本的Unity Pro XL软件获取到PLC权限
可查看实时数据表、修改上传PLC程序、停⽌止PLC执⾏行!!!
第40页
⼊入侵⽅方式
通过Shodan进⾏行设备探索与⼊入侵
针对施耐德PLC编程软件的Dork port:502 V5.0 .stu
V5.0——编程软件版本号 .stu——施耐德PLC程序后缀
第41页
应对探索 [⼯工控蜜罐]
协议仿真scapy、pymodbus https://github.com/tecpal/PyModbus
• 对读写PLC Coil、Register值的响应
• 对43功能码读取PLC设备信息的响应
• 对17功能码请求从节点信息的响应
• 对90功能码读取Modicon PLC信息的响应
第42页
应对探索
[⼯工控蜜罐]
Web管理登陆界⾯面
第43页
应对探索
[⼯工控蜜罐]
其他选择组件
• FTP • SNMP • TELNET • 其他⼯工控协议
第44页
应对探索
[⼯工控蜜罐]
conpot https://github.com/mushorg/conpot
第45页
应对探索
[⼯工控蜜罐]
SCADA Honeynet http://www.digitalbond.com/tools/scada-honeynet/
第46页
应对探索 [⼯工控蜜罐] Modhoney
在PyModbus与Z-one版本上进⾏行了改进与优化 https://github.com/ameng929/Modhoney
增加了对于TransactionID的识别与应答 增加了对于功能码90的识别与应答 配合conpot更容易被⺴⽹网络搜索引擎发现
第47页
应对探索 [⼯工控蜜罐] Modhoney
在PyModbus与Z-one版本上进⾏行了改进与优化 https://github.com/ameng929/Modhoney
增加了对于TransactionID的识别与应答 增加了对于功能码90的识别与应答 配合conpot更容易被⺴⽹网络搜索引擎发现
第48页
198. 20. 70.114 71. 6.216. 34
169. 54.233.119 185. 35. 62. 11
85. 25.185.112 62. 75.207.109 178. 19.104.138 141.212.122. xxx
应对探索
[⼯工控蜜罐]
发现
Shodan Rapid7 Credit Suisse Group / CANA Switzerland Group BSB-Service GmbH Germany Intergenia AG Germany Livenet sp. z o.o. University of Michigan College of Engineering
蜜罐捕获数据主要为协议扫描 其中严重的威胁为对地址数据的改写
第49页
应对探索
Shodan对于蜜罐系统的甄别
第50页
应对探索
蜜罐甄别⽅方法
Real
Honey 对于43(0x2B)功能码中的异常数据的应答
第51页
应对探索
蜜罐甄别⽅方法
Real
Honey 对于01(0x01)功能码中的异常数据的应答
第52页
应对探索
⼯工控蜜罐的必要性
• 发现⺴⽹网络空间扫⾯面引擎IP地址,拦截扫描 • 了解扫描引擎的指纹识别⽅方法,收集信息 • 掌握⿊黑客的进⼀一步攻击⾏行为 • 收集异常数据中可能的0-Day • 健壮蜜罐系统,使其更难被甄别,更好的伪装
第53页
应对探索
[Snort for ICS]
开源⼊入侵检测
https://www.snort.org
http://www.digitalbond.com/tools/quickdraw/
第54页
应对探索
[ModbusSec]
协议传输⾝身份认证 http://www.digitalbond.com/tools/basecamp/
{Ethernet | TCP | Modbus}
{Ethernet | TCP | Tunnel | Modbus}
{Ethernet | TCP | Modbus | Tunnel | Modbus}
第55页
应对探索
[安全模块解决⽅方案]
• ⼯工业防⽕火墙 • ⺴⽹网络隔离设备 • VPN接⼊入 • 认证管理 •…
纵深防御
第56页
⼯工控安全联盟
感谢聆听