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