
摘要
本報告提供了一項觀察到的散播 Snake Keylogger 的複雜釣魚攻擊的全面技術分析。分析深入探討了惡意軟體的初始感染途徑、持續性機制、解封裝技術及其作為資訊竊取者的核心功能。關鍵技術細節,包括用於規避的 PowerShell 指令、用於持續性的排程任務,以及使用 Chiron 等動態解封裝工具,都得到了檢視。此外,報告詳細說明了惡意軟體使用的大量資料外洩目標和通信管道。還提供了用於解密設定資料的 Python 腳本和用於檢測的 YARA 規則,為防禦者提供了可操作的情報。研究結果凸顯了此類攻擊的先進性質,並強調了深入技術分析對於有效威脅緩解的重要性。

1. 簡介
在不斷演變的網路威脅環境中,釣魚仍然是攻擊者獲取敏感資訊和系統未授權存取的普遍且有效方法。近期觀察到了一項利用 Snake Keylogger 的複雜釣魚攻擊,這是一款強大的資訊竊取惡意軟體。本報告旨在提供對此攻擊的詳細技術檢查,重點放在 Snake Keylogger 的內在機制和功能。其目標是剖析惡意軟體的運作程序,從其初始執行到其資料外洩能力,提供對其設計和規避方法的見解。通過了解這些技術細節,網路安全專業人員可以更好地制定強大的防禦策略和檢測機制,以對抗類似的威脅。
2. 惡意軟體概述
分析的樣本被識別為 Snake Keylogger 的一個變種,展示了作為複雜資訊竊取惡意軟體的典型特徵。其主要目標是從被滲透系統中收集敏感資料。惡意軟體樣本的關鍵屬性總結於表 1 [1] 。
檔案名稱 | TEKLİF İSTEĞİ - TUSAŞ TÜRK HAVACILIK UZAY SANAYİİ_xlsx.exe |
---|---|
SHA256 | 0cb819d32cb3a2f218c5a17c02bb8c06935e926ebacf1e40a746b01e960c68e4 |
檔案類型 | PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows |
MIME Type | application/x-dosexec |
表 1:Snake Keylogger 樣本概述
3. 持續性機制
為了確保在被滲透系統上的持續存在和運作,Snake Keylogger 採用了幾種先進的持續性機制。這些技術旨在規避安全軟體的檢測,並在系統啟動或其他觸發條件下自動重新執行惡意軟體。本攻擊中觀察到的兩種主要方法包括使用 PowerShell 指令進行 Windows Defender 排除和建立排程任務 [1] 。
3.1. 通過 PowerShell 實現 Windows Defender 排除
惡意軟體執行 PowerShell 指令將自身加入 Windows Defender 排除清單。這是惡意軟體常用的策略,用以防止防毒軟體的即時掃描和檢測,從而在系統上維持其立足點。觀察到的具體指令如下所述:
- NtCreateUserProcess(
- Status:0x0,
- NewProcessHandle:0x698,
- NewPid:4076,
- NewThreadHandle:0x68c,
- NewTid:3400,
- CommandLine:"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" Add-MpPreference -ExclusionPath "C:\\Users\\Jason\\Desktop\\TEKLİF İSTEĞİ - TUSAŞ TÜRK HAVACILIK UZAY SANAYİİ_xlsx.exe",
- ImagePathName:C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe,
- DllPath:empty,
- CWD:C:\Users\Jason\Desktop\,
- Bitness:32
- ) // TEKLİF İSTEĞİ - TUSAŞ TÜRK HAVACILIK UZAY SANAYİİ_xlsx.exe PID:2888 TID:2164
此指令有效地將惡意軟體可執行檔列入白名單,使其能夠在不受 Windows Defender 干擾的情況下運作 [1] 。
3.2. 用於自動執行的排程任務
除了規避防毒軟體外,Snake Keylogger 通過建立排程任務來確保持續性。這確保惡意軟體在系統啟動時或按預定義間隔自動執行,即使在重新開機後也能持續運作。用於建立此排程任務的指令如下:
- NtCreateUserProcess(
- Status:0x0,
- NewProcessHandle:0x4d8,
- NewPid:3264,
- NewThreadHandle:0x580,
- NewTid:2960,
- CommandLine:"C:\\Windows\\System32\\schtasks.exe" /Create /TN "Updates\\oNqxPR" /XML "C:\\Users\\Administrator\\AppData\\Local\\Temp\\tmp3E09.tmp",
- ImagePathName:C:\Windows\SysWOW64\schtasks.exe,
- DllPath:empty,
- CWD:C:\Users\Jason\Desktop\,
- Bitness:32
- ) // TEKLİF İSTEĞİ - TUSAŞ TÜRK HAVACILIK UZAY SANAYİİ_xlsx.exe PID:2888 TID:2268
此排程任務確保惡意軟體的持續運作,使其能夠抵抗簡單的系統重新啟動 [1] 。
4. 高級分析
4.1. 使用 dnSpy 進行初步分析
使用 .NET 反編譯器 dnSpy 對 Snake Keylogger 樣本進行的初步檢查顯示,該惡意軟體是以 .NET 編寫的。分析表明,入口處有一個 Windows Forms 應用程式初始化程序,具體涉及一個名為
temperatureConverterForm
的表單。這個表單雖然看似無害,但在惡意軟體的執行鏈中扮演了關鍵角色。它包含一個
InitializeComponent
函數,除了其預定的元件初始化目的外,還使用
Assembly.Load
將 malicious payload 載入記憶體。隨後,通過呼叫
Activator.CreateInstance
創建並執行載入類型的實例,展示了一個多階段的載入和執行程序
[1]
。
4.2. 使用 Chiron 解封裝
Snake Keylogger 展示了類似俄羅斯娃娃的行為,在運行時將一個或多個檔案載入記憶體。為有效分析這種混淆行為,採用了由 MTR 團隊開發的動態解封裝工具 Chiron Unpacker。Chiron Unpacker 旨在保存 .NET 二進位檔案,這些檔案在專門的 AppDomain 中執行檔案後被載入記憶體 [1] 。
鑑於其動態性質,Chiron 通常在虛擬機環境中執行,以安全地觀察和提取解封裝的元件。用於啟動資源解封裝模式的指令如下:
Chiron-Unpacker.exe -f sample_path -o output_path -r
在 Chiron 成功解密和解封裝後,識別出了主要的 malicious payload。該樣本最初保存為
jVf4P.bin
,隨後在 dnSpy 中以
Remington
名稱打開,揭示了其真實的運作能力
[1]
。
5. Snake Keylogger 功能
在執行時,Snake Keylogger 啟動了一系列旨在竊取資訊和保持隱形的操作。雖然初步分析顯示其嘗試進行反分析檢查(例如 Anti-VM、Anti-Sandboxie、Anti-Windows Defender、Anti-TaskMgr),但在分析的樣本中這些檢查被發現是無效的 [1] 。
5.1. 資料外洩目標
該惡意軟體在從眾多網頁瀏覽器和電子郵件客戶端提取敏感資料方面表現出色。其目標資料類型包括自動填充資訊、信用卡詳細資料、下載歷史、熱門網站和 Cookies。目標應用程式的完整清單包括:
Chrome, Firefox, QQ, CocCoc, Orbitum, Amigo, Xpom, Kometa, Nichrome, Slimjet, Iridium, Vivaldi, Iron, Chromium, Ghost, Cent, xVast, Chedot, Superbird, 360_English, 360_China, Comodo, Brave, Torch, UC, Blisk, Epic, Kinza, BlackHawk, Citrio, Uran, Coowon, 7Star, QIPSurf, Sleipnir, Chrome_Canary, CoolNovo, Sputnik, Falkon, MicrosoftEdge [1] 。
5.2. 通信管道
在成功收集資料後,Snake Keylogger 設計為通過 Threat actor 指定的各種通信管道外洩這些資訊。這些管道包括 SMTP、FTP、直接伺服器通信、Telegram 和 Discord,提供了多種資料傳輸途徑,確保成功交付竊取的資訊 [1] 。
6. 設定提取
對惡意軟體設定的分析顯示,SMTP 是指定用於資料外洩的主要協議。值得注意的是,SMTP 認證被發現使用 DES 加密,表明 Threat actor 試圖保護其通信參數。開發了一個 Python 腳本來解密這些認證,提供了對惡意軟體運作基礎設施的寶貴見解 [1] 。
- from Crypto.Cipher import DES
- import base64
- import hashlib
- def md5(string: bytes) -> bytes:
- return bytes.fromhex(hashlib.md5(string).hexdigest())
- def DES_Decrypt(text, key_string):
- key = md5(key_string.encode('ascii'))[:8]
- decoded_base64 = base64.b64decode(text)
- cipher = DES.new(key, DES.MODE_ECB)
- decrypted_data = cipher.decrypt(decoded_base64)
- decrypted_text = decrypted_data.decode('ascii', errors='ignore')
- padding_len = decrypted_data[-1]
- if padding_len < len(dec Villages_data):
- return decrypted_text[:-padding_len]
- return decrypted_text
- des_key = "BsrOkyiChvfpHAkipZAxnnChKMgnJFUlD0gkFTkrTELinhfLkJRkDeXMvEUCwUkGr"
- SMTP_Email = DES_Decrypt("oKnXjF/996A6RCL17MjD/x1X93joJz", des_key)
- # SMTP_PWD = DES_Decrypt("", des_key)
- SMTP_Server = DES_Decrypt("wV51Ia4jIWHF7X740H8OKA==", des_key)
- SMTP_Reciever = DES_Decrypt("dO1DGpXTKgtNbdU91HVy2Me+HSDzE9Z", des_key)
- SMTP_PORT = DES_Decrypt("oXrxXBiV8w=", des_key)
- print(f"Email: {SMTP_Email}\nPassword: ...\nServer: {SMTP_Server}\nReciever: {SMTP_Reciever}\nPort: {SMTP_PORT}")
執行此腳本得出了以下解密的 SMTP 設定:
Email: royals@htcp.homes
Password: ...
Server: mail.htcp.homes
Reciever: royal@htcp.homes
Port: 587
這些解密資訊提供了關鍵的入侵指標(IOCs),可用於基於網路的檢測和阻斷 [1] 。
7. 用於檢測的 YARA 規則
為促進 Snake Keylogger 及其變種的檢測,提供了名為
SUSP_NET_Cassandra_Protector_Feb_11
的 YARA 規則。此規則利用惡意軟體的特定特徵,包括其 .NET 組件屬性、檔案大小、資源數量和獨特字串模式,來識別潛在感染。此規則旨在有效識別使用 Cassandra protector 構建的樣本,這是與此 keylogger 常相關的元件
[1]
。
- import "dotnet"
- import "pe"
- import "math"
- rule SUSP_NET_Cassandra_Protector_Feb_11 : EXE NET {
- meta:
- description = "This rule detects samples built with Cassandra."
- author = "Utku / Malwation"
- date = "2025-02-11"
- sharing = "TLP:CLEAR"
- tags = "windows.exe,dotnet,suspicious,protector"
- sample = "0cb819d32cb3a2f218c5a17c02bb8c06935e926ebacf1e40a746b01e960c68e4"
- reference = "https://app.threat.zone/submission/64115637-e2c8-48c9-8d75-f1de2c7c9f9"
- os = "Windows"
- category = "Suspicious"
- strings:
- $lib1 = "System.Drawing.Bitmap" ascii
- $lib2 = "QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" ascii
- $lib3 = "System.Resources.ResourceReader" ascii
- $lib4 = "System.Reflection" ascii
- $func1 = { 28 ?? ?? ?? ?? ?? ?? ?? ?? 0A 19 ?? ?? ?? ?? ?? 25 16 ?? ?? ?? ?? A2 25 17 ?? ?? ?? ?? A2 }
- condition:
- dotnet.is_dotnet
- and filesize < 2MB
- and dotnet.number_of_resources > 1
- and for any i in (0..pe.number_of_sections - 1) : (
- (math.entropy(pe.sections[i].raw_data_offset, pe.sections[i].raw_data_size) > 7.7 and
- (pe.sections[i].name == ".text" or pe.sections[i].name == ".rsrc"))
- )
- and (all of ($lib*))
- and ($func1)
- }
此 YARA 規則為安全分析師和事件回應者提供了寶貴工具,用以在其環境中識別和分類潛在的 Snake Keylogger 感染 [1] 。
8. Hashes
為協助識別和追蹤 Snake Keylogger 樣本,提供了以下 SHA256 hashes。這些 hashes 代表分析期間觀察到的惡意軟體的不同元件或階段 [1] 。
檔案名稱 | Hash |
---|---|
Montero | 3c9cddf85962249a9673827e3edb4acb710dc8e3088c619342e2ce6df35bfbc |
vJfV | 82fa8156e9d4fb47cd20908818b9172f86ed13eb83841658f242c58ce09cff |
jVf4P | 2859b8700f6111c40b080d114c43e2e3b4f4a536eea9b57d604818562905b911 |
Captive | 11f577cc6b6af304332d47fba2122ffb193e81378662ea7093ebe971107d89d6 |
表 2:Snake Keylogger 元件的 SHA256 Hashes
9. 結論
本技術報告提供了對近期部署 Snake Keylogger 的釣魚攻擊的深入分析。該惡意軟體展示了用於持續性的複雜技術,包括基於 PowerShell 的 Windows Defender 排除和排程任務,凸顯了對強大端點安全措施的需求。其多階段載入程序,涉及看似無害的 Windows Forms 應用程式和使用 Chiron 等工具的動態解封裝,強調了檢測此類威脅的挑戰。其廣泛的資料外洩目標應用程式範圍,結合多樣的通信管道,突顯了其資訊竊取能力的全面性質。提供的 Python 解密腳本和 YARA 規則為防禦者提供了識別和緩解此威脅的實用工具。持續監控、先進威脅情報和主動安全措施對於對抗不斷演變的 keylogger 攻擊和保護敏感資訊免受危害至關重要。