PROFINET 由 IP 国际组织推出, 是新一代基于工业以太网技术自动化总线标准, PROFINET-DCP 是发现和基本配置协议, 用于标识与查询有无指定 IP 地址节点, 然后配置 IP 地址, 默认网关, 子网掩码. DCP 是标准的 PROFINET 功能, 可以读写设备与网络地址相关参数. 由于只能在一个局域网中使用, 通过实时通道传输, 使用 DCP 协议可以实现不需要额外组态工程操作就能替换设备.
PROFINET-DCP set ip 流程
PROFINET-DCP 设置 IP 地址流程如下图所示:
步骤 | 具体说明 |
---|---|
1 | 控制器在网内以设备名为参数广播 DCP_Identify.req 请求,确认设备是否存在 |
2 | 设备接收到请求,检查其中的设备名是否与设备自身名字匹配 |
3 | 如果匹配则发送 DCP_Identify.rsp 响应控制器请求,否则不做处理 |
4 | 控制器收到设备回复后,将设备 MAC 地址作为以太网报文的目标地址 |
5 | 控制器将 IP 地址、子网掩码与网关作为参数发送报文 DCP_Set.req 给设备 |
6 | 设备设置 IP 地址等参数完毕后,发送 DCP_Set.rsp 给控制器 |
由于 PROFINET-DCP 为二层协议, 本身缺乏鉴权机制, 导致攻击者也是利用这个流程来篡改工控设备 IP 地址.
ISF 工具漏洞利用 PROFINET-DCP
工具介绍:
ISF 是一款针对工业控制系统的漏洞利用框架, 它是一款针对工业控制系统的漏洞利用框架. 该工具基于开源项目 routersploit, 采用 Python 语言开发. ISF 分为两个模块: 工控协议模块与工控协议客户端模块, 分别用于测试工控协议是否存在漏洞与模拟客户端数据通信.
ISF 漏洞利用 PROFINET-DCP 篡改工控设备 IP 方法与说明:
使用 Profinet set ip module
通过运行 pythonisf.py 启动 isf, 通过 search 命令来查找 profinet 的漏洞利用模块然后用 use 命令选择 profinet_set_ip 漏洞模块. 具体的操作命令如下图所示:
设置漏洞利用参数:
首先用 show options 命令, 查看漏洞利用操作选项, 如下图
target 为要修改目标机的 Mac 地址, target_ip 为想要设置的 ip 地址, nic 为通信的网卡
第一步: 由于 Profinet dcp 是以太网协议, 因此我们首先要设置用哪个网口来发送和接收数据包. 如下图所示:
第二步: 设置目标机 Mac 地址
如果此时不知道目标机的 Mac 地址, 可以运用 scan 命令来进行局域网设备探测, Device Type 为工控设备硬件类型. 如下图所示:
探测到目标机 Mac 地址后, 设置 target, 如下图所示:
第三步: 设置想要篡改的 ip 地址, 子网掩码, 网关, 如下图所示:
第四步: 执行漏洞利用:
运行 run 命令, 执行漏洞利用, 篡改工控设备 IP, 如下图所示:
来源: http://www.tuicool.com/articles/2IfMV3I