深度分析 HawkEye Keylogger
前情提要:
最近想把能力延伸到 Detection Engineering 領域,所以嘗試了一些cyberdefenders的練習題
在玩 HawkEye Lab 的時候從pcap裡提取出一支惡意代碼樣本,情景為受害者點開釣魚郵件導致下載了惡意軟件到電腦裡
趁這次機會把完整的分析流程記錄下來,也建立一個之後會持續更新的 detection 研究,所以就有了這篇文章
概要:
Hawkeye Keylogger 是一個老牌鍵盤側錄器,使用 C# 編寫,早在2016年就有許多活動紀錄,這隻樣本已經到 V9 了,VirusTotal 上記錄2023年又開始活躍,隨著釣魚郵件進行散播,功能大致上有盜取設備信息、鍵盤紀錄、螢幕截圖等等,甚至還可以偷拍你的 webcam
深度分析
Loader
Wireshark 獲得的執行檔案是用 AutoIt 3 編寫的 loader 
我們可以用 unAutoIt 還原成 AutoIt 腳本,內容如下: 
腳本除了加入變數/字串名稱混淆之外,也使用兩個 function 做字串混淆 
可以看到腳本中大量出現兩個 function 混淆所有的字串與 bytes,我們可以按照這兩個 function 寫個腳本解這些混淆 腳本放在我的 repo 中了 loader 將 resource 中的 hvax641 與 pcalua2 解密成 malware 本體 
shellcode 會 process hollowing RegAsm.exe 注入並執行 malware 
硬編碼 shellcode 解出來後開頭是:
1
55 8B EC 8B 4D 08 ...
其中 55 8B EC 是典型 32-bit x86 函式 prologue:
push ebp
mov ebp, esp
注入 shellcode,在 DllCallAddress 的參數中可以看到shellcode 的起始位置為 0xBE 
傳入三個參數 實際值:
1
2
3
arg1 = 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe'
arg2 = ''
arg3 = hvax641 + pcalua2 解密後的 .NET PE bytes
Shellcode
首先 IDA 中還原 funcion 0xBE 正好也是三個參數,說明這是 shellcode Entrypoint 沒錯 
從 malware 本體讀取 IMAGE_DOS_HEADER 的信息 
然後進行 process hollowing,這邊呼叫了 CreateProcessW 啟動 RegAsm.exe 並且將 dwCreationflags設為 4 ,也就是 CREATE_SUSPENDED 
看到這邊基本可以確定其功能,有興趣的朋友可以下載樣本更深入分析
本體
丟進 DIE 看一下
Malware 本體使用 C# 編寫,樣本用 Confuser 混淆,可以用 de4dot 直接解混淆 
可以看到CAPA辨識出了很多部件功能,這個工具用來對付裸奔狀態的惡意軟體還是非常好用的 當然也常有辨識錯誤的情況,所以需要人工檢查。像上圖辨認成獲取地理位置信息的函數其實是用 POST request 回傳蒐集到的 Data (樣本提供四種回傳Data的方式,集中在Class 0x02000033 中) 
這隻樣本使用 SMTP 回傳信息(在function 0x06000177),代碼如下: 
特徵基本跟 Lab 中提供的 log 相同(用IP Lookup查詢本體IP) 
從 resource RCDATA 透過 0x0600036C解密C2 Key: 0cd08c62-955c-4bdb-aa2b-a33280e3ddce 
算法設定:使用AES解密
1
2
3
4
5
6
7
8
9
Key/password:
0cd08c62-955c-4bdb-aa2b-a33280e3ddce
Cipher:
RijndaelManaged
Key size: 256-bit
Block size: 128-bit
Mode: CBC
Padding: PKCS7
1
2
3
4
5
SMTP server: macwinlogistics[.]in
SMTP user: sales.del@macwinlogistics.in
SMTP pass: Sales@23
SMTP port: 587
SSL: false
其他功能
功能還有很多,有興趣更深入分析請下載該樣本
後記
距離在中華資安做惡意程式分析也兩年了,這次重新完整跑一遍從 loader 到本體的逆向,把流程和工具用法都整理下來。 之前沒有妥善使用 Capa。這個工具用於快速分析惡意樣本功能組件以及位置實在是太好用了。 適逢2023年大語言模型雖然能完美還原 PHP、Python opcode,但還看不懂 assembly code。在分析這隻樣本的時候又嘗試借助 Codex 找尋分析入口與交叉驗證,它對 x86 asm 的分析能力明顯成熟了,包含讀取 DOS header 的行為、process hollowing 中 create process 的參數都能辨識出來。只能說 AI 的進步實在有點超乎我的想像了。。。












