刺穿S7CommPlus协议安全保护机制的长矛
Cheng Lei, Li Donghong, Ma Liang (NS-Focus)
from BlackHat EURO17 & DEFCON25
摘要
西门子PLC广泛应用于工业控制系统(ICS)。 新版本的西门子PLC(如S7-1500和S7-1200v4.0)使用名为S7CommPlus的加密协议来防止重放攻击。 在本文中,我们将基于逆向调试技术,演示S7CommPlus的加密算法,并编写一个MFC程序来控制上述西门子PLC。 最后,根据研究结果,我们还提出了一些更安全的保护措施。
1. 背景
工业控制系统涉及国家级关键基础设施,需要高度安全性。 在过去几年中,对工业控制系统(ICS)的攻击逐年增加。 Stuxnet在2010年利用了S7Comm协议的不安全性,这是西门子Simatic S7 PLC之间使用的通信协议,对核电设施造成了严重破坏。 在Stuxnet曝光后,西门子在S7Comm协议中实施了一些安全增强功能。 S7-1200 V4.0及更高版本以及S7-1500中使用了当前实施加密的S7CommPlus协议,以防止攻击者控制和损坏PLC设备。当前的S7CommPlus是真正的强安全性协议吗? 本演讲将演示一个可以打破S7CommPlus协议安全墙的长矛。 首先,我们使用Wireshark等软件来分析西门子TIA Portal和PLC设备之间的通信。 然后,使用WinDbg和IDA等反向调试上位机Windows软件,我们可以破解S7CommPlus协议中的加密部分。 最后,我们编写了一个MFC程序,它可以控制PLC的启动和停止,以及PLC的数字和模拟输入和输出的值变化。 本文基于西门子SIMATIC S7-1200v4.1系列PLC。
2. 相关工作
在Black Hat USA 2011上,Dillon(狄龙) Beresford演示了如何使用信息搜集,协议指纹识别,重放攻击,身份验证旁路攻击和远程攻击等方式,来攻击Siemens Simatic S7-300系列PLC。这些PLC使用S7Comm协议,不包含任何安全保护。 在Black Hat USA 2015,Ralf Spenneberg 等人证明了在Simatic S7-1200v3 PLC上可运行和传播一种蠕虫病毒。 这些PLC使用早期的S7CommPlus协议和一种简单的机制来防止重放攻击。
3. 西门子 PLC介绍
3.1 PLC介绍
可编程逻辑控制器(PLC)负责工业控制系统中的过程控制。 PLC包含中央处理单元(CPU),一些数字/模拟输入和输出模块,通信模块和一些过程模块,如PID。 工程师为PLC编写用于自动过程控制的用户程序,然后将用户程序下载到PLC。 经过授权的工程师也可以从PLC上位机软件来运行或停止PLC。
3.2 PLC协议介绍
西门子PLC使用私有协议进行通信,它是利用TPKT和ISO8073的二进制协议。 通常,这两个协议都使用102 / TCP端口。最新版本的Wireshark(V2.1.1)软件支持西门子PLC协议解析,可以自动地分析消息帧。 西门子PLC协议有3个版本,S7Comm协议,早期S7CommPlus协议和最新的S7CommPlus协议。 S7Comm协议用于S7-200,S7-300和S7-400 PLC之间的通信。 该协议不涉及任何反重放攻击机制,并且可以被攻击者轻易利用。 用于S7-1200v3.0之间通信的早期S7CommPlus协议比S7Comm协议更复杂,并使用称为会话ID的双字节字段进行反重放攻击。 但是,会话ID太容易计算。 用于S7-1200v4.0和S7-1500之间通信的新S7CommPlus协议具有复杂的加密部分,可以防止重放攻击。 在本文中,我们将重点介绍S7CommPlus的加密部分。
3.3 TIA Portal软件介绍
TIA Portal是西门子PLC的配置和编程Windows上位机软件。 工程师依靠该软件设计控制逻辑和程序来控制PLC,进而达到控制物理对象的目的。 该软件为程序员提供了配置硬件参数的能力,例如Profinet参数,通信类型,诊断。 授权工程师还可以运行或停止PLC,监视和修改输入/输出值。
4. 重放攻击
重放攻击已被广泛用于PLC攻击。 我们利用TIA Portal PC上位机PC、PLC和集线器构建了一个小型网络环境。 首先,单击TIA Portal中的停止PLC按钮以停止PLC。 然后启动Wireshark或其他数据包捕获工具以捕获PC和PLC之间的数据包。 PLC停止后,停止捕获数据包。 使用我们已经获得的数据包并将这些数据包依次发送回任何PLC,可以使用这些数据包控制PLC。攻击者也可以运行PLC,监视或修改模拟/数字输入/输出值,下载用户程序或系统程序,监视PLC的诊断信息。图4.1显示了使用Wireshark停止PLC时的通信数据包序列。 我们将这些数据包分为4个部分,TCP连接数据包,COTP连接数据包,S7CommPlus连接数据包和S7CommPlus功能数据包。 作为TIA Portal的功能,首先建立与目标PLC的TCP连接和COTP连接。 然后,发送两个S7CommPlus连接数据包。 建立S7CommPlus连接后,S7CommPlus功能包就可用于控制目标PLC,或读/写PLC的输入/输出值。
来源:freebuf.com 2019-03-04 21:23:31 by: wangkai0351
请登录后发表评论
注册