背景
2021年5月,微軟披露了該組織幾種攻擊武器,其中包括EnvyScout[1],這種惡意軟件通過HTML文件釋放包含後續惡意載荷的ISO文件。2022年4月,Mandiant將2020年SolarWinds攻擊事件的幕後黑手UNC2452組織歸併到APT29[2]。APT29在今年上半年被披露的魚叉攻擊活動中屢次利用合法通信服務作為C&C信道[3,4],比如團隊協作服務Trello和文件託管服務Dropbox。
概述
國外安全研究人員進一步發現了與該EnvyScout攻擊樣本相關的釣魚郵件和PDF誘餌文檔[5]。郵件與PDF均使用意大利語,內容是要求機構部門人員完成COVID-19疫苗接種的通知,釣魚郵件使用意大利政府域名進行偽裝,因此可以認為此次攻擊目標位於意大利。結合對同源樣本的分析,我們發現此次攻擊活動至少從6月中旬開始。
樣本攻擊流程如下所示。

樣本分析
攻擊入口
作為攻擊入口的釣魚郵件如下,郵件偽造來自意大利的政府域名governo.it,但實際的發件地址為」info@cesmoscan.org」,此外郵件內容中「COVID-19「出現了拼寫錯誤。


誘餌PDF中的鏈接指向hxxps://www.agencijazaregistraciju.rs/i.html,該URL存放的就是我們捕獲的EnvyScout攻擊樣本。APT29此前使用EnvyScout時一般是直接將其作為釣魚郵件的附件,而在此次攻擊活動中,EnvyScout通過誘餌文檔中的遠程鏈接觸發,更具隱蔽性。
EnvyScout
捕獲的EnvyScout攻擊樣本i.html的基本信息如下。
文件名
i.html
MD5
3aa44a7951ad95d02c426e9e2a174c2e
文件類型
HTML
i.html的具體內容如下所示。受害者訪問i.html時,User-Agent和IP信息會發送到hxxps://www.agencijazaregistraciju.rs/t.php。然後頁面中嵌入的ISO文件數據偽裝為誘餌PDF文檔中提到的疫苗接種問卷,引導受害者下載。


Decret.iso
下載的Decret.iso基本信息如下。
文件名
Decret.iso
MD5
6228d15e3bb50adfa59c1bdf5f6ce9f0
文件類型
ISO
Decret.iso中包含的文件如下,其中Decret.lnk和HPScanApi.dll為惡意文件,文件修改時間均為北京時間6月29日。ISO解壓打開後除Decret.lnk之外,其餘文件均被設置了文件隱藏屬性,使得受害者只能看到Decret.lnk這一快捷方式文件。


Decret.lnk文件信息如下,受害者點擊後,啟動同目錄下的HP2.exe。
文件名
Decret.lnk
MD5
59b5d262532dab929bbe56c90a0257d2
文件類型
LNK
HPScanApi.dll
HPScanApi.dll文件基本信息如下。
文件名
HPScanApi.dll
MD5
6812031432039a89fa741e9338f8e887
編譯時間
2022-06-29 01:07:48 (UTC+8 北京時間)
文件類型
PE DLL 64-bit
HPScanApi.dll中多處使用下面這種異或的方式解密得到所需的字符串,後門dll首先會檢查運行的進程名稱是否為HP2.exe。

以ntdll模塊中的RtlFindSetBits函數為入口點創建線程,修改該線程上下文的rcx寄存器,使其指向後門dll中的函數sub_68B0BD10,當恢復線程運行狀態後,控制流會轉移到該函數。該控制流轉移方法與具體的線程入口點函數無關,只與系統恢復線程運行狀態的過程有關。

函數sub_68B0BD10為後門dll的主要惡意功能所在。首先調用函數sub_68B02F90重新從磁盤文件中加載ntdll.dll和wininet.dll的text段,此舉可能是為了消除針對這兩個DLL中API設置的斷點。

然後調用函數sub_68B06AB0實現持久化。該函數先檢查dll的文件路徑中」\」出現次數是否為1。若為1表示該DLL是直接通過打開ISO文件得到的,則繼續進行後續操作,否則函數直接返回。


在%appdata%目錄下創建名為HPScanLib的子目錄。然後將HPScanApi.dll, HP2.exe, version.dll複製到該目錄下。

在註冊表」HKCU\ Software\Microsoft\Windows\CurrentVersion\Run」鍵下設置名為」LibHP」的值,指向複製的HP2.exe文件路徑。

完成持久化後,函數sub_68B0BD10開始利用Slack服務建立C&C信道。Slack是一款在線團隊協作通信服務,並且支持API操作。

後門藉助Slack服務與攻擊者通信的流程如下。

後門中sub_68B08EF0函數負責建立信道,包括創建slack channel以及向新建的channel中添加攻擊者的用戶id。
首先獲取受害者主機的用戶名以及主機名,加上4位隨機數,構成創建channel的名稱。

後門在發送請求時添加的HTTP首部如下,其中包括攻擊者使用的Slack API認證令牌(紅字標記)。
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer xoxb-3746750028880-3716488860102-2pXQRNc7uoS4DT5HVmdnjgEv
後門偽造的User-Agent如下:
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.7113.93 Safari/537.36
當我們在分析過程中嘗試建立連接時,得到」 invalid_auth」的錯誤信息。查閱Slack API文檔,該錯誤信息可能源自令牌失效,也可能是服務端限制了訪問的IP地址。

如果請求成功,後門會從返回的json數據結果中取出channel id,然後調用「conversations.invite」這個API向新建的channel中添加攻擊者的用戶id。添加的用戶id為」 U03MMK35QQ1」。

信道建立後,後門進入C&C通信的while循環。在循環中首先用「chat.postMessage「 API在新建的channel中發送信標消息,如果未收到服務端的正常回應,則休眠一段時間,收到回應則進行後續操作。
調用「files.list「過濾channel中攻擊者對應用戶創建的文件,並從返回的文件信息列表json數據中提取」url_private」字段內容。

接着從hxxps:// files.slack.com下載文件。文件中的數據並不是shellcode本身,而是shellcode每個字節數據在後門硬編碼字符表中的索引位置。後門將還原後的shellcode複製到分配的內存上,然後執行shellcode。


溯源關聯
溯源分析
本次捕獲攻擊樣本所使用的技術與APT29歷史攻擊手法有如下多處重合:
(1) 首先初始攻擊樣本EnvyScout通過釣魚郵件誘使受害者點擊觸發,是APT29近年來常用的一種攻擊手段;
(2) APT29在此前攻擊活動中多次使用合法在線服務提供的API構建C&C信道,下載後續載荷,而此次發現的攻擊樣本也使用了Slack服務建立C&C信道;
(3) 該攻擊樣本具有與之前國外廠商披露的APT29攻擊活動[4]相同的特徵,包括重新加載某些系統DLL的text段以繞過終端防護軟件的掛鈎檢測,以及複製文件到%appdata%的子目錄下並設置註冊表鍵值實現持久化。


加上此次攻擊目標位於意大利,而APT29多次針對歐洲國家發起攻擊,因此可以認為該攻擊活動與APT29存在明顯關聯。
樣本關聯
對此次捕獲的樣本進行關聯,我們發現在6月中旬已有同名樣本上傳VT,國外安全研究人員也於早些時候在社交平台上對該同名樣本進行了披露[6] 。

其中惡意DLL(HPScanApi.dll)的編譯時間為2022-06-14 10:58:50 UTC。同名樣本與此次捕獲的樣本一樣,也藉助Slack服務建立C&C信道,使用的API認證令牌如下,攻擊者的用戶id為」 U03K4RNC751」。
Authorization: Bearer xoxb-3644332911574-3644381968246-wwNbyQaqlooogPAv2JjHh663
不過在這個早期樣本中,通過C&C信道獲取的文件裡面保存的就是shellcode本身,沒有經過字符表的查錶轉換,可見攻擊者在短時間內仍在不斷更新攻擊手法以繞過安全防護軟件的檢測。

總結
儘管此次攻擊活動暫未發現國內受到影響,不過奇安信紅雨滴團隊仍在此提醒廣大用戶,切勿打開社交媒體分享的來歷不明的鏈接,不點擊執行未知來源的郵件附件,不運行誇張標題的未知文件,不安裝非正規途徑來源的APP。做到及時備份重要文件,更新安裝補丁。
若需運行,安裝來歷不明的應用,可先通過奇安信威脅情報文件深度分析平台(https://sandbox.ti.qianxin.com/sandbox/page)進行判別。目前已支持包括Windows、安卓平台在內的多種格式文件深度分析。
目前,基於奇安信威脅情報中心的威脅情報數據的全線產品,包括奇安信威脅情報平台(TIP)、天擎、天眼高級威脅檢測系統、奇安信NGSOC、奇安信態勢感知等,都已經支持對此類攻擊的精確檢測。
IOCs
MD5
3aa44a7951ad95d02c426e9e2a174c2e
6228d15e3bb50adfa59c1bdf5f6ce9f0
59b5d262532dab929bbe56c90a0257d2
6812031432039a89fa741e9338f8e887
eb25d1887b5943f3d86d997fd8099e37
79d8a62c0513c6138bfa7a5370a022a3
47ddd6003534a108a173aa1fb3361739
C2
www[.]agencijazaregistraciju.rs
URL
hxxps://www.agencijazaregistraciju.rs/i.html
hxxps://www.agencijazaregistraciju.rs/t.php
https://slack.com/api/files.list?channel=&user=U03MMK35QQ1
https://slack.com/api/files.list?channel=&user=U03K4RNC751
參考鏈接
[1] https://www.microsoft.com/security/blog/2021/05/28/breaking-down-nobeliums-latest-early-stage-toolset/
[2] https://www.mandiant.com/resources/unc2452-merged-into-apt29
[3] https://www.mandiant.com/resources/tracking-apt29-phishing-campaigns
[4] https://cluster25.io/2022/05/13/cozy-smuggled-into-the-box/
[5] https://twitter.com/JAMESWT_MHT/status/1545303433959411714
[6] https://twitter.com/h2jazi/status/1537830185319514112

點擊閱讀原文至ALPHA 5.0
即刻助力威脅研判