Jump to content

2019 年3 月4 日,鍵盤記錄惡意軟件Agent Tesla被發現。最近,研究人員發現了OriginLogger,這是一個基於Agent Tesla的惡意軟件。

我將在本文介紹OriginLogger 鍵盤記錄器惡意軟件,看看它如何處理配置變量的字符串混淆,以及我在查看提取的配置時發現的內容。

Palo Alto Networks 客戶通過Cortex XDR 和具有云交付安全服務(包括WildFire 和高級威脅預防)的下一代防火牆獲得OriginLogger 及其前身惡意軟件Agent Tesla 的保護。

OriginLogger的發現過程在搜索過程中,我偶然發現了一個銷售“完全無法檢測”(FUD)工具的人在2018 年發布的YouTube 視頻。此人展示了帶有鏈接的OriginLogger 工具,該鏈接可以從一個已知的網站購買該工具,該網站會傳播惡意軟件、漏洞利用等。

1.png

OriginLogger的部分功能

2.png

OriginLogger的全部功能

此外,他們還展示了Web 面板和惡意軟件生成器。

3.png

OriginLogger Web 面板

4.png

OriginLogger 生成器

上圖顯示的生成器圖像對我來說特別有趣,因為它提供了一個默認字符串:facebook、twitter、gmail、instagram、movie、skype、porn、hack、whatsapp、discord,這可能是這個應用程序獨有的。果然,在VirusTotal 上的內容搜索顯示了2022 年5 月17 日上傳的一個匹配文件(SHA256:595a7ea981a3948c4f387a5a6af54a70a41dd604685c72cbd2a55880c2b702ed)。

5.png

VirusTotal 搜索字符串

由於缺少依賴項,下載並嘗試運行此文件會導致錯誤。但是,知道生成器的文件名OriginLogger.exe,允許我擴展搜索並找到一個包含運行OriginLogger所需的所有文件的Zip歸檔文件(SHA256: b22a0dd33d957f6da3f1cd9687b9b00d0ff2bdf02d28356c1462f3dbfb8708dd)。

6.png

Zip 壓縮文件中的捆綁文件

settings.ini 文件包含生成器將使用的配置,在下圖中我們可以看到SmartWords 下列出的先前搜索字符串。

7.png

OriginLogger Builder settings.ini 文件

文件profile.origin 包含客戶在購買OriginLogger 時註冊的嵌入式用戶名/密碼。

8.png

OriginLogger 生成器登錄屏幕

有趣的是,如果你逆向配置文件中的值,就會顯示明文密碼。

9.png

profile.origin 文件的內容

10.png

OriginLogger 生成器登錄屏幕,以明文形式顯示密碼

當用戶登錄時,生成器會嘗試向OriginLogger 服務器進行身份驗證以驗證訂閱服務。

此時,我有了兩個版本的構建器。第一個(b22a0d*)包含在Zip文件中,編譯於2020年9月6日。另一個包含SmartWords字符串(595a7e*)的版本是在2022年6月29日編譯的,大約在第一個版本的兩年之後。

更高版本通過TCP/3345 向IP 23.106.223[.]46 發出身份驗證請求。自2022 年3 月3 日起,此IP 已解析到域originpro[.]me。此域已解析為以下IP 地址:

11.png

第二個IP,204.16.247[.]26,由於解析了這些其他OriginLogger 相關域而脫穎而出:

12.png

這個嘗試連接到一個不同的IP地址進行身份驗證。

13.png

PCAP 顯示遠程IP 地址

與originpro[.]me 關聯的IP 地址不同,74.118.138[.]76 不直接解析為任何OriginLogger 域,而是解析為0xfd3[.]com。在此域上逆向顯示它包含mail.originlogger[.]com的DNS MX和TXT記錄。

從2022 年3 月7 日左右開始,相關域開始解析為IP 23.106.223[.]47,它在最後一個八位字節中比用於originpro[.]me 的IP(使用46)高一個值。

這兩個IP 地址共享了多個SSL 證書:

14.png

共享SSL 證書

以IP 23.106.223開頭的兩個服務器的RDP登錄屏幕。 X顯示有多個帳戶的Windows Server 2012 R2服務器。

15.png

RDP登錄界面為23.106.223[.]

在進一步搜索該域時,我發現了用戶0xfd3 的GitHub 配置文件,其中包含下圖中所示的兩個存儲庫。

16.png

用戶0xfd GitHub

滴管由於Agent Tesla 和OriginLogger 都是商業化的鍵盤記錄器,因此初始dropper在不同的活動中會有很大的差異,不應被視為兩者都是獨一無二的。我將以下內容作為攻擊釋放OriginLogger 的真實示例來展示,並表明它們可能非常複雜和模糊。

初始誘餌文檔是一個Microsoft Word文件(SHA256: ccc8d5aa5d1a682c20b0806948bf06d1b5d11961887df70c8902d2146c6d1481)。打開時,該文件顯示一張德國公民的護照照片以及一張信用卡。我不太確定這對普通用戶有多大的吸引力,但無論如何,你都會注意到圖像下方包含許多Excel 工作表,如下圖所示。

17.jpeg

誘餌文件

這些工作表中的每一個都包含在單獨的嵌入式Excel 工作簿中,並且完全相同:

18.png

在每個工作簿中都有一個單一的宏,它只是保存要在以下位置執行的命令:

19.png

運行後,它將通過MSHTA 下載並執行hxxp://www.asianexportglass[.]shop/p/25.html 上的文件內容。該網站的屏幕截圖如下圖所示。

20.png

網站看起來合法

該文件在文檔中間包含一個嵌入的混淆腳本作為註釋。

21.png

網站隱藏評論

取消轉換腳本會顯示下圖中所示的代碼,該代碼從BitBucket 片段下載下一個有效負載(hxxps://bitbucket[.]org/!api/2.0/snippets/12sds/pEEggp/8cb4e7aef7a46445b9885381da074c86ad0d01d6/files/snippet.txt)並使用名為calsaasdendersw 的計劃任務建立持久性,該任務每83 分鐘運行一次,並再次使用MSHTA 執行hxxp://www.coalminners[.]shop/p/25.html 中包含的腳本。

22.png

未轉換的腳本

BitBucket 網站上託管的代碼段包含進一步混淆的PowerShell 代碼和兩個編碼和壓縮的二進製文件。

這兩個文件中的第一個(SHA256: 23fcaad34d06f748452d04b003b78eb701c1ab9bf2dd5503cf75ac0387f4e4f8)是使用CSharp-RunPE 的C# 反射加載器。該工具用於挖空一個進程並在其中註入另一個可執行文件,在本例中,鍵盤記錄器有效負載將放置在aspnet_compiler.exe 進程中。

23.png

執行dotNet程序集中包含的方法的PowerShell命令

請注意調用Execute 方法的projFUD.PA 類。 Morphisec 在2021 年發布了一個名為“揭示Snip3 Crypter,一種高度規避的RAT 加載器”的博客,他們在其中分析了一個加密器即服務,並使用該工件對加密器的開發者進行指紋識別。

兩個文件中的第二個(SHA256:cddca3371378d545e5e4c032951db0e000e2dfc901b5a5e390679adc524e7d9c)是OriginLogger 有效負載。

OriginLogger 配置如前所述,此分析的初衷是自動化並從鍵盤記錄器中提取與配置相關的詳細信息。為了實現這一點,我首先查看瞭如何使用與配置相關的字符串。

我不會深入研究惡意軟件的任何實際功能,因為它是相當標準的,並且反映了對原有Agent Tesla 變體的分析。為了開始提取與配置相關的細節,我需要弄清楚用戶提供的數據是如何存儲在惡意軟件中的。結果很簡單,生成器將獲取動態字符串值並將它們連接成一個巨大的文本塊,然後將其編碼並存儲在一個字節數組中,以便在運行時進行解碼。一旦惡意軟件運行並命中需要字符串的特定函數,例如將屏幕截圖上傳到的HTTP 地址,它會將偏移量和字符串長度傳遞給函數,然後該函數將在塊中的該位置顯示出文本。

為了說明這一點,你可以在下面看到用於主要文本塊的解碼邏輯。

224.png

OriginLogger 明文塊解碼

每個字節通過字節數組中的字節索引進行異或運算,並再次通過值170 進行異或運算以顯示明文。

對於生成器生成的每個示例,此文本塊將根據配置的不同而有所不同,因此偏移量和定位將發生變化。查看下圖中顯示的原始文本很有幫助,但如果不將其連接起來觀察,就很難確定邊界在哪裡結束或開始。

25.png

明文數據塊

當需要分析惡意軟件時,它也沒有幫助,因為你無法辨別什麼時候或在哪裡使用了哪些內容。為了解決下一個問題,我需要了解OriginLogger如何處理拼接。

下面你可以看到負責分割字符串的函數,後面是包含偏移量和長度的各個方法的開頭。

26.png

OriginLogger 字符串函數

在本例中,如果惡意軟件在某個時間點調用了B() 方法,它會將2、2、27 傳遞給圖像頂部的混淆後的無名函數。第一個整數用於存儲解碼字符串的數組索引。然後將第二個整數(offset)和第三個整數(length)傳遞給GetString函數以獲取文本。對於這個特定條目,結果值(如下所示)在創建它上傳的HTML 頁面期間使用,以顯示被盜數據。

微信截图_20220919110744.png

了解字符串解析的工作原理後,我就可以自動提取這些字符串。首先,查看底層中間語言(IL) 彙編指令會有所幫助。

27.png

用於字符串函數的OriginLogger IL 指令

對於每一個這樣的查找,函數塊的結構將保持不變。在上圖中的索引6-8 處,你將看到三個ldc.i4.X 指令,其中X 指示一個整數值,該整數值將在調用之前描述的拼接函數之前被推入堆棧。這種整體結構創建了一個框架,然後可以使用該框架來匹配二進製文件中的所有相應函數以進行解析。

利用這一點,我編寫了一個腳本來識別編碼的字節數組,確定異或值,然後以惡意軟件使用的相同方式拼接解碼的塊。此時,你可以滾動瀏覽解碼的字符串並查找感興趣的內容。一旦識別出某些內容,知道了偏移量和隨後的函數名,就可以利用惡意軟件了。

28.png

OriginLogger 解碼字符串

此時,我開始重命名混淆的方法以反映它們的實際值,這使得分析更容易。

29.png

OriginLogger FTP 上傳函數

需要注意的是,通過將字符串類型指定為委託並識別感興趣的令牌,可以使用de4dot 及其動態字符串解密功能來實現相同的字符串反混淆,這對於單個文件分析非常有效。

下圖是2020年3月上傳的Chrome密碼恢復代碼:

30.png

Chrome 密碼恢復

將上圖與帶有重命名方法的OriginLogger示例代碼進行比較,如下圖所示。

31.png

OriginLogger Chrome 密碼竊取函數

通過工件識別OriginLogger使用這個工具,我提取了1917個不同的配置,這可以深入了解所使用的洩露方法,並允許基於底層基礎設施對樣本進行聚類。例如,為將鍵盤記錄器和屏幕截圖數據上傳到的示例配置的一個URL 是hxxps://agusanplantation[.]com/new/new/inc/7a5c36cee88e6b.php。該URL 不再處於活動狀態,因此我開始搜索有關它的歷史信息,以了解這些HTTP POST 請求的接收端是什麼。通過將域插入URLScan.io,它會在同一目錄中顯示面板的登錄頁面,但更重要的是,在四個月前掃描此主機時,在此主機上觀察到了OriginLogger Web 面板(SHA256:c2a4cf56a675b913d8ee0cb2db3864d66990e940566f57cb97a9161bd262f271)。

32.png

域的URLScan.io 掃描歷史記錄

同樣,其中一種洩露方法是通過Telegram 木馬。為了使用它們,OriginLogger 需要包含一個Telegram 木馬令牌,以便惡意軟件可以與之交互。這為分析正在使用的基礎設施提供了另一個獨特的機會。在這種情況下

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...