一個釣魚木馬引發的血案!竟把2345請回家

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

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

寡人回了一句,大概意思是:“這是手繪群,打廣告別來,QB什麼用”之類的云云。

沒想到這位雷鋒黑客不但不放棄,秉著“我一定要為人民服務的中國夢”精神還加我好友,

寡人也想看看這葫蘆裡賣的什麼藥

於是有了已下的一幕:

一個釣魚木馬引發的血案!竟把2345請回家

看來真是天下掉餡餅的好事,為什麼不試試呢,但是感覺為什麼有點不對勁

一個釣魚木馬引發的血案!竟把2345請回家

騷年,這意圖要不要那麼明顯,頓時產生了一種:“總有刁民想害朕”的危機感。

如果在平時,基本是已經是拉黑刪除釣魚程序結束了,但是今天寡人怨念尤其的深,不知道是不是昨晚喝的咖啡弄的一夜沒睡,還是陪母上大人看了一上午的國產雷劇,渾身積攢了滿滿的負能量,我開始有了一些比較腹黑的想法 (╯°Д°)╯︵ ┻━┻

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

先來看看這款軟件悶騷的小圖標

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

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

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

一個釣魚木馬引發的血案!竟把2345請回家

可以觀察到,程序的意圖基本就是釣取我們的賬號密碼,那麼,這個賬號密碼會被髮送到哪裡呢?

不過不管如何發送,我們至少能夠猜到99%是通過網絡發送出去的,易語言這個excited的東西啊。網絡最一般是通過socket來進行的,socket進行網絡通信,用的是tcp udp兩種通訊協議,對應最常用的發送數據,應該就是send和sendto這兩個函數了。(當然也有WSAsend之類IOCP的做法,不過既然是易語言這種宇宙級語言寫出來的東西,我們就不用想的那麼複雜)

到這裡,寡人決定做一個小小的工具,把這個軟件發送的數據給dump下來

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

至於什麼是inline hook,這裡我也不繼續複述,畢竟這東西網上存在的資料已經非常非常多了,自己動手豐衣足食,不過我還是使用兩張圖來簡單描述一下inline hook

圖1.0

首先這是原來正常的函數

一個釣魚木馬引發的血案!竟把2345請回家


然後這是被hook過的函數


一個釣魚木馬引發的血案!竟把2345請回家


顯然的,在我們的函數里,我們就可以做一點壞事,比如把傳遞給原函數的參數進行過濾修改,當然,在這裡我們只是想dump下這個軟件發送出去的數據,廢話就不多說了,打開visualstudio創建項目

一個釣魚木馬引發的血案!竟把2345請回家

編寫注入用的DLL(為什麼使用DLL呢,因為DLL能夠避免很多直接代碼注入修改的很多問題,比如代碼重定向,例如aslr保護……最主要的是,直接寫起來也方便)

一個釣魚木馬引發的血案!竟把2345請回家

編寫hook類,自己放大圖片看吧,具體代碼在附件當中自行查閱

一個釣魚木馬引發的血案!竟把2345請回家

編寫DLLMain

一個釣魚木馬引發的血案!竟把2345請回家

到這裡,我們需要HookSend和sendto這兩個函數,在上面說到的“我們的函數中”,我們就是把數據給dump下來(就是保存下來)

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

一個釣魚木馬引發的血案!竟把2345請回家

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

編譯,一次成功(蒼天保佑)

一個釣魚木馬引發的血案!竟把2345請回家

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

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

一個釣魚木馬引發的血案!竟把2345請回家

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

現在萬事俱備,只欠東風,當然,這個程序表面上看“是個釣魚程序”,但是我們也不得不防一手,萬一這個程序還有些別的什麼動作,那不就神不知鬼不覺被它搞了個大新聞麼,所以,我們打開虛擬機環境以防萬一。

一個釣魚木馬引發的血案!竟把2345請回家

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

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

從文件名可以看到,這個TCP連接到了27.152.181.114這個地址,而端口是80,顯而易見這八成是一個Http協議的通訊,我們用記事本直接打開這個文件,發現它訪問了pan.lanzou.com並且Get x/56636裡的東西

一個釣魚木馬引發的血案!竟把2345請回家

那麼到底是什麼玩意呢。不妨打開瀏覽器瀏覽一下那個地址,2345????.exe,

一個釣魚木馬引發的血案!竟把2345請回家

看來就是桌面上多出的這個玩意了。真是釣魚也不忘打廣告撈一筆。真不知道這個釣魚程序和2345間存在著什麼更多的py交易

一個釣魚木馬引發的血案!竟把2345請回家

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

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

一個釣魚木馬引發的血案!竟把2345請回家

接著看之後另一個數據包,似乎也是在下載什麼東西。我們複製下這個鏈接

一個釣魚木馬引發的血案!竟把2345請回家

一個釣魚木馬引發的血案!竟把2345請回家

發現迅雷彈出來了,掀桌子,怎麼又是這個2345網址導航,看來這個釣魚程序的作者從一個地方下載還不大放心,從另外的一些地方又下載了一次,莫非下載的多就能進行更多的交易?

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

通過數據包,我們發現它指向了www.****.cc這個地址,而qqdaohao怎麼看怎麼覺得像QQ盜號的漢語拼音,這命名手法確實很“易語言”,而name和content這兩個參數在傳遞什麼東西。

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

我們再次打開這個數據包,把數據記錄下來

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

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

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天八成就爆炸了

一個釣魚木馬引發的血案!竟把2345請回家

執行dbFlooder,發現數據發送成功,我們儘量地調整發送的數據速度,使其不被其防火牆過濾而拉黑我們。看了看,效果似乎還不錯。

一個釣魚木馬引發的血案!竟把2345請回家

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

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

一個釣魚木馬引發的血案!竟把2345請回家

下載之後發現是一堆亂碼命名的文件,一臉黑人問號,不過這個不影響我們繼續分析,不如先打開試試?重複之前的注入步驟,把這個生成器重命名為Sample.exe,執行injector注入

一個釣魚木馬引發的血案!竟把2345請回家

看來,這個軟件真是至死不渝的打廣告啊,除了廣告,還有各種忽悠

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

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

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

一個釣魚木馬引發的血案!竟把2345請回家

一個釣魚木馬引發的血案!竟把2345請回家

打開這個數據包,發現它在請求一個txt文件,前面的那串文件名怎麼感覺那麼眼熟好像又不大一樣

不管那麼多了,我也試試這釣魚軟件腫麼樣,我同樣生成了一個“釣魚木馬”,當然這水平叫木馬是不是有點太抬舉自己的了

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

查看dump下來的數據包

一個釣魚木馬引發的血案!竟把2345請回家

複製到之前我們分析的文本文件當中,嘿,Name的參數發生了改變

一個釣魚木馬引發的血案!竟把2345請回家

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

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

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

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

一個釣魚木馬引發的血案!竟把2345請回家

嘛。那麼這個txt文件是什麼時候創建的呢,是我登陸那個釣魚軟件生成器時,還是釣魚木馬發送賬號密碼時,我偷偷摸摸地自己構造了一個請求,來證實我這個想法

在下面這個請求中我構造了name為testtesttest,content為hellohello….

一個釣魚木馬引發的血案!竟把2345請回家

之後我去訪問testtesttest.txt,嘿,還真有,真是作大死啊

一個釣魚木馬引發的血案!竟把2345請回家

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

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

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

一個釣魚木馬引發的血案!竟把2345請回家

除了這個,我還想試試更加excited的東西,比如參數中傳遞一些非常規字符,假如這個能成功,那就不僅僅是flood那麼簡單了。但是,可惜的是,似乎這些字符都被過濾掉了00截斷同樣試了試,未果,他也很識相的寫出了參數錯誤字樣

一個釣魚木馬引發的血案!竟把2345請回家

一個釣魚木馬引發的血案!竟把2345請回家

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

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

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

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

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

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

一個釣魚木馬引發的血案!竟把2345請回家

我曉有興趣地下載了這個新版本的釣魚生成器,再次進行分析

一個釣魚木馬引發的血案!竟把2345請回家

我的天,他居然放棄使用空間,而用易語言自己寫了服務端,那麼81端口是鬧哪樣,中文數據包仍然顯得非常的“易語言”

一個釣魚木馬引發的血案!竟把2345請回家

我似乎看到了一大堆缺少邊界檢查和字符過濾的服務端。至於是否存在某些溢出漏洞,這裡我就不繼續探究了。不過到截止完文為止,這位黑客大神的服務端,似乎還沒有做好….

總結:

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

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

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

最後,技術是好東西,但如果用來歪門邪道,終究是害人害己,就像這次這玩意。


分享到:


相關文章: