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,转载请注明来自 工匠安全实验室