# 0x0D. REvil Ransomware Analysis [TOC] ## 前言 美國Kaseya公司旗下的遠端監控管理產品Kaseya VSA遭到駭客利用其漏洞來散播REvil勒索軟體到客戶端,加密勒索客戶端電腦,影響相當巨大 勒索團伙提供一次性支付7000萬美元等值比特幣就會釋出解密密鑰來解救所有已感染主機 <br> ## Sample Summery 網路上有人釋出完整檔案,可以參考這個link https://github.com/cado-security/DFIR_Resources_REvil_Kaseya/ 這其中包含了詳細的資料如下 - Sample - pcaps - IoCs - yara rule 本篇使用的Sample hash如下 `MD5: 561cffbaba71a6e8cc1cdceda990ead4` <br> ## Sandbox Analysis ANY.RUN Sandbox結果如下 https://app.any.run/tasks/c6e06852-4c1b-4ea4-8434-2a8f9c32505f/ 可以看到檔案執行後,除了主機被加密之外,有幾樣重點接下來會在本篇中提到 - Process creation - Change firewall setting - `netsh advfirewall firewall set rule group="Network Discovery" new enable=Yes` <br> ## Sample Analysis : Pre-loading ### Resource 從PE Studio可以看到,樣本的resource有兩個執行檔 - SOFTIS - MODLIS ![](https://i.imgur.com/Fq6RyQY.png) <br> 用Resource Hacker將兩個執行檔案存下來 ![](https://i.imgur.com/LHXAchG.png) <br> 雖然有執行檔案,但是還是要看一下他們是如何被執行的 <br> ### Load the executable 用IDA打開檔案,可以發現樣本提取出兩個resource檔案,並且儲存於`C:\Windows` ![](https://i.imgur.com/doslUOq.png =80%x) <br> 之後調用CreateProcessW執行,檔案名稱分別為 - `MsMpEng.exe` - `mpsvc.dll` ![](https://i.imgur.com/ZfkNqGG.png) <br> ### DLL Side Loading 在這兩個檔案儲存後,`MsMpEng.exe`會透過DLL Side Loading Attack的方法載入REvil Ransomware本體`mpsvc.dll` ![](https://i.imgur.com/m98wmF8.png) <br> ## Sample Analysis: REvil Ransomware ### CreateThread DLL 載入後,會執行`ServiceCrtMain`導出表的function並調用`CreateThread`執行本體(圖中的StartAddress) ![](https://i.imgur.com/J3B2Fmg.png =75%x) <br> ### Indirect Shellcode Extraction & Jump 跳轉到`StartAddress`執行後,接下來調用了`CreateFileMapping`,`MapViewOfFile`申請放置下一階段shellcode的記憶體 ![](https://i.imgur.com/RKjGoom.png) <br> 申請之後,會解密下一層Shellcode並且利用Indirect call跳轉過去 (可以設斷點在新申請記憶體執行時 即可找出從哪裡跳過去的) ![](https://i.imgur.com/daqu1CI.png) <br> ### 2nd Stage Shellcode 第二階段跳轉過去後,首先用`GetProcAddress`做了一系列的API resolution,而且Output為`VirtualAllocEx`等記憶體操作相關的行為,這時可以設斷點在`VirtualAllocEx`,`VirtualAlloc`,`VirtualProtect`等API ![](https://i.imgur.com/IPDAiWR.png) <br> shellcode會透過`VirtualAllocEX`申請新的記憶體,在解密完下一層shellcode到新申請的記憶體後跳轉過去,注意到範例中EntryPoint為`0x804883` ![](https://i.imgur.com/r2zrn8L.png) <br> ## Final Stage Shellcode ### Static Analysis 將memory dump出來丟到IDA,可以發現有許多function,推斷應該為最後一階段的shellcode,也是真正的REvil本體 其中有幾個function相對重要 **RC4 加/解密演算法** ![](https://i.imgur.com/boYMsVH.png =60%x) <br> **Salsa20 加/解密演算法,用於加密檔案** ![](https://i.imgur.com/QfbjQdi.png =70%x) <br> ### Dynamic Analysis **JSON Config** shellcode載入後,經過一連串RC4解密需要的dll,ransomware config file也會透過RC4解密如下 config檔案為JSON format,裡面包含了許多資訊,這邊列出幾個,完整list可以參考 zscaler's blog https://www.zscaler.com/blogs/security-research/kaseya-supply-chain-ransomware-attack-technical-analysis-revil-payload - client ID - cnc url - extension to encrypt - base64 encoded ransom note - base64 encoded ransom extension - .... ![](https://i.imgur.com/v3Un4df.png =80%x) <br> **Command Execution** 執行指令更改防火牆設定 ![](https://i.imgur.com/GcO1bcC.png) <br> 接下來就是加密檔案的部分,以及更改桌面圖案(當然還有其他功能本篇未提及) <br> ### 流程圖 這邊整理了本篇有提到的大致流程 ![](https://i.imgur.com/kr5woGn.png) <br> ## 後記 REvil此加密勒索軟體利用了多種手法來增加分析的難度包含 - DLL Side Loading - Multi-layer shellcode extraction - Indirect call/encrypted string,config - API resolution - Encrypted string 本篇只分析了REvil部分功能以及特點,這邊列出一些參考資料供參考 https://mp.weixin.qq.com/s/d8JHkgIxay2bJiFvQf5gSg https://www.zscaler.com/blogs/security-research/kaseya-supply-chain-ransomware-attack-technical-analysis-revil-payload https://www.splunk.com/en_us/blog/security/revil-ransomware-threat-research-update-and-detections.html [-0xbc](https://hackmd.io/@0xbc000) ###### tags: `Malware Analysis` `Reverse Engineering` `tutorials`