進入黑暗之門(DarkGate):新型加密貨幣挖掘和勒索軟體運動
一場活躍且隱祕的加密貨幣挖掘和勒索軟體活動正在感染西班牙和法國的目標使用者,該軟體利用多種繞過技術來逃避傳統AV的檢測。
惡意軟體活動概要
最近,enSilo研究員Adi Zeligson發現了一個名為DarkGate的,從未被偵測到過且高度複雜的惡意軟體活動。DarkGate惡意軟體針對Windows工作站並由反應式命令和控制系統提供支援,該軟體通過Torrent檔案傳播。當用戶執行時,DarkGate惡意軟體能夠避免多個AV產品的檢測並執行多個有效負載,包括加密貨幣挖掘,加密竊取, ofollow,noindex" target="_blank">勒索軟體 以及遠端控制端點的能力。
DarkGate惡意軟體的關鍵元素如下:
- 利用隱藏在包括Akamai CDN和AWS在內的合法服務的合法DNS記錄中的C&C基礎架構,幫助其避免基於信譽的檢測技術。
- 使用多種方法繞過傳統AV具有廠商特性的檢查規則和操作(包括使用process hollowing技術)。
- 能夠通過幾種已知的恢復工具來避免關鍵檔案被查殺。
- 使用兩種不同的使用者帳戶控制(UAC)繞過技術來提權。
- 能夠觸發多個有效載荷,其功能包括加密貨幣挖掘,加密竊取(盜竊與加密錢包相關的憑證),勒索軟體和遠端控制。
下面對DarkGate惡意軟體的技術分析演示了高階惡意軟體如何避免傳統AV產品的檢測,並強調了 enSilo端點安全平臺 的感染後保護功能的重要性。
技術分析
惡意軟體被作者命名為DarkGate,其旨在感染整個歐洲的受害者目標,特別是在西班牙和法國。DarkGate具有多種功能,包括加密挖掘,竊取加密錢包憑證(加密竊取),勒索軟體和遠端訪問及控制。
enSilo觀察到,這個惡意軟體背後的作者建立了一個反應性的命令和控制基礎設施,由人工操作員配備,他們根據收到的加密錢包的新感染通知採取行動。當操作員通過其中一個惡意軟體檢測到任何有趣的活動時,他們會去在機器上安裝自定義遠端訪問工具以進行手動操作。
作為我們正常研究活動的一部分,我們偶爾會對看似合法的使用者端點進行受控感染。進行受控感染是為了研究惡意軟體的幾個方面,以及惡意軟體操作員的反應性。例如,在一次不期而遇的碰撞中,我們的 研究團隊 能夠確定操作員檢測到了我們的活動,並通過使用定製的勒索軟體感染測試機器,從而立即做出響應。
看來,這個惡意軟體背後的作者投入了大量的時間和精力,通過利用多種逃避技術來保持不被發現。使用的技術之一是使用者模式掛鉤繞過,這使得惡意軟體能夠在很長一段時間內逃避各種AV解決方案的識別。
enSilo研究團隊追蹤“DarkGate”及其變種,並發現大多數AV供應商未能檢測到它。正是這一發現促使我們開始研究技術分析部分中描述的惡意軟體的獨特特徵。很明顯,DarkGate正在不斷髮展,因為它正在通過每個新變體進行改進。
我們還需要進一步調查以確定惡意軟體背後的最終動機。雖然加密貨幣挖掘,加密竊取和勒索軟體功能表明該軟體的目標是獲取經濟利益,但目前尚不清楚作者是否有另一個動機。
家族紐帶
在DarkGate中,我們能夠識別其與之前檢測到的名為 Golroted 的密碼竊取程式惡意軟體的關係。Golroted惡意軟體因其使用Nt * API呼叫來執行process hollowing而引人注目。此外,Golroted使用第二種技術—UAC繞過,基於稱為SilentCleanup的計劃任務。而DarkGate都用到了這兩種技術。
在Golroted和DarkGate之間進行二進位制差異比較後,我們發現了大量重疊程式碼。如圖1所示,兩個惡意軟體變體都在程序vbc.exe上執行process hollowing方法。但是,DarkGate包含一個稍微修改過的process hollowing函式版本。
圖1 GOLRATED和DARKGATE間的二進位制差異
感染策略和方法
我們辨別出了DarkGate作者以及Golroted作者都使用了的兩種不同的感染方法。這兩種感染方法都是通過Torrent檔案傳播的,這些檔案是一部受歡迎的電影和一部會在受害者機器上執行VBscript的電視連續劇。
第二個檔案,the-walking-dead-9-5-hdtv-720p.torrent.vbe,使用一種更為瑣碎的方法來感染受害者。它從具有欺騙性的地址來分發包含惡意附件的電子郵件。其示例如圖3所示。
圖2 種子檔案的截圖
圖3 通過the-walking-dead-9-5-hdtv-720p.torrent.vbe分發的郵件示例
解開DARKGATE惡意軟體的四個階段
DarkGate惡意軟體使用的獨特技術之一在於其多階段解包方法。被執行的第一個檔案是一個混淆過的VBScript檔案,它起到一個dropper的作用並執行多個操作。在第一階段,幾個檔案被放入隱藏資料夾“C: {username}”。這些檔案是autoit3.exe,在某些版本中偽裝成隨機名稱test.au3,pe.bin和shell.txt。接下來,使用放入的autoit3.exe例項來執行test.au3 AutoIt指令碼。
圖4 去混淆的VBS
在第二階段,AutoIt程式碼在startup資料夾下建立名稱為“bill.ink”的其自身的快捷方式。一旦完成,它將觸發第三階段,其中儲存在檔案“C: {username} shell.txt”中的二進位制程式碼將被解密並得到執行。AutoIt指令碼使用一種相當不尋常的技術來執行二進位制程式碼。該技術涉及的步驟是:
- 將二進位制程式碼從shell.txt載入到程序記憶體中。
- 將資料複製到可執行的記憶體空間(DLLStructCreate和DllStructSetData)。
- 呼叫CallWindowProc並引用我們的二進位制程式碼作為lpPrevWndFunc引數。
圖5 去混淆的AUTOIT指令碼
最後,在解包技術的第四個也是最後一個階段,最初從shell.txt載入的二進位制程式碼執行以下操作:
- 搜尋可執行檔案,該檔案也是Kaspersky AV中可執行檔案的名稱。
- 讀取放入的檔案“pe.bin”並解密它。
- 使用 process hollowing 技術,將pe.bin解密後的程式碼注入程序“vbc.exe”。
我們發現,如果DarkGate檢測到卡巴斯基AV的存在,它會將惡意軟體作為shellcode的一部分載入,而不是使用process hollowing方法。解密的pe.bin檔案是DarkGate的核心。核心負責與C&C(命令和控制)伺服器的通訊以及執行從其接收的命令。
讓我們總結一下這個分為四階段的拆包技術
1.使用VBScript提供初始dropper程式碼,將所有相關檔案寫入受害者的機器:
- autoit3.exe
- test.au3
- pe.bin
- shell.txt
一旦完成,然後就開始執行AutoIt指令碼。
2.AutoIt指令碼使用AutoIt直譯器執行,直譯器解密二進位制程式碼並將其載入到記憶體中。
3.然後二進位制程式碼得到執行,並嘗試避免卡巴斯基AV的檢測。
4.最後的二進位制檔案被解密並執行。
圖6 解包技術的四個階段
最終的二進位制檔案將所有檔案從“C:{computer_name}”複製到“C:Program data”下的新資料夾,資料夾的名稱是使用者生成的id的前八位數字(ID2 – 稍後解釋)。
最終的二進位制檔案在登錄檔中安裝了一個鍵,從而使得該檔案在鍵值“SOFTWAREMicrosoftWindowsCurrentVersionRun”的幫助下保持永續性:。
鍵的名稱是使用者生成id的前八位,值是從C:{computer_name}複製到“program data”資料夾的AutoIt指令碼,如下面的圖7所示:
圖7 用於建立永續性的註冊鍵值示例
加密貨幣挖掘
惡意軟體與C&C伺服器建立的第一個連線的目的就是獲取啟動加密貨幣挖掘程序所需的檔案。
圖8 檢索檔案
如圖9所示,指令“startminer”作為響應的一部分被髮送,以告知惡意軟體開始挖掘並分離訊息的不同部分。第一部分被加密寫入config.bin-該部分是礦工命令列。第二部分被寫入cpu.bin,當解密時是礦工可執行檔案。挖掘本身是藉助process hollowing技術,通過“systeminfo.exe”程序完成的。
圖9 檢索加密礦工payload
竊取加密錢包憑據
惡意軟體的另一個功能是它可以搜尋和竊取加密錢包的憑據。惡意軟體在前臺視窗的名稱中查詢與不同型別的加密錢包相關的特定字串,如果找到匹配的字串,則向伺服器傳送適當的訊息。
下表包含目標錢包網站/應用程式的列表:
搜尋的字串 | 目標 |
---|---|
sign-in / hitbtc | https://hitbtc.com/ |
binance – log in | https://www.binance.com/login.html |
litebit.eu – login | https://www.litebit.eu/en/login |
binance – iniciar sesi | https://www.binance.com/login.html |
cryptopia – login | https://www.cryptopia.co.nz/Login |
user login – zb spot exchange | |
sign in | coinEx | https://www.coinex.com/account/signin?lang=en_US |
electrum | https://electrum.org/#home |
bittrex.com – input | https://international.bittrex.com/ |
exchange – balances | |
eth) – log in | |
blockchain wallet | https://www.blockchain.com/wallet |
bitcoin core | https://bitcoincore.org/ |
kucoin | https://www.kucoin.com/#/ |
metamask | https://metamask.io/ |
factores-Binance | |
litecoin core | https://litecoin.org/ |
myether | https://www.myetherwallet.com/ |
表一:目標加密錢包和字串值
命令與控制
從目前為止看到的情況來看,似乎DarkGate的作者利用了複雜的技術來避免端點和網路安全產品的檢測。
該惡意軟體包含六個硬編碼域,如下所示,它將在感染時嘗試與之通訊。看起來域名是謹慎選擇出來的,以將C&C伺服器偽裝成Akamai CDN或AWS等已知合法服務,並避免使得可能正在監控網路流量的任何人產生懷疑。
- akamai.la
- hardwarenet.cc
- ec2-14-122-45-127.compute-1.amazonaws.cdnprivate.tel
- awsamazon.cc
- battlenet.la
- a40-77-229-13.deploy.static.akamaitechnologies.pw
此外,似乎作者採用了另一種技巧,使用看起來像來自Akamai或亞馬遜的合法rDNS記錄的NS記錄。使用rDNS背後的想法是,任何監控網路流量的人都會忽略並且不對它們做處理。
避免檢測的兩種方法
看起來DarkGate的作者最擔心的是AV軟體的檢測。他們在反VM和使用者驗證技術方面投入了大量精力,而不是反除錯措施方面。
反VM:機器資源檢查
DarkGate用來避免AV軟體檢測的第一種方法判定惡意軟體是否已落入沙箱/虛擬機器內。基於所使用的策略,我們認為作者假設沙箱/虛擬機器(VMs)通常資源較少,這通常是正確的,因為沙箱通常會經過優化以包含儘可能多的VM。
在圖10中,我們可以看到使用Delphi的Sysutils :: DiskSize和GlobalMemoryStatusEx來收集磁碟大小和實體記憶體。如果機器包含的磁碟空間少於101GB或者等於4GB RAM,則將其視為VM,惡意軟體將自動終止。
圖10 檢查機器硬碟和記憶體
反-AV
DarkGate會嘗試檢測表2中列出的任何AV解決方案是否存在於受感染的計算機上。對於大多數AV解決方案,如果惡意軟體檢測到任何的這些AV解決方案,它只會通知伺服器,但對卡巴斯基,Trend Micro和IOBIt除外。
程序名稱 | 解決方案 |
---|---|
astui.exe | Avast |
avpui.exe | Kaspersky |
avgui.exe | AVG |
egui.exe | Nod32 |
bdagent | Bitdefender |
avguard.exe | Avira |
nis.exe | Norton |
ns.exe | Norton |
nortonsecurity.exe | Norton |
uiseagnt.exe | Trend Micro |
bytefence.exe | ByteFence |
psuaconsole.exe | Panda |
sdscan.exe | Search & Destroy |
mcshield.exe | McAfee |
mcuicnt.exe | McAfee |
mpcmdrun.exe | Windows Defender |
superantispyware.exe | SUPER AntiSpyware |
vkise.exe | Comodo |
mbam.exe | MalwareBytes |
cis.exe | Comodo |
msascuil.exe | Windows Defender |
表2 DARKGATE惡意軟體搜尋的AV可執行檔案
卡巴斯基,IOBit或TrendMicro存在AV解決方案會觸發特殊情況:
- IOBit:如果路徑“C:Program Files(x86)IObit”存在,惡意軟體將嘗試通過終止它來處理名為“monitor.exe”的程序。此外,它將生成一個新執行緒,該執行緒將重複查詢程序“smBootTime.exe”並終止它(如果存在)。
- Trend Micro:如果檢測到Trend Micro的AV程序名稱,則程式碼將不會執行鍵盤記錄執行緒。
- 卡巴斯基:惡意軟體在執行期間會進行多次檢查,無論是在解包過程中還是在惡意軟體本身,都會對卡巴斯基AV是否存在進行檢測。
- 如果在最終的可執行檔案中檢測到卡巴斯基AV且機器啟動時間不到5分鐘,那麼它將不會啟動鍵盤記錄執行緒和負責以下內容的更新執行緒:
- 將所有與惡意軟體相關的檔案複製到“C:Program Data”下的資料夾中。
- 執行下一節將描述的恢復工具檢查。
- 如果在shellcode中檢測到卡巴斯基AV並且系統啟動時間超過4分鐘10秒,它將不會使用process hollowing技術來執行最終的可執行檔案,而是載入它並直接執行它。
- 如果在最終的可執行檔案中檢測到卡巴斯基AV且機器啟動時間不到5分鐘,那麼它將不會啟動鍵盤記錄執行緒和負責以下內容的更新執行緒:
恢復工具
惡意軟體還嘗試使用表3中列出的程序名稱檢測多個已知的恢復工具:
程序名 | 目標 |
---|---|
adwcleaner.exe | MalwareBytes Adwcleaner |
frst64.exe | Farbar Recovery Scan Tool |
frst32.exe | Farbar Recovery Scan Tool |
frst86.exe | Farbar Recovery Scan Tool |
表3:恢復工具程序名和目標
如果發現此類程序,惡意軟體將啟動一個新執行緒,該執行緒將每20秒重新分配生成惡意軟體檔案,確保如果檔案在恢復工具的生命週期內被刪除,則將重新建立並重新定位到其他位置。
直接的SYSCALL呼叫
為了隱藏process hollowing技術的使用,DarkGate使用了一種特殊功能,使其能夠直接呼叫核心模式下的函式。這可以潛在地幫助惡意軟體逃避偵錯程式設定的任何斷點,以及避免由不同安全產品設定的使用者區掛鉤。
它是如何工作的?
使用ntdll.dll中的函式時,會對核心進行系統呼叫。呼叫的方式在32位和64位系統之間是不同的,但它們最終都呼叫了在兩個體系結構之間不同的函式“KiFastSystemCall”。“KiFastSystemCall”函式用於在RING3和RING0之間切換。Darkgate惡意軟體避免以正常的方式載入ntdll.dll函式,而是建立自己的“KiFastSystemCall”函式來進行系統呼叫。
DarkGate是一個32位程序,由於切換到核心時系統之間存在差異,因此在64位系統上執行時可能會遇到困難。為了在程序中使用正確的“KiFastSystemCall”函式,Darkgate惡意軟體通過搜尋路徑“C:WindowsSysWOW64ntdll.dll”來檢查它正在執行的架構。如果此路徑存在,則表示該程序正在64位系統上執行。
圖11:根據體系結構分配正確的函式
在32位系統中,“KiFastSystemCall”函式將如下所示:
圖12:32位系統下的KIFASTSYSTEMCALL函式
在64位系統中,以下程式碼用於從32位程序呼叫“KiFastSystemCall”64位函式:
圖13:64位系統下KIFASTSYSTEMCALL函式
偏移“fs:0C0h”是wow64中TEB(執行緒資訊塊)中指向“FastSysCall”的指標。該指標指向“wow64cpu.dll”中的地址,該地址跳轉到64位“KiFastSystemCall”函式。DarkGate惡意軟體將ntdll請求的函式系統呼叫號和所需的引數傳遞給指定的函式。這樣就可以呼叫核心函式,而無需從ntdll.dll中呼叫該函式。最後,DarkGate惡意軟體建立了自己的“KiFastSystemCall”以繞過ntdll.dll。
我們發現了類似的 程式碼 ,可能是DarkGate程式碼的來源。
UAC繞過功能
DarkGate使用兩種不同的UAC繞過技術來嘗試提升許可權。
磁碟清理繞過
第一個UAC繞過技術利用名為DiskCleanup的計劃任務。此計劃任務使用路徑%windir% system32cleanmgr.exe來執行實際的二進位制檔案。因此,惡意軟體使用登錄檔項“HKEY_CURRENT_USEREnviromentwindir”來覆蓋%windir%環境變數,其中包含將執行AutoIt指令碼的備用命令。這個繞過過程可以參考 Tyranid的巢穴 。
圖14:磁碟清理UAC繞過
EVENTVWR UAC繞過
另一個UAC繞過漏洞利用eventvwr.exe預設以高完整性執行的特性,將會執行mmc.exe二進位制檔案(Microsoft管理控制檯)。mmc.exe命令取自注冊表項“HKCUSoftwareClassesmscfileshellopencommand”。此登錄檔項也可從較低的完整性級別寫入,這使其能夠以更高的完整性執行AutoIt指令碼。
圖片15:EVENTVWR UAC繞過
鍵盤記錄
將會啟動一個執行緒,負責捕獲所有鍵盤事件並將它們記錄到預定義的日誌檔案中。除了記錄金鑰日誌之外,它還記錄前臺視窗和剪貼簿。日誌以下面列出的目錄中的名稱“current date.log”儲存:
“C:\users\{username}\appdata\roaming\{ID1}”.
圖16:鍵盤記錄日誌
資訊竊取
DarkGate使用一些NirSoft工具來竊取受感染機器的憑據或資訊。使用的工具集使其能夠竊取使用者憑據,瀏覽器cookie,瀏覽器歷史記錄和Skype聊天記錄。所有工具都通過process hollowing技術執行到新建立的vbc.exe或regasm.exe例項中。
DarkGate使用以下應用程式來竊取憑據:
- 郵件PassView
- WebBrowserPassView
- ChromeCookiesView
- IECookiesView
- MZCookiesView
- BrowsingHistoryView
- SkypeLogView
從工具收集的結果資料是從主機程序儲存器中提取的。DarkGate惡意軟體首先使用FindWindow API函式查詢工具的視窗。然後它使用SysListView32控制元件和sendMessage API函式來檢索工具所需的資訊。檢索的工作原理是首先在圖17所示的挖空的(hollowed)程序中分配一個記憶體緩衝區。
圖17:在中空的(hollowed)程序中的記憶體分配
然後它將使用“GetItem”函式使其將專案寫入分配的緩衝區。通過使用訊息“LVM_GETITEMA”和分配的緩衝區作為引數,呼叫API函式“SendMessage”來使用“GetItem”函式:
圖18:GETITEM訊息以及從中空的(hollowed)程序中檢索專案
將專案寫入分配的緩衝區後,它將讀取此記憶體區域並獲取被盜資訊。
刪除還原點
惡意軟體能夠刪除所有還原點,包括“cmd.exe /c vssadmin delete shadows /for=c:/all /quiet”
RDP安裝
此命令將使用process hollowing方法解密並執行接收的檔案,該檔案可能是rdp連線工具。在這種情況下,中空(hollowed)程序是%temp%目錄中的systeminfo.exe的副本。
此外,將使用cmd.exe執行以下命令:
- exe /c net user /add SafeMode Darkgate0!
- exe /c net localgroup administrators SafeMode /add
- exe /c net localgroup administradores SafeMode /add
- exe /c net localgroup administrateurs SafeMode /add
有趣的是,新建立的使用者被新增到西班牙語和法語管理組。
GETBOTDATA
伺服器可以請求以下有關受害者的詳細資訊:
- 語言環境
- 使用者名稱
- 電腦名稱
- 視窗名稱
- 自主機上次輸入以來經過的時間段
- 處理器型別
- 顯示介面卡說明
- RAM大小
- 作業系統型別和版本
- 是否為使用者管理員
- config.bin的加密內容
- 新紀元時間
- AV型別 – 按程序名稱搜尋,如果未找到此欄位將包含文字“Unknown”。
在某些版本中 – 還會查詢資料夾“c:Program Filese-Carte Bleue”(我們認為可能是DarkGate儲存其螢幕截圖的資料夾)。然後將資料加密併發送到伺服器。此外,它在%appdata% path下建立檔案Install.txt,並在其中寫入新紀元時間。
- 惡意軟體版本
- 連線使用的埠
IOCS
DOMAINS |
---|
akamai.la |
hardwarenet.cc |
ec2-14-122-45-127.compute-1.amazonaws.cdnprivate.tel |
awsamazon.cc |
battlenet.la |
a40-77-229-13.deploy.static.akamaitechnologies.pw |
SAMPLE HASHES |
---|
3340013b0f00fe0c9e99411f722f8f3f0baf9ae4f40ac78796a6d4d694b46d7b |
0c3ef20ede53efbe5eebca50171a589731a17037147102838bdb4a41c33f94e5 |
3340013b0f00fe0c9e99411f722f8f3f0baf9ae4f40ac78796a6d4d694b46d7b |
0c3ef20ede53efbe5eebca50171a589731a17037147102838bdb4a41c33f94e5 |
52c47a529e4ddd0778dde84b7f54e1aea326d9f8eeb4ba4961a87835a3d29866 |
b0542a719c6b2fc575915e9e4c58920cf999ba5c3f5345617818a9dc14a378b4 |
dadd0ec8806d506137889d7f1595b3b5447c1ea30159432b1952fa9551ecfba5 |
c88eab30fa03c44b567bcb4e659a60ee0fe5d98664816c70e3b6e8d79169cbea |
2264c2f2c2d5a0d6d62c33cadb848305a8fff81cdd79c4d7560021cfb304a121 |
3c68facf01aede7bcd8c2aea853324a2e6a0ec8b026d95c7f50a46d77334c2d2 |
a146f84a0179124d96a707f192f4c06c07690e745cffaef521fcda9633766a44 |
abc35bb943462312437f0c4275b012e8ec03899ab86d353143d92cbefedd7f9d |
908f2dfed6c122b46e946fe8839feb9218cb095f180f86c43659448e2f709fc7 |
3491bc6df27858257db26b913da8c35c83a0e48cf80de701a45a30a30544706d |