背景
这次的比赛又跟着 Dalao 去划水了,能力和时间不足本次就只划了三题,一题签到,一题划水的 Web 和一题 Misc 。本文就来讲一下这题 Misc 流量分析。
题目
https://esd.cc/files/51/a547dd9a.pcapng
解题
将下载回来的 traffic.zip
解压,会得到一个 traffic.pcapng
文件,使用 Wireshark 打开。
将流量按照 Protocol 进行分类,可知有
ARP / DNS / FTP / FTP-DATA / ICMP / ICMPv6 / IGMPv3 / LLMNR / NBNS / SSDP / SSL / TCP / TLSv1.2 / UDP
除去那几个没什么用的协议之后,有用的协议并没有很多,目前来说 TLSv1.2 协议没有什么好的办法可以强破,所以决定从 FTP 入手解题。
设置过滤器为 ftp || ftp-data
进行分析,能看出来服务器的地址和账户密码
服务器地址:182.254.217.142
用户名:ftp
密码:codingay
尝试直接进行登录,但是失败了,应该是抓完包之后修改过的了。但是从流量中我们也能分析出来很多东西,目录结构可以从 No.8110 中提取出来,内容如下:
(提取的方法:右键 No.8110 -> 追踪流 -> TCP 流 -> Save as …)
drwxrwxr-x 2 500 500 4096 Sep 17 23:44 docker
-r--r--r-- 1 33 33 7 Aug 16 18:51 flag
-rwxr-xr-x 1 33 33 217 Oct 18 01:10 flag.zip
drwx------ 2 107 115 4096 Oct 17 17:38 gay
drwxrwxrwx 2 0 0 16384 Oct 27 2016 lost+found
drwxrwxrwx 3 0 0 4096 Nov 29 2016 test
drwxrwxr-x 2 500 500 4096 Sep 17 23:44 docker
-r--r--r-- 1 33 33 7 Aug 16 18:51 flag
-rwxr-xr-x 1 33 33 217 Oct 18 01:10 flag.zip
drwx------ 2 107 115 4096 Oct 17 17:38 gay
drwxrwxrwx 2 0 0 16384 Oct 27 2016 lost+found
drwxrwxrwx 3 0 0 4096 Nov 29 2016 test
出题人在 FTP 服务器上下载了几个文件,大概有 flag.zip / key.log 以及几个没什么用的文件。需要注意的是他登录了两次,两次下载了两个不同的 flag.zip 文件,应该是其中做出过修改,key.log 先留着。
按照时间顺序分别将两个 flag.zip 文件命名为 1.zip 以及 2.zip 导出
两个文件的 MD5 值如下:
ae22366e23ae2c8c8e90231fd4f2eb9b 1.zip
6bdda6e105e6e690974e7883c5eb090c 2.zip
按照 CTF 对于 zip 文件的处理,是最喜欢出伪加密的题目的了。
hexedit 打开 zip 文件,定位到 50 4B 01 02
位置,将跟在后面的 09 00
改为 00 00
就可以去掉伪加密。
修改前:
修改后:
尝试解压这两个压缩文件(为了备份我 cp 了一份新的命名为 3.zip / 4.zip)
一个可以解压出来另外一个不行,解压出来的结果也是一个假的 flag,提示我们去看看流量中的加密部分,那应该就是 TLSv1.2 的那些流量了。
上面我有提到,出题人在最后还在服务器上面还下载了一个名为 key.log
的文件,贴出前两行供参考:
CLIENT_RANDOM cbdf25c6b2259a0b380b735427629e94abe5b070634c70bd9efd7ee76c0b9dc0 6782ad3aa5938c43831971a06e9a20eac27075d559799769ce5d1a3ea85211c981d8e67f75d6fd11fcf5536f331a968b
CLIENT_RANDOM 247f33720065429dc7e017e51f8b904309685ec8688296011cd3c53e5bafa75a 921ffbf7bfe6d8c393000f34eab6dc20486e620bdc90f21b6037c3df5592ef91fffca1dc8215699687a98febd45a4ce0
能发现这是一份 NSS Key Log Format
的文件,而这个文件是能解密出 Wireshark 里面的 https 流量的。
Firefox、Chrome 可以通过设置 SSLKEYLOGFILE 环境变量导出所有的会话密钥,估计是为了方便调试。Wireshark 可以通过这种格式的密钥来解密。
资料参考:
NSS Key Log Format - Mozilla | MDN
27.3 如何用 Wireshark 解密 HTTPS 报文
在 Wireshark 的首选项中的 SSL 协议部分,在 (Pre)-Master-Secret log filename
中填上刚刚的 key.log
然后刷新一下流量包就可以解密出来隐藏的信息。
瞄了一眼大概就是上了百度的网盘下载了个东西,直接通过 导出对象 -> HTTP
进行导出
解压之后发现是一首歌,アスノヨゾラ哨戒班,也挺好听的,听到了最后剩下了莫名其妙的杂音,数据应该就在这个部分了。
通过 Audacity 打开了这首歌拉到了最后,果然是后面加上去的
切换到频谱图分析
隐约能看到写着
Key:AaaAaaaAAaaaAAaaaaaaAAAAAaaaaaaa!
回到一开始解不开的 zip 文件,使用 AaaAaaaAAaaaAAaaaaaaAAAAAaaaaaaa!
作为密码,成功解出来了 flag.txt
# cat flag.txt
flag{4sun0_y0zora_sh0ka1h@n__#>>_<<#}
到此,游戏结束。