文章目录
协议分析S7协议分析工控流量分析异常流量分析OPC流量分析应急处置图片的秘密现场数据采集应急恢复文件分析组态编程探索组态密码恶意程序恶意app分析恶意程序分析固件分析丢失的密码工业固件分析协议分析
S7协议分析
0300002402f08030000003000e00050501120a100200010000830000000004000801。请解读以上协议内容,并准确的拿到此报文返回值,flag即为返回值。提交格式:flag{xxx}。
写入报文的数据分析
03 00报文头00 24数据总长度: 3602 f0 80 32 固定长度: 4 01 命令类型: 发00 00 00 03 标记序列号: 300 0e固定长度: 200 05有效数据长度: 5(从偏移量后第一位开始计算)05 命令起始符号01 写入数据块个数: 112 0a 10 固定长度: 3(返回数据前缀) 02 写入方式: 01按bit写入; 02按byte写入00 01写入数据个数: 1(byte方式可以写入多个,bit只能写入单个)00 00写入数据块编号: 083 写入数据类型: M00 00 00 写入地址偏移量: 000 04写入方式: 03按bit写入; 04按byte写入00 08写入bit的个数01 写入的值: 1
写入报文的返回值
03 00报文头00 16数据总长度: 2202 f0 80 32 固定长度: 403 命令类型: 收00 00 00 03 标记序列号: 300 0200 0100 0005 01ff 表示写入正常
flag{0300001602f0803203000000030002000100000501ff}
工控流量分析
用科来诊断数据包时发现几个TCP非法校验的包
查看数据包编号为3397
、3398
的包,发现这些包都带有data
字段
然后在wireshark中分析3397
、3398
时发现了端倪
观察前后几个包,发现.34
给.99
发的包长度都为64
,唯独3399
的长度包为103
;查看发现3399
包被直接附加了一段data字段之外的数据。发现一段连续的字符串,提取出来base64解码
flag{tq2ysds66}
异常流量分析
大部分为HTTP
协议流量,但是查看http流和导出文件都没有发现flag的线索。继续查看少部分的Modbus
协议
发现一个非法校验和的包,查看发现尾部附加了一段字符串
syntvfguvfZbqohffffff
经验比较丰富的Misc手可能一眼就能看出来synt
是字符flag的rot13
编码
flag{flagisthisModbussssss}
OPC流量分析
使用科来网络分析系统
分析流量包
科来网络分析系统下载地址
打开之后发现很多非法校验的包,点击诊断
之后点所有诊断
;然后点击源IP地址
排序,发现了唯一的192.168.0.46
给192.168.0.43
发的包
PS:点击排序不了的,取消勾选超过2000不排序
查看包的内容,发现
很明显是十六进制的ASCII码
53554E54616E68414D6A41794D513d3d
>>> from binascii import *>>> hexdata = "53554E54616E68414D6A41794D513d3d">>> unhexlify(hexdata)b'SUNTanhAMjAyMQ=='>>>>>> base64_data = unhexlify(hexdata)>>>>>> from base64 import *>>>>>> b64decode(base64_data)b'ICSjx@'>>>
flag{ICSjx@}
应急处置
图片的秘密
secret.jpg
根据文件名猜测为OurSecret
隐写
下一步就是获取密码
程序逻辑有比较用户输入和内部秘钥的函数strcmp
,所以这里打个断点,调试就能看到正确秘钥和用户输入秘钥了
得到密码:my_m0r3_secur3_pwd
肉眼分辨不出来什么编码,对着我之前写的:收录CTF中MISC常用的在线工具网站
里面的编码一个个试,发现是XXencode
flag{0nly_u5_Kn0w_17_D0nO7_T3l1_o7hers}
现场数据采集
根据题目意思猜测可能为视频流量数据,发现流量包中含有大量h264
协议的包
H264 编解码协议详解
搜索引擎查阅发现可以Wireshark加载lua脚本提取出h264
数据流,然后利用Elecard StreamEye
分析
/volvet/h264extractor
Elecard StreamEye Basic 4.4
将下载好的rtp_h264_extractor.lua
脚本放入WireShrak的目录中
修改init.lua
,在最后面添加一行:dofile(DATA_DIR.."rtp_h264_extractor.lua")
重启WrireShark,打开流量包;工具->Extract h264 stream from RTP
会在流量包的当前路径生成一个dump.264
使用Elecard StreamEye
打开它
PS:这里使用的版本是
Elecard StreamEye 4.7
,算是比较新的版本,之前用2.9
的版本打开发现看不清楚
flag{GOODFORYOU}
应急恢复
DiskGenius
一把梭;磁盘->打开虚拟磁盘文件->选中磁盘点击恢复文件
flag{73D3DA963F7505E9}
文件分析
010 Editor
打开,看到IDAT
、IEND
字样从而确定这应该是一张png
图片
开头的这几个字节很明显应该是PNG图片的长宽位置,或者对比其他的PNG图片;不难发现该文件缺少了PNG开头的十六个字节
89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
保存为what.png
,发现图片貌似长宽显示不完全,再次用010 Editor
打开发现CRC校验报错,修改高度
高度任意修改,能看到flag就行,或者使用脚本去爆破原来的宽高
flag{welcome@}
组态编程
探索组态密码
上位监控软件密码破解0510.PCZ
,利用北京力控组态软件ForceControl V7.0
打开
北京力控组态软件ForceControl V7.0(低版本只适配Windows7)
然后点击开发
选择忽略
选择功能->用户管理
设置登登陆方式
选择本地方式
;发现一个admin
的系统管理员
发现admin
账户的密码,但是是星号,看不到,可以利用网上的星号密码查看器
星号密码查询器
得到密码:elexadmin
flag{elexadmin}
恶意程序
恶意app分析
将spyNote_client_easy2.apk
改为spyNote_client_easy2.zip
解压,然后直接在目录下用grep
全局找
root@mochu7-pc:/mnt/c/Users/Administrator/Desktop/工业互联网附件/恶意程序/恶意app/spyNote_client_easy2# lsAndroidManifest.xml comjavamail.charset.mapjavamail.default.providers javamail.pop3.providerjavamail.smtp.provider mailcap.default mimetypes.default resclasses.dexdsn.mf javamail.default.address.map javamail.imap.providerjavamail.smtp.address.map mailcap META-INF orgresources.arscroot@mochu7-pc:/mnt/c/Users/Administrator/Desktop/工业互联网附件/恶意程序/恶意app/spyNote_client_easy2# grep -rn '@.*\.com' ./*grep: ./classes.dex: binary file matchesroot@mochu7-pc:/mnt/c/Users/Administrator/Desktop/工业互联网附件/恶意程序/恶意app/spyNote_client_easy2# strings classes.dex | grep -E '@.*\.com'CONTACT javamail@hahaha_wtf@testmail0917@root@mochu7-pc:/mnt/c/Users/Administrator/Desktop/工业互联网附件/恶意程序/恶意app/spyNote_client_easy2#
找出来的三个邮箱,第二个就是对的
flag{hahaha_wtf@}
恶意程序分析
给了一个exe
和jpg
jpg
用010 Editor
打开啥也看不出来,猜测应该是被exe
文件处理过的
ida
打开exe
文件
跟进主函数下做处理的sub_401302()
函数,看到了对原图每个字节做异或0x61
处理
使用010 Editor
打开sc.jpg
;然后工具->十六进制运算->二进制异或
异或出来的内容,从末尾看已经看出来有flag字样的十六进制字符
E8 FF FF FF FF C0 5F B9 57 03 02 02 81 F1 02 0202 02 83 C7 1D 33 F6 FC 8A 07 3C 02 0F 44 C6 AAE2 F6 E8 02 02 02 02 5E 8B FE 81 C6 16 01 02 02B9 03 02 02 02 FC AD 01 3C 07 E2 FA B9 8D 10 B7F8 E8 4D 02 02 02 68 22 01 02 02 FF D0 B9 9E 7878 CD E8 3C 02 02 02 6A 02 68 44 01 02 02 68 2D01 02 02 6A 02 FF D0 33 C0 C3 53 56 8B F1 33 D2EB 12 0F BE CB C1 CA 0D 80 FB 61 8D 41 E0 0F 4CC1 03 D0 46 8A 1E 84 DB 75 E8 5E 8B C2 5B C3 8D41 F8 C3 55 8B EC 83 EC 14 53 56 57 89 4D F4 64A1 30 02 02 02 89 45 FC 8B 45 FC 8B 40 0C 8B 4014 8B F8 89 45 EC 8B CF E8 D2 FF FF FF 8B 3F 8B70 18 85 F6 74 4F 8B 46 3C 8B 5C 30 78 85 DB 7444 8B 4C 33 0C 03 CE E8 8E FF FF FF 8B 4C 33 2089 45 F8 03 CE 33 C0 89 4D F0 89 45 FC 39 44 3318 76 22 8B 0C 81 03 CE E8 6D FF FF FF 03 45 F839 45 F4 74 1C 8B 45 FC 8B 4D F0 40 89 45 FC 3B44 33 18 72 DE 3B 7D EC 75 9C 33 C0 5F 5E 5B C9C3 8B 4D FC 8B 44 33 24 8D 04 48 0F B7 0C 30 8B44 33 1C 8D 04 88 8B 04 30 03 C6 EB DF 20 02 0202 33 02 02 02 38 02 02 02 75 73 65 72 33 32 2E64 6C 6C 02 66 6C 61 67 7B 34 39 62 61 35 39 6162 62 65 35 36 65 30 35 37 7D 02 79 6F 75 20 676F 74 20 69 74 21
flag{49ba59abbe56e057}
固件分析
丢失的密码
Squashfs filesystem
unsquashfs takeme.bin
可直接解压
解压后得到一个squashfs-root
文件夹,下面有很多文件;还是老方法
grep -rn '^password.*' ./*
ifconfig.cfg
文件很明显是配置文件,提交flag
flag{WldOb2J5NWllV1YwZER4}
工业固件分析
修改后缀为zip
解压,在\firm\Web\wwwroot\classes
发现一堆jar
文件
使用jd-gui
之类的反编译软件来反编译jar
包
/java-decompiler/jd-gui/releases
一个个看看吧,我也不知道有什么技巧这里,找出来了的
在SAComm.jar
包发现了ftp的账户和密码
flag{sysdiag+factorycast@schneider}