0x01基本資訊檔案: C:\Users\15pb-win7\Desktop\004.vir
大小: 631810 bytes
修改時間: 2017年9月29日, 8:19:09
MD5: 81FE61EC3C044AA4E583BA6FF1E600E8
SHA1: D7C9D1E5A2FA2806A80F9EDBCDD089ED05D6B7D8
CRC32: 2EBCCBF8
加殼情況:未加殼
0x02 簡介
這是一個針對使用者瀏覽器、FTP軟體,竊取系統及個人資訊的木馬。
0x03 被感染系統症狀
建立C:\Users\使用者名稱\AppData\Roaming\5F1832資料夾,並將木馬以不同名稱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.
獲取"SOFTWARE\Microsoft\Cryptography"下的"MachineGuid"項的鍵值"f9117a5d-b155-4a3e-b6c9-5ae181247d3b",加密之後,得到"5ED09A55F1832728C292E32429D73569",最後擷取前0xc個位元組,返回"5ED09A55F1832728C292E324",如果獲取鍵值失敗則採用結合一個固定值產生字串。以本機為例,之後建立互斥體和之後生成的資料夾名和檔名都和"5ED09A55F1832728C292E324"有關
11. 防止自身多啟動
12. 嘗試竊取幾乎所有的瀏覽器、FTP客戶端中等軟體儲存的使用者帳號:下面是執行竊取操作的迴圈
這裡簡單分析下第一個函式呼叫:火狐密碼的竊取(1)首先,由登錄檔獲取到路徑0012FB78
00271CB8 UNICODE "SOFTWARE\Mozilla\Mozilla Firefox\53.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上面看看,會發現剛剛說的那個那函式,跟進去會發現它還是首先解密一塊空間,
解密後就是\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,這正是SubKey應該的字串,但是之後被伺服器地址無情的覆蓋了,所以最後就悲劇了.這裡猜測可能是作者是想改將伺服器地址改為自己的(跟到過解密後的字串,除了這個登錄檔的都是網址),他可能是在原來的RSA解密函式內部改的(你會發現有很多nop),在其中使用匯編將自己新增的.x段異或0xFF覆蓋到返回地址,但是他沒有注意到新增啟動項也使用了這個函式也用於解密"\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"字串.
整個木馬詳細的分析過程在附件中(真心詳細),
歡迎下載連結:http://pan.baidu.com/s/1qYbpdZu 密碼:mqiw 解壓密碼:111
本文由看雪論壇樹梢之上原創 轉載請註明來自看雪社群