某省工業(yè)互聯網安全技術技能大賽Writeup
作者:末初?編輯:白帽子社區(qū)運營團隊
? ??"白帽子社區(qū)在線CTF靶場BMZCTF,歡迎各位在這里練習、學習,BMZCTF全身心為網絡安全賽手提供優(yōu)質學習環(huán)境,鏈接(http://www.bmzclub.cn/)
"? ??
協議分析
S7協議分析
0300002402f080320100000003000e00050501120a100200010000830000000004000801。
請解讀以上協議內容,并準確的拿到此報文返回值,flag即為返回值。提交格式:flag{xxx}。????寫入報文的數據分析
03 00 ? ? ? ? ? ? ? 報文頭
00 24 ? ? ? ? ? ? ? 數據總長度: 36
02 f0 80 32 ? ? ? ? 固定長度: 4 ?
01 ? ? ? ? ? ? ? ? 命令類型: 發(fā)
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}工控流量分析
????
????用科來診斷數據包時發(fā)現幾個TCP非法校驗的包

????查看數據包編號為3397、3398的包,發(fā)現這些包都帶有data字段

????然后在wireshark中分析3397、3398時發(fā)現了端倪

????觀察前后幾個包,發(fā)現.34給.99發(fā)的包長度都為64,唯獨3399的長度包為103;查看發(fā)現3399包被直接附加了一段data字段之外的數據。發(fā)現一段連續(xù)的字符串,提取出來base64解碼

flag{tq2ysds66}異常流量分析


????大部分為HTTP協議流量,但是查看http流和導出文件都沒有發(fā)現flag的線索。繼續(xù)查看少部分的Modbus協議

????發(fā)現一個非法校驗和的包,查看發(fā)現尾部附加了一段字符串

syntvfguvfZbqohffffff????經驗比較豐富的手可能一眼就能看出來synt是字符flag的rot13編碼
flag{flagisthisModbussssss}OPC流量分析
使用科來網絡分析系統分析流量包
科來網絡分析系統下載地址
????打開之后發(fā)現很多非法校驗的包,點擊診斷之后點所有診斷;然后點擊源IP地址排序,發(fā)現了唯一的192.168.0.46給192.168.0.43發(fā)的包PS:點擊排序不了的,取消勾選超過2000不排序
????
????查看包的內容,發(fā)現
很明顯是十六進制的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常用的在線工具網站
里面的編碼一個個試,發(fā)現是XXencode
flag{0nly_u5_Kn0w_17_D0nO7_T3l1_o7hers}現場數據采集

????根據題目意思猜測可能為視頻流量數據,發(fā)現流量包中含有大量h264協議的包
H264 編解碼協議詳解
搜索引擎查閱發(fā)現可以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的版本打開發(fā)現看不清楚

flag{GOODFORYOU}應急恢復

????DiskGenius一把梭;磁盤->打開虛擬磁盤文件->選中磁盤點擊恢復文件



flag{73D3DA963F7505E9}文件分析


????010 Editor打開,看到IDAT、IEND字樣從而確定這應該是一張png圖片


????開頭的這幾個字節(jié)很明顯應該是PNG圖片的長寬位置,或者對比其他的PNG圖片;不難發(fā)現該文件缺少了PNG開頭的十六個字節(jié)


89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
????保存為what.png,發(fā)現圖片貌似長寬顯示不完全,再次用010 Editor打開發(fā)現CRC校驗報錯,修改高度高度任意修改,能看到flag就行,或者使用腳本去爆破原來的寬高
flag{welcome@2021}組態(tài)編程
探索組態(tài)密碼

上位監(jiān)控軟件密碼破解20190510.PCZ,利用北京力控組態(tài)軟件ForceControl V7.0打開
北京力控組態(tài)軟件ForceControl V7.0(低版本只適配Windows7)
然后點擊開發(fā)
????選擇忽略

????選擇功能->用戶管理

????設置登登陸方式選擇本地方式;發(fā)現一個admin的系統管理員
????
發(fā)現admin賬戶的密碼,但是是星號,看不到,可以利用網上的星號密碼查看器
星號密碼查詢器
得到密碼:elexadmin
flag{elexadmin}惡意程序
惡意app分析

????將spyNote_client_easy2.apk改為spyNote_client_easy2.zip解壓,然后直接在目錄下用grep全局找
root@mochu7-pc:/mnt/c/Users/Administrator/Desktop/工業(yè)互聯網附件/惡意程序/惡意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/工業(yè)互聯網附件/惡意程序/惡意app/spyNote_client_easy2# grep -rn '@.*\.com' ./*
grep: ./classes.dex: binary file matches
root@mochu7-pc:/mnt/c/Users/Administrator/Desktop/工業(yè)互聯網附件/惡意程序/惡意app/spyNote_client_easy2# strings classes.dex | grep -E '@.*\.com'
CONTACT [email protected]
[email protected]
[email protected]
root@mochu7-pc:/mnt/c/Users/Administrator/Desktop/工業(yè)互聯網附件/惡意程序/惡意app/spyNote_client_easy2#????找出來的三個郵箱,第二個就是對的
flag{[email protected]}惡意程序分析
????
????給了一個exe和jpg

????jpg用010 Editor打開啥也看不出來,猜測應該是被exe文件處理過的

????ida打開exe文件

????跟進主函數下做處理的sub_401302()函數,看到了對原圖每個字節(jié)做異或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}工業(yè)固件分析


????修改后綴為zip解壓,在\firm\Web\wwwroot\classes發(fā)現一堆jar文件

????使用jd-gui之類的反編譯軟件來反編譯jar包
https://github.com/java-decompiler/jd-gui/releases
????一個個看看吧,我也不知道有什么技巧這里,找出來了的在SAComm.jar包發(fā)現了ftp的賬戶和密碼
flag{sysdiag+factorycast@schneider}