Rogue7: Rogue Engineering-Station Attacks on S7 Simatic PLCs 阅读笔记
基本信息
题目:
Rogue7: Rogue Engineering-Station Attacks on S7 Simatic PLCs
https://www.blackhat.com/us-19/briefings/schedule/#rogue-rogue-engineering-station-attacks-on-s-simatic-plcs-16049
会议:
Black Hat USA 2019
作者:
Eli Biham, Sara Bitan, Aviad Carmel, Alon Dankner, Uriel Malin, Avishai Wool
研究机构:
Faculty of Computer Science, Technion, Israel
School of Electrical Engineering, Tel-Aviv University, Israel
一句话总结:
作者逆向分析S7-Plus认证机制和加密方法,开发了一个流氓(Rogue)工程师软件伪装成TIA,可以向当时(2019)使用最新协议的西门子PLC注入任何数据。
研究动机:
西门子声称使用S7-Plus协议的西门子PLC可以抵御高级的网络攻击者,但作者不服。
创新点:
破解了S7-Plus协议完整性保护所依赖的密码学
贡献:
- 破解了S7-Plus加密协议
- S7-1500 PLCs 的启停攻击
- 远程修改PLC控制逻辑程序
- 中间人攻击,PLC实际执行的程序(二进制)和TIA软件收到的控制逻辑(源代码)不同
技术背景:
ICS攻击:
震网病毒[10,11,12],乌克兰停电[22,24],德国钢铁厂高炉[8]
BlackHat USA 2015 Klick et al. [20] 对S7-300不停机注入恶意控制逻辑
Spenneberg et al. [33] PLC蠕虫
S7协议
S7协议逆向基于[14][25][27][37]
S7功能:启停程序、上传下载程序、读写控制变量
S7协议基于session。每个session都有一个session ID(由PLC选择)。session从四次握手开始,同时选择session的加密属性,包括协议版本和密钥。握手后的所有消息都受到完整性保护。S7comm-plus协议还提供了不同类型的完整性保护和密钥交换:
S7的加密保护机制:密钥交换session key、基于session key的消息完整性校验算法、载荷加密算法
前四条消息执行4次握手,这些消息完成session key的建立。session中的所有后续消息(从第5条消息开始)都将受到完整性保护。每个消息的完整性保护使用HMAC-SHA256完整的256位输出作为MAC,使用共享的sessionKey作为MAC密钥。
密钥建立过程(四次握手):
S7认证过程的脆弱性:单向认证,相同固件版本使用相同公钥,PLC不能确保TIA身份,P2密钥使用静态序列
方法:
逆向分析了Siemens/Automation/Portal V14/Data/Hwcn/Custom/Keys
目录下的OMSp_core_managed.dll
文件
使用TCPLiveReplay
工具重放
S7comm Wireshark dissector plugin http://sourceforge.net/projects/ s7commwireshark
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?