Rogue7: Rogue Engineering-Station Attacks on S7 Simatic PLCs 阅读笔记

发布时间 2023-06-06 16:23:31作者: snail1502

image

基本信息

题目:
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密钥。

密钥建立过程(四次握手):
image

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