西门子S7系列中间人攻击:流量劫持和转发(一) – 作者:黄一113530

前言:

前一篇文章我主要讲述了西门子S7系列PLC安全防护,在攻击利用方面也重点提到了中间人攻击,今天我主要来讲述一下中间人攻击的第一步流量劫持和转发,也是最关键的那一步,可能一些设计和攻击思路略有差异,如有错误之处,欢迎大家指正哈。

首先,什么是中间人攻击(简称“MITM攻击”)?在MITM攻击中,攻击者将自己放置在两个设备之间,拦截或修改两者之间的通信。然后攻击者可以收集信息并模拟这两个设备中的任何一个。这是一种间接的入侵攻击,而且中间人攻击不会损害两个设备的通讯。中间人攻击其本质是利用ARP协议的漏洞。

那工业控制系统中的中间人攻击是否有区别呢?西门子的PLC设备在正常情况下是相互不通信的,我们有机会捕捉到的流量大概率是PLC和上位机之间的通信,这也是比较有价值的流量。

定位PLC和上位机:

废话不多说,我们得先对网络架构摸个底呀,得知道谁是PLC谁是上位机,但是既然是要偷偷地劫持流量,肯定不能用Nmap、Plcscan这些主动映射工具,来通过网络发送数据包并进行分析,这样不符合中间人攻击的特性,得悄咪咪的探测,那用什么呢?GRASSMARLIN!

GRASSMARLIN只是被动地对工业设备进行映射,来帮助系统管理员、审计员或其它人员完成深度分析的工作,因其检测方式被动,GRASSMARLIN不会在网络上产生任何流量。它只和传统的数据包分析器一样,嗅探网络上的流量。所以我们选择它,安装链接如下https://github.com/nsacyber/GRASSMARLIN/releases/tag/v3.2.1

安装完成后,GRASSMARLIN可以采用分析捕获的数据包或者实时检测,这里我们找到了需要的PLC和上位机的IP。

获取物理地址:

接下来是获取PLC和上位机的物理地址,为什么要知道它们的MAC地址呢?因为当上位机发送数据包给PLC,首先应用层下发指令消息,传输层指定端口号(源端口和末端口均为102),网络层封装IP包头(原始IP和目标IP),接着到数据链路层处理并找到网卡,网卡会在数据包前封装一个帧头和帧尾,封装目标MAC地址和原始MAC地址。

那目标的MAC地址是怎么来的呢?通过ARP(地址解析协议)的广播请求,PLC设备收到后通过ARP协议单播应答告诉上位机,上位机此时建立ARP缓存表。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。这就是ARP协议要做的事情。

如上图所示,我构造一个简单的脚本获取双方MAC地址并和之前GRASSMARLIN获取的比对,简单使用Scapy模块,需要注意的点是conf.iface是用来设置选择网卡接收流量的,Windows机器上设置网卡名称或者网卡驱动比较麻烦,如果只有一个网卡,完全可以不设置。conf.verb=0是关闭输出的意思。(踩坑)

ARP地址欺骗:

首先,我们说几句关于Scapy的唠嗑,Scapy是一个强大的交互式数据包处理程序(使用python编写)。它能够伪造或者解码大量的网络协议数据包,能够发送、捕捉、匹配请求和回复包等等。它可以发送无效数据帧、注入修改的802.11数据帧、在WEP上解码加密通道(VOIP)、ARP缓存攻击(VLAN)等。简直无敌!

如下图所示,定义两个简单的函数,一个是还原恢复之前的网络,另一个是发送ARP欺骗的包,其中要注意的是参数op,op=2代表响应报文,op=1代表请求报文,我们需要积极地回应PLC和上位机,我在这我在这!我带了这个MAC地址!利用这一ARP的特性。

然后运行脚本,设置抓取含有PLC设备IP的数据包500个,显示运行成功。

读取信息:

接下来就是读取数据包里的信息了,如下图所示,我等到了上位机给PLC发送指令进行数据包交互,这次的PLC是S7-1200或者S7-1500,所以抓到的是S7comm-plus的包,当然实际操作中抓取不到通信数据也是很正常的,毕竟不可能一直无缘无故的发送指令或者进行停启操作等。

针对一条有用的数据,我使用wirkshark追踪TCP流查看具体的通信过程,可以看到有一条关于PLC设备的CPU信息,可以判断出是S7-1500的设备,这就相当于提取到关键的基础信息啦。

总结:

由此可见,我们在抓取的流量中,就可以获取到一些PLC的关键信息,可以以此建立一张关于PLC的拓扑图,甚至可以修改抓到的包发送错误的指令。你可以将中间人攻击者想象成一个无赖的邮政工作人员,他坐在邮局里,拦截了两个人之间写的信。该邮递员可以阅读私人邮件,甚至可以编辑这些信件的内容,然后再将其传递给预期的收件人。

本文实验只用于测试区,禁止对工控生产环境进行实际操作,否则后果自负。接下来两篇文章我将主要讲述中间人攻击的后续阶段,如何扩大战果,例如PLC的指纹检测和读写功能权限爆破等,以及如何防御中间人攻击。

参考及感谢:

https://www.freebuf.com/sectool/143106.html

https://blog.csdn.net/jpygx123/article/details/84302654

https://blog.csdn.net/Eastmount/article/details/103898463

*本文作者:黄一113530,转载请注明来自FreeBuf.COM

来源:freebuf.com 2020-04-20 10:00:31 by: 黄一113530

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论