譯者:知道創宇404實驗室翻譯組
原文鏈接:https://labs.sentinelone.com/an-inside-look-at-how-ryuk-evolved-its-encryption-and-evasion-techniques/
前言
在過去的三個月里,勒索軟件上升了50%,在一系列高調攻擊之后,Ryuk勒索軟件獲得了最多的關注。上個月,有報道稱,Ryuk攻擊了UHS的醫院網絡,攻擊范圍為美國各海岸之間UHS的醫療設施。這一攻擊使得許多醫院工作人員無法正常使用實驗室、放射檢查和患者記錄,這導致工作人員不得不使用紙筆對患者進行分類。目前,Ryuk每周攻擊大約20個組織,這個數字可能會不斷擴大。
Ryuk利用了TrickBot和Emotet等其他工具,快速響應了Zerologon等新暴露的漏洞。我們還看到,Ryuk自出現以來一直在進行迭代以逃避檢測,顯著提高了從執行到完全加密所需的時間,這使得我們的防范變得越發艱難。
這篇文章介紹了Ryuk自2018年以來的發展歷程,并探索了Ryuk加密速度和規避技術的改進。我們詳細介紹了一種可以用來從內存中提取Ryuk可執行文件并將其轉儲到文件中以進行進一步檢查的方法。
概述
當Ryuk出現時,人們最初以為它是由開發Hermes勒索軟件的同一攻擊者開發的。后來,Hermes在黑市上出售,攻擊者購買了該框架,并將其轉換為我們今天所知的Ryuk。
目前的攻擊使用了Emotet、Trickbot和Ryuk的組合。最近幾周,有人甚至觀察到了Ryuk背后的攻擊者使用ZeroLogon來擴大他們的影響范圍并擴大勒索軟件的有效載荷。雖然Ryuk有效負載并不特別包含ZeroLogon功能,但該漏洞在攻擊鏈的早期階段被利用。攻擊者可以利用Cobalt Strike和類似框架中的現有功能來實現權限提升。很快,ZeroLogon將成為攻擊者工具中的一個主要部分。
Ryuk 2018 - 2020
如果我們將早期版本的Ryuk與最新版本進行比較,我們可以注意到一些有趣的變化。在最新版本中,Ryuk混淆了其硬編碼字符串,使AV供應商更難檢測到:
Ryuk 2020也通過復制自身來提高加密速度,我們將在下面詳細討論。
勒索軟件使用RSA和AES加密擴展名為.ryk的文件,為加密的每個文件創建一個新線程。Ryuk還使用了CryptGenRandom API,該API使用隨機字節填充緩沖區以生成數據加密密鑰。
新一代的BCOMRandom API可能會在下一代的CNOMRANSWARE API中提供相同的結果:新一代的BCOMRANTARES API可能會被棄用。
早期的Ryuk二進制文件與我們最近的示例之間的一個顯著區別是完全加密本地磁盤所需的時間。2018年的二進制文件加密本地磁盤需要將近一個小時,而2020年版本只需要不到10分鐘。
更新的Ryuk變種加快了加密速度,這給企業安全工作增加了額外的負擔。在造成重大破壞之前,檢測、減輕和根除Ryuk的反應時間非常有限,許多組織都無法及時控制勒索軟件。這種攻擊如果發生在UHS的網絡中,就要求醫院工作人員立即關閉計算機系統,以防止更多的機器受到Ryuk的感染。
Ryuk 2020
這個特定的Ryuk樣本(f8bc1638ec3b04412f708233e8586e1d91f18f6715d68cba1a491d4a7f457da0)具有已簽名的數字證書,該證書已被其頒發者明確吊銷。
- Serial Number: 0a 1d c9 9e 4d 52 64 c4 5a 50 90 f9 32 42 a3 0a
- Subject: CN = K & D KOMPANI d.o.o
當Ryuk開始執行時,它會復制自身并將這個副本轉儲到同一個目錄中,其中包含一個隨機生成的8個字符的名稱。但是,文件名總是以“…lan.exe”. 這些重復文件有助于啟動多個線程。Ryuk使用硬編碼字符串列表來搜索和停止特定運行的進程(圖1)。然后,它嘗試將自身注入到其他進程中。
Ryuk下一步開始執行某些命令行工具來實現一些破壞性的效果。它試圖通過利用cmd.exe /c 'WMIC.exe shadowcopy delete'來阻止用戶恢復。接下來是cmd.exe /c 'vssadmin.exe Shadows /all /quiet”和cmd.exe /c 'bcdedit /set {default} recoveryenabled No & bcdedit /set {default}'。
在Windows WoW目錄中創建了一個icacs .exe,它賦予系統上的驅動器的完全權限,這樣Ryuk就有了加密所有驅動器所需的一切。
從內存中提取可執行文件
為了避免被發現,惡意軟件使用了各種各樣的逃避技術,比如自我注入。Ryuk通過分配內存來使用這項技術來寫入PE文件。在此之后,它調用VirtualProtect來更改節的執行權限。
從內存中提取可執行文件的一種快速方法是在調試器中運行二進制文件,并在分配的內存位置設置斷點。為此,我們使用x32dbg,并在VirtualAlloc上設置一個斷點。需要注意的是,在為VirtualAlloc設置斷點時,應該按照jmp例程進入Kernelbase,以獲取新分配區域的基址,并在返回時設置斷點。調試器運行后,將命中斷點。按照EAX寄存器到內存轉儲部分查看MZ是否存在。
當進程運行時,它將到達斷點VirtualAlloc,在EAX中是新分配的虛擬內存部分,開始將其自身的副本加載到此部分。在EAX到內存轉儲之后,顯示內存已被分配用于加載。當繼續該過程時,dump窗口在到達多次設置的斷點時開始填充數據。一旦確認二進制文件已完全加載到此部分,就可以轉儲二進制數據以供檢查。
下一步是右鍵單擊內存轉儲并在內存映射中跟蹤轉儲。這樣就可以看到轉儲在內存中的分配位置,然后可以從這里將內存轉儲到文件中。但是,如圖9所示,注意轉儲內存沒有有效的PE頭文件。我們必須修改頭部,以便PE(圖10)可以在您選擇的工具中工作。
這個特殊的二進制文件很容易修改。打開你最喜歡的Hex編輯器,加載文件,高亮顯示MZ之前的所有內容并刪除它。有時,如果一個內存塊損壞了magic字節,那么僅僅刪除多余的字節是行不通的。在這種情況下,您可以復制一個已知良好的header,并將其添加到損壞的PE標頭中,以生成有效的PE。
如果從一開始就遵循該過程,則斷點將額外命中VirtualAlloc。我用上面顯示的技術轉儲了內存,以說明為什么Ryuk在系統上的加密速度如此之快:
結論
聯邦調查局表示,Ryuk勒索軟件的演員已經獲得了6100多萬美元。隨著Ryuk攻擊導致組織癱瘓,這個數字將很快超過1億。
這些攻擊者使用的技術很容易理解,也相對簡單。他們利用的弱點是組織無法迅速發現和補救,但這是一個可以解決的問題。因此,我們可以采用適當的保護措施來防范勒索軟件。
在SentinelOne,我們跟蹤不斷變化的Ryuk變種,以了解這個勒索軟件家族添加的最新功能。在這篇文章中,我們詳細介紹了Ryuk是如何提高加密速度的,以及它使用的逃避方法。在以后的文章中,我們將介紹Ryuk的網絡層以及在分析過程中收集到的其他信息。
Samples
SHA256: f8bc1638ec3b04412f708233e8586e1d91f18f6715d68cba1a491d4a7f457da0
SHA1: c3fa91438850c88c81c0712204a273e382d8fa7b
SHA256: 7e28426e89e79e20a6d9b1913ca323f112868e597fcaf6b9e073102e73407b47
SHA1: 5767653494d05b3f3f38f1662a63335d09ae6489
MITRE ATT&CK
Command and Scripting Interpreter T1059
Native API T1106
Application Shimming T1546.011
Process Injection T1055
Masquerading T1036
Virtualization/Sandbox Evasion T1497.001
Deobfuscate/ Decode Files T1140
Obfuscated Files or Information T1027
System Time Discovery T1124
Security Software Discovery T1518.001
Process Discovery T1057
File and Directory Discovery T1083
System Information Discovery T1082
Archive Collected Data T1560
Encrypted Channel T1573
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1380/
暫無評論