白帽黑客:一場木馬病毒引發的血案

故事發生於某個陽光明媚的某手繪交流群,不知什麼時候,來了一位傳奇般的雷鋒級黑客。

具體他說了什麼,就不再複述了,基本就是:"群裡誰要QB,我可以幫你刷"。

並且秉著"我一定要為人民服務的中國夢"精神加了我好友,

於是有了以下的一幕:

白帽黑客:一場木馬病毒引發的血案

真的有天上掉餡餅的好事?但是感覺為什麼有點不對勁

白帽黑客:一場木馬病毒引發的血案

這意圖要不要那麼明顯?看完頓時產生了一種:"總有刁民想害朕"的危機感。

我決定,看看這個釣魚程序賣的是什麼藥

先來看看這款軟件可愛的小圖標

白帽黑客:一場木馬病毒引發的血案

使用PEid進行查殼:發現加了UPX殼

白帽黑客:一場木馬病毒引發的血案

當然這種這個難度約等於0的壓縮殼,使用esp定律或者直接用工具能輕鬆搞定,脫去upx殼後再次查殼,發現變成了VC++6.0

白帽黑客:一場木馬病毒引發的血案

這個年代,當然基本不會有人還在用VC++6.0了那麼基本肯定,這一定是宇宙無敵易語言寫的神奇玩意。

在虛擬機中再次運行這個軟件

白帽黑客:一場木馬病毒引發的血案

可以觀察到,程序的意圖基本就是釣取我們的賬號密碼,不管如何發送,我們至少能夠猜到99%是通過網絡發送出去的。

網絡最一般是通過socket來進行的,socket進行網絡通信,用的是tcp udp兩種通訊協議,對應最常用的發送數據,應該就是send和sendto這兩個函數了。

到這裡, 用了一個被用爛了十幾年但是仍然有效的技術--------inline hook

打開visualstudio創建項目

白帽黑客:一場木馬病毒引發的血案

編寫DLLMain

白帽黑客:一場木馬病毒引發的血案

現在我們需要HookSend和sendto這兩個函數,把數據給dump下來(就是保存下來)

保存的文件名格式是(通訊協議_發送IP地址_端口_索引.bin)

白帽黑客:一場木馬病毒引發的血案

白帽黑客:一場木馬病毒引發的血案

最後在DLLMainattach中讓hook執行並生效

白帽黑客:一場木馬病毒引發的血案

編譯,一次成功(蒼天保佑)
白帽黑客:一場木馬病毒引發的血案

最後我們還需要編寫一個注入器(這個比較複雜點,但是我們可以用複製黏貼大法在網上抄一段)

注入器的功能,就是把讓這個DLL在程序執行之前加載進去,打個比方嘛就是在程序裡插入一個內奸。這個內奸就是我們的hook程序,他會不斷把這個釣魚程序的信息報告給我們。

白帽黑客:一場木馬病毒引發的血案

編譯,Release,那麼到這裡,我們的準備工作也就完成了

現在萬事俱備,只欠東風,當然,這個程序表面上看"是個釣魚程序",但是我們也不得不防一手,所以打開虛擬機環境以防萬一。

把這個"2016刷qb軟件"和我們編寫好的hook程序一起放入虛擬機,釣魚程序重命名為Sample.exe。

其中Injector就是注入器,他會把當前目錄的inlineHooker.dll注入到Sample.exe當中,這樣我們就能夠監視這個程序了

白帽黑客:一場木馬病毒引發的血案

運行Injector,沒有出現錯誤,目標程序也被順利的打開了。說明注入成功

白帽黑客:一場木馬病毒引發的血案

在QQ號碼和密碼中,我們隨便輸入一串數字,比如1111111之類的,然後點擊"一鍵刷qb",在這個"您已成功刷取QB,24小時到賬"的忽悠彈窗後,我們發現了桌面上多了點東西.

白帽黑客:一場木馬病毒引發的血案

首先我們成功dump到了這個程序往外發送的一些數據包,可以看到這些數據包是以send函數的形式發送出去的,也就是這個釣魚程序與某個IP進行了某些骯髒的py交易

我們分析第一個數據包,發現它指向了vip.store.baidupan.com

這是百度網盤還是什麼。看這又臭又長的Get請求,那個File字樣深深出賣了它似乎又下載了一些別的什麼東西.

白帽黑客:一場木馬病毒引發的血案

我索然無味的關掉前幾個數據包,顯然沒有發現什麼特別有價值的東西,我接著打開最後一個數據包,似乎出現了一些有意思的東西:

白帽黑客:一場木馬病毒引發的血案

我們發現它指向了www.****.cc這個地址,而qqdaohao不就是"QQ盜號"的漢語拼音縮寫嘛,這命名手法確實很"易語言",而name和content這兩個參數在傳遞什麼東西。

我躡手躡腳地把這個地址放入瀏覽器然後訪問,結果瀏覽器顯示出了ok這個字樣,這又代表著什麼呢?釣魚成功?

白帽黑客:一場木馬病毒引發的血案

帶著疑問,意識到信息取得的不夠多,我第二次執行了這個釣魚程序,同時刻意把賬號和密碼設置成了12345678 和 87654321看看這個與name content這兩個參數到底有什麼關係。

白帽黑客:一場木馬病毒引發的血案

可以看到,數據包被再次dump了下來

然後我們用賬號密碼都是11111111,重複以上步驟再做一遍,然後把數據剪切出來對齊分析

白帽黑客:一場木馬病毒引發的血案

結果就非常顯而易見了,第一部分似乎是沒有什麼改變,第二部分,清楚的看到

Content是 21 22 23 24…… B1FF 28 27 26 25 24 23……,這B1FF應該是作分隔用的

傻子都看得出來。21代表1;22代表2以此類推。

不得不懷疑下,他的網站空間是否有做完整的數據長度檢查呢

就算沒有,我是否可以以流量的形式,1kb 1kb地蠶食他的釣魚空間已絕後患?

既然如此,無需客氣,打開SpacerFloodProject,修改config.h代碼,把我們的請求代碼構造一下,我們每次發送3KB的數據,那麼就能消耗其至少3KB的空間,假設一秒發送十次的話30kb的速度,一天就能蠶食它24GB的網絡空間,那麼不出意外,這個損人利己的釣魚空間不出2天八成就爆炸了

但這個速度還是太慢了,況且就算我們flood成功了,被這傢伙發現刪去我們的數據,還不是分分鐘的問題,總不能一直和他耗著。

帶著這個疑問,我打算更加深入一步,在這個HTTP Get請求包當中,可以明顯的看到,這個GET請求被髮往了一個www.****.cc網頁下面

白帽黑客:一場木馬病毒引發的血案

我躡手躡腳地打開這個網站,一股濃濃的中二病殺馬特風撲鼻而來

白帽黑客:一場木馬病毒引發的血案

在這個網站得的軟件上,我發現了一個有趣的東西,會不會這個釣魚軟件就是這個東西生成的呢?不顧羞恥病發作,我點開鏈接下載了這個程序

白帽黑客:一場木馬病毒引發的血案

白帽黑客:一場木馬病毒引發的血案

下載之後發現是一堆亂碼命名的文件,重複之前的注入步驟,把這個生成器重命名為Sample.exe,執行injector注入

居然還有二維碼登陸,本著我不下地獄誰下地獄的精神,我使用我的賬號進行登陸,很快,一堆數據包被dump了下來

白帽黑客:一場木馬病毒引發的血案

其中大部分,應該和企鵝的快速登陸有關係,但是我還是找到了一個比較特別的數據包,

115.238.240.152,沒錯的話,他不就是釣魚軟件發往的地址麼。

白帽黑客:一場木馬病毒引發的血案

白帽黑客:一場木馬病毒引發的血案

我同樣生成了一個"釣魚木馬",當然這水平叫木馬是不是有點太抬舉自己的了

白帽黑客:一場木馬病毒引發的血案

重複注入步驟,做了很多次,就不再囉嗦了

白帽黑客:一場木馬病毒引發的血案

在生成的木馬面前,輸入測試的賬號密碼11111111

白帽黑客:一場木馬病毒引發的血案

查看dump下來的數據包並複製到之前我們分析的文本文件當中,嘿,Name的參數發生了改變:

白帽黑客:一場木馬病毒引發的血案

到了這裡,我就大膽的猜想:

1.釣魚生成器,請求自己釣取到的賬號密碼是靠那個Name參數同名的txt文件

2.釣魚軟件,通過一個Get請求,把自己的賬號密碼發送到name對應的txt文本文件下面

通過瀏覽器,我訪問了這個txt文件,同時也證實了這個猜想

白帽黑客:一場木馬病毒引發的血案

現在我們再來看看這個,我創建了一個文本文件,裡面只有一個字母,就是隻有一字節,為什麼會佔用磁盤4KB的空間呢

這個和文件系統有關,但文件系統最小粒度單位,常常是簇,而一個簇的大小,就是4KB

所以,文件大小肯定是4KB的整數倍

白帽黑客:一場木馬病毒引發的血案

既然如此,我就只好用塞文件大法了,我只要發送幾十個字節的Get請求,就能足足浪費這個釣魚空間4KB的空間容量,同時產生大量的文件碎片

這個就不是那麼容易刪掉了吧

打開spacerFlood項目,重新構造數據包

白帽黑客:一場木馬病毒引發的血案

恩,試了試,效果還不錯,皮卡丘,就交給你了

將這個flood扔到某個雲主機上運行,然後我們去睡大覺。而這個dbflood在以每秒鈡10個數據包的速度,往這個空間不斷塞著辣雞數據包,而那個釣魚空間也在以每秒10個文件,每小時36000個文件,每天864000文件塞著一個文件夾,很快這個文件夾就連資源管理器打開都得半個小時了

後續:

已經距離我編寫flood執行到現在已經3天時間了,期間dbflood因為連接問題重啟了幾次,到現在,這個空間這個文件夾下大概有200w以上個文件了,而今天,發現dbflood的請求從OK變為了全是error

白帽黑客:一場木馬病毒引發的血案

再次訪問這個目錄,發現已經爆炸了,這也意味著,這個一系列害人害己的釣魚軟件的徹底宕機。

白帽黑客:一場木馬病毒引發的血案

訪問這個網站,看來這個釣魚作者也發現自己空間似乎不是那麼對勁,於是他刪掉了所有值錢釣魚的數據,好吧,至少以前的陰謀算是破產了,但他居然還不死心,居然開發了新的版本,然而之前這個釣魚程序,包括已經發布的和還在使用的,都已經徹底報廢了。

不過到截止完文為止,這位黑客大神的服務端,似乎還沒有做好….

總結:

1.缺少邊界與數據檢查的服務端,是坑爹又危險的

2. 缺少存儲優化,曝露直接文件操作而沒有檢查的存儲權限也是坑爹又危險的

3.當然扯遠了這個釣魚程序的用戶安全性=0,我可以任意訪問其他用戶釣取的賬戶數據,同樣是是坑爹又危險的。

最後,技術本沒有對錯,但如果用在歪門邪道上,終究是害人害己,就像這次。

如果你也對相關技術感興趣,或致力於成為一名白帽子做互聯網安全的守護者,請關注我,會定期更新有用有趣的內容。


分享到:


相關文章: