CoinMiner挖礦病毒分析
*本文作者: findream ,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。
前言
偶然在論壇上看到一篇關於CoinMiner介紹,文章從該病毒的流行趨勢,入侵路徑,關聯分析等多個角度對病毒進行的分析,對樣本的分析寥寥幾句就概括完了。想到之前分析的多為勒索類病毒,對於挖礦類病毒研究較少。故斗膽嘗試小小分析一次,如有不到之處望師傅們指教。
一、樣本資訊
1、樣本名稱:antspywares.exe
2、樣本md5:3846b42b7ac29f8f92f6222230207cb5
3、是否加殼:無殼
4、編譯語言:Microsoft Visual C++ ver. ~6.0~7.10 – Linker 14 – Visual 2015
5、樣本來源: ofollow,noindex" target="_blank">http://93.174.93.149/
二、行為分析
樣本在技術上有所創新,首先沒有直接使用Kernel32下的API函式,而是利用Knowdlls登錄檔優先在家Ntdll,然後獲取其中的Nt*函式。第二,使用了程序替換技術,利用svchost.exe這一宿主程序,去啟動挖礦程序,這樣有效避免的被查殺的風險。但是實際操作中沒有有效控制CPU的佔用率,導致了被害者很容易覺察到。
三、樣本分析
1、程式在執行了初始化操作後,建立了一個名為4e064bee1f3860fd606a的互斥體,這一步目的是保證程式在此主機上是唯一的。如果檢測到已存在次互斥體,程式退出。
2、通過異或運算,解密得到配置檔案地址,通過訪問配置檔案,我們可以看到錢包地址,礦池等相關配置資訊。
3、再次通過相同的異或運算得到錢包地址,礦池地址pool.monero.hashvault.pro:3333
4、對病毒檔案進行Hash加密
初始化CSP;
建立空的Hash物件;
將檔案讀入記憶體;
將讀入資料新增到指定Hash物件。
5、根據之前獲得的系統位數(32位or64位)分別利用登錄檔KnownDlls32或者KnowDlls登錄檔項載入ntdll.dll,然後通過GetProcAddress函式獲取指定函式地址。這樣一來可以直接用Nt*函式,不需要Kernel32分發,也增大了分析人員分析的難度。
6、通過登錄檔\\SOFTWARE\\Microsoft\\Cryptography獲取主機GUID值,目的是唯一的標誌主機,在理論上GUID是每臺主機唯一擁有的。也就是說每臺主機的GUID值是不一樣的。
7、建立病毒釋放目錄:
8、從網路中讀取配置資訊,可以發現這裡的資料和前面的new.txt是一致的:
9、判斷svchost和wuapp.exe是否存在,這兩個檔案是系統檔案,svchost是服務宿主程式,wuapp用於windows的更新,檢查這兩個程式存在的目的是為了後期利用這兩個程式建立挖礦程序。
10、建立兩個配置檔案
11、在啟動目錄下建立HpuEtzbXyw.url檔案,用於自啟動。
12、建立挖礦程序,這裡使用了程序替換技術。首先將程式碼跨程序寫入svchost.exe中,然後通過sysenter彙編關鍵字resume。
四、溯源分析
根據管家團隊的分析顯示8220團隊使用多個C&C伺服器,這樣可以有效的避免被檢測到。一下是8220團隊使用到的C&C伺服器。
159.65.155.17 93.174.93.149 198.50.179.109 193.169.252.253 192.99.142.235
同時樣本中使用到的礦池地址是pool.monero.hashvault.pro:3333發現和其他廠商團隊所報告的不符,可能是團隊修改了其中的礦池。
*本文作者:findream,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。