AgentTesla 是一個非常活躍的竊密類惡意軟件,主要通過電子郵件附件進行傳播分發。攻擊者正在嘗試使用 Telegram 回傳數據,但主要還是靠郵件服務器。
惡意軟件即服務
AgentTesla 是使用 .NET 開發的 Windows 惡意軟件,主要從受害者的系統中竊取敏感信息。由于該惡意軟件隨處可用而且成本低廉,AgentTesla 被認為是商品化惡意軟件的典型代表。惡意軟件即服務使水平較低的犯罪分子也可以進行各種類型的攻擊,對網絡安全狀況構成了重大威脅。自從 2014 年開始,AgentTesla 就成為了持續且廣泛的威脅。
AgentTesla 也被稱為 Negasteal 和 OriginLogger,主要是 2018 年 10 月該惡意軟件被揭露后產生的變化。研究人員披露了該惡意軟件背后的疑似攻擊者,應該是土耳其人。當年信息被披露后,AgentTesla 突然就暫停了銷售。2019 年 3 月,攻擊者通過 Discord 宣布由于法律問題停止銷售,但也介紹了替代方案 OriginLogger。
OriginLogger 實質上就是 AgentTesla 的變種,二者共享開發代碼。對 AgentTesla 的檢測方法對于識別 OriginLogger 也是有效的,OriginLogger 樣本也會被檢測為 AgentTesla 家族的惡意樣本。和 AgentTesla 類似,OriginLogger 也是惡意軟件即服務(MaaS)。OriginLogger 的網站如下所示:

OriginLogger 網站截圖
網站售賣使用許可證,最長可達六個月。購買這些許可證后就能夠獲得使用惡意軟件構建工具的權限,支持攻擊者定制 AgentTesla 樣本文件,包括數據泄露的方法。
由于 AgentTesla 和 OriginLogger 有許多相似之處,將其區分開非常有挑戰。本文將二者統稱為 AgentTesla,除非要對二者進行比較。
信息竊取程序
名稱變化后,該惡意軟件一直持續更新。AgentTesla 家族一直位于最常見、最流行的惡意軟件排行榜前列,ANY.RUN、MalwareBazaar 與 Unpac.Me 等都可以證明。
通常來說,AgentTesla 會使用帶有惡意附件的網絡釣魚郵件進行攻擊。攻擊者將惡意軟件加載程序,如 GuLoader、PureCrypter 與 PrivateLoader,作為初始感染媒介。感染鏈啟動后,最終 Payload 會進行持久化,盡可能保持更長時間收集用戶憑據、按鍵記錄、剪貼板信息和屏幕截圖。具體來說,可以從瀏覽器、VPN 客戶端、郵件客戶端、FTP 客戶端、VNC 客戶端等應用程序收集各種敏感信息。
數據泄露可以通過各種協議實現,如 SMTP、FTP、HTTP、Telegram 與 Discord。2020 年 8 月,攻擊者引入了 Telegram。2022 年 10 月,攻擊者引入了 Discord。數據會以明文的形式回傳給攻擊者,以未加密的狀態保留在服務器上。

數據回傳
過去的三個月中,研究人員分析了 1500 余個 AgentTesla 樣本的配置文件。配置文件中,大約四分之三都是利用電子郵件進行數據泄露。Telegram 已經占比達到 14%,而使用 HTTP 回傳數據已經許久未用過了。
數據分析
分析人員分析了 3 個月內 210 次攻擊行動中的受害者信息。2023 年 10 月到 12 月期間,至少 5300 臺計算機被入侵,共計 2000 余個 IP 地址。根據情況看,受害者最多的是美國、中國與德國。

受害者分布情況
而 AgentTesla 回傳的數據中,密碼是最常見的。幾乎所有共計都會竊取密碼,如下所示:

數據泄露類別分類
頂級域名的詞云如下所示,大多數是美國公司和中國公司,也有俄羅斯公司、土耳其公司和希臘公司。

按受害者數量排名
這些域名數據反映了受害者的國家分布情況,而查看頂級域名情況時。大多數受害者可能在歐洲,如土耳其、意大利、俄羅斯、波蘭、希臘、羅馬尼亞、德國和西班牙。

頂級域名排行
后續利用
攻擊者獲取了這些數據后,要么直接利用這些數據,要么直接出售以供進一步利用。直接利用時,攻擊者通常會使用各種身份信息,將資金、加密貨幣或者其他有價值的資產從受害者賬戶轉移到攻擊者的賬戶。進一步利用時,攻擊者可以將數據用于其他以利潤為導向的攻擊,例如勒索軟件攻擊和商業電子郵件泄露(BEC)攻擊等。事實上,已經有攻擊者利用 AgentTesla 惡意軟件重定向東南亞、中東和北非的石油公司與天然氣公司的金融交易。
總結
2014 年以來,AgentTesla 是一個以惡意軟件即服務為賣點的 Windows 惡意軟件。該惡意軟件后來更名為 OriginLogger,也表明了該惡意軟件的適應性。數據分析顯示,AgentTesla 的數千名受害者主要在美國、中國與德國。大量數據被泄露,不僅直接構成財務威脅,還助長勒索軟件和其他類型的攻擊。
Yara
rule agent_tesla
{
meta:
description = "Detecting HTML strings used by Agent Tesla malware"
author = "Stormshield"
version = "1.0"
strings:
$html_username = "<br>UserName : " wide ascii
$html_pc_name = "<br>PC Name : " wide ascii
$html_os_name = "<br>OS Full Name : " wide ascii
$html_os_platform = "<br>OS Platform : " wide ascii
$html_clipboard = "<br><span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span>" wide ascii
condition:
3 of them
}
rule AgentTesla
{
meta:
author = "kevoreilly"
description = "AgentTesla Payload"
cape_type = "AgentTesla Payload"
strings:
$string1 = "smtp" wide
$string2 = "appdata" wide
$string3 = "76487-337-8429955-22614" wide
$string4 = "yyyy-MM-dd HH:mm:ss" wide
//$string5 = "%site_username%" wide
$string6 = "webpanel" wide
$string7 = "<br>UserName :" wide
$string8 = "<br>IP Address :" wide
$agt1 = "IELibrary.dll" ascii
$agt2 = "C:\\Users\\Admin\\Desktop\\IELibrary\\IELibrary\\obj\\Debug\\IELibrary.pdb" ascii
$agt3 = "GetSavedPasswords" ascii
$agt4 = "GetSavedCookies" ascii
condition:
uint16(0) == 0x5A4D and (all of ($string*) or 3 of ($agt*))
}
rule AgentTeslaV2 {
meta:
author = "ditekshen"
description = "AgenetTesla Type 2 Keylogger payload"
cape_type = "AgentTesla Payload"
strings:
$s1 = "get_kbHook" ascii
$s2 = "GetPrivateProfileString" ascii
$s3 = "get_OSFullName" ascii
$s4 = "get_PasswordHash" ascii
$s5 = "remove_Key" ascii
$s6 = "FtpWebRequest" ascii
$s7 = "logins" fullword wide
$s8 = "keylog" fullword wide
$s9 = "1.85 (Hash, version 2, native byte-order)" wide
$cl1 = "Postbox" fullword ascii
$cl2 = "BlackHawk" fullword ascii
$cl3 = "WaterFox" fullword ascii
$cl4 = "CyberFox" fullword ascii
$cl5 = "IceDragon" fullword ascii
$cl6 = "Thunderbird" fullword ascii
condition:
(uint16(0) == 0x5a4d and 6 of ($s*)) or (6 of ($s*) and 2 of ($cl*))
}
rule AgentTeslaV3 {
meta:
author = "ditekshen"
description = "AgentTeslaV3 infostealer payload"
cape_type = "AgentTesla payload"
strings:
$s1 = "get_kbok" fullword ascii
$s2 = "get_CHoo" fullword ascii
$s3 = "set_passwordIsSet" fullword ascii
$s4 = "get_enableLog" fullword ascii
$s5 = "bot%telegramapi%" wide
$s6 = "KillTorProcess" fullword ascii
$s7 = "GetMozilla" ascii
$s8 = "torbrowser" wide
$s9 = "%chatid%" wide
$s10 = "logins" fullword wide
$s11 = "credential" fullword wide
$s12 = "AccountConfiguration+" wide
$s13 = "<a.+?href\\s*=\\s*([\"'])(?<href>.+?)\\1[^>]*>" fullword wide
$s14 = "set_Lenght" fullword ascii
$s15 = "get_Keys" fullword ascii
$s16 = "set_AllowAutoRedirect" fullword ascii
$s17 = "set_wtqQe" fullword ascii
$s18 = "set_UseShellExecute" fullword ascii
$s19 = "set_IsBodyHtml" fullword ascii
$s20 = "set_FElvMn" fullword ascii
$s21 = "set_RedirectStandardOutput" fullword ascii
$g1 = "get_Clipboard" fullword ascii
$g2 = "get_Keyboard" fullword ascii
$g3 = "get_Password" fullword ascii
$g4 = "get_CtrlKeyDown" fullword ascii
$g5 = "get_ShiftKeyDown" fullword ascii
$g6 = "get_AltKeyDown" fullword ascii
$m1 = "yyyy-MM-dd hh-mm-ssCookieapplication/zipSCSC_.jpegScreenshotimage/jpeg/log.tmpKLKL_.html<html></html>Logtext/html[]Time" ascii
$m2 = "%image/jpg:Zone.Identifier\\tmpG.tmp%urlkey%-f \\Data\\Tor\\torrcp=%PostURL%127.0.0.1POST+%2B" ascii
$m3 = ">{CTRL}</font>Windows RDPcredentialpolicyblobrdgchrome{{{0}}}CopyToComputeHashsha512CopySystemDrive\\WScript.ShellRegReadg401" ascii
$m4 = "%startupfolder%\\%insfolder%\\%insname%/\\%insfolder%\\Software\\Microsoft\\Windows\\CurrentVersion\\Run%insregname%SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\RunTruehttp" ascii
$m5 = "\\WindowsLoad%ftphost%/%ftpuser%%ftppassword%STORLengthWriteCloseGetBytesOpera" ascii
condition:
(uint16(0) == 0x5a4d and (8 of ($s*) or (6 of ($s*) and 4 of ($g*)))) or (2 of ($m*))
}
rule AgentTeslaXor
{
meta:
author = "kevoreilly"
description = "AgentTesla xor-based config decoding"
cape_type = "AgentTesla Payload"
strings:
$decode = {06 91 06 61 20 [4] 61 D2 9C 06 17 58 0A 06 7E [4] 8E 69 FE 04 2D ?? 2A}
condition:
uint16(0) == 0x5A4D and any of them
}
rule AgentTeslaV4
{
meta:
author = "kevoreilly"
description = "AgentTesla Payload"
cape_type = "AgentTesla Payload"
packed = "7f8a95173e17256698324886bb138b7936b9e8c5b9ab8fffbfe01080f02f286c"
strings:
$decode1 = {(07|FE 0C 01 00) (07|FE 0C 01 00) 8E 69 (17|20 01 00 00 00) 63 8F ?? 00 00 01 25 47 (06|FE 0C 00 00) (1A|20 04 00 00 00) 58 4A D2 61 D2 52}
$decode2 = {(07|FE 0C 01 00) (08|FE 0C 02 00) 8F ?? 00 00 01 25 47 (07|FE 0C 01 00) (11 07|FE 0C 07 00) 91 (06|FE 0C 00 00) (1A|20 04 00 00 00) 58 4A 61 D2 61 D2 52}
$decode3 = {(07|FE 0C 01 00) (11 07|FE 0C 07 00) 8F ?? 00 00 01 25 47 (07|FE 0C 01 00) (08|FE 0C 02 00) 91 61 D2 52}
condition:
uint16(0) == 0x5A4D and all of them
}
rule AgentTeslaV4JIT
{
meta:
author = "kevoreilly"
description = "AgentTesla JIT-compiled native code"
cape_type = "AgentTesla Payload"
packed = "7f8a95173e17256698324886bb138b7936b9e8c5b9ab8fffbfe01080f02f286c"
strings:
$decode1 = {8B 01 8B 40 3C FF 50 10 8B C8 E8 [4] 89 45 CC B8 1A 00 00 00}
$decode2 = {83 F8 18 75 2? 8B [2-5] D1 F8}
$decode3 = {8D 4C 0? 08 0F B6 01 [0-3] 0F B6 5? 04 33 C2 88 01 B8 19 00 00 00}
condition:
2 of them
}
參考來源
BitSight
安全內參
上官雨寶
cayman
RacentYY
安全俠
GoUpSec
Anna艷娜
ManageEngine卓豪
FreeBuf
虹科網絡安全