某省工业互联网安全技术技能大赛Writeup

共 6167字,需浏览 13分钟

 ·

2021-10-11 15:56

作者:末初 编辑:白帽子社区运营团队




    "白帽子社区在线CTF靶场BMZCTF,欢迎各位在这里练习、学习,BMZCTF全身心为网络安全赛手提供优质学习环境,链接(http://www.bmzclub.cn/)

"    






协议分析

S7协议分析

0300002402f080320100000003000e00050501120a100200010000830000000004000801。
请解读以上协议内容,并准确的拿到此报文返回值,flag即为返回值。提交格式:flag{xxx}。

    写入报文的数据分析

03 00               报文头
00 24               数据总长度: 36
02 f0 80 32         固定长度: 4  
01                 命令类型: 发
00 00 00 03         标记序列号: 3
00 0e               固定长度: 2
00 05               有效数据长度: 5(从偏移量后第一位开始计算)
05                 命令起始符号
01                 写入数据块个数: 1
12 0a 10           固定长度: 3(返回数据前缀)
02                 写入方式: 01按bit写入; 02按byte写入
00 01               写入数据个数: 1(byte方式可以写入多个,bit只能写入单个)
00 00               写入数据块编号: 0
83                 写入数据类型: M
00 00 00           写入地址偏移量: 0
00 04               写入方式: 03按bit写入; 04按byte写入
00 08               写入bit的个数
01                 写入的值: 1

    写入报文的返回值

03 00               报文头
00 16               数据总长度: 22
02 f0 80 32         固定长度: 4
03                 命令类型: 收
00 00 00 03         标记序列号: 3
00 02
00 01
00 00
05 01
ff                 表示写入正常
flag{0300001602f0803203000000030002000100000501ff}

工控流量分析

    

    用科来诊断数据包时发现几个TCP非法校验的包


    查看数据包编号为33973398的包,发现这些包都带有data字段

    然后在wireshark中分析33973398时发现了端倪

    观察前后几个包,发现.34.99发的包长度都为64,唯独3399的长度包为103;查看发现3399包被直接附加了一段data字段之外的数据。发现一段连续的字符串,提取出来base64解码

flag{tq2ysds66}

异常流量分析

    大部分为HTTP协议流量,但是查看http流和导出文件都没有发现flag的线索。继续查看少部分的Modbus协议

    发现一个非法校验和的包,查看发现尾部附加了一段字符串

syntvfguvfZbqohffffff

    经验比较丰富的手可能一眼就能看出来synt是字符flag的rot13编码

flag{flagisthisModbussssss}

OPC流量分析

使用科来网络分析系统分析流量包

  • 科来网络分析系统下载地址

    打开之后发现很多非法校验的包,点击诊断之后点所有诊断;然后点击源IP地址排序,发现了唯一的192.168.0.46192.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@2021'
>>>
flag{ICSjx@2021}

应急处置

图片的秘密

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分析

  • https://github.com/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打开,看到IDATIEND字样从而确定这应该是一张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@2021}

组态编程

探索组态密码

上位监控软件密码破解20190510.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# ls
AndroidManifest.xml com     javamail.charset.map         javamail.default.providers javamail.pop3.provider     javamail.smtp.provider mailcap.default mimetypes.default res
classes.dex         dsn.mf javamail.default.address.map javamail.imap.provider     javamail.smtp.address.map mailcap                 META-INF         org               resources.arsc
root@mochu7-pc:/mnt/c/Users/Administrator/Desktop/工业互联网附件/恶意程序/恶意app/spyNote_client_easy2# grep -rn '@.*\.com' ./*
grep: ./classes.dex: binary file matches
root@mochu7-pc:/mnt/c/Users/Administrator/Desktop/工业互联网附件/恶意程序/恶意app/spyNote_client_easy2# strings classes.dex | grep -E '@.*\.com'
CONTACT javamail@sun.com
hahaha_wtf@163.com
testmail0917@163.com
root@mochu7-pc:/mnt/c/Users/Administrator/Desktop/工业互联网附件/恶意程序/恶意app/spyNote_client_easy2#

    找出来的三个邮箱,第二个就是对的

flag{hahaha_wtf@163.com}

恶意程序分析

    

    给了一个exejpg

    jpg010 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 02
02 02 83 C7 1D 33 F6 FC 8A 07 3C 02 0F 44 C6 AA
E2 F6 E8 02 02 02 02 5E 8B FE 81 C6 16 01 02 02
B9 03 02 02 02 FC AD 01 3C 07 E2 FA B9 8D 10 B7
F8 E8 4D 02 02 02 68 22 01 02 02 FF D0 B9 9E 78
78 CD E8 3C 02 02 02 6A 02 68 44 01 02 02 68 2D
01 02 02 6A 02 FF D0 33 C0 C3 53 56 8B F1 33 D2
EB 12 0F BE CB C1 CA 0D 80 FB 61 8D 41 E0 0F 4C
C1 03 D0 46 8A 1E 84 DB 75 E8 5E 8B C2 5B C3 8D
41 F8 C3 55 8B EC 83 EC 14 53 56 57 89 4D F4 64
A1 30 02 02 02 89 45 FC 8B 45 FC 8B 40 0C 8B 40
14 8B F8 89 45 EC 8B CF E8 D2 FF FF FF 8B 3F 8B
70 18 85 F6 74 4F 8B 46 3C 8B 5C 30 78 85 DB 74
44 8B 4C 33 0C 03 CE E8 8E FF FF FF 8B 4C 33 20
89 45 F8 03 CE 33 C0 89 4D F0 89 45 FC 39 44 33
18 76 22 8B 0C 81 03 CE E8 6D FF FF FF 03 45 F8
39 45 F4 74 1C 8B 45 FC 8B 4D F0 40 89 45 FC 3B
44 33 18 72 DE 3B 7D EC 75 9C 33 C0 5F 5E 5B C9
C3 8B 4D FC 8B 44 33 24 8D 04 48 0F B7 0C 30 8B
44 33 1C 8D 04 88 8B 04 30 03 C6 EB DF 20 02 02
02 33 02 02 02 38 02 02 02 75 73 65 72 33 32 2E
64 6C 6C 02 66 6C 61 67 7B 34 39 62 61 35 39 61
62 62 65 35 36 65 30 35 37 7D 02 79 6F 75 20 67
6F 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

  • https://github.com/java-decompiler/jd-gui/releases

    一个个看看吧,我也不知道有什么技巧这里,找出来了的SAComm.jar包发现了ftp的账户和密码

flag{sysdiag+factorycast@schneider}

往期精彩文章



pwnhub 9月公开赛
黄金票据的制作与使用
baijiacmsV4代码审计!
记一道有趣的“签到”题
工作中最常用的Linux命令,排查问题必备


技术支持:白帽子社区团队
— 扫码关注我们 






浏览 112
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报