目录
1、内存镜像分析
题目描述:
一黑客通过互联网扫描,发现某企业的互联网入口,经过一系列操作将工控机进行了锁定,你能通过分析内存镜像,破解黑客留下的登录密码吗,并找到FLAG,flag形式为 flag{}
解压得memory文件,直接用volatility软件分析(以下工具为python2版本的命令,python3版本不一样)
python2 vol.py -f memory imageinfo
可以看到配置文件.
python2 vol.py -f memory --profile=WinXPSP2x86 hashdump
对Administrator的最后一段数字进行md5解密,得123456789,再进行md5加密的32位小写密文位flag
flag{25f9e794323b453885f5181f1b624d0b}
2、工控业务流量分析
题目描述:
某工场在厂区安全检测时,检测到一段异常流量数据包,分析数据包中的异常,找到FLAG,flag形式为 flag{}
工控流量分析,首先看modbus协议同时题目位业务流量。可以考虑正常到modbus 协议正常业务常用的功能码为 0-16
-
0x01 (Read Coils): 该功能码用于读取离散输出(线圈)的状态。通常,它用于读取数字输出的状态,例如,获取开关或继电器的状态。
-
0x03 (Read Holding Registers): 这个功能码用于读取模拟输出寄存器的值。模拟输出通常表示传感器测量的数据,例如温度、湿度等。
-
0x0F (Write Multiple Coils): 用于写入多个离散输出(线圈)的状态。这个功能码通常用于设置多个数字输出的状态,例如,同时设置多个继电器
本题进行了大量 Read Holding Registers。
只有少量的 Read Coils和Write Multiple Coils
分别在modbus.func_code == 1 和 modbus.func_code ==15
func_code 1 存在大量data值 且和 func_code 15 data值一样。所以提取这段值
c29e46a64eeaf64e3626c2ae0ec2a22ac24c0c8c1c
data = 'c29e46a64eeaf64e3626c2ae0ec2a22ac24c0c8c1c'
data_new = bytes.fromhex(data)
flag = ''
for i in data_new:
flag += chr(int(format(i, '08b')[::-1],2))
print(flag)
本题唯一坑的地方是要逆序。
flag{CyberWorldCupCETC2018}