概述
最近,Cofense網絡釣魚防御中心(PDC)監測到Astaroth木馬再次活躍。上周,我們的客戶共計有數十臺資產感染該木馬。根據估算,在短短一周內,有約8000臺機器可能遭到入侵。
Astaroth木馬因其使用撒旦的變量名稱(古代傳說中的“大公爵”)而得名,自2017年底以來,一直通過偽造的發票釣魚郵件感染受害用戶,大部分發件人使用的是cam.br域名,以此來模擬合法的發件人。
此次木馬的再次活躍,顯然事先做了充足的謀劃,將此次攻擊的目標放在了南美洲。所有惡意域名都是由Cloudflare托管,并用于將Payload傳送到IP地址位于南美洲的主機上。
Astaroth的原始Payload是惡意.lnk文件,這也是攻擊者比較常見的一種傳遞Payload的方法。惡意.lnk中包含指向URL的鏈接,受害用戶跳轉到該鏈接便能獲取下一個Payload。
利用現有Windows服務承載惡意軟件
Windows Management Instrumentation Console(WMIC)是WMI的命令行界面。WMIC是一個管理Windows主機的優秀工具,受到管理員的廣泛青睞。使用get命令,可以以多種方式來檢索機器的信息,但是該木馬會濫用os get /format:命令,從以.xsl擴展名的非本地資源下載Payload。同時,下載的樣式表允許從其中運行經篡改的JavaScript和VBS,這樣一來就能夠輕松在被感染系統中運行任何類型的惡意軟件。Astaroth木馬的.lnk文件中包含WMIC.exe的參數,用于指定WMIC以非交互模式運行,這樣一來被感染用戶就不會看到任何窗口,木馬可以悄悄地下載.lnk中的硬編碼URL,并自行退出。
Astaroth從URL中檢索包含帶有嵌入式JavaScript樣式表的.php文件。我們訪問該網頁,并手動進到view:source即可看到其代碼。截至撰寫本文時,這部分代碼還沒有以任何方法進行混淆。
下圖為.xsl中的嵌入式JS:
其中一些變量包含用于文件執行和操作的ActiveX對象,在定義了幾個變量之后,該腳本使用一個函數“roll”來生成隨機數。
然后,使用生成的隨機數,從列表中選擇Payload的URL。
在代碼中,經常會重復使用“xVRxastaroth”變量,這一變量可以作為指紋,有助于我們識別該木馬。其中,列出的154個域名都托管在CloudFlare上,木馬編寫者現在大多傾向于借助Google Cloud或CloudFlare等合法托管服務來托管其Payload或C&C基礎架構,從而使得安全人員阻止IP的行動變得更加困難。
在選擇域名之后,木馬會再次使用WMIC加載到另一個樣式表的Payload URL。選擇的域名將會以硬編碼值的形式存儲到/Seu7v130a.xsl?,并在后面附加1111111到9999999之間隨機選擇的數字。
例如:
hxxp://ta4dcmj[.]proxy6x-server[.]website/09//Seu7v130a[.]xsl?3314468[.]xsl
該Payload包含更多嵌入式的JavaScript,并且是惡意軟件核心功能的一部分。在這里,重復使用了與原始樣式表中聲明變量相同的變量,包括用于Payload域名的RNG Roller。在選擇Payload URL之后,該腳本將會創建certutil和regsvr32的副本并保存到臨時目錄中,以備之后使用。
惡意軟件產生certutil和regsvr32的副本:
Certutil.exe(其副本被木馬重命名為certis.exe)在Windows環境中通常用于管理證書。但在被感染主機上,第二個樣式表借助該可執行文件來下載惡意軟件Payload。該腳本創建一個函數,函數使用-urlcache參數和-f、-split選項在temp文件夾中運行復制的certutil。這樣一來,可以將獲取到的URL保存在文件中。
緩存URL并下載Payload:
該函數將重復使用,以檢索其余的惡意軟件Payload。此外,還會執行檢查,在繼續下一步之前確保已經將每個文件都下載到正確的文件夾中。
在下載惡意軟件并驗證文件后,腳本會在C:Program Files目錄下檢查是否已經安裝Avast防病毒產品,這是全球最流行的防病毒產品之一。
如果被感染主機上沒有安裝Avast,那么腳本將使用regsvr32繼續執行最終的.dll,并退出。
被感染主機的數據庫
在惡意軟件成功感染主機后,會生成一個純文本日志(r1.log)并保存在tempwl目錄下。這一日志中包含公網IP、地理位置、計算機名稱、計算機受感染的時間以及需要提供給木馬開發者的一些字段。
然后,該信息會被發送到位于第一個Payload URL根目錄中的SQLite數據庫,如下面的代碼段所示。~/9/中有多個打開的目錄,如果將數字減少到0,就可以打開其他幾個包含可下載的SQLite數據庫的目錄,這些目錄很可能來自之前的木馬活動。經過統計,被感染用戶高達數千人,一周大約就能感染8000人左右。
目錄截圖如下:
下面為在SQLite Browser中查看的數據庫,其中每個字段都經過了Base64編碼。
解碼后,該數據庫中的內容包含每臺受感染計算機的詳細日志。請注意加拿大VPS上托管計算機的第一個條目,與其他南美主機(也就是此次惡意活動的主要針對目標)有所不同。但我們并不能確定,這也可能是木馬開發者在測試他們的基礎架構。
詳細分析
Astaroth木馬在驗證所有核心文件和二進制文件已經運行后,將執行惡意軟件Payload。需要注意的是,任何Payload都可以通過濫用WMIC樣式表來實現傳遞,Astaroth支持通過多種方式來傳遞Payload。然而,根據最近我們監測到的活動,該木馬最近一直用于傳遞鍵盤記錄器。在下載的文件中,偽裝的.gif和.jpg文件似乎是惡意軟件的依賴項。然而,根據其Magic Byte來看,并不是任何已知的文件類型,并且沒有.text或其他PE部分,這就表明它們是不可執行的。然而,其中確實存在函數名稱,包括PeekMessageA,這一函數在其他的鍵盤記錄類惡意軟件中也曾經發現過。除此之外,還有幾個日志文件,以及一個名為vri的文件夾。當惡意軟件運行時,該文件夾中也會保存日志。
函數名稱:
為了讓木馬更有針對性,在其他地區運行Astaroth惡意軟件的嘗試都會失敗,具體而言,無法成功下載Payload,并且無法運行.dll文件。我們對其中一個.dll文件進行了簡要分析,目前發現它是使用Delphi語言編寫而成,其中使用了GetLocaleInfoA函數,以允許木馬獲取被感染主機的語言環境信息。
通過更改注冊表中HKEY_CURRENT_USER>Control Panel>International項,我們將主機調整為巴西,并啟用葡萄牙語鍵盤,即可解決這一問題。.dll首先在靜默模式下使用regsrv32注冊并運行,隨后會創建啟動項,以保證其持久性。
創建啟動項保證持久性:
該惡意軟件從regsvr32同時運行2個dll文件,并產生userinit、ctfmon和svchost進程。
惡意的svchost使用CLSID dc30c1661-cdaf-11D0-8A3E-00c04fc9e26e不斷查詢ieframe.dll以及IWebBrowser2接口,這兩個組件都是與Internet Explorer交互的關鍵組件。
這一點至關重要,因為惡意軟件專門針對Internet Explorer瀏覽器。為了確保被感染用戶能夠使用IE,惡意軟件將終止其他瀏覽器的相關進程,例如Chrome和Firefox,并希望被感染用戶能覺得這些瀏覽器出現了故障。當被感染用戶使用IE瀏覽特定的巴西銀行網站或商務網站時,惡意軟件就會開始記錄鍵盤鍵入的內容。
下圖為鍵盤記錄和外傳的數據:
外傳的數據采用Base64編碼,經過解碼后得到了一系列自定義編碼的字符串,這些字符串看起來是以“/”分隔的。這些字符串可能必須要與特定字符串進行異或操作運算,因此解碼可能會非常困難。
下圖為外傳數據:
下圖為自定義編碼的字符串:
總結
Astaroth對于南美的企業來說,存在著較大的威脅。這一木馬也向網絡管理員提出了一大挑戰,對于許多網絡管理員來說,他們似乎無法阻止或限制WMIC的使用。
和惡意Office宏一樣,要防范這種基于社會工程的攻擊形式,最好的方法就是加強用戶的安全意識培訓。