CTF WP – 工控业务流量分析

华盟原创文章投稿奖励计划

赛题描述

       这是我们工厂中在某天下午截取的数据包,请找出流量中针对正常的业务不对劲的数据内容。附件下载地址

解题思路

       该题目为工控业务流量分析,属于数据包分析类的题目,使用wireshark打开下载到的数据包后可以发现数据包中有大量的数据混杂在一起,考虑到题目是工控业务流量分析,因此可以初步排除非工控的协议,留到最后分析。

       经过逐步排除后可以发现,数据包中相关的工控流量有TCP 502端口的Modbus-TCP协议及TCP端口102的西门子S7comm协议。如下图所示,可以看到该流量中存在大量的重传现象,因此一种可能是网络中存在中间人攻击,传输的流量可能被截取篡改,而篡改的数据包中就很有可能存在我们需要的flag。

     此时可以将过滤后的数据包使用wireshark导出后用scapy工具进行辅助分析是否存在中间人改包及定位数据包位置。

       通过辅助分析后,并没有在数据包中发现被篡改的数据,因此可以排除中间人改包的这个可能。怀疑造成数据包显示大量重放的原因可能与端口镜像配置有关。

       如果Flag存在工控协议中的话,那么留下的可能性不多,只需要进一步关注modbus协议及西门子S7协议的数据包即可。

       使用wireshark进一步分析西门子s7协议的数据包后发现存在大量的read var和write var请求。

       但是进一步分析后会发现大量的readvar和writevar都是针对同一个数据进行的读取行为,且数据本身长度较小且没有变化。因此也可以大致排除西门子s7comm中存在flag的可能。

       下一步需要分析的就是modbus协议了, 通过对modbus协议进行过滤,首先分析所有使用到的modbus功能码,目前发现数据包中使用到了0x01(Read coils),0x03(Read Holding Registers) 0x0f (Write multiple coils)。

       通过对这些功能码所相关的数据进行分析后可以发现,数据包中存在大量的Read Holding Registers请求, 且请求的各个寄存器数值一直在不停的变化,看起来比较像正常的工业数据,而Read coils请求及Write multiple coils请求只出现了一次,因此比较可疑。 数据包中的modbus write multiple coils写入了168个连续的bit数据,我们所需要的flag信息就可能藏在这里。

mobus tcp的bit位写入在数据包的传输方式有些特殊,具体可以参考官方资料。

       编写脚本处理coils信息,执行后得到Flag: CyberWorldCupCETC2018

原创作者:DARK_LBP,转载请注明来自 工匠安全实验室

本文原创,作者:AlexFrankly,其版权均为华盟网所有。如需转载,请注明出处:https://www.77169.net/html/192709.html

发表评论