標籤:

看看朝鮮的黑客的代碼怎麼樣 | Volgmer 木馬技術分析

11月份US-CERT發布了兩份有關朝鮮政府惡意活動的警報,美國方面將該惡意活動稱為「HIDDEN COBRA」。警告針對的是遠程管理工具「FALLCHILL」和一個名為Volgmer的木馬,本文關注的是後者。

Volgmer是一個後門木馬,其設計初衷是提供通向受感染系統的秘密通道,據US-CERT,早在2013年後門木馬就已經開始使用。下面,本文將深入研究Volgmer感染機器之後會出現什麼狀況,以及隨後的惡意行動。

dropper

dropper是一個x86 PE EXE文件,其目的是在系統上安裝Volgmer。先將一個DLL寫入磁碟,然後創建一個使用DLL的服務來完成安裝,並且使用持久性機制的服務將木馬偽裝成一個合法的系統組件。

嵌入式壓縮

對dropper的初步分析顯示,它有一個zip文件嵌入在參考資源部分。zip文件是受密碼保護的,因此不進一步檢查二進位文件則不能提取裡面的內容。

圖1-Dropper資源

dropper執行流程

最初,dropper使用XOR演算法來解密一些字元串,該演算法帶有一個滾動的16位元組的密鑰。然後,動態地載入所需的API。在開始安裝之前,會檢查是否符合以下條件:

a)設備所屬國家非韓國

b)操作系統是Windows XP或更高版本的系統、擁有一個產品類型的工作站

c)系統的正常運行時間至少是10個小時

然後,dropper會檢查是否已經安裝了該服務。如果已安裝,它將嘗試啟動服務。當上述條件都滿足時,dropper將會按照以下步驟安裝惡意軟體:

1. 名稱生成

2. 註冊表鍵和文件寫入

3. 服務創建

名稱生成

刪除文件的名稱和服務名稱將從dropper中包含的字元串列表中隨機生成。下面是創建名稱的一個示例:

圖2-名稱生成

上面的列表包含服務短名稱、服務長名稱、服務描述、DLL文件名和DLL文件路徑。有趣的是,服務描述是用一種阻礙刪除的方式編寫的(圖3)。

圖3-服務描述

註冊表和文件編寫

生成名稱之後,提取並解密資源部分中的zip文件。有用的是,密碼包含在最初解密的字元串列表中,並允許對zip文件內容進行手動提取和分析。

zip實際上包含兩個文件:一個x86 PE DLL和一個配置文件。DLL被寫入生成的文件路徑,而配置文件是加密的(使用與字元串相同的滾動XOR演算法),並寫到一個註冊表鍵: HKLMSYSTEMCurrentControlSetControlWMISecurity

設置兩個值:

· 125463f3-2a9c-bdf0-d890-5a98b08d8898n· f0012345-2a9c-bdf8-345d-345d67b542a1n

配置文件實際上包含一個初始的IP地址和埠號列表,服務將嘗試並連接到該列表(參見圖4)。

圖4-配置文件

服務創建

DLL文件已寫入磁碟,並且IP地址列表也寫入註冊表中,接下來,dropper將嘗試創建和啟動服務。服務註冊鍵是手動添加的,創建開始類型設置為SERVICE_AUTO_START的服務,以便Windows啟動時該服務自動啟動。

圖5-調用CreateServiceA

dropper最後一個動作是自動刪除。它將一個批處理腳本寫入磁碟中,不斷地嘗試刪除dropper,並運行一個CreateProcess調用。

服務

創建的服務包含Volgmer木馬的後門功能,並且其全部功能包含在DLL中,當系統啟動時(或者是dropper初始化服務),將被svchost.exe調用。

服務代碼有兩個主要階段:

1. 設置

2. 主循環

設置

和dropper一樣,DLL中使用的所有字元串都是加密的,所有的API都是動態載入的。因此,該服務的第一個任務(除了註冊本身)就是載入API並對所有的字元串進行解密。

下一個任務是從註冊表中載入配置,對其進行解密,然後將IP地址列表存儲在內存中以便以後使用。

在主循環開始之前,以GetTickCount作為種子,DLL將生成一個隨機的整數。這個整數將使用lea指令進行相乘,然後向左移動以進一步增加它的值。

圖6-sleep調用

主循環

服務的主循環不斷地收集數據,並檢查來自控制伺服器的命令。

網路通信

Volgmer的網路通信完全是自定義的,用套接字來實現。它不使用標準的網路流量加密協議,而是實現自己的加密協議

首先,使用GetTickCount作為種子的_rand函數創建16位元組的隨機值。然後計算隨機值的RIPEMD160散列,並將隨機數據和散列發送到伺服器。伺服器將生成一個從客戶端接收到的散列的RIPEMD160散列,然後將其發送回。客戶端將生成相同的散列,並將其與伺服器的應答進行比較。

這種『handshake』形式實際上是一個基本的密鑰交換,而散列值將用作加密/解密與伺服器通信的密鑰,其實是一種滾動XOR演算法,在DLL和dropper中對字元串進行解密用的也是該演算法。

在網路通信中使用的請求頭是隨機生成的字元串列表。值得注意的是,在用戶代理字元串中Mozilla的拼寫錯誤。

圖7-隨機頭串

信息收集

在伺服器接受命令之前,Volgmer先收集一些信息,發送給伺服器。木馬也會進行一些常見的檢查(例如,反VM檢查,進程黑名單),但是檢查結果不會影響執行流程。

虛擬機檢測

Volgmer會試圖通過兩種常見的反VM檢查來確定,其是否在VMware或VitualBox虛擬機(VM)中運行。Volgmer第三個也是最後一個檢查使用了深奧的vpcext(可視屬性容器擴展器)指令。在一些虛擬機上,指令會成功,而在物理機器上,指令會出現異常。

圖8-vpcext指令

其他信息

還進行了許多其他的檢查,其中包括對殺病毒軟體的檢查(參見圖9)、檢查是否該程序被調試通過、檢查過程黑名單(查找像OllyDbg、進程監視器、Wireshark等工具)以及註冊中心黑名單檢查。

註冊表關鍵的例子:

· SOFTWAREVanDykeSecureCRTn· SOFTWARERealVNCn· SOFTWARERadminn· SOFTWAREFileZilla Clientn

圖9-AV字元串

伺服器命令

下面的表格詳細說明了Volgmer可以從伺服器接收到的命令:

攻擊指示器

註冊表鍵:

HKLMSYSTEMCurrentControlSetControlWMISecurity 125463f3-2a9c-bdf0-d890-5a98b08d8898nHKLMSYSTEMCurrentControlSetControlWMISecurity f0012345-2a9c-bdf8-345d-345d67b542a1n35.223.16.103:8080n194.244.28.113:8080n179.145.48.116:8080n20.9.116.186:8000n172.198.149.186:8080n97.71.67.186:8080n232.91.28.195:8088n148.97.97.195:8080n120.234.15.199:8080n133.69.42.200:8080n99.222.131.203:8080n181.87.187.210:8080n157.204.231.83:8088n218.224.232.84:8088n133.69.42.200:8088n130.176.242.24:8080n70.190.93.78:8080n42.188.190.89:8080ne40a46e95ef792cf20d5c14a9ad0b3a95c6252f96654f392b4bc6180565b7b11neff3e37d0406c818e3430068d90e7ed2f594faa6bb146ab0a1c00a2f4a4809a5n1d0999ba3217cbdb0cc85403ef75587f747556a97dee7c2616e28866db932a0dn6dae368eecbcc10266bba32776c40d9ffa5b50d7f6199a9b6c31d40dfe7877d1n9f177a6fb4ea5af876ef8a0bf954e37544917d9aaba04680a29303f24ca5c72cnfee0081df5ca6a21953f3a633f2f64b7c0701977623d3a4ec36fff282ffe73b9nff2eb800ff16745fc13c216ff6d5cc2de99466244393f67ab6ea6f8189ae01ddn

1. us-cert.gov/ncas/alerts

2. us-cert.gov/ncas/alerts

本文翻譯自: nccgroup.trust/uk/about,如若轉載,請註明原文地址: 4hou.com/info/news/9344 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

Linux版"永恆之藍」(CVE-2017-7494)復現過程分析
追蹤IP地址你需要這幾款工具加持
我的匿名安全防護之道
Web security basic

TAG:信息安全 |