一、Scapy介绍
Scapy是一个Python第三方库,使scapy我们能够发送,嗅探、分析并伪造数据包。从而可以实现扫描,跟踪路由,探测,单元测试,攻击或网络发现。它可以取代hping、arpspoof、arp-sk,arping等工具来实现攻击,Scapy是一个可构建网络数据包的强大第三方库。
具有以下几个特点:
1.可以通过交互模式,对数据包进行解析研究。
2.可以用来网络数据包嗅探和并根据我们的需求构造packet。
3. scapy已经内置了大量的网络协议构造方法,如:DNS,ARP,IP,TCP,UDP,它可帮助我们非常方便的构造数据包,本次我们将使用scapy中的IP()、Ether()、ARP(),来实现网络欺骗、实现中间人攻击,并使用它来封装上层的工控协议,伪造数据包对上位机发起攻击。
-
IP类
-
Ether类
-
ARP类
-
代码示例
接下来我们将使用scapy来封装S7comm数据包。
二、S7comm介绍
S7Comm(S7 Communication)是西门子的私有协议,是西门子工业控制通讯协议簇里的一种,S7Comm协议是基于TCP/IP实现依赖于面向工控系统的传输服务。S7Comm协议被封装在TPKT、ISO-COTP协议中,从而协议数据可够通过TCP传送。它用于PLC编程,早期的西门子私有协议S7comm通信,对安全考虑不足。不具备的加密功能,没有任何防止重放攻击机制,可轻易被利用。具体协议结构如下图所示:
三、中间人攻击实现
中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)这种攻击方法是通过各种技术手段将控制目标系统的节点,并将该节点逻辑上串在两台通信计算机之间,这个节点就称为“中间人”。
中间人攻击中我们要分别对上位机和PLC进行欺骗。将上位机和PL的流量同时引入控制节点中,通过控制中间节点来实现传输数据的获取、篡改等。攻击示意图如下所示:
攻击步骤:
1、第一步是利用ARP欺骗篡改PLC、上位机ARP缓存,实现劫持流量,这一步是实现中间人攻击的关键,可根据ARP刷新时间,调整ARP欺骗频率,维持劫持状态。
2、第二步:通过截取的流量的分析,获取工控协议通信内容例如通信端口,传输数值等。
3、第三步:根据获取的协议,伪造PLC设备与上位机数据传输,篡改数值、状态来实现攻击目的。
-
示例代码:
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论