工控流量分析
异常的文件
现存在一份被黑客攻击修改了的工程文件,请应急工作人员找出黑客攻击的痕迹,flag格式为:flag{}。
下载得到压缩包,根据题目描述的提示我们可以得知,此题是需要我们对被修改后的文件,进行痕迹查找,通常在进行痕迹查找是我们用查找日志的方法比较多,这里我们理解出题的考点就是要在众多零碎的文件中找到,特定的痕迹(flag)。
1 | strings $(find | xargs) | grep flag |
简单的Modbus协议分析
由于操作员操作不当导致化工车间蒸馏塔控制器程序出错,请分析错误程序查找错误点并获得flag,flag格式为flag{}。
使用wireshark打开t3.pacp后过滤modbus协议,发现流量包中并未存在使用modbus进行流量传输,之后使用strings命令发现存在可疑16进制字符串,将16进制转ASCII得到flag
1 | 666c61677b44477377546667793147443233366673327366463264736b4c6e677d 十六进制 |
Modbus协议分析
黑客通过外网进入一家工厂的控制网络,之后对工控网络中的操作员站系统进行了攻击,最终通过工控协议破坏了正常的业务。我们得到了操作员站在攻击前后的网络流量数据包,我们需要分析流量中的蛛丝马迹,找到FLAG。格式为flag{}
看完上面那个简单题目后我们正式来一个modbus协议的题目,根据题目描述我们可以得知,我们要做的是将流量包中的恶意流量找出来,接下来我们详细讲讲
打开流量包后发现流量非常多,其中大比例是modbus协议流量,使用过滤器过滤出modbus协议流量。
对modbus协议进行分析首先要对modbus的协议功能码记性分析,这里使用脚本分析协议功能码。
1 | import pyshark |
脚本使用中出现报错情况,首先是查看是否安装pyshark这个模块,如果安装后报错找不到tshark.exe,可以根据这篇文章进行修改
脚本运行结果,如图所示
根据modbus常见功能码分析,分析结果我们可以知道
1
(读取线圈状态)
2
(读取输入内容)
3
(读多个寄存器)
4
(读输入寄存器)
四个功能码都出现了702次,唯独16(预置多个寄存器)功能码只出现了两次,所以猜测与16功能码相关的流量可能存在关键数据,于是运行脚本分析与16功能码相关的流量,提取其中的数据,脚本和运行结果如下:
1 | import pyshark |
提出的数据存在一个16进制字符串00000000003901100001001932005400680065004d006f006400620075007300500072006f0074006f0063006f006c0049007300460075006e006e00790021
,将16进制字符串在线转换对应的ASCII码,得到TheModbusProtocolIsFunny!
,提交成功,Flag为TheModbusProtocolIsFunny!
。
S7协议恶意攻击分析
某天在硫化车间脱硫工艺所使用的的西门子PLC突然发生停机事件,经工厂人员调查发现该时间段PLC存在多次异常行为,请协助调查人员找出PLC相关行为,flag为异常行为数据包的前四位加后四位,格式为flag{}。
使用wireshark过滤S7comm协议的数据包发现存在一处发现plc的stop包,经尝试为flag
内存取证分析
某工厂遭到黑客攻击,但黑客留下了攻击痕迹,系统管理人员将内存保存了下来请应急人员分析注:提示请分析主机账号密码,flag格式化为flag{}。
使用vol内存取证软件对镜像进行分析,根据题目描述的提示我们需要对镜像取证从而得到主机账号密码,提交flag
1 | python vol.py -f ../ADMIN-PC-20201213-080024.raw imageinfo |
1 | python vol.py -f ../ADMIN-PC-20201213-080024.raw --profile=Win7SP1x64 hashdump |