Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86396846

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

sl-magic-book-blue-code-1200x600.jpg

今年3月,卡巴斯基實驗室的研究人員在俄烏衝突地區新發現了一個APT活動,該活動涉及使用PowerMagic和CommonMagic植入程序。然而,當時還不清楚是哪個組織發起了這次攻擊。

在尋找與PowerMagic和CommonMagic相似的植入程序時,研究人員發現了來自同一組織發布的更複雜的惡意活動。最有趣的是,受害者廣泛分佈在俄烏衝突地區。目標包括個人,以及外交和研究機構。惡意活動涉及使用我們稱之為CloudWizard的模塊化框架。它的功能包括截圖、麥克風錄音、鍵盤記錄等。

在俄烏衝突地區運營的APT最近急劇增多,比如Gamaredon、CloudAtlas、BlackEnergy等。其中一些APT在過去早已被淘汰,例如ESET在2016年發現的Prikormka(Groundbait活動)。雖然幾年來沒有關於Prikormka或Operation Groundbait的更新,但我們發現了該活動中使用的惡意軟件CommonMagic和CloudWizard之間的多個相似之處。經過進一步調查,我們發現CloudWizard有著豐富而有趣的歷史。

初步調查結果惡意軟件作為一個名為“syncobjsup”的可疑Windows服務運行。該服務是由一個同樣可疑的路徑“C:\ProgramData\Apparition Storage\syncobjsup.dll”的DLL控制的。執行時,我們發現該DLL可以解密與該DLL位於同一目錄中的文件mods.lrc中的數據。用於解密的密碼是RC5,密鑰為88 6A 3F 24 D3 08 A3 85 E6 21 28 45 77 13 D0 38。然而,使用標準RC5實現對文件進行解密只會產生垃圾數據。仔細研究樣本中的RC5實現就會發現它存在漏洞:

1.png

漏洞在內部循環中:它使用變量i而不是j

對這個漏洞實現的搜索顯示,GitHub上的代碼要點很可能是被植入程序的開發人員借用的。在這個要點的評論中,GitHub用戶強調了這個漏洞:

2.png

同樣有趣的是,來自gist的密鑰與syncobjsup.dll庫中使用的密鑰相同。

解密後的文件在我們看來就像一個虛擬文件系統(VFS),包含多個可執行文件及其JSON編碼的配置:

3.png

這個VFS中的每個條目都包含魔術字節(' CiCi '),條目名稱的ROR6哈希,以及條目大小和內容。

在mods.lrc中,我們發現:

三個dll(導出表名為Main.dll、Crypton.dll和Internet.dll);

這些DLL的JSON配置。

syncobjsup.dll DLL迭代VFS條目,查找名稱為“Main”(ROR6 hash:0xAA23406F)的條目。此條目包含CloudWizard的Main.dllOrchestrator庫,該庫通過調用其SvcEntry導出進行反射加載和啟動。

4.png

在啟動時,Orchestrator生成一個掛起的WmiPrvSE.exe進程並將自身注入其中。從WmiPrvSE.exe進程中,它對VFS文件進行備份,複製mod。 LRC到mods, lrs。然後解析mod。獲取所有框架模塊dll及其配置。如上所述,配置是帶有字典對象的JSON文件:

5.png

Orchestrator本身包含一個配置,其參數如下:

受害者ID(例如03072020DD);

框架版本(最新觀測版本為5.0);

連續兩次檢測信號之間的間隔時間;

啟動模塊後,Orchestrator開始通過發送檢測信號消息與攻擊者通信。每次檢測信號都是一個JSON文件,包含受害者信息和加載模塊列表:

6.png

此JSON字符串使用加密模塊(來自VFS的Crypton.dll)加密,並通過互聯網通信模塊(internet.dll)發送給攻擊者。

作為對檢測信號的響應,Orchestrator接收允許其執行模塊管理的命令:安裝、啟動、停止、刪除模塊或更改其配置。每個命令都包含魔術字節(DE AD BE EF)和一個JSON字符串(e.g. {“Delete”: [“Keylogger”, “Screenshot”]}),後面跟著一個模塊DLL文件。

7.png

加密與通信如上所述,每次安裝CloudWizard框架時都會捆綁兩個模塊(Crypton.dll和Internet.dll)。 Crypton模塊對所有通信進行加密和解密。它使用兩種加密算法:

檢測信號消息和命令使用AES加密(密鑰在JSON配置VFS文件中指定);

使用AES和RSA的組合對其他數據(例如,模塊執行結果)進行加密。首先,使用生成的偽隨機AES會話密鑰對數據進行加密,然後使用RSA對AES密鑰進行加密。

8.png

互聯網連接模塊將加密數據轉發給惡意軟件操作者。它支持四種不同的通信類型:

雲存儲:OneDrive, Dropbox, Google Drive;

基於Web的C2服務器;

主雲存儲是OneDrive,如果OneDrive無法訪問,則使用Dropbox和Google Drive。該模塊的配置包括雲存儲身份驗證所需的OAuth令牌。

至於web服務器終端,則在模塊無法訪問三個雲存儲中的任何一個時使用。為了與它交互,它向其配置中指定的URL發出GET請求,並在響應中獲取新命令。這些命令可能包括新的雲存儲令牌。

在檢查網絡模塊的字符串時,我們發現了一個包含來自開發人員計算機的目錄名的字符串:D:\Projects\Work_2020\Soft_Version_5\Refactoring。

模塊介紹信息收集是通過輔助DLL模塊完成的,這些模塊具有以下導出函數:

Start:啟動模塊;

Stop:停止模塊;

Whoami:返回帶有模塊信息(e.g. {“Module”:”Keylogger “,”time_mode”:”2″,”Version”:”0.01″})的JSON-object,time_mode的值表示該模塊是否是持久化的;

GetResult:返回模塊執行的結果(例如收集的屏幕截圖,麥克風錄音等)。大多數模塊以ZIP的形式返回結果(存儲在內存中);

GetSettings:返回模塊配置;

模塊可以在重新啟動後繼續(在本例中,它們保存在mods.lrs VFS文件中)或在內存中執行,直到計算機關閉或操作員刪除模塊。

我們總共發現了9個輔助模塊執行不同的惡意活動,如文件收集、鍵盤記錄、截屏、錄製麥克風和竊取密碼。

我們最感興趣的模塊是從Gmail帳戶中執行電子郵件洩露的模塊。為了竊取,它從瀏覽器數據庫讀取Gmail cookie。然後,它使用獲得的cookie通過向https://mail.google.com/mail/u/

9.png

如果模塊收到這樣的提示,它模擬點擊“我想使用HTML Gmail”按鈕,通過從提示的HTML代碼向URL發出POST請求。

10.png

在獲得對傳統web客戶端的訪問權限後,該模塊會過濾活動日誌、聯繫人列表和所有電子郵件。

同樣有趣的是,這個模塊的代碼部分是從洩露的黑客團隊源代碼中藉來的。

在獲得CloudWizard的Orchestrator(MySQL 複製拓撲管理和可視化工具)及其模塊後,研究人員還未發現框架安裝程序。在搜索舊的分析數據時,我們能夠識別出從2017年到2020年使用的多個安裝程序。當時安裝的植入程序的版本是4.0(如上所述,我們觀察到的最新版本是5.0)。

未覆蓋的安裝程序是用NSIS構建的。啟動時,它會釋放三個文件:

C:\ProgramData\Microsoft\WwanSvc\WinSubSvc.exe;

C:\ProgramData\Microsoft\MF\Depending.GRL(在其他版本的安裝程序中,此文件也位於C:\ProgramData\Microsoft\MF\etwdrv.dll中);

C: \ ProgramData \ System \ \ etwupd.dfg;

之後,它創建了一個名為“Windows Subsystem Service”的服務,該服務被配置為在每次啟動時運行WinSubSvc.exe二進製文件。

值得注意的是,安裝程序在感染後會顯示一條“Well done!”的消息:

11.png

這可能表明我們發現的安裝程序用於通過對目標計算機的物理訪問來部署CloudWizard,或者安裝程序試圖模擬網絡設置(如窗口標題中所示)配置程序。

舊版(4.0)和新版(5.0)CloudWizard有主要有以下區別:

舊版(4.0)網絡通信和加密模塊包含在主模塊中,而新版(5.0)網絡通信和加密模塊相互獨立;

舊版(4.0)框架源文件編譯目錄:D:\Projects\Work_2020\Soft_Version_4\ service,而新版(5.0)框架源文件編譯目錄是D:\Projects\Work_2020\Soft_Version_5\Refactoring;

舊版(4.0)使用RC5Simple庫中的RC5(硬編碼密鑰:7Ni9VnCs976Y5U4j)進行C2服務器流量加密和解密,而新版(5.0)使用RSA和AES進行C2服務器流量加密和解密(密鑰在配置文件中指定)。

幕後組織對CloudWizard進行細緻研究之後,研究人員決定尋找一些其幕後組織的線索。 CloudWizard讓研究人員想起了在烏克蘭觀察到並公開報導的兩次活動:Groundbait活動和BugDrop活動。 ESET於2016年首次公開了Groundbait活動,並於2008年首次觀察到其植入程序。在調查“Groundbait”活動時,ESET發現了Prikormka惡意軟件,這是第一個被公開有明確攻擊目標的烏克蘭組織開發的惡意軟件。根據ESET的報告,其幕後組織很可能來自烏克蘭。

至於BugDrop活動,這是CyberX在2017年發現的一個活動。該組織聲稱BugDrop活動與Groundbait活動有相似之處。卡巴斯基實驗室的研究人員也發現了類似的證據:

1.Prikormka USB DOCS_STEALER模塊(MD5: 7275A6ED8EE314600A9B93038876F853B957B316)包含PDB路徑D:\My\Projects_All\2015\wallex\iomus1_gz\Release\iomus.pdb;

2.BugDrop USB竊取模塊(MD5: a2c27e73bc5dec88884e9c165e9372c9)包含PDB路徑D:\My\Projects_All\2016\iomus0_gz\Release\usdlg.pdb;

再加上以下證據,CloudWizard框架的幕後組織與Groundbait活動和BugDrop活動幕後組織是一致的:

3.ESET研究人員發現,CloudWizard 4.0版本的加載程序(導出名稱為LCrPsdNew.dll)與Prikormka dll類似。

12.png

4.ESET檢測到CloudWizard 4.0樣本(MD5: 406494bf3cabbd34ff56dcbeec46f5d6, PDB path: D:\Projects\Work_2017\Service\Interactive Service_system\Release\Service.pdb)的加載程序為Win32/Prikormka.CQ。

5.Prikormka惡意軟件的多次感染都導致了CloudWizard框架的感染;

6.CloudWizard的幾個模塊實現類似於Prikormka和BugDrop模塊的相應模塊,不過由C變成了c++,USB竊取模塊通過IOCTL_STORAGE_QUERY_PROPERTY系統調用檢索連接的USB設備的序列號和產品ID。運行失敗的默認回退值為“undef”。

13.png

在BugDrop中檢索USB設備序列號和產品ID(MD5:F8BDE730EA3843441A657A103E90985E)

14.png

在CloudWizard中檢索USB設備序列號和產品ID(MD5:39B01A6A025F672085835BD699762AEC)

15.png

在上面的樣本中,在BugDrop(左)和CloudWizard(右)中分配“undef”字符串

7.用於截圖的模塊使用相同的窗口名稱列表來觸發截圖頻率的增加:“Skype”和“Viber”。 CloudWizard和Prikormka的截屏間隔使用相同的默認值(15分鐘)。

16.png

Prikormka中窗口標題文本的比較(MD5: 16793D6C3F2D56708E5FC68C883805B5)

17.png

在CloudWizard中將“SKYPE”和“VIBER”字符串添加到一組窗口標題中(MD5:26E55D10020FBC75D80589C081782EA2)

8.Prikormka和CloudWizard樣本中的文件列表模塊具有相同的名稱:Tree。它們也對目錄列表使用相同的格式字符串:“\t\t\t\t\t(%2.2u,%2.2u.%2.2u.%2.2u)\n”。

18.png

在Prikormka(MD5:EB56F9F7692F933BEE9660DFDFABAE3A)和CloudWizard(MD5:BF64B896B525B5870FE61221D9934D)中使用相同格式的字符串作為目錄列表

9.麥克風模塊以相同的方式錄製聲音:首先使用Windows Multimedia API製作WAV錄製,然後使用LAME庫將其轉換為MP3。雖然這種模式在惡意軟件中很常見,但用於指定LAME庫設置的字符串是特定的:8000 Hz和16 Kbps。 Prikormka和CloudWizard模塊都從這些字符串中提取整數,並在LAME庫中使用它們。

10.在Prikormka和CloudWizard模塊中的擴展列表中使用了類似的擴展順序:

19.png

Prikormka(MD5:EB56F9F7692F933BEE9660DFDFABAE3A)和CloudWizard(MD5:BF64B896B5253B5870FE61221D9934D)中的擴展列表

11.在Prikormka中,上傳至C2服務器的文件名格式為mm.yy_hh.mm.ss.

12.Prikormka和CloudWizard的C2服務器都由位於烏克蘭的託管服務託管。此外,在將文件洩露到Dropbox雲存儲方面,BugDrop和CloudWizard也有相似之處。

13.Prikormka、BugDrop和CloudWizard的受害者位於烏克蘭西部和中部,以及東歐的衝突地區。

CloudWizard和CommonMagic的相似之處如下:

14.在兩個框架中,執行與OneDrive通信的代碼是相同的。研究人員目前還沒有發現這段代碼是任何開源庫的一部分。此代碼使用相同的用戶代理:“Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML,如Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136”。

20.png

CloudWizard的互聯網通信模塊中的相同字符串(左,MD5: 84BDB1DC4B037F9A46C001764C115A32)和CommonMagic(右,MD5: 7C0E5627FD25C40374BC22035D3FADD8)

15.CloudWizard版本4和CommonMagic這兩個框架都使用RC5Simple庫進行加密。用RC5Simple加密的文件以一個7字節的標頭開始,在庫源代碼中設置為' RC5SIMP '。然而,這個值在惡意植入程序中已經發生了變化:CloudWizard中的DUREX43和CommonMagic中的Hwo7X8p。此外,CloudWizard和CommonMagic使用RapidJSON庫解析JSON對象。

16.在CommonMagic中上傳到C2服務器的文件名格式為“mm.dd _hh.mm.ss.ms.dat”(CloudWizard中上傳的文件名格式為“dd.mm.yyyy_hh.mm.ss.ms.dat”)。

17.從CloudWizard和CommonMagic樣本中提取的受害者ID是相似的:它們包含後跟兩個相同字母的日期,例如CloudWizard中的03072020DD, 05082020BB和CommonMagic中的WorkObj20220729FF。

18.CommonMagic和CloudWizard的受害者位於東歐的衝突地區。

21.png

總結卡巴斯基實驗室的研究人員早在2022年就開始了調查,最終發現CloudWizardAPT活動與兩個相關的大型模塊化框架:CommonMagic和CloudWizard。研究表明,CommonMagic和CloudWizard幕後組織發起的攻擊可以追溯到2008年,那一年首次發現了Prikormka樣本。自2017年以來,類似攻擊就銷聲匿跡了。然而,這兩個活動背後的組織並沒有消停,一直開發他們的工具集並攻擊感興趣的目標。

22.png