愛伊米

MysterySnail APT組織利用Windows最新0 day漏洞

0x01 背景描述

2021 年  9 月初,我們發現有攻擊者在多個 Microsoft Windows 伺服器上使用特權提升漏洞進行網路攻擊。該漏洞有許多和CVE-2016-3309相同的除錯字串,但仔細分析顯示,這是一個0 day漏洞。我們發現,樣本在 Win32k 驅動程式中利用了未知漏洞,漏洞利用使用了洩漏核心模組基地址技術。微軟給此Win32k 核心驅動程式中的UAF漏洞分配了CVE-2021-40449編號 ,並作為 10 月補丁星期二的一部分,於 2021 年 10 月 12 日釋出了補丁版本。

https://github。com/siberas/CVE-2016-3309_Reloaded/

https://msrc。microsoft。com/update-guide/vulnerability/CVE-2021-40449

除了在野外發現此0 day漏洞,我們還分析了此0 day漏洞一起使用的惡意軟體載荷,並發現在對 IT 公司、國防承包商和外交實體的廣泛間諜活動中發現了惡意軟體的變體。

我們將這一系列活動稱之為“MysterySnail”。

0x02 特權提升漏洞利用

已發現的漏洞利用工具支援以下 Windows 產品:

Microsoft Windows Vista

Microsoft Windows 7

Microsoft Windows 8

Microsoft Windows 8。1

Microsoft Windows Server 2008

Microsoft Windows Server 2008 R2

Microsoft Windows Server 2012

Microsoft Windows Server 2012 R2

Microsoft Windows 10 (build 14393)

Microsoft Windows Server 2016 (build 14393)

Microsoft Windows 10 (build 17763)

Microsoft Windows Server 2019 (build 17763)

CVE-2021-40449 是 Win32k NtGdiResetDC 函式中的UAF漏洞。與許多其他 Win32k 漏洞一樣,此漏洞的根本原因是能夠設定使用者模式回撥並在執行這些回撥時執行惡意的 API 函式。當ResetDC 函式在執行其回撥,第二次執行相同的控制代碼時將觸發 CVE-2021-40449。此漏洞的利用過程如下:

1、ResetDC 的使用者模式呼叫執行系統呼叫 NtGdi ResetDC 及其內部函式GreResetDCInternal。此函式將指向 PDC 物件,然後執行呼叫函式 hdcOpenDCW。

2、函式 hdcopenDCW 執行使用者模式回撥,可用於第二次執行相同控制代碼的重置處理。

3、如果漏洞在回撥期間執行ResetDC,則 NtGdi ResetDC和GreResetDCInternal內部將再次執行為同一 DC 執行。

4、如果漏洞利用在第二次呼叫GreResetDCInternalDC內部時忽略所有回撥,此函式將按預期執行。它將建立一個新的 DC 。

5、在回撥中,在第二次ResetDC 呼叫完成後,漏洞利用可以恢復 PDC 物件的釋放記憶體並完成回撥執行。

6、執行回撥後,函式 hdcOpenDCW 返回到 GreResetDC 內部,但分步檢索的指標現在是一個懸空指標, 它指向以前被破壞的 PDC 物件的記憶體。

7、在 GreResetDC 內部執行的後期階段,一個畸形的 PDC 物件可用於執行具有受控引數的任意核心函式的呼叫。

在已發現的漏洞利用中,攻擊者能夠使用 GDI 調色盤物件實現所需的記憶體狀態,並使用單個呼叫到核心函式來構建用於讀取和編寫核心的原始儲存器。此步驟很容易完成,因此可以使用公開的技術洩漏當前載入的驅動程式/核心模組的核心地址。

0x03 MysterySnail RAT樣本

我們深入到MysterySnail RAT家族開始分析一個以前未知的遠端shell型別的木馬。我們分析的樣本是在 2021 年 8 月 10 日上傳VT的。樣本很大 , 8。29MB。檔案大小的原因之一是,它是與 OpenSSL 庫靜態編譯的,包含屬於該庫的未使用的程式碼和資料。但其大小的主要原因是存在兩個非常大的函式,會消耗CPU處理器的時鐘週期。這些函式還使用了隨機生成的字串,這些字串也存在於二進位制檔案中。

https://www。virustotal。com/gui/file/b7fb3623e31fb36fc3d3a4d99829e42910cad4da4fa7429a2d99a838e004366e

MysterySnail APT組織利用Windows最新0 day漏洞

反編譯函式使用的隨機字串

我們先假設這兩個函式是用於免殺的,隨後這一理論得到其他程式碼邏輯和大量的匯出函式的證實,實際工作僅由其中一個函式執行。

匯出函式的名稱,實際業務邏輯是從函式“GetInfo”執行

樣本中有兩個硬編碼網址,以純文字形式存在 。“www[。]disktest[。]com” 和 “www[。]runblerx[。]com” 。它們被放入類變數中使用,但從未使用:真正的 C2 地址由單位元組 xor 解碼 - “http[。]ddspadus[。]com” 。

惡意軟體列舉“Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer”登錄檔金鑰下的值,並使用它們請求透過代理伺服器進行隧道處理,以防止無法直接連線到 C2。

惡意軟體本身不是很複雜,其函式類似於許多其他遠端shell程式。有一些特殊功能,如監控插入的磁碟驅動器、代理中轉。

命令具有與下面相同格式,所有通訊都透過 SSL 加密。

通訊命令格式

在收到任何命令之前,惡意軟體會收集併發送有關受害者機器的一般資訊。此資訊包括:

◼計算機名稱

◼當前 OEM 內碼表、預設識別符號

◼Windows 產品名稱

◼本地 IP 地址

◼登入使用者名稱

◼活動名稱(Campaign name)

一個有趣的事實是,預設情況下,“Campaign name”被設定為“windows”。此名稱被覆蓋,但它可能表示有為其他平臺編譯的相同 RAT 版本。

RAT 總共執行 20 個命令,命令描述和命令 ID 在下面的表格中。

MysterySnail APT組織利用Windows最新0 day漏洞

RAT 支援的命令列表

0x04 IOCs

www[。]disktest[。]com www[。]runblerx[。]com http[。]ddspadus[。]com

MD5 e2f2d2832da0facbd716d6ad298073ca SHA1 ecdec44d3ce31532d9831b139ea04bf48cde9090 SHA256 b7fb3623e31fb36fc3d3a4d99829e42910cad4da4fa7429a2d99a838e004366e

參考及來源:https://securelist。com/mysterysnail-attacks-with-windows-zero-day/104509/