ChromeLoader:新的頑固惡意軟件活動
ChromeLoader:新的頑固惡意軟件活動
執行摘要
2022 年 1 月,發現了一個名為ChromeLoader(也稱為 Choziosi Loader 和 ChromeBack)的新瀏覽器劫持者/廣告軟件活動。盡管使用了簡單的惡意廣告,該惡意軟件還是變得廣泛傳播,可能會泄露成千上萬用戶和組織的數據。
惡意軟件作者沒有使用 Windows 可執行文件 ( .exe ) 或動態鏈接庫 ( .dll )等更傳統的惡意軟件,而是使用瀏覽器擴展作為最終負載。瀏覽器擴展充當廣告軟件和信息竊取者,泄露用戶的所有搜索引擎查詢。我們在整個活動的演變過程中發現了顯著的變化和功能的增加,我們預測隨著活動的繼續會有進一步的變化。
在本文中,我們研究了該惡意軟件的技術細節,重點關注其不同版本之間的演變,并描述其感染過程中的變化。本文還回顧了尚未公開報道的新變種。

使用Cortex XDR和WildFire的Palo Alto Networks 客戶可以立即獲得針對這種新發現的惡意軟件的保護。
討論的惡意軟件名稱ChromeLoader, Choziosi 加載器, ChromeBack
ChromeLoader 惡意軟件簡介
ChromeLoader 是一個多階段惡意軟件家族。每個變種在其感染鏈中都包含不同的階段,但不同變種之間的感染鏈通常看起來非常相似,包括所有變種中使用的惡意瀏覽器擴展。
我們跟蹤的不同有效負載擴展具有攻擊者添加的硬編碼版本。這種標簽例程有助于研究過程,將不同版本與同一個活動聯系起來——并按正確的時間順序排列。
各種擴展版本與此惡意軟件的不同變體有關。我們不僅通過相關的擴展版本來區分這些變體,還通過在整個感染鏈和目標操作系統中使用的技術來區分這些變體。
本文按檢測順序提到了不同的變體,并在整個文檔中引用如下:
變體 0:以這種方式命名,因為它在變體 1(在野外發現的第一個變體)之前處于活動狀態。它使用 AutoHotKey (AHK) 編譯的可執行文件和 Chrome 擴展的 1.0 版。它的第一次已知攻擊發生在 12 月。在本文中,第四次討論了這個變體(在標題為“真正的第一個 Windows 變體”的部分中)。
變體 1:首先提到(從“感染媒介”部分開始)。它使用 Chrome 擴展的 2.0-4.4 版本作為其有效負載和一個 DotNet 可執行文件,該可執行文件啟動混淆的 PowerShell 作為其釋放器。它主要在1月份活躍。
變體 2:提到的第三個(請參閱“第二個 Windows 變體”部分)。它使用 6.0 版的 Chrome 擴展程序,并使用一個經過混淆的可執行文件作為其初始釋放器。自三月以來一直活躍。
MacOS Variant:第二個提到(參見“ MacOS Variant ”一節)。此變體專注于 MacOS 計算機(而其他變體僅針對 Windows 用戶)。使用 6.0 版本的擴展。從三月開始活躍。
圖 1. 不同變體的感染鏈。
感染載體(變體 1)
ChromeLoader 惡意軟件的第一個變體(在簡介中稱為變體 1)于 2022 年 1 月首次出現。
當用戶通過廣告網站和社交媒體平臺上的惡意廣告活動被誘使下載種子文件或破解視頻游戲時,事件鏈就開始了。用戶掃描這些網頁上的 QR 碼并被重定向到顯示 ISO 映像(光盤映像文件,通常與 CD/DVD 一起使用)的受感染網站。用戶下載 ISO 鏡像,通過雙擊掛載它并執行掛載的 ISO 鏡像中包含的內容。
圖 2. Twitter 上發布的二維碼示例。
圖 3. 來自 QR 碼的惡意 ISO 映像的下載鏈接示例。
部署
下載的 ISO 映像包含以下內容:
- Microsoft.Win32.TaskScheduler.dll:由 Microsoft 簽名的合法 .NET DLL,由其他 .NET 程序用于與計劃任務機制集成。
- 語言文件夾:包含所提到的 DLL 使用的資源文件。
- CS_installer.exe及其配置文件:惡意軟件作者編寫的惡意可執行文件(請注意,名稱可能會從一個版本更改為另一個版本)。在某些版本中,作者(可能不小心)將包含調試數據的 PDB 文件也留在了此文件夾中
- _meta.txt:此惡意軟件高級版本中的文本文件,包含加擾的ASCII 字母。
此目錄中的大部分文件都是隱藏的,普通用戶在使用 Windows 文件資源管理器打開此目錄時不會注意到它們。唯一的非隱藏文件是CS_installer.exe,它誘使受害者雙擊它來完成軟件安裝下載。
圖 4. 已安裝的惡意 ISO 映像示例(選擇“顯示隱藏文件”后)。
受害者通過雙擊啟動CS_installer.exe 。在大多數情況下,可執行文件會顯示如下圖 5 所示的消息,表明程序執行失敗。然而,這是作者試圖誤導他們的目標。
圖 5. 由 dropper 呈現的消息框,旨在欺騙用戶。
可執行文件是用 .NET 編寫的非混淆程序,因此 .NET 反射器可以對其進行反編譯以讀取源代碼。當可執行文件加載到反射器中時,會顯示圖 6 中所示的代碼。此代碼創建一個計劃任務,配置為每十分鐘執行一次惡意 base64 編碼的 PowerShell 命令。任務名稱由與namesDict數組中的隨機后綴連接的Chrome字符串構成。
圖 6. 反編譯的 CS_installer.exe 源代碼示例。
腳本內容來自_meta.txt文件,由下面圖 7 中的以下預定義函數解密,該函數應用簡單的字符替換。
圖 7. 解讀功能示例。
該惡意軟件變體的早期版本中缺少一些提到的功能。例如,在圖 8 所示的版本中,該版本僅比圖 6 和圖 7 中提到的版本早一周發現,作者沒有使用解擾函數,而是簡單地將編碼的 PowerShell 腳本硬編碼到 .NET 可執行文件中,并使用為他們的任務預定義ChromeLoader名稱,而不是生成更隨機的后綴。
圖 8. 舊版本 Variant 1 的源代碼示例。
攻擊者使用編碼的 PowerShell 腳本下載惡意瀏覽器擴展并將其加載到用戶的 Chrome 瀏覽器中。
圖 9. PowerShell 釋放器中的變量定義示例。
圖 10. 負載下載嘗試示例。
圖 11. 嘗試將有效負載加載到用戶瀏覽器中。
從這個惡意軟件的早期版本到后來的版本的演變也可以在編碼的 PowerShell 腳本中看到。圖 12 顯示了由該變體的早期版本執行的 PowerShell 腳本,該變體明顯更短,包含的代碼也不那么復雜。
圖 12. 此 PowerShell 釋放器的舊版本示例。
滴管統計
從該活動的第一天開始,我們的行為威脅保護模塊就阻止了對 Palo Alto Networks Cortex XDR 客戶的 ChromeLoader 攻擊。但是,我們對這次攻擊的以下階段感到好奇。因此,我們決定繼續研究,追蹤攻擊者的足跡和意圖。
計劃任務是使用惡意軟件下載惡意 Chrome 擴展并將其安裝到受害者的瀏覽器中。托管 Chrome 擴展程序的 URL 被硬編碼在混淆的 PowerShell 命令中,并且在不同版本之間發生變化。
圖 13. 安裝服務器的第一次感染嘗試。
圖 14. 安裝服務器連接嘗試分布。
圖 15. 每個區域阻止的感染。
圖 16. 變體 1 最活躍時間期間每臺安裝服務器每天的感染嘗試。
有效載荷
該惡意軟件的有效負載是一個 Chrome 擴展程序——每個可下載的擴展程序都具有相同的格式:
圖 17. 下載的擴展文件示例。
使用清單文件中的一些定義,并使用已知的合法圖片,擴展聲稱是合法且無害的。但是,該擴展程序要求提升權限。請求的權限包括訪問瀏覽器數據、操縱 Web 請求和訪問每個可能的 URL 地址,而合法的瀏覽器擴展程序不會這樣做。
圖 18. 下載的擴展清單文件示例。
Javascript文件conf.js聲明了常量變量,后面會用到主腳本background.js。C2 域存儲在_ExtDomNoSchema中。
圖 19. 下載擴展的 conf.js 文件示例。
background.js是一個包含所有擴展功能的單行 JavaScript 文件;它被嚴重混淆,但可以通過一系列簡短的步驟轉換為可讀的 JavaScript 代碼。但是,任何使用已知的公共 JavaScript 反混淆工具對該代碼進行反混淆的嘗試都將失敗,原因將在后面詳述。
圖 20. 下載擴展的模糊 background.js 文件示例。
該腳本使用各種混淆技術來隱藏其目的和惡意代碼。執行的第一個函數之一是負責將標準 JavaScript 函數和對象復制到具有打亂名稱的新對象中,稍后將使用腳本來解碼位于該腳本最后一條指令中的最終有效負載。
圖 21. 重命名機制的示例。例如,在本例中,String 對象存儲為 b4VV。
在此腳本的整個執行過程中,作者使用了面向 switch-case 的編程來使惡意軟件分析人員更難閱讀和理解他們的程序。
圖 22. 一個面向 switch-case 的編程示例。
程序使用上面圖 22 中所示的E3變量循環,并對每個值執行不同的操作。當 switch case 中的相關流程結束時,程序將E3的值更改為下一條指令。該程序還使用前面提到的混淆對象名稱。在圖 22 中,我們在相關代碼行下方的注釋中添加了原始對象名稱。
在了解了混淆名稱和面向 switch-case 的編程之后,我們可以更好地分析這段代碼的目的。它使用硬編碼的四大小整數數組,將其轉換為相關的 ASCII 字符并按隨機順序對其進行排序。稍后,這個數組將被連接到一個字符串,程序將搜索以該名稱定義的函數。如果未找到該函數,則執行流程將重新開始。
這個階段揭示了腳本中的另一種混淆技術。標準反混淆工具使用的關鍵特性之一是刪除未引用的函數和對象。通常,它有助于縮短代碼,省去永遠不會真正運行的復雜部分——刪除其全部目的是誤導惡意軟件分析師的功能。但是,在這種情況下,使用反混淆工具會丟棄一個必不可少的功能,如果沒有它,腳本將陷入無限循環。
在腳本執行期間,函數h0QQ甚至沒有被直接引用一次。然而,前面提到的使用隨機排序算法的代碼部分最終會嘗試執行它,因為h0QQ是0hQQ字符串的排列。如果h0QQ不存在,代碼只是嘗試對字符進行排序并反復查找函數名。
圖 23. 未引用的關鍵函數的示例。
這個函數返回一個長的加擾字符串,通過一個硬編碼的鍵進行異或,然后拆分成一個字符串數組。
圖 24. 包含惡意軟件使用的字符串的 deXORed 數組示例。
惡意軟件最終使用這些字符串來解碼其惡意代碼。它引用此數組中相關索引處的字符串,而不是在代碼中硬編碼字符串名稱。
圖 25. 惡意軟件使用 deXORed 數組解碼其最終有效載荷的示例。您還可以看到,惡意軟件不使用整數作為數組的索引,而是將字符串與算術運算結合使用。
在使用調試器執行初始化代碼后,我們導出了提到的列表成員。然后我們使用 Python 腳本對 JavaScript 代碼的其余部分進行去混淆處理。
圖 26. 用于反混淆 background.js 的腳本。
信息竊取者和廣告軟件
為了與惡意擴展程序進行通信,作者使用了命令和控制服務器 (C2),這與之前用于安裝擴展程序的安裝服務器不同。該惡意軟件使用各種擴展功能,使其在用戶瀏覽器中占有一席之地。
圖 27.惡意軟件安裝的警報示例。
安裝擴展程序時,它會添加兩個 Chrome 警報(警報允許開發人員安裝將定期觸發的回調/計劃任務)。當這些警報被觸發時,會調用兩個相應的函數:
- 當觸發廣告警報時,擴展程序會向 C2 請求廣告并將其顯示在新選項卡中。
- hb回調觸發與 C2 通信的函數,通知它當前的執行狀態。
圖 28. 觸發警報時惡意軟件的反應示例。
在圖 29 中顯示的代碼中可以看到另一個有趣的活動。擴展安裝了一個偵聽器,它允許它攔截每個傳出請求,并使用它來檢查請求是否發送到搜索引擎 - Google、Yahoo 或 Bing。如果是這樣,擴展程序會將搜索詳細信息發送到 C2,從而泄露受害者的想法和興趣。
圖 29. 瀏覽器劫持功能示例。
此外,擴展使用不同的機制來驗證它是否正確執行。例如:
- 每個傳出到 C2 的數據包都有一個名為dd的硬編碼標頭。C2 可以使用它來識別不同的分銷渠道/附屬公司。
圖 30. 添加的 dd 標頭示例。
- 取消搜索建議,可能是為了確保搜索查詢是用戶想要的。
- 從瀏覽器中卸載現有的 Chrome 擴展程序。它還將擴展名發送到 C2 并返回一個允許列表 json,以排除所選擴展名被刪除。
- 禁用所有訪問chrome://extensions并打開chrome://setting的嘗試,以防止用戶卸載此惡意擴展。
版本控制
大多數惡意擴展包含一個名為conf.js的文件以及存儲在background.json中的主要 Javascript 代碼。此conf.js(或manifest.json或background.js文件,如果缺少conf.json)文件存儲擴展的相關配置:C2 的主機名(例如,krestinaful[.]com和tobepartou[.]com),驗證頭的dd值、擴展名及其版本。似乎版本信息是準確的——我們看到的版本(2.0、3.0 和 4(.0,.3,.4))之間存在一些差異。(關于我們對變體和版本之間關系的觀察,請參見“簡介”部分。)
2.0 版(2022 年 1 月 4 日首次發布):
缺少的功能:
- 沒有針對受害者的廣告。
- 僅從 Google 收集的搜索引擎查詢。
- 不刪除現有的瀏覽器擴展。
3.0 版(2022 年 1 月 6 日):
新增功能:
- 搜索引擎查詢現在也從 Yahoo 和 Bing 收集。
- 添加的SetWithExpiry()和GetWithExpiry()函數分別用于存儲變量(即查詢 URL)和刪除現有擴展。
- 現有的擴展刪除機制。
4.* 版本(2022 年 1 月 7 日):
新增功能:
- 整個腳本中的更多混淆。
- 添加了 Chrome 廣告機制。
- 更改了硬編碼的 C2 URL。
- Chrome 警報機制。
MacOS 變體
2022 年 3 月,出現了一個針對 MacOS 用戶的新變體。此變體仍然處于活動狀態,并使用類似的技術來安裝其有效負載并隱藏其操作。它使用相同的感染方法將受害者引導到受感染的按次下載付費網站安裝其滴管。
在這種情況下,dropper 是一個磁盤映像 (DMG) 文件——ISO 文件的 MacOS 實現——包含多個文件,包括一個 bash 腳本。bash 腳本以多種方式類似于預定的 PowerShell 腳本:
- 下載有效負載——來自遠程安裝服務器的瀏覽器擴展。
- 將有效負載加載到目標的瀏覽器中——Google Chrome 和內置的 Safari 瀏覽器。
圖 31. MacOS 安裝腳本的早期版本示例。
在更高級的情況下,作者不是在 bash 腳本中硬編碼下載執行部分,而是將這些命令編碼在一個單獨的文件中,然后由 bash 腳本使用 OpenSSL 解碼和執行。
圖 32. 稍后的 MacOS 安裝腳本示例。
下載的擴展功能與 Windows 操作系統版本中使用的類似。MacOS 變體使用相同的混淆方法來執行相同的重要組件——收集搜索引擎查詢并展示廣告。此外,該版本還使用了新的 C2 地址。
根據該變種提供的惡意擴展的版本號,攻擊者將 MacOS 變種引用為晚于 Windows 變種,這符合該活動的感染時間線。在我們的研究中,使用該變體發現的擴展被標記為該惡意軟件的 6.0 版本。
第二個 Windows 變體(變體 2)
2022 年 3 月,在最后一次已知的變體 1 感染幾周后,我們發現了一個與第一個有多個相似之處的新活動,這使我們相信我們實際上正面臨本博客中提到的相同 ChromeLoader 惡意軟件的另一個變體作為變體 2。
此變體 2 的感染媒介與變體 1 相同。通過按安裝付費網站和社交媒體上的惡意廣告活動,誘使用戶下載 torrent 或破解視頻游戲。
用于變體 2 的 ISO 映像包含新的可執行文件。受害者只會看到一個 Windows 快捷方式,他們可以雙擊該快捷方式來安裝所需的軟件或觀看電影。
圖 33. 惡意掛載 ISO 的示例。
但是,ISO 映像包含在受害者啟動 Windows 快捷方式時執行的其他隱藏文件(.lnk文件)。.lnk文件只運行一個名為resources.bat的批處理腳本。反過來,該腳本將app.zip的內容提取到%APPDATA%中。zip 存檔包含一個名為Tone.exe的可執行文件,該可執行文件最終由批處理腳本存儲到注冊表運行密鑰中,從而使感染持續存在。
圖 34. LNK 文件配置示例。
圖 35.resources.bat 內容示例。
與變體 1 一樣,變體 2 安裝了相同類型的 Chrome 擴展程序。該惡意軟件啟動了一個cmd.exe進程,該進程又執行了powershell.exe。PowerShell 進程執行 WMI 查詢,用于安裝名為chrome *的新計劃任務,啟動另一個編碼的 PowerShell 命令。
圖 36. 惡意軟件安裝計劃任務時的因果鏈示例。
在分析上述混淆的 PowerShell 腳本時,我們遇到了一個用作 dropper 的腳本。此腳本不直接安裝新的 Chrome 擴展,因此它與變體 1 的 PowerShell 腳本模式不完全匹配。但是,變量的結構和使用類似于變體 1 的行為。
圖 37. 解碼后安裝的計劃任務腳本內容示例。
使用 XQL 查詢,當安裝服務器可用時,PowerShell 腳本會創建并加載熟悉的惡意 Chrome 擴展程序(6.0 版本,用于最新的 MacOS 變體)。
圖 38. 編碼 PowerShell 下載的文件示例。
真正的第一個 Windows 變體 – 2021 年 12 月(變體 0)
由于其多次感染事件,該惡意軟件家族在網絡安全界引起了全世界的關注。
如前所述,我們在調查期間檢測到此惡意軟件的不同版本。每個版本不僅由我們標記,還由惡意軟件作者自己標記。我們檢測到的最早的標記版本是 2.0。因此,我們確信這不是這些攻擊者第一次發動攻擊,我們決心公開該惡意軟件的實際第一個版本。
由于攻擊者頻繁更新有效載荷的歷史,我們確信第一個感染病例發生在 2022 年 1 月與目前報告的感染病例比較接近。
透視用于 Variant 1 PowerShell dropper 的安裝服務器域顯示,另一款惡意軟件在 2021 年 12 月使用其中一些域作為其安裝服務器。
這個惡意軟件是一個使用 AutoHotKey (AHK) 編寫的可執行文件——一個用于腳本自動化的框架。
使用此工具,程序員可以使用 AHK 語法編寫簡短、易于理解的腳本。然后,根據程序員的定義,框架會創建匹配的鉤子來執行這些腳本。
在將 AHK 腳本轉換為 Windows 可執行文件時,原始腳本源代碼被粘貼到可執行文件的末尾,與使用重度混淆的其他變體相比,研究人員的調查過程更加輕松。在這種情況下,硬編碼腳本包含以下源代碼,看起來與我們已經分析過的 PowerShell 釋放器非常相似:
圖 39. AutoHotKey 腳本內容的示例。
簡而言之,這個dropper從它的安裝服務器下載一個payload。我們可以通過用于下載的有效負載 ( Extension_Name )的變量名稱假設此有效負載是另一個瀏覽器擴展。
經過更徹底的調查,我們找到了下載的擴展程序。不出所料,它還包含與 ChromeLoader 惡意軟件家族相關的功能——但更重要的是,它被標記為 1.0 版(!)
這些擴展與與該系列相關的其他擴展非常相似,但有一個主要區別——這一次,擴展沒有被混淆。它甚至包含作者對不同代碼部分的一些評論。
圖 40. 此變體下載的擴展示例,我們這邊沒有任何更改。
結論
該博客記錄了使用惡意廣告傳播的新惡意軟件系列 ChromeLoader 的不同示例。該惡意軟件展示了網絡犯罪分子和惡意軟件作者的決心:在很短的時間內,ChromeLoader 的作者發布了多個不同的代碼版本,使用了多個編程框架、增強功能、高級混淆器、修復了問題,甚至添加了跨操作系統支持目標Windows 和 MacOS。
該惡意軟件用于劫持受害者的??瀏覽器搜索和展示廣告——這兩種行為不會造成嚴重損害或泄露高度敏感的數據。然而,基于攻擊者在如此短的時間內獲得的廣泛分布,他們能夠造成比 Chrome 擴展程序的兩個主要功能造成的損害更大的損害。
此外,作者非常有條理,標記了他們不同的惡意軟件版本,并在整個攻擊例程中使用了類似的技術。這可能使他們在開發攻擊框架和維護攻擊鏈時生活更輕松,但無意中,這也使調查過程變得更加容易。事實上,它極大地提高了研究能力,以至于我們能夠檢測到該惡意軟件的兩個新版本——第一個版本和最新版本,之前從未與該惡意軟件家族相關聯。
最后,這個攻擊鏈展示了安全產品甚至普通用戶應該注意的惡意軟件作者中的兩個上升趨勢——使用 ISO(和 DMG)文件和使用瀏覽器擴展。
文章轉自:
納達夫巴拉克