0x01 4G工业企业通信流量
题目描述
从通信流量中找出隐藏在其中的信息。答案格式:flag{****************}
解题过程
打开题目附件流量包,在短信里面获取flag{IC7856@qwe}
0x02 可疑的文件
题目描述
一天,运维小明在使用电脑时,突然蓝屏了,当小明再次打开电脑时,桌面上突然多了一个可疑的文件,正当小明准备查看时,电脑再次蓝屏,小明立刻将硬盘拔下来并保存。你能帮助小明查看一下文件的内容是什么吗?答案格式:flag{****************}
解题过程
打开题目附件可以看到是个raw文件,因此使用volatility进行分析
#使用volatility进行内存分析的时候,首先要判断这是从什么操作系统里面dump出的内存
$ volatility imageinfo -f test-20201029-020458.raw
Volatility Foundation Volatility Framework 2.6
INFO : volatility.debug : Determining profile based on KDBG search...
Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86)
AS Layer1 : IA32PagedMemoryPae (Kernel AS)
AS Layer2 : FileAddressSpace (/Users/***/0x02可疑的文件/题目附件/test-20201029-020458.raw)
PAE type : PAE
DTB : 0xaff000L
KDBG : 0x80546ae0L
Number of Processors : 1
Image Type (Service Pack) : 3
KPCR for CPU 0 : 0xffdff000L
KUSER_SHARED_DATA : 0xffdf0000L
Image date and time : 2020-10-29 02:05:01 UTC+0000
Image local date and time : 2020-10-29 10:05:01 +0800
可以看到这是一个xp系统里dump出来的内存,接下来的分析里指定xp进行分析。各种插件的用法可以参考官方wiki
这里在查看IE浏览器缓存的时候发现了flag.png这个东西,因此先把这个dump出来
$ volatility -f test-20201029-020458.raw --profile=WinXPSP2x86 iehistory
Volatility Foundation Volatility Framework 2.6
**************************************************
Process: 1436 explorer.exe
Cache type "DEST" at 0x1389f5
Last modified: 2020-10-29 10:04:51 UTC+0000
Last accessed: 2020-10-29 02:04:52 UTC+0000
URL: Administrator@file:///C:/Documents%20and%20Settings/Administrator/Lhb/flag.png
$ volatility -f test-20201029-020458.raw --profile=WinXPSP2x86 filescan |grep 'flag'
Volatility Foundation Volatility Framework 2.6
0x00000000010e3740 1 0 R--r-- \Device\HarddiskVolume1\Documents and Settings\Administrator\桌面\flag.png
0x00000000010e3740 1 0 R--r-- \Device\HarddiskVolume1\Documents and Settings\Administrator\桌面\flag.png
0x000000000265e318 1 0 RW-rw- \Device\HarddiskVolume1\Documents and Settings\Administrator\Recent\flag.lnk
$ volatility -f test-20201029-020458.raw --profile=WinXPSP2x86 dumpfiles -Q 0x00000000010e3740 -D ./
dump完以后发现图片的内容是32个CRC,也是就是说CRC32。
这里需要脑洞一下ZIP压缩包的CRC爆破,因此下一步就是找可疑的zip压缩包
volatility -f test-20201029-020458.raw --profile=WinXPSP2x86 filescan |grep 'zip'
Volatility Foundation Volatility Framework 2.6
0x000000000076ee58 1 0 R--rw- \Device\HarddiskVolume1\WINDOWS\system32\zipfldr.dll
0x0000000001137028 1 0 R--rw- \Device\HarddiskVolume1\Documents and Settings\Administrator\桌面\Desktop.zip
0x0000000006de9b10 1 0 R--r-d \Device\HarddiskVolume1\WINDOWS\system32\zipfldr.dll
可以看到的是题目比较良心,就搞了一个zip,dump出来看一下。
可以看到一堆4字节大小的txt文件,因此可以确定就是crc的爆破,爆破得flag,脚本如下:
#coding:utf-8
import zipfile
import string
import binascii
def CrackCrc(crc):
for i in dic:
for j in dic:
for p in dic:
for q in dic:
s = i + j + p + q
if crc == (binascii.crc32(s) & 0xffffffff):
#print s
f.write(s)
return
def CrackZip():
for I in range(1,6):
file = 'Desktop' + '.zip'
f = zipfile.ZipFile(file, 'r')
GetCrc = f.getinfo('flag'+str(I)+'.txt')
crc = GetCrc.CRC
#以上3行为获取压缩包CRC32值的步骤
print hex(crc)
CrackCrc(crc)
dic = string.ascii_letters + string.digits + '{}_+/='
f = open('flag.txt', 'w')
CrackZip()
f.close()
0x04 应急红绿灯
题目描述
某路口红绿灯故障启用应急红绿灯灯,南北方向绿灯Q0.0,黄灯Q0.1,红灯Q0.2,东西方向红灯Q0.5,绿灯Q0.3,黄灯Q0.4。按下I0.0启动,按下I0.1停止。由于红绿灯故障引起堵车,东西方向绿灯常亮每秒3辆,南北方向每秒4辆,绿灯闪烁路口通行车辆每秒较常亮减少1辆,黄灯闪烁通行车辆较绿灯常亮每秒减少2辆,启动应急红绿灯后每15秒统计一次路口车辆通过数据,1分钟内车辆通行情况。 东西方向用W 南北方向用N 如前15秒东西通行30 南北通行 20 W30N20 车辆均已两位表示,一辆用01表示。答案格式:flag{****************}
解题过程
打开题目是一个S7-200的梯形图,所以需要逐行的分析
- Network1:I0.1接通,M3.0开始的8个点位重置为0
- Network2:I0.0接通,M3.0开始的1个点位置为1
- Network3:M3.0接通,计时器T37开始工作,计时20s
- Network4:M3.0接通,Q0.0点亮,或M3.1接通,Q0.0闪烁
- Network5:T37计时结束,M3.1置为1,M3.0重置为0
- Network6:M3.1接通,T38计时3s
- Network7:T38计时结束,M3.2置为1,M3.1重置为0
- Network8:M3.2接通后,Q0.1闪烁3s
- T39计时结束,M3.3置为1,M3.2重置为0
- M3.3置为1,T40计时23s
- M3.3接通,Q0.2点亮,或M3.4接通且M3.3断开,Q0.2闪烁
- T40计时结束,M3.4置为1,M3.3重置为0
- M3.4接通,T41开始计时3s
- T41计时结束,M3.0置为1,M3.4重置为0
- M3.0或M3.1接通,Q0.5点亮;或M3.0和M3.1断开,M3.2接通,Q0.5闪烁
- M3.4接通,Q0.4闪烁
- M3.3接通,当T40剩余时间大于2s时,Q0.3点亮,当T40剩余时间小于2s时,Q0.3闪烁
至此梯形图分析完毕,接下来就可以统计一分钟车流量
- 0-15s:南北方向绿灯亮15s,东西方向红灯亮15s
- 15-30s:南北方向绿灯亮5s,绿灯闪烁3s,黄灯闪烁3s,红灯亮4s;东西方向,红灯亮8s,红灯闪烁3s,绿灯亮4s;
- 31-45s:南北方向红灯亮15s;东西方向绿灯亮15s
- 45-60s:南北方向红灯亮4s,红灯闪烁3s,绿灯亮8s;东西方向绿灯亮2s,闪烁2s,黄灯闪烁3s,红灯亮8s
因此flag为flag{W00N60W12N35W45N13N32}
0x06 Modbus流量包
题目描述
在工控网络通信中,工作人员截取了一段奇怪的Modbus流量,请分析该流量包中隐藏的数据。答案格式:flag{****************} flag格式:flag{}。
解题过程
根据题目描述我们首先筛选modbus协议,发现全部是写入数据,并data区域全部有数据
那么追踪一下tcp流,发现了异常可以看到明文字符里出现了PNGIHDR,一个典型的png图片头
那么下一步思路也就清晰了,提数据转图片,脚本如下
# -*- coding: utf-8 -*-
import os
import binascii
os.system("tshark -r modbus.pcapng -2 -R 'modbus&&ip.src==192.168.111.138' -T fields -e modbus.data >data.txt")
data1=open('data.txt')
tmp=''
for i in data1:
tmp = tmp + i[2:4]
data1.close()
f=open('flag.png',"wb+") # filepath为你要存储的图片的全路径
pic = binascii.a2b_hex(tmp.encode())
f.write(pic)
f.close()
0x11 工业协议分析
题目描述
通过分析流量包中的工业协议查询隐藏的flag。答案格式:flag{****************}
##解题过程
打开流量包,筛选modbus协议,追踪tcp流,解base64获取flag
>>> import base64
>>> flag=base64.b64decode('ZmxhZ3s2N2Y1YjgyNTcyNzIwOTI1fQ==')
>>> print(flag)
b'flag{67f5b82572720925}'
>>> exit()