写在前面

前面我们系统得说了工业控制系统的通讯,大家肯定会想到PROFINET、ETHERNET/IP、ETHERCAT等工业以太网:

技术解读PROFINET、Ethernet/IP等7种主流工业以太网

最全整理工业通讯上的领域各种总线+协议+规范+接口—数据采集与控制

但是说到协议的分析,我们 不得不提到安全问题,前面我们系统的介绍过关于工业控制系统的架构、安全等:

工业控制系统安全入门与实践—从五层架构和安全标准说起

工业控制系统安全入门与实践——工控安全入门分析

也聊了西门子、施耐德、罗克韦尔等国际大厂的相关安全漏洞:

基于S7协议对西门子PLC S7-1500的漏洞分析与复现(附演示视频)

施耐德PLC漏洞历险记—一次与施耐德PLC的非正常接触

罗克韦尔 MicroLogix PLC漏洞的复现及解决方案

西门子、施耐德、罗克韦尔PLC程序设计漏洞探秘

今天来解析下由罗克韦尔主导的ETHERNET/IP协议~

作者 | 长扬科技(北京)有限公司 汪义舟 梁 泽 张国栋

来源:关键基础设施安全应急响应中心

一、Ethernet/IP协议

EtherNet/IP是一个现代化的标准协议。由控制网国际有限公司(ControlNet International)的一个技术工作组与ODVA(开放式DeviceNet供应商协会)在20世纪90年代合作设计。EtherNet/IP是基于通用工业协议(Common Industrial Protocol,CIP)的。CIP是一种由ODVA支持的开放工业协议,它被使用在诸如 DeviceNet 和 ControlNet 以及 EtherNet/IP 等串行通信协议中。美国的工控设备制造商Rockwell/Allen-Bradley已经围绕EtherNet/IP进行了标准化,其他厂商如Omron也在其设备上支持了EtherNet/IP。EtherNet/IP已经变得越来越受欢迎,特别是在美国。尽管EtherNet/IP比Modbus更现代化,但仍然存在协议层面的安全问题。EtherNet/IP通常通过TCP/UDP端口44818运行。此外,EtherNet/IP还有另一个端口 TCP/UDP端口2222。使用这个端口的原因是 EtherNet/IP实现了隐式和显示两种消息传递方式。显式消息被称为客户端/服务器消息,而隐式消息通常被称为I/O消息。

EtherNet/IP是为了在以太网中使用CIP协议而进行的封装。EtherNet/IP的 CIP帧封装了命令、数据点和消息等信息。CIP帧包括CIP设备配置文件层、应用层、表示层和会话层四层。数据包的其余部分是EtherNet/IP帧,CIP帧通过它们在以太网上传输。EtherNet/IP分组结构如图

CIP规范对数据包结构有很多的规定,这意味着每个使用 EtherNet/IP的设备必须实现符合规范的命令。下面是EtherNet/IP首部中封装的CIP帧字段:

• 命令

两字节整数,对应一个 CIP 命令。通用工业协议规范标准要求,设备必须能接收无法识别的命令字段,并处理这种异常。

• 长度

两字节整数,代表数据包中数据部分的长度。对于没有数据部分的请求报文,该字段为0。

• 会话句柄

会话句柄(session handle)由目标设备生成,并返回给会话的发起者。该句柄将用于后续与目标设备的通信。

• 状态码

Status字段存储了目标设备执行命令返回的状态码。状态码“0”代表命令执行成功。所有的请求报文中,状态码被置为“0”。其它的状态码还包括:

0x0001 无效或不受支持的命令

0x0002 目标设备资源不足,无法处理命令

0x0003 数据格式不正确或数据不正确

0x0065 接收到无效的数据长度

• 发送方上下文

命令的发送者生成这六字节值,接收方将原封不动的返回该值。

• 选项

该值必须始终为0,如果不为零,数据包将被丢弃。

• 命令相关数据

该字段根据接收/发送的命令进行修改。

如果请求发送方是工程师站,大多数会话中执行的第一条命令是“ListIdentity”命令。如下所示的数据包,命令字段是0x63,代表“List Identity”命令,上下文是“0x00006a0ebe64”。这个命令与Modbus功能码43非常相似,可以查询设备信息,如供应商、产品、序列号、产品代码、设备类型和版本号等。使用在Github项目pyenip中找到的Python 脚本ethernetip.py,你可以查询Ethernrt/IP 设备的信息。默认情况下,这个脚本不会解析一些响应,你需要取消脚本底部的 testENIP() 函数的注释后,它才会发送和接收“List Identity”命令。在执行脚本的同时,你可以使用Wireshark查看请求和响应的数据包。

二、EtherNet/IP协议身份鉴别请求攻击

Digital Bond 在项目 Redpoint 中实现了一个脚本,可以用来从远程设备中获取信息。Redpoint 脚本使用了 “List Identity”命令字,并使用Nmap中的信息进行解析。它的“Conmmand Specific Data”部分包含了一个套接字地址(ip 地址和端口号)。这是暴露的远程设备的真实 ip 地址和端口号,即使它位于NAT设备之后。

我们发现大量的设备暴露的IP字段和实际扫描的IP地址不同。所以我们得出结论,大多数的Ethernet/IP设备部署在内部网络中,而不是直接暴露在互联网上。如下图所示的是使用Nmap扫描CompactLogix控制系统的扫描结果,可以看到暴露的设备ip和扫描ip不匹配,说明目标系统位于路由器或防火墙之后。

上图显示了一些信息,包括设备的制造商“Rockwell”。设备的制造商在响应中是一个两字节的制造商 ID,它映射了一组支持 Ethernet/IP 的厂商名单。但是,这个厂商名单不是公开的。我们在深入研究 Wireshark 捕获的数据包后,发现数据包被 Wireshark 解析后,制造商 ID 被替换成了制造商名称。这说明 Wireshark 拥有如何映射制造商ID和名称的信息。通过对Github上Wireshark源代码的一些搜索,我们发现了如下代码片段,它告诉我们该如何解析制造商 ID。在解析工控协议的时候,Wireshark 常常是一个强大而好用的资源。

使用像“List Identity”这样的命令,你可以简单的重放数据包,几乎不用修改数据包。会话句柄将被设置为0,意味着没有会话生成,因为该命令只是简单的发送命令和接收系统响应。为了进一步与设备进行通信,需要发送注册会话命令(0x65)。这个命令会设置会话句柄ID,这个ID将用于后续会话的通信。如下图所示,注册会话的请求使用标准ID“0x00000000”,目标设备返回了它生成的会话句柄“0x03A566BB”。

三、Ethernet/IP中间人攻击

简单的数据包重放对Ethernet/IP的某些指令无效。这使得攻击变得稍微复杂了一些。然而,对于大多数攻击者而言,只要对 Ethernet/IP 的协议稍有了解,这点困难将是微不足道的。一旦会话句柄通过协商被确定,只要通过手动改变序列号,就可以实现像中间人攻击。

攻击实例:

网络拓扑:

网络环境:

• 虚拟机

• Ettercap工具

• Wireshark

• 交换机

• PLC控制器

攻击测试:使用VM-Linux中的嗅探工具ettercap对目标主机进行嗅探。

单击Hosts选项,选择Scan for host,待扫描完成之后再选择Scan for host,然后选择Host list,此时可以看到已经扫描的主机列表,如图所示:

然后就可以选择要攻击的目标了,选择192.168.210.200的IP地址,如图所示:

明确攻击方式之后,我们选择"Sniff remoteconnections" — "确定"。

点击确定攻击之后,过滤攻击修改Ethernet/ip特定的数据包字段,高级序列号5,通过添加4(十进制)修改数据值。

攻击示意图:

此时使用Wireshark抓包工具可以发现,被攻击PLC的所有流量都是通过攻击者的VM主机发送出去的。通过此操作可直接给PLC下发指令。

四、EtherNet/IP协议终止CPU运行攻击

有些Ethernet/IP设备是支持终止CPU命令的。Metasploit模块,可以被用来终止一个Allen-Bradley ControlLogix控制系统中的大量 PLC,还可以引发其他恶意攻击事件比如令以太网卡崩溃。

只要了解 Session Handle 即可轻松攻击 Ethernet/IP。是这个攻击奏效的另一个关键是Allen-Bradley实现的一个命令字。Allen-Bradley在NOP(0x00)命令中实现了终止 CPU 的功能。如下图

这个命令在CIP或Ethernet/IP的规范中没有记录,是Allen-Bradley/Rockwell控制器的私有实现。通过对大量设备的测试,我们发现,在一些旧的固件中,不仅 ControlLogix CPU 被终止,而且设备崩溃,需要重新启动硬盘。对于当前的型号,PLC 必须拔下并重新插入才能再次运行。极少数情况下,PLC需要重新编程。

五、结束语

上述的攻击都是非常危险的攻击形式,时常与钓鱼网站、挂马网站等攻击形式结合,不仅造成信息的泄漏,还可能被借用于病毒木马的传播。更重要的是,这类攻击可能将我们认为绝对安全的网络连接变成完全被人监听控制的连接,使得网络连接的私密性得不到保障,造成重要数据轻易落入攻击者之手。由于网络环境的复杂性,我们有必要对各类攻击进行了解,具备初步判断网络连接安全性的能力。

防护手段:使用专业的工控防火墙系统,能智能识别和防护各类恶意攻击,结合工控协议的深度解析和黑、白名单策略相结合的防护机制,可有效的阻止针对工控系统的已知和未知的恶意攻击行为,极大的降低了工控系统受损的风险。

硬核专辑

工业热点 | 数据采集 | 应用与库(西门子、罗克韦尔、倍福等)

WinCC技术 | 工业网络 | MES技术相关| 工业巨头战略布局 | 工业通讯案例

仿真与虚拟调试 | 职业感悟、认知提升 | 自动化控制标准合集

西门子TIA Portal+库卡机器人+VNCK实现数字化机床虚拟调试

2020-12-06

超炫酷的西门子TIA Portal的大神级操作~

2020-11-27

自动化+信息化:徐工传动数字化工厂实施方案

2020-11-24

基于TIA Portal V15的动态加密计时催款程序

2020-11-16

软件定义制造:五层架构下数字化工厂的信息系统

2020-11-13

智能自动化物流系统AGV基础知识(完整介绍)

2020-11-14

机床数字化通信三大标准-OPCUA、MTConnect、NC-Link

2020-11-07

一文讲透PROFINET组态调试、编程、应用等最重要的文档和知识点

2020-11-08

数字化工业,IT大佬与工业自动化巨头的ITOT融合之旅

2020-11-02

PLC高级编程-西门子SCL结构化控制语言官方培训.pptx

2020-10-29

MES、SCADA下的数据采集—C#实现扫码器的串口通讯实例

2020-10-28

IT融合OT:数据、网络与WMS、MES如何贯穿五层自动化金字塔?

2020-10-20

ip协议分析实验报告_入门工业通讯之EtherNet/IP协议分析相关推荐

  1. 大学计算机网络配置实验报告,北京理工大学-计算机网络实践-IP路由配置与路由协议分析实验报告.docx...

    北京理工大学-计算机网络实践-IP路由配置与路由协议分析实验报告.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 LAB2 ...

  2. 计算机网络实验arp协议分析,计算机网络ARP地址协议解析实验报告

    计算机网络ARP地址协议解析实验报告 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机网络实验报告.实验目的:1. 掌握ARP协议 ...

  3. 太原理工大学linux与python编程r实验报告_太原理工大学算法设计与分析实验报告...

    <太原理工大学算法设计与分析实验报告>由会员分享,可在线阅读,更多相关<太原理工大学算法设计与分析实验报告(12页珍藏版)>请在人人文库网上搜索. 1.本科实验报告课程名称: ...

  4. 计算机网络地址解析协议实验,计算机网络地址解析协议(ARP)实验报告.doc

    计算机网络地址解析协议(ARP)实验报告 实验目的: 1. 掌握ARP协议的报文格式 2. 掌握ARP协议的工作原理 3. 理解ARP高速缓存的作用 4. 掌握ARP请求和应答的实现方法 5. 掌握A ...

  5. java文件加密解密实验报告_《网络信息安全技术》_实验报告_破译vigenamp#232;re_密码加密的密文...

    <<网络信息安全技术>_实验报告_破译vigen&amp#232;re_密码加密的密文>由会员分享,可在线阅读,更多相关<<网络信息安全技术>_实验报 ...

  6. 计算机组成原理寄存器的实验原理,计算机组成原理实验报告_寄存器的原理及操作课案.docx...

    <计算机组成原理实验报告_寄存器的原理及操作课案.docx>由会员分享,提供在线免费全文阅读可下载,此文档格式为docx,更多相关<计算机组成原理实验报告_寄存器的原理及操作课案.d ...

  7. 计算机组成原理实验写入怎么,计算机组成原理实验报告_寄存器的原理及操作...

    <计算机组成原理实验报告_寄存器的原理及操作>由会员分享,可在线阅读,更多相关<计算机组成原理实验报告_寄存器的原理及操作(10页珍藏版)>请在人人文库网上搜索. 1.成绩:实 ...

  8. c语言实验报告大气,室内环境舒适度评价分析实验报告

    室内环境舒适度评价分析实验报告 室内热舒适环境评价 实验报告 学 院: 专业班级: 组 长: 组 员: 组 员: 组 员: 实施时间: 一.实验目的 1. 掌握用室内环境的测试参数计算 PMV 值的方 ...

  9. c语言编程流水灯与交通灯实验,C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟.doc...

    C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟 学 号: 班 级: 自动化10班 姓 名: 张 指导老师: 胡 2012.12 单片机核心板实验要求 流水灯实验 实验目的: 简单I/O引 ...

最新文章

  1. SAP SD基础知识之免费订单
  2. JAVA调用R语言之Rserve
  3. BZOJ5137lg4081(广义后缀自动机,set启发式合并)
  4. 测试人员在需求阶段应做哪些工作
  5. Postgresql多线程hashjoin(inner join)
  6. Vue + Spring Boot 学习笔记01:实现用户登录功能
  7. jquery 如何获取动态添加的元素
  8. VS2015自带的LocalDB数据库的用法
  9. Ionic开发,手机在线测试
  10. 【数字信号处理】fft幅频特性和相频特性理解
  11. u盘文件名乱码linux,U盘文件名乱码的原因和解决办法
  12. 斗破特别篇美杜莎建模赏析文
  13. 办公室网络带宽叠加(有线和WiFi同时使用)
  14. 牛顿迭代法 解 二元高次方程组 Mathematica
  15. 阿里云服务器ECS中扩容云盘后磁盘容量没有增加的解决方法
  16. python+百度AI 文字转换成语音
  17. Glide 图片闪烁问题
  18. 软件测试-白盒测试:逻辑覆盖
  19. 技嘉1080显卡体质测试软件,超频测试与总结 - 技嘉GTX1080 Xtreme Gaming显卡评测:创新的重峦式三风扇 - 超能网...
  20. 基于PHP+小程序(MINA框架)+Mysql数据库的校园二手书交易小程序系统设计与实现

热门文章

  1. spring_Spring MVC控制器的单元测试:配置
  2. 水文特点是什么意思_一级建造师是什么意思?一级建造师报考指南
  3. maya室内模型_超全室内外设计贴图素材库合辑 | 57G
  4. IDEA注释模板,动作要快,姿势要帅!
  5. 皮一皮:所以说不管做什么,上风口都是很重要的位置...
  6. 关于虚拟内存,你需要了解的一些概念
  7. 为什么我使用了索引,查询还是慢?
  8. wpf中内容包含在border中_WPF:点击后聚焦边框(WPF: Focus border after click)
  9. win10下编译和使用mnn 2021
  10. yolov5剪枝开源分享