Modbus 上的轮子 - 攻击 ModbusTCP 通信

Title:Wheels on the Modbus - Attacking ModbusTCP Communications

一、摘要

Modbus、DNP3 和 OPC DA等不安全通信协议导致关键基础设施面临的网络风险增加,因为这些协议允许威胁参与者发起拒绝服务 (DoS) 等攻击。我们提出了一种新颖的字段泛洪攻击,它破坏了 ModbusTCP 数据包的结构并破坏了控制器对发送给它的命令的解释。这可能会破坏操作员控制危险操作的能力,从而导致潜在的不安全情况。

二、介绍

ModbusTCP 不使用任何身份验证或访问控制机制,这允许攻击者执行各种攻击,例如拒绝服务 (DoS)、中间人 (MitM) 和未经授权的访问。ModbusTCP 协议以客户端-服务器模型运行,请求使用功能码 (FC)。图 1 显示了分配给每个标头的基本结构和大小。 Modbus 应用数据单元 (ADU) 的总大小为 260 字节。这由 Modbus 应用程序 (MBAP) 标头和协议数据单元 (PDU) 分别按 7 字节和 253 字节的顺序共享。

温度值存储在保持寄存器中,而湿度值存储在输入寄存器中。 HMI 分别使用 Modbus 功能代码 0x03(读取保持寄存器)和 0x04(读取输入寄存器)定期轮询 Siemens Logo PLC 的温度和湿度值。这些攻击中使用的工具是 scapy 和 wireshark。

三、构造数据包

先决条件:

  1. 符合 ModbusTCP 标准格式(包含功能代码、事务和协议标识符、单元 ID、长度和寄存器起始地址);
  2. 在精心制作的恶意数据包中利用先前数据包中的序列 (SEQ) 和确认 (ACK) 号。
    为 ModbusTCP ADU 标头分配的最大内存为 260 字节,通过更改 MBAP 标头中的长度字段并增加 PDU 层中的数字字段,超过此限制可能会破坏 HMI 和 PLC 之间的通信。使用不同的参数实验如下:
  3. 修改 ModbusTCP 写入数据包 (FC 06/16),增加 MBAP 头中的长度字段并注入;
  4. 在 PDU 层用 2 个附加字段(4 个字节)修改 ModbusTCP 写入数据包(FC 06/16)并注入。

结果:
四个恶意数据包被成功注入,每个数据包在 PDU 中都有两个附加字段。这破坏了 TCP 会话,PLC 使用 RST ACK 数据包响应来自 HMI 的 Modbus 查询,以尝试重置 TCP 会话。
将泛洪攻击映射到 ATT&CK 的ICS 框架,确定了以下ATT&CK 策略/技术(代码):

  1. 执行/命令行界面(T0807),脚本(T0853);
  2. 发现/网络嗅探(T0842);
  3. 抑制响应功能/阻止报告消息(T0804),拒绝服务(T0814);
  4. 损害过程控制/修改参数(T0836),未经授权的命令消息(T0855);
  5. 影响/拒绝查看 (T0815)。

四、结论

以前的工作重点是通过确保分配给 MBAP 和 PDU 标头中特定字段的大小在设定的限制内来保护 ModbusTCP 消息。在这项研究中,我们能够演示一种新颖的字段泛洪攻击,其中考虑将字段保持在其字节限制内,但将数字字段增加 2,从而导致 PDU 标头额外增加 4 个字节的字段。在未来的工作中,我们将对这种攻击的变体进行敏感性分析,以更好地了解 PDU 字段泛洪内存违规,然后设计入侵防御系统 (IPS) 来缓解这种情况。

posted @ 2022-07-28 21:06  哆啦哆啦呦  阅读(404)  评论(0编辑  收藏  举报