HVV流量分析之排查攻擊者上傳文件痕跡
網(wǎng)安引領(lǐng)時(shí)代,彌天點(diǎn)亮未來???
?

1.場(chǎng)景分析:
(1).在HVV期間,經(jīng)常會(huì)碰到攻擊者嘗試?yán)@過網(wǎng)站的上傳過濾規(guī)則.
(2).通過排查違規(guī)文件格式來查找攻擊者企圖上傳文件的痕跡.
2.常規(guī)情況下,滲透人員碰到網(wǎng)站上傳有過濾,會(huì)嘗試修改數(shù)據(jù)包內(nèi)content-type或者后綴去嘗試?yán)@過,jpg,png,gif這些文件占大多數(shù).
3.用png文件舉例,如果png文件格式正確的情況下,wireshark是可以對(duì)文件結(jié)構(gòu)正常解析出來的.

4.但是如果碰到違規(guī)的png文件格式.會(huì)導(dǎo)致png文件格式無法進(jìn)行正確的解析.

5.所以通過下面的語句,定位到png文件格式有問題的數(shù)據(jù)包.
(((mime_multipart)) && (mime_multipart.header.content-type == "image/png")) && (media)
6.然后提取字段media.type的數(shù)值就是上傳的文件內(nèi)容,一般為十六進(jìn)制.使用python的magic庫對(duì)文件頭重新解析,可以發(fā)現(xiàn)這個(gè)png文件內(nèi)容解析出來的并不是image/png,而是text/plain,說明什么?這個(gè)png數(shù)據(jù)包在上傳過程被篡改過.


7.同理也可以檢測(cè)出來png文件被篡改為php腳本.腳本發(fā)現(xiàn)這個(gè)png文件內(nèi)容解析出來是一個(gè)text/x-php格式的文件.

8.數(shù)據(jù)包內(nèi)容如下.

9.腳本的大概邏輯是,把16進(jìn)制文件內(nèi)容兩兩分組,然后轉(zhuǎn)換到二進(jìn)制(字節(jié)流),重新寫入文件,寫入成功之后,通過調(diào)用magic庫對(duì)這個(gè)文件進(jìn)行重新解析,然后再去判斷是否符合預(yù)期的文件類型.

10.獲取的十六進(jìn)制字符串不能直接寫入文件,因?yàn)檫@樣只是單單的字符串而已,并不是一個(gè)文件,所以需要先轉(zhuǎn)換到二進(jìn)制(字節(jié)流)寫入.
?
11.腳本是一個(gè)半成品,只能單個(gè)檢測(cè),如果需要可以自行改成批量檢測(cè).(因?yàn)楸緛砭褪且粋€(gè)簡(jiǎn)單的demo)
?
12.Q-A問答:
(1)Q:誤報(bào)率高不高? ?A:在網(wǎng)絡(luò)傳輸不穩(wěn)定的情況下,導(dǎo)致文件傳輸不完整,可能會(huì)導(dǎo)致誤報(bào),除了這個(gè)之外很少有人會(huì)在上傳過程中改變?cè)械奈募愋?
?
(2)Q:能否繞過檢測(cè)? A:在攻擊者不知道ids有上傳文件格式檢測(cè)的情況下,是無法繞過的.(在沒有新聞公開的情況下,你會(huì)知道公司部署了某X服的離職傾向檢測(cè)產(chǎn)品?一個(gè)道理).
