数据包分析for CTF
没见过有人写过类似的文章,数据包分析还是比较有趣的,所以写了这篇总结,如果文章中有不对的地方请在下方留言讨论= =。
下面所有的pcap文件都上传到网盘(https://pan.baidu.com/s/1qW5T9TE),大家可以下载做实验。
如果你没做过题目那也可以先不看本文章,先自己做实验,会收获很多 :)
0x01 字符串提取
这类题比较简单,直接搜索关键字字符串,如Pwnium2014的 USB if Fun,直接搜Pwnium有关的信息。
$ strings -a for1.pcapng | grep -i Pwnium
Pwnium{408158c115a82175de37e8b3299d1f93}
或者直接用wireshark搜索。
0x02 加点小难度:)
这题目是自己玩nebula的时候看到的,后来也作为jd107的题了, 直接follow TCP Stream
乍一看好像直接得到答案了,切换到 Hex Dump看看。
7F对应的ASCII是嘛呢,原来是DEL,0D表示的是回车。
所以flag就是backdOORmate
0x03文件简单提取1
文件提取类型的题目在ctf中还是比较常见的,一个ISG2014的题目,数据包不多,首先看下大概内容,抓的是浏览器向某网站请求页面下载的数据帧。第二段(tcp.stream eq 1)Follow TCP Stream发现存在一个名为x.tar.gz 的文件。
之后继续分析,发现下载了该文件。
所以我们需要从数据包提取该文件,使用winhex来提取(->|和|<-之间的)。
之后保存为tar.gz文件
0x04文件提取2
这个题目是SCTF的题Misc400a,wireshark打开后发现有1w多的数据包,其中包含很多TCP错误包(黑底红字),我们忽略它。
wireshark缺省的数据包颜色定义(View-->Coloring Rules...)
随便找个正常的TCP数据包(绿的~), Follow TCP Stream
当然没那么巧我一下就选中了这个数据包,大家注意Filter过滤参数,是第21个TCP回话包。
我们先来看 Statistics -->Conversations
从图中我们可以看出,在数据传输过程中,我们经过了27个TCP会话(0~26)以及数据包的流向、目的端口、数据传输量等等。
发现其中一个会话流量特别大,我们点击这个个包,之后Follow TCP Steam就找到了上面我们那个rar文件了。
之后提取该文件发现需要密码= =,我们继续往上翻,找到第17个会话
URL decode后,再base64 decode 后,发现原来的rar文件为1.gif加密打包的,使用密码JJBoom解密,得到1.gif (后续对该文件还有各种OOXX,和数据包无关就不提了)。
0x05文件提取3
下面这个是IDF的题,又是一堆数据包,进Statistics -->Conversations进一步分析,发现是一堆上传数据(bytes A-->B)
直接Follow TCP Stream
发现是用POST上传文件的, 选择Save AS 保存。
对POST数据包进行过滤(http.request.method==POST)
发现上传文件名为rar文件,还有文件的MD5值、SHA值等。
选择File-->Export Objects-->HTTP
选择Content Type为 octer-stream类型的数据包 分别进行Save As (5个文件),打开第一个文件搜索关键字 Rar (rar文件头)设为选块起始,拉到最后为结束,保存为另一个文件。
根据上图选中不需要的数据包的类比,之后的4个数据包,从00之后选中复制到新文件末尾,以此类推,最终保存为rar文件。
校验其MD5值与数据包中的一致表示文件提取无误(之后是RAR伪加密,和数据包分析无关)。
====
0x06数据包分析再造
没写完= =有些ctf例子的pcap包实在找不到...有机会再补充