本文涉及相關(guān)實(shí)驗(yàn):wireshark之文件還原 https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182014122315591000001&pk_campaign=toutiao-wemedia
實(shí)驗(yàn)?zāi)繕?biāo):
黑客A通過(guò)ARP欺騙,使用wireshark獲取了整個(gè)局域網(wǎng)內(nèi)的網(wǎng)絡(luò)流量信息。無(wú)意之中,他發(fā)現(xiàn)有人在某個(gè)網(wǎng)站上上傳了一份文件。但是他不知道怎么樣通過(guò)wireshark去還原這份文件,沒(méi)辦法,他將監(jiān)聽(tīng)到的數(shù)據(jù)包保存為了一份wireshark的監(jiān)聽(tīng)記錄,打算去向你請(qǐng)教。你能幫助他找到那份上傳的文件嗎?
我們的任務(wù)分為3個(gè)部分:
1. 對(duì)抓到的包進(jìn)行顯示過(guò)濾,找到關(guān)鍵信息。
2. 對(duì)信息進(jìn)行跟蹤,確定上傳文件的TCP流,并保存為二進(jìn)制原始文件。
3. 對(duì)文件中上傳文件的信息進(jìn)行處理,去掉多余的包頭和包尾,得到原始文件。
1.1 實(shí)驗(yàn)任務(wù)一
任務(wù)描述:使用wireshark導(dǎo)入監(jiān)聽(tīng)數(shù)據(jù)包,對(duì)數(shù)據(jù)進(jìn)行顯示過(guò)濾,提取出來(lái)關(guān)鍵信息。
1. 打開(kāi)catchme.pcapng,雙擊即可。會(huì)發(fā)現(xiàn)數(shù)據(jù)記錄一共有148條。如果單純的從開(kāi)始到結(jié)尾去一條一條的審計(jì),是非常費(fèi)力的事情。而且實(shí)際操作過(guò)程中,148條記錄,已經(jīng)算是很少的了。
2. 好在wireshark為我們提供了強(qiáng)大的過(guò)濾顯示功能。我們?cè)趂ilter中可以定義顯示出來(lái)什么樣的數(shù)據(jù)包。
3. 從題目我們可以明確,上傳時(shí)訪問(wèn)的是個(gè)網(wǎng)站,因此我們需要進(jìn)行協(xié)議過(guò)濾。在filter中輸入http,表示我們要顯示所有使用http協(xié)議的數(shù)據(jù)包。輸入回車,或者點(diǎn)擊旁邊的AppLY按鈕,就可以進(jìn)行顯示過(guò)濾。
從圖上下方我們可以看到,數(shù)據(jù)包由原來(lái)的148個(gè)變成了32個(gè)。這樣就很容易幫我們分析了。
4. 仔細(xì)分析,我們會(huì)在末尾左右的第143條數(shù)據(jù)記錄中的info中看到upload這個(gè)詞,我們懷疑這條就是涉及到上傳的數(shù)據(jù)包。
如果你在此之前有些編寫網(wǎng)站的經(jīng)驗(yàn),就會(huì)知道上傳文件提交可以使用post一個(gè)表單的形式。所以,你也可以使用包過(guò)濾顯示,選出所有使用post方法提交的數(shù)據(jù)包。我們可以輸入http.request.method==”POST”進(jìn)行包過(guò)濾。這時(shí)候的顯示如下:
看到了吧,這時(shí)候只顯示了唯一一條記錄,就是我們剛才找到的序號(hào)為143的記錄,是不是快了很多啊。因此,掌握數(shù)據(jù)包過(guò)濾,是熟練掌握wireshark的必備技能之一。
1.2 實(shí)驗(yàn)任務(wù)二
任務(wù)描述:確定POST這條數(shù)據(jù)包是否上傳了文件,若存在則將數(shù)據(jù)dump出來(lái)。
1. 雖然我們看到了有upload關(guān)鍵字,有post方法,但是我們不能確定是不是真的就是上傳文件的那個(gè)請(qǐng)求。我們來(lái)分析一下。雙擊該行。彈出協(xié)議分析框。點(diǎn)擊+號(hào),將子欄展開(kāi)。
我們可以看到,確實(shí)是上傳了文件,而且文件名是bingo.png.原來(lái)他上傳的是一張圖片。在上方紅色部分,我們可以看到由于文件比較大,TCP協(xié)議對(duì)其進(jìn)行了切片,一共切了5個(gè)片。我們點(diǎn)擊下方的各個(gè)Frame,就可以看到每個(gè)包中的內(nèi)容。
問(wèn)題來(lái)了,能不能將這幾個(gè)切片還原成一個(gè)流式會(huì)話,這樣我們就能看到一個(gè)會(huì)話過(guò)程,而不是需要一個(gè)一個(gè)的去點(diǎn)擊。
Wireshark還真可以做到。
2. 關(guān)閉這個(gè)界面,回到我們過(guò)濾后的那個(gè)POST包,右鍵Follow TCP Stream
這時(shí)候我們會(huì)看到:
整個(gè)會(huì)話都被還原了出來(lái)。我們看到了png的原始信息。繼續(xù)往下拉,我們會(huì)看到有關(guān)藍(lán)色的顯示,這是服務(wù)器給我們的回應(yīng)。我們的圖片信息保存在請(qǐng)求部分,因此可以過(guò)濾掉響應(yīng)部分。
因?yàn)槲募隙ū软憫?yīng)大,所以我們選擇6010那個(gè)。這時(shí)候就沒(méi)有響應(yīng)部分出現(xiàn)了。
3. 保存原始文件,以便下一步處理。我們已經(jīng)知道,請(qǐng)求部分中包含了文件的原始信息。因此,我們可以先保存下來(lái),然后處理一下,得到原始文件。
我們選擇raw類型進(jìn)行保存,表示使用二進(jìn)制形式保存文件。
保存為任意格式的文件,這里我們保存為temp.bin
1.3 實(shí)驗(yàn)任務(wù)三
任務(wù)描述:
使用winhex對(duì)文件進(jìn)行最終處理,并保存文件。
1. 將剛才保存的temp.bin用winhex打開(kāi)。
會(huì)看到,文中包含請(qǐng)求信息和我們的圖片信息,以及文件結(jié)尾的尾部信息。我們需要做的事情是確定圖片文件的原始信息頭和尾,去掉多余部分。
2. 回到wireshark中,會(huì)看到我們剛才的tcp stream流中,
關(guān)于圖片的頭部分
在content-type: image/x-png后面有兩個(gè)換行符,然后開(kāi)始我們的原始文件。換行符用十六進(jìn)制表示是 0D 0A.因?yàn)橛袃蓚€(gè),所以,我們?cè)趫D片附近尋找0D 0A 0D 0A.后面的部分就表示圖片的開(kāi)始。
3. 回到winhex中,我們找到了上述數(shù)字
這時(shí)候我們需要去掉圖片以上的部分。在00000000偏移處點(diǎn)擊alt+1,表示選塊開(kāi)始。
在我們找到的0D 0A 0D 0A處的最后一個(gè)0A處點(diǎn)擊alt+2.表示選塊結(jié)束。這時(shí)候,我們就選中了圖片之前的多余部分。
按下delete鍵,選擇yes。
這時(shí)候文件中的多余頭部已經(jīng)被刪除
4.回到wireshark中,我們看看圖片傳送完畢之后的尾部部分。
我們可以看到,這次是一個(gè)換行符。后面有些文件結(jié)束標(biāo)志-------------,我們同樣刪除它們。
這時(shí)候我們的文件中就僅僅是原始圖片的內(nèi)容了。Ctrl+S保存。
最激動(dòng)人心的一步來(lái)了。將我們的temp.bin改為temp.png.打開(kāi)看下:
祝賀你,已經(jīng)完成了我們本次實(shí)驗(yàn),拿下神秘的key。






