
摘要
本研究對從受損Windows系統中提取的記憶體傾印(Memory Dump)惡意軟體樣本進行了全面的技術分析。該惡意軟體在
dllhost.exe
程序中運行,採用損壞的DOS和PE標頭等規避技術,以阻礙靜態分析。通過在受控環境中重建可執行檔,本研究探討了進階記憶體操作、API解析和自訂加密機制。分析顯示該惡意軟體作為遠端存取木馬(RAT)的功能,包括螢幕擷取、C2通訊和系統服務操作。本研究記錄了動態執行期間的關鍵技術挑戰與解決方案,提供了對現代惡意軟體規避策略和對策的見解。

1. 簡介
惡意軟體作者越來越依賴記憶體常駐技術以避免檢測。本報告聚焦於從記憶體dump(
fullout
)中恢復的64位可攜式可執行(PE)檔案,其中DOS和PE標頭被覆寫為零以規避重建。分析使用IDA Pro、Volatility和除錯器等工具進行,強調在模擬環境中的動態執行。
2. 惡意軟體重建的技術挑戰
2.1 損壞的PE標頭
傾印的惡意軟體位於
dllhost.exe
程序中的位址範圍
0x1c3eefb0000–0x1c3ef029fff
。其DOS和PE標頭對標準PE載入至關重要,但被故意損壞以防止靜態分析。為動態執行惡意軟體,需進行手動記憶體分配和標頭重建:
-
在
0x1C3EEB70000
使用VirtualAlloc()
分配記憶體區域,以反映原始程序佈局。 -
通過在IDA Pro中搜尋x86指令
sub rsp, 28h
(函數序言, function prologues, 的常見特徵)來識別入口點。在測試八個候選函數後,確認正確入口點為0x1C3EEFEE0A8
。
2.2 API解析與重新定位
惡意軟體的匯入表引用了16個模組(例如
kernel32.dll
、
gdi32.dll
)中的257個Windows API。由於API位址在不同系統間不同,需進行手動重新定位:
-
範例:
GetObjectW()
API在受損系統中位於0x7FFD74224630
,在測試環境中映射到其本地位址0x07FFFF77CB870
。 -
使用
LoadLibraryA()
/LoadLibraryW()
API載入未由dllhost.exe
自動解析的缺失依賴項(Dependencies)。
2.3 全域資料與執行參數
使用Volatility從記憶體dump中提取了關鍵全 Prasování全域資料(大小:
0x5A000
字元)。入口點需要三個參數:
-
基礎位址
:
0x1C3EEFB0000
(惡意軟體的記憶體基礎)。 -
標誌
:
0x1
(靜態值)。 - 緩衝區指標 :從dump中提取的0x30字元緩衝區。
此外,RSP 暫存器對齊調整為
0x09CAD11D848
,以防止執行對齊指令(如
movdqa
)時發生
EXCEPTION_ACCESS_VIOLATION
。
3. C2通訊與自訂加密
3.1 基於TLS的C2互動
惡意軟體通過TLS與其C2伺服器(
rushpapers.com:443
)通訊。在使用記憶體內部程式解密C2網域名後,建立WebSocket handshaking:
GET /ws/ HTTP/1.1 Host: rushpapers[.]com Upgrade: websocket Sec-WebSocket-Key: OCnq155rYct3ykkkdLrjvQ==
伺服器回應:
HTTP/1.1 101 Switching Protocols Upgrade: websocket Sec-WebSocket-Accept: Bzr0K1o6RJ4bYvvm4AM5AAG172Y=
Handshaking後,在TLS加密前應用程式自訂加密層。
3.2 自訂XOR加密演算法
惡意軟體實現了可變長度的XOR加密方案。關鍵組成部分包括:
-
Magic Tag
:
0x82
(識別封包類型)。 -
擴展長度
:
0xA6
(資料大小:0xA6 - 0x80 = 0x26
字元)。 -
加密金鑰
:隨機產生(例如
0x755C9816
)。 - 資料處理 :每個字元與金鑰進行XOR運算:
xor r8b, [r10] ; Encrypt/decrypt with key inc r10
範例解密payload:
OS: Windows 10 / 64-bit (10.0.19045)
此資料包含系統資訊,被傳送到C2伺服器。
4. 惡意軟體功能與特性
4.1 螢幕擷取機制
惡意軟體使用GDI+ API擷取螢幕截圖並上傳至C2伺服器。關鍵步驟包括:
-
點陣圖創建
:
CreateCompatibleDC(), CreateCompatibleBitmap()
-
螢幕擷取
:
BitBlt() // Copies screen pixels to bitmap
-
影像編碼
:
GdipCreateBitmapFromHBITMAP(), GdipSaveImageToStream() // Saves as JPEG
4.2 遠端伺服器功能
惡意軟體生成一個執行緒以監聽C2指定的TCP端口,啟用攻擊者控制的反向連線。每個連線觸發一個新執行緒以處理並發session。
4.3 服務操作
惡意軟體通過服務控制管理器(SCM)列舉和控制系統服務:
-
使用的API
:
OpenSCManagerW(), EnumServicesStatusExW(), ControlService()
5. 緩解策略
為了應對此類威脅,Fortinet建議:
-
行為分析
:監控異常API調用(例如
VirtualAlloc()
、LoadLibraryW()
)。 - 網路流量檢查 :檢測TLS加密的C2流量模式(例如WebSocketHandshaking)。
- 記憶體鑑識 :使用Volatility等工具從記憶體dump中提取 Artifacts。
6. 結論
本研究展示了分析具有損壞標頭的記憶體常駐惡意軟體的複雜性。通過重建可執行檔案並剖析其加密和C2機制,我們揭示了進階規避策略和RAT功能。未來研究應專注於自動化API重新定位和即時檢測自訂加密模式。
Indicators of Compromise (IOCs)
- URL :hxxps[:]//rushpapers[.]com/ws/
- SHA256 :F3EB67B8DDAC2732BB8DCC07C0B7BC307F618A0A684520A04CFC817D8D0947B9
程式碼片段
-
自訂加密程式
:
loc_1C3EF00CED3: mov eax, r9d and eax, 80000003h jge short loc_1C3EF00CEE4 ... xor r8b, [r10] ; Core encryption step
本報告強調了動態分析和記憶體鑑識在對抗現代惡意軟體威脅中的重要性。