盜號木馬分析報告
0x01基本信息文件: C:Users15pb-win7Desktop 04.vir
大小: 631810 bytes
修改時間: 2017年9月29日, 8:19:09
MD5: 81FE61EC3C044AA4E583BA6FF1E600E8
SHA1: D7C9D1E5A2FA2806A80F9EDBCDD089ED05D6B7D8
CRC32: 2EBCCBF8
加殼情況:未加殼
0x02簡介
這是一個針對用戶瀏覽器、FTP軟體,竊取系統及個人信息的木馬。
0x03被感染系統癥狀
創建C:Users用戶名AppDataRoaming5F1832文件夾,並將木馬以不同名稱2728C2.exe複製到其中,其中名稱5F1832和名稱2728C2為木馬隨機產生,接著修改木馬的文件屬性為隱藏。用戶系統中瀏覽器、FTP等軟體本地存儲密碼會被上傳到指定伺服器。木馬嘗試在註冊表中添加啟動項但是失敗。0x04詳細分析當木馬運行後,會進行如下操作
1. 檢測操作系統是否運行在虛擬機(wmware等)中,系統進程列表中是否有安全工具(windbg等)和殺毒軟體,如果發現自動終止運行。
2. 載入RC數據中的名為1000的資源到內存並其進行解密
3. 載入Icon資源類型下的所有資源到內存,並使用之前RC中名為1000的資源的數據對其進行解密
第一次解密
第二次解密
此時木馬的主體已經暴露在外,將其dump出來,保存為可執行文件
4. 接著木馬程序獲取自身路徑以掛起的方式創建對應的子進程,並獲取對應的線程上下文CreateProcessW(0,自身路徑,0,0,0,4,0,0,buf1(大小0x44), buf2(大小0x10));
5. 將子進程的主模塊數據卸載
6. 創建一個內存段對象,將當前進程和子進程的指定位置指定大小的內存與之「綁定」
(1)首先創建一個內存段對象
(2)兩次調用下面的函數,將當前進程內存地址為0x16E000和子進程內存地址為0x400000,大小同為0xA2000(也就是釋放的惡意PE的IMAGESIZE)的內存空間同時和上面創建的SectionHandle「綁定」到一起。
此時在當前進程中修改0x16E000後的內容就會間接的修改了子進程0x400000後的內容。
7. 將之前解密出來的惡意主體在當前進程中PE展開(實現PE文件載入到內存)
此時當前進程和子進程的內容應該都如圖所示
8. 接著主進程恢復子進程的主線程,並結束自身進程
9. 接下來就是分析之前dump出來的主體untitle1.exe了,下面是基本文件信息,.x段很可疑
程序使用hash值獲取函數地址
字元串都是局部變數字元數組,隱蔽性很強
10. 獲取"SOFTWAREMicrosoftCryptography"下的"MachineGuid"項的鍵值"f9117a5d-b155-4a3e-b6c9-5ae181247d3b",加密之後,得到"5ED09A55F1832728C292E32429D73569",最後截取前0xc個位元組,返回"5ED09A55F1832728C292E324",如果獲取鍵值失敗則採用結合一個固定值產生字元串。以本機為例,之後創建互斥體和之後生成的文件夾名和文件名都和"5ED09A55F1832728C292E324"有關
11. 防止自身多啟動
12. 嘗試竊取幾乎所有的瀏覽器、FTP客戶端中等軟體保存的用戶帳號:下面是執行竊取操作的循環
這裡簡單分析下第一個函數調用:火狐密碼的竊取(1)首先,由註冊表獲取到路徑0012FB78
00271CB8 UNICODE "SOFTWAREMozillaMozilla Firefox53.0 (x86 zh-CN)"(2)獲取關鍵文件夾並用於初始化(3)初始化之後就是讀取
的這三個文件獲取密碼
然後就關閉10. 接著獲取當前用戶是否具有管理員許可權,當前虛擬機未打開管理員許可權網路文獻:以上Delphi檢測用戶是否具有administrator許可權(OpenThreadToken,OpenProcessToken,GetTokenInformation,AllocateAndInitializeSid和EqualSid)http://www.cnblogs.com/findumars/p/5281970.html
11.將以上所有收集到的信息發送至指定伺服器其中.x段存儲著伺服器地址xor 0xFF後的值,每次均從中獲取對應的網址獲取伺服器地址
發送數據
12.接著就是移動文件到指定文件夾(並在這個過程中改文件名),並設置文件屬性
13. 之後就是循環上傳
14. 執行流程圖
15.木馬的缺陷:未能正確添加啟動項
這其間獲取伺服器地址使用一個奇怪的函數,函數內部首先使用RSA相關的函數解密一塊內存空間,然後又將釋放的惡意PE的.x段與0xFF異或,之後將xor的結果覆蓋到之前解密的部分,而這之間沒有任何對解密部分的使用,也就是說白解密了.一開始以為是混淆,直到又看到一個函數SHRegSetPath,一開始看到就覺得應該是設置啟動項,函數第一個參數是主鍵HKEY_LOCAL_MACHINE,但是第二個參數竟然是伺服器地址,結果就是這個木馬不能正確添加到啟動項那麼,為什麼呢?往SHRegSetPath上面看看,會發現剛剛說的那個那函數,跟進去會發現它還是首先解密一塊空間,
解密後就是SOFTWAREMicrosoftWindowsCurrentVersionRun,這正是SubKey應該的字元串,但是之後被伺服器地址無情的覆蓋了,所以最後就悲劇了.這裡猜測可能是作者是想改將伺服器地址改為自己的(跟到過解密後的字元串,除了這個註冊表的都是網址),他可能是在原來的RSA解密函數內部改的(你會發現有很多nop),在其中使用彙編將自己添加的.x段異或0xFF覆蓋到返回地址,但是他沒有注意到添加啟動項也使用了這個函數也用於解密"SOFTWAREMicrosoftWindowsCurrentVersionRun"字元串.
整個木馬詳細的分析過程在附件中(真心詳細),
歡迎下載鏈接:http://pan.baidu.com/s/1qYbpdZu 密碼:mqiw 解壓密碼:111
本文由看雪論壇樹梢之上原創 轉載請註明來自看雪社區
推薦閱讀: