漏洞攻擊
CVE-2024-21412:DarkGate 利用 Microsoft Windows SmartScreen 迴避漏洞,發動零時差攻擊行動
除了關於 Water Hydra APT 零時差攻擊的分析之外,趨勢科技的 Zero Day Initiative (ZDI) 漏洞懸賞計畫也在 2024 年 1 月中旬觀察到一起 DarkGate 攻擊行動,這起行動使用的是 CVE-2024-21412 漏洞。
Zero Day Initiative (ZDI) 漏洞懸賞計畫在 2024 年 1 月中旬發現了一起 DarkGate 攻擊行動,該行動利用了假的軟體安裝程式攻擊了 CVE-2024-21412 漏洞。在這起攻擊中,使用者被含有 Google DoubleClick 數位行銷 (DDM) 開放式重導連結的 PDF 檔案所騙,被帶到已遭駭客入侵的網站,該網站利用 Microsoft Windows SmartScreen 迴避漏洞 CVE-2024-21412 來散布惡意的 Microsoft 安裝程式 (.MSI)。駭客在網路釣魚行動中使用 Google 廣告的開放式重導網址技術來散播假冒合法軟體的 Microsoft 軟體安裝程式 (.MSI),被仿冒的對象包括:Apple iTunes、Notion、NVIDIA 等等。假的安裝程式內含一個可側載的 DLL 檔案,可讓使用者電腦感染 DarkGate 惡意程式。
這起攻擊行動是我們在分析 Water Hydra APT 零時差攻擊時所發現。ZDI 密切監控了這起行動以觀察其手法。假軟體安裝程式與開放式重導的結合,是一種相當有效的手法,有機會造成大量感染。企業應隨時保持警戒,並教導使用者切勿相信任何從非正式管道取得的軟體安裝程式。不論企業或個人都應該採取主動步驟來保護自己的系統免於這類威脅。
DarkGate 採用所謂「惡意程式服務」(Malware-as-a-Service,簡稱 MaaS) 的經營模式,這是當今網路犯罪世界最多產、精密、且活躍的惡意程式變種。這款惡意程式通常被一些以金錢為動機的駭客集團用來攻擊北美、歐洲、亞洲及非洲的機構。
趨勢科技客戶從今年 1 月 17 日開始便有能力防範這項零時差攻擊。而且 Microsoft 也在今年 2 月 13 日的每月定期更新當中正式修正了 CVE-2024-21412 漏洞。我們在一份 Zero Day Initiative 修補報告的特別版當中提供了一段 CVE-2024-21412 的展示影片。為深入了解客戶趨勢科技客戶如何享受 ZDI 的零時差防護,防範像 CVE-2024-21412 這樣的攻擊,我們特別舉辦了一場深度的網路研討會,其中就包含一段 Trend Vision One™ 的現場展示。
攻擊程序分析
接下來,我們將詳細探討 DarkGate 攻擊行動,檢視其攻擊程序的每一個環節 (圖 1)。
開放式重新導向:Google DoubleClick 數位行銷 (DDM)
近年來,駭客一直在利用 Google 廣告技術來散播惡意程式。除了購買廣告空間與贊助貼文之外,駭客也一直在使用 Google DDM 當中的開放式重導技術。使用開放式重導可以讓他們執行程式碼,主要用於搭配像 CVE-2023-36025 和 CVE-2024-21412 這樣的安全機制迴避漏洞。開放式重導濫用了大部分使用者對習以為常的服務和技術天生的信賴。
在啟動 DarkGate 的感染程序之前,駭客必須透過網路釣魚攻擊散播一個 PDF 檔案,裡面含有 doubleclick[.]net 網域的開放式重導網址,並使用「adurl」參數將受害者帶到一個已遭駭客入侵的網站伺服器 (圖 2)。遭遇網路釣魚攻擊的使用者必須點選網路釣魚 PDF 檔案中的按鈕,才能讓 CVE-2024-21412 漏洞攻擊運作,進而感染 DarkGate。
Google 使用網址重導作為其廣告平台的一環,並提供一整套其他線上廣告派送服務。作為其業務核心,Google DoubleClick 提供了專門設計的解決方案來協助廣告商、發行商以及廣告代理商管理與最佳化線上廣告活動。之前我們就發現駭客濫用 Google 廣告生態系來散發惡意軟體的情況越來越嚴重,包括熱門的 MaaS 資訊竊取程式,如 Rhadamanthys,以及 macOS 資訊竊取程式,如 Atomic Stealer (AMOS)。駭客會利用 Google 廣告技術,經由特定的活動瞄準特定的用戶來提高惡意程式的觸擊率。
當使用者使用 Google 搜尋引擎來搜尋內容時,就會看到贊助廣告。這些廣告都是企業和行銷團隊透過像 Google DoubleClick 這樣的技術所投放。這類廣告技術會追蹤使用者送出的查詢,然後根據查詢內容顯示相關的廣告。
當使用者點選某個廣告時,就會啟動一連串的請求,將使用者重導到廣告商設定的目標資源 (圖 3)。Google DoubleClick 技術是透過 HTTP/2 協定來運作,我們可解開這些流量來了解重導的過程。
除了直接購買廣告空間之外,駭客更有效率散播惡意軟體的一種方式就是在網址中使用 Google DDM 開放式重導。使用開放式重導可以讓他們執行程式碼,主要用於搭配像 CVE-2023-36025 和 CVE-2024-21412 這類安全機制迴避漏洞。雖然 Microsoft Windows 內建了一個所謂「Web 印記」(Mark-of-the-Web,簡稱 MotW) 的功能來標註來自不安全來源的內容 (例如來自網頁),但 DarkGate 集團可利用 CVE-2024-21412 漏洞來迴避 Windows Defender SmartScreen 的防護,進而讓電腦感染 DarkGate。在這套攻擊程序中,DarkGate 集團濫用了人們對 Google 相關網域的信任。使用 Google 開放式重導,再搭配 CVE-2024-21412 漏洞來回避 Microsoft Defender SmartScreen 的防護,會讓使用者被誤導而感染惡意程式。
執行:利用 CVE-2024-21412 漏洞 (ZDI-CAN-23100) 來迴避 Windows Defender SmartScreen 安全機制
為了利用 CVE-2024-21412 漏洞,DarkGate 集團會使用 Google DoubleClick 開放式重導將受害者帶到一個已遭駭客入侵的網站伺服器,該伺服器含有第一個 .URL 網際網路捷徑檔案。
這個網際網路捷徑檔案會利用 CVE-2024-21412 漏洞,再將使用者重導至另一個網際網路捷徑檔案 (圖 4)。該網際網路捷徑檔案使用「URL=」這個參數來指向下一個階段的感染程序,此時是存放在駭客掌控的一台 WebDAV 伺服器上。
感染程序的下一階段指向一個攻擊 CVE-2023-36025 漏洞的 .MSI 檔案,內含一個 ZIP 壓縮檔 (圖 5)。
這一系列的網際網路捷徑重新導向會執行一個來自非信任來源的 Microsoft 軟體安裝程式,照理說,它應該會被 MotW 機制所攔截,並由 Microsoft Defender SmartScreen 對使用者發出警告,告知有某個來自非信任來源 (如網頁) 的腳本正試圖執行。但由於駭客利用了 CVE-2024-21412 漏洞,所以受害者電腦的 Microsoft Defender SmartScreen 因為 MotW 未正確運作所以不會跳出訊息。這就讓受害者接著遇到 DarkGate 感染程序的下一個階段:使用 .MSI 檔案的假軟體安裝程式。
執行:第 1 階段 – DarkGate Microsoft 軟體安裝程式
檔案名稱 | SHA256 雜湊碼 | 大小 |
Test.msi | 0EA0A41E404D59F1B342D46D32AC21FBF3A6E005FFFBEF178E509EAC2B55F307 | 7.30 MB |
感染程序的下一個階段會使用一個 .MSI 檔案來側載一個 DLL 檔案,並使用一個 AutoIt 腳本來解開 DarkGate 的惡意檔案並植入系統中。在表 1 的樣本中,DarkGate 集團將 DarkGate 惡意程式包裝在一個 .MSI 安裝程式封裝內,並偽裝成 NVIDIA 的安裝程式 (圖 6)。此安裝程式會透過 Windows msiexec.exe 工具來執行 (圖 7)。受害者會看到一個安裝程式在跑,而且看起來就像有一個正常的 NVIDIA 軟體正在安裝。
這個 .MSI 安裝程式會用到一個名為「CustomActionDLL」的函式庫,裡面含有安裝程序的邏輯 (圖 8)。
首先,CustomActionDLL 會在「%tmp%」資料夾下產生一個名為「MW-<Uuid>」的目錄,並且放入一個名為「files.cab」的 Windows CAB 封裝檔。接著,它會使用 Windows 內建工具 expand.exe 來解壓縮 CAB 檔案的內容。接下來,再執行一個經過數位簽署的合法二進位檔案:NVIDIA Share.exe。
執行:第 2 階段 – DLL 側載
檔案名稱 | SHA256 雜湊碼 | 大小 | 簽章驗證 |
NVIDIA Share.exe | F1E2F82D5F21FB8169131FEDEE6704696451F9E28A8705FCA5C0DD6DAD151D64 | 3,264 KB | 經過簽署的檔案,有合法簽章 |
libcef.dll | 64D0FC47FD77EB300942602A912EA9403960ACD4F2ED33A8E325594BF700D65F | 1,514 KB | - |
sqlite3.dll | DF0495D6E1CF50B0A24BB27A53525B317DB9947B1208E95301BF72758A7FD78C | 1,656 KB | - |
chrome_elf.dll | 37647FD7D25EFCAEA277CC0A5DF5BCF502D32312D16809D4FD2B86EEBCFE1A5B | 經過簽署的檔案,有合法簽章 |
在惡意檔案執行的第二階段,DarkGate 利用 DLL 側載技巧讓一個合法應用程式載入一個惡意 DLL 檔案。此處駭客使用的是 NVIDIA Share.exe 應用程式來載入一個木馬化的 libcef.dll 函式庫。根據我們的調查發現,不同的攻擊行動會使用不同的合法應用程式來側載 DLL。我們將這些被駭的檔案列在本文末端。
駭客的惡意程式碼位於 libcef.dll 檔案中的「GetHandleVerifier」函式內,此函式會在 DLL 的進入點被呼叫。此 DLL 的目的是用來解開 XOR 加密的下一階段的載入器,名為「sqlite3.dll 」(圖 9)。DarkGate 的 stub (替身) 產生器會產生一個 8 位元組的主金鑰,用於該組建 (build) 中的所有模組和元件。針對這次的攻擊,其主金鑰為「zhRVKFlX」,在每一階段,惡意程式都會以不同方式用到這把主金鑰。有時候,它會利用這把金鑰作為標記,用來識別一個檔案當中的不同區段的惡意內容,或者使用一個客製化 XOR 演算法來對這個金鑰執行解密,製作出另一把用來解開惡意內容的金鑰。
執行:第 3 階段 – AutoIt 載入器
檔案名稱 | SHA256 雜湊碼 | 大小 | 編譯資料 |
DLL_Internal.exe | 5C5764049A7C82E868C9E93C99F996EFDF90C7746ADE49C12AA47644650BF6CB | 1,657 KB | 2024 年 1 月 3 日 |
sqlite3.dll 檔案可分成四段:
- 第 1 段:加密的載入器
- 第 2 段:加密的 Autoit3.exe
- 第 3 段:明碼的 script.au3
- 第 4 段:明碼的 test.txt
檔案的第 1 段共 321 KB,是一個從稍早的步驟解密出來的 AutoIt 載入器執行檔。載入器二進位檔案開頭含有一個「MZRE」標頭,所以能當成一段 shellcode 來執行。這段 shellcode 是用來動態映射及載入一個 PE 檔案 (AutoIt 載入器) 到系統記憶體內。一旦 PE 映射到記憶體內,shellcode 就會從載入器執行檔的「原始進入點」(Original Entry Point,簡稱 OEP) 開始執行。
當載入器執行時,會讀取原始的 sqlite3.dll 檔案並搜尋「delimitador」這個關鍵字 (圖 10)。它利用這個關鍵字作為標記,用來識別及找到 DLL 當中包含的每一個檔案。接著,它將這些檔案擷取出來,並儲存到「C:\temp」目錄。
執行:第 4 階段 – AutoIt 腳本分析。
檔案名稱 | SHA256 雜湊碼 | 大小 |
Autoit3.exe | 237D1BCA6E056DF5BB16A1216A434634109478F882D3B1D58344C801D184F95D | 873 KB |
script.au3 | 22EE095FA9456F878CFAFF8F2A4871EC550C4E9EE538975C1BBC7086CDE15EDE | 469 KB |
test.txt | 1EA0E878E276481A6FAEAF016EC89231957B02CB55C3DD68F035B82E072E784B | 76 位元組 |
script.au3 是一個預先編譯的 AutoIt 腳本,包含兩個區段 (圖 11)。第一個區段是一個合法的 AutoIt 編譯後腳本,其神奇位元組 (magic byte) 的值是「AU3!EA06」(0x4155332145413036),由 AutoIt.exe 檔案負責執行。第二個區段是一個加密的 DarkGate 遠端存取木馬 (RAT),加密內容的前、後都有「zhRVKFlX」做標記。
script.au3 負責載入第 5 階段的 DarkGate 載入器到記憶體中執行。圖 12 顯示的程式碼是反編譯後的 AutoIt 腳本。
test.txt 檔案是一個外部資料來源,腳本會讀取 test.txt 的內容 (圖 13),將內容分解成一個獨立字元的陣列,接著,根據預先定義的索引 (index) 選擇性地將某些字元串在一起,建構出一道指令或表達式。
「$ ZZNDMOFL」這個變數含有一個二進位檔案,而且程式碼最後有一段邏輯是將這個二進位檔案載入記憶體,然後透過「EnumWindows」API 的反向呼叫 (callback) 函式將執行權交給載入器。圖 14 的程式碼是解碼之後的邏輯:
程式碼會檢查系統上是否存在著「CProgramDataSophos」這個目錄。此目錄的名稱似乎在加密編碼的過程當中遭到破壞。因為在之前某個版本的腳本中,程式碼要檢查的是「C:\Program Files(x86)\Sophos」這個目錄是否存在,所以顯然這個版本在目錄名稱上出現了錯誤。
腳本會透過「DllStructCreate」函式在記憶體內建立一個類似 C 語言 struct 的資料結構 (此結構在呼叫 DLL 函式時用到),此外還會配置 DarkGate 載入器所需要的記憶體空間。接著,它會使用「DllCall」來呼叫 kernel32.dll 中的「VirtualProtect」系統函式。此函式用來變更處理程序虛擬位址空間內某段記憶體區間的保護狀態。如果保護狀態設為「0x40」(也就是「PAGE_EXECUTE_READWRITE」),就能允許記憶體區間的內容被執行、讀取和寫入。
腳本接著在前面建立的結構當中填入從字串轉換過來的二進位資料。這項轉換是使用「BinaryToString」將「$ZZNdmOFL」這個變數中儲存的一個十六進位字串轉換成二進位資料,接著使用「DllStructSetData」將二進位資料寫到「$PT」的第一個區段當中。整個過程的效果就是載入 DarkGate Delphi 載入器的二進位檔案。
最後,腳本使用 API 反向呼叫函式來將執行流程導回下一段的惡意檔案。反向呼叫函式是在呼叫 Windows API 時當成參數傳送的函式。腳本會呼叫 user32.dll 中的「EnumWindows」,並傳入指向「$ZZNdmOFL」這個數值的記憶體指標。
執行:第 5 階段 – DarkGate shellcode PE 載入器
在 shellcode 執行的一開始會先跳躍 (jmp) 三次到二進位檔案的標頭。接著,呼叫一個客製化版本的 PE 載入器 (圖 15)。
DarkGate 載入器需要一個 PE 載入器來將二進位檔案映射到記憶體內。為了解決這個問題,「$ZZNdmOFL」這個變數即含有一段 shellcode 可將 PE 檔案載入到記憶體中執行 (圖 16)。
執行:第 5.1 階段 – DarkGate Delphi 載入器分析
DarkGate 載入器的主要用途是從 AutoIt 腳本當中擷取出最終的 DarkGate RAT,將它載入記憶體中,然後解碼並執行 (圖 17)。
當載入器執行時,它會檢查 AutoIt.exe 處理程序的指令列參數,因為指令列參數應該有指向 AutoIt 腳本的路徑。若這個參數存在,就將腳本的內容載入記憶體緩衝區內。接下來,它會搜尋緩衝區的內容是否有一個 8 位元組的標記 (「zhRVKFLX」),這樣就能找到加密的二進位資料,資料就在緊接在標記後方。
這段惡意內容的解密金鑰已經過 XOR 加密。載入器會使用一個從金鑰長度遞減的數值來對加密後金鑰的每一個位元組套用 XOR 運算,進而解出所需的金鑰 (圖 18)。
在取得解密金鑰 (roTSOEnY) 之後,惡意程式接著使用客製化的 XOR 解密方法將惡意內容解開 (圖 19)。解密過程一開始會先對每一個位元組套用 XOR 運算,並將它與解密金鑰對應的位元組配對。配對時使用一個過程中會動態更新的金鑰索引做引導。這個金鑰索引在每次 XOR 運算完之後都會重新計算,將當前金鑰位元組的值與索引相加,然後使用金鑰總長度來取模數 (modulus),確保索引會以半隨機的方式循環整個金鑰。如果金鑰索引在某次更新之後變成零,就將它重設到金鑰中的上次位置。這套程序會反覆套用到惡意內容的每一個位元組,直到整個內容全部解密為止。
載入器一旦解出了惡意內容,就會將它傳給「mw_Execute_Payload」函式,直接從記憶體內執行惡意內容 (圖 20)。執行過程可大致拆成五個步驟:
- 配置記憶體:函式首先會配置記憶體來存放惡意內容。它會呼叫 API 函式「VirtualAlloc」並傳入「MEM_COMMIT」以及保護狀態旗標「0x40」(PAGE_EXECUTE_READWRITE),讓配置好的記憶體可被執行。
- 映射標頭和區段:接著,它會將 PE 標頭和 PE 檔案的每一個區段複製到配置好的記憶體內,包括可執行程式碼和資料區段。
- 取得匯入函式位址:接下來,函式會瀏覽整個匯入目錄 (import directory) 來取得所有匯入函式的位址。針對每個匯入的 DLL,它會使用「LoadLibraryA」來載入函式庫,接著使用「GetProcAddress」來取得每個必要函式的位址。這些函式的位址會更新到「匯入位址表」(Import Address Table,簡稱 IAT) 當中。
- 重新調整基底位址:接著程式碼會重新調整基底位址來調整載入映像當中的記憶體位址。
- 執行:最後,載入器將執行權轉移到 PE 檔案的原始進入點 (OEP)。這是透過組合語言的跳躍指令「__asm { jmp eax }」來達成,每一個指令當中都包含了進入點的位址。
DarkGate RAT 分析
SHA-256 | 18d87c514ff25f817eac613c5f2ad39b21b6e04b6da6dbe8291f04549da2c290 |
編譯器 | Borland Delphi |
原始名稱 | Stub |
檔案類型 | Win32 |
DarkGate 版本 | 6.1.7 |
DarkGate 是一個使用 Borland Delphi 撰寫的 RAT,從 2018 年起便以惡意程式服務 (MaaS) 的方式在俄羅斯文網路犯罪地下論壇上刊登廣告。此惡意程式提供了各種功能,包括:處理程序注入、下載與執行檔案、資訊竊取、執行指令列命令、鍵盤側錄等等。此外,還具備多種躲避偵測技巧。
這起攻擊行動使用的是 DarkGate 6.1.7 版,第 6 版主要的改變包括:組態設定使用 XOR 加密、新增了一些組態設定值、重新調整了組態設定的順序來防止第 5 版的組態設定被自動化擷取器擷取,以及更新了幕後操縱 (CC) 指令的數值。
執行時,DarkGate 會直接使用系統呼叫 (syscall) 的方式來避開 ntdll.dll 反勾掛 (hooking) 機制,這是為了讓惡意程式可以在需要時呼叫 ntdll.dll 中的原生 API。這項技巧可讓 DarkGate 繞過使用者模式 (user-mode) API 層直接呼叫核心模式 (kernel-mode) 函式。藉由系統呼叫,DarkGate 就能巧妙地隱藏其掏空處理程序的技巧,這類技巧通常會被 API 呼叫監控機制所發現。這套方法不僅能提高惡意程式的隱密性,還可以讓安全機制的偵測及分析工作變得更加複雜,因為它能掩蓋惡意程式使用關鍵系統函式來從事惡意活動的行為。
惡意程式會檢查「C:\Windows\SysWOW64\ntdll.dll」檔案是否存在來判斷作業系統的架構。DarkGate 會依據系統架構是 x64 或 x86 而採用不同的系統呼叫方法。如果是 x86 架構,就使用內嵌的組合語言指令「sysenter」來執行系統呼叫。反之,如果是 x64 架構,就使用「FS:[0xC0]」指標 (該指標指向「wow64cpu!KiFastSystemCall」) 來執行系統呼叫 (圖 22)。
惡意程式經常會呼叫一些可能留下靜態痕跡的 API 函式,例如惡意檔案內的字串。這些痕跡可被資安分析師用來推測某個二進位檔案可能執行的函式範圍,一般來說是透過檢查匯入位址表 (IAT)。
為了躲避靜態分析、盡量減少可疑的 API 呼叫被發現、掩蓋惡意功能,並且阻礙資安分析,惡意程式會在執行時期才動態取得 API 函式的位址。以下是 DarkGate 會在執行時期動態取得位址的 API 函式:
- user32.dll
- MessageBoxTimeoutA
- GetWindowTextA
- GetWindowTextW
- FindWindowExA
- GetForegroundWindow
- FindWindowA
- GetKeyState
- EnumDisplayDevicesA
- GetKeyboardState
- GetWindow
- GetWindowThreadProcessId
- SendMessageA
- GetWindowTextLengthW
- Advapi32.dll
- RegSetValueExA
- RegDeleteValueA
- RegCloseKey
- RegOpenKeyExA
- Shell32.dll
- ShellExecuteA
有別於 DarkGate 第 5 版採用明碼的組態設定,第 6 版的組態設定會使用 XOR 加密。解密的程序 (圖 23) 類似於圖 21 中的 Delphi 載入器。此函式接受的參數包括:加密緩衝區、寫死的金鑰以及緩衝區大小。然後,它會根據它所收到的金鑰產生一把新的加密金鑰,接著將緩衝區內容解密。
表 6 列出 DarkGate 第 6 版主要的組態設定項目,包括:參數鍵值、數值類型以及說明。
參數鍵值 | 數值類型和數值 | 說明 |
0/DOMAINS | String: jenb128hiuedfhajduihfa[.]com | CC 伺服器網域。 |
EPOCH | Int: XXXXXX | 惡意內容產生的時間。 |
8 | Bool: Yes | 假錯誤訊息:顯示「MessageBoxTimeOut with」訊息並停留 6 秒。 |
11 | String: DarkGate | 假錯誤訊息:「MessageBoxTimeOut lpCaption」數值。 |
12 | String: R0ijS0qCVITtS0e6xeZ | 假錯誤訊息的客製化 Base64 編碼文字,解碼之後為「HelloWorld!」。 |
15 | 80 | 指派 CC 伺服器使用的連接埠號碼。 |
1 | Bool: Yes | 啟用開機自動執行並安裝惡意程式。 |
3 | Bool: Yes | 啟用根據顯示裝置的虛擬機器反制 (anti-VM) 檢查。 |
4 | Bool: Yes | 啟用最低硬碟空間虛擬機器反制檢查。 |
18 | Int: 100 | 設定略過參數 4 虛擬機器反制檢查的最低硬碟空間。 |
6 | Bool: Yes | 啟用根據顯示裝置的虛擬機器反制檢查。 |
7 | Bool: Yes | 啟用最低記憶體 (RAM) 容量虛擬機器反制檢查。 |
19 | Int: 7000 | 設定略過參數 7 虛擬機器反制檢查的最低記憶體 (RAM) 容量。 |
5 | Bool: Yes | 檢查 CPU 是否為 Xeon 來偵測伺服器環境。 |
25 | String: admin888 | 攻擊行動代號 (ID) |
26 | Bool: No | 判斷是否啟用處理程序掏空技巧來執行。 |
27 | String: zhRVKFlX | 提供 DarkGate 惡意內容解密所需的 XOR 金鑰/標記。 |
Tabla | String: n]Swa6”NY=.yB3jICJzqO147gos{UaciQP(LT2[…REDACTED…] | test.txt 資料 (用來解密 AutoIt 腳本的外部資料來源)。 |
在完成了初始設定之後,惡意程式接著透過 HTTP POST 請求將被感染的系統註冊到 CC 伺服器。以下顯示註冊訊息的結構:
<Foreground Window title – utf16 – Hex encoded>|<Idle Time>|<GetTickCount >|<Bool: IsUserAnAdmin>|<Darkgate Version>|||
此結構的組成元素包括:
- 前景視窗標題:這是被感染電腦目前活躍中或前景視窗的標題。此標題將採用 UTF-16 編碼,然後再轉成十六進位。
- 閒置時間 (秒):此數字代表自從上次使用者操作系統 (鍵盤或滑鼠) 到現在過了多久。
- 系統運轉時間 (毫秒):這是使用 Windows API 「GetTickCount」 所得到的數值,代表系統從上次開機到現在為止所經過的時間 (以毫秒為單位)。
- 使用者是否為系統管理員:這個 Yes/No 旗標代表惡意程式在被感染的系統上是否擁有系統管理員權限。
- DarkGate 惡意程式版本:系統所感染的 DarkGate 惡意程式版本。
惡意程式會執行一系列步驟來將資料傳送至 CC 伺服器,詳細情形如下:
- 資料封包初始化:準備外傳的資料前端會被附上一個特殊的流量代碼以方便追蹤。例如,一開始的 CC 註冊流量與指令擷取使用的是「1000」這個整數代碼。
- 計算非重複的身分識別雜湊碼:結合 Windows 產品識別碼、處理器資訊以及十六進位編碼的電腦名稱來產生一個客製編碼的 MD5 雜湊碼。惡意程式會在各種操作當中用到這個雜湊碼,所以會在惡意程式一開始執行時就產生。以下是計算這個雜湊碼時所用到的資訊:
- Windows 產品識別碼:位於系統登錄的下列路徑:「HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId」
- 處理器資訊:取自系統登錄的下列路徑:「KLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0\ProcessorNameString」再配上使用「GetSystemInfo」函式所取得的處理器數量。
- 電腦名稱:採用 UTF-16 十六進位編碼的電腦名稱。
- 客製化編碼:產生出來的 MD5 摘要接著再用特殊的字母集來加以編碼:「abcdefKhABCDEFGH」。
- 產生金鑰:將 XOR 運算套用至 MD5 雜湊碼來產生一個新的加密金鑰。
- 加密資料:使用 XOR 運算新產生的金鑰將原始資料加密。
- 在資料前端附上編碼後的雜湊碼:將原始 (加密前) 的已編碼 MD5 雜湊碼附在加密資料的前端。這個雜湊碼將用來作為 DarkGate CC 伺服器的解密金鑰,以確保資料能夠被讀取。
6. 最終編碼:接著,資料封包 (包含已編碼的雜湊碼和加密資料) 會被轉成 Base64 格式編碼 (使用客製化字母集):
「zLAxuU0kQKf3sWE7ePRO2imyg9GSpVoYC6rhlX48ZHnvjJDBNFtMd1I5acwbqT+=」
圖 25 顯示 DarkGate 第 6 版 CC 伺服器的起始網路流量範例。
內容經過解密之後如下:
"1,0004100750074006F006900740033002E0065007800650[...REDACTED...]|0|317394|No|6.1.7|||"
如果 CC 伺服器未回覆預期的指令,DarkGate 就會進入一個無盡迴圈並持續發送流量,直到收到預期指令為止。圖 26 顯示被感染系統所發送的請求範例,以及來自 CC 伺服器的回應。
這段請求經過解密之後內容如下:
1000|87|283|Yes|6.1.7|||"
結論
本文內容來自我們先前 Water Hydra APT 零時差攻擊行動分析的後續研究,我們探討了 DarkGate 集團如何利用 CVE-2024-21412 來發動零時差攻擊,並部署複雜且不斷演變的 DarkGate 惡意程式。此外,我們也探討了這類安全機制迴避漏洞如何搭配像 Google 廣告的開放式重導技術來散播惡意程式,其濫用的是使用者對於一些基本網站技術的天生信賴。
為了提升軟體安全、保護客戶不受零時差攻擊的危害,趨勢科技 Zero Day Initiative 隨時都在和資安研究人員及廠商合作,在 APT 集團將軟體漏洞應用到攻擊之前,預先加以修補並負責任地揭露。此外,ZDI 威脅追蹤團隊也會主動發掘網路上是否有零時差漏洞攻擊出現,藉此守護產業安全。
企業可採用 Trend Vision One™️ 來防範這類攻擊,它能讓資安團隊持續發掘企業的攻擊面,全面保護已知、未知、受管理及未受管理的網路資產。Vision One 能協助企業判斷潛在風險 (例如漏洞) 的優先次序並盡快解決。它會參考各項關鍵因素,例如潛在攻擊的可能性和衝擊,同時還提供各式各樣的防護、偵測及回應功能。而這一切背後都有進階威脅研究、情報以及人工智慧作後盾,能縮短偵測、回應及矯正問題的時間。Trend Vision One 的終極目標是要改善企業的整體資安狀況與成效,包括防範零時差攻擊。
在是否遭到入侵以及駭客行為和攻擊程序不確定的情況下,企業應假設自己的系統已經遭到入侵或外洩,並且立即隔離受影響的資料或工具。藉由更廣泛的視野以及更快速的回應,企業就能應付駭客入侵的問題並保護剩餘的系統。尤其,企業若採用像 Trend Micro™ Endpoint Security™ 和 Trend Micro Network Security 這樣的產品,以及 Trend Micro™ XDR 這類全方位的資安解決方案來偵測、掃描及攔截惡意內容,就能妥善因應現代化威脅情勢。
趨勢科技防護
以下是趨勢科技客戶可用來防範 CVE-2024-21412 (ZDI-CAN-23100) 零時差漏洞的趨勢科技防護:
Trend Vision One 模型
- Potential Exploitation of Microsoft SmartScreen Detected (ZDI-CAN-23100)
- Exploitation of Microsoft SmartScreen Detected (CVE-2024-21412)
- Suspicious Activities Over WebDav
Trend Micro Cloud One - Network Security 與 TippingPoint 過濾規則
- 43700 - HTTP:Microsoft Windows Internet Shortcut SmartScreen Bypass Vulnerability
- 43701 - ZDI-CAN-23100:Zero Day Initiative Vulnerability (Microsoft Windows SmartScreen)
Trend Vision One Network Sensor 與 Trend Micro Deep Discovery Inspector (DDI) 規則
- 4983 - CVE-2024-21412:Microsoft Windows SmartScreen Exploit - HTTP (Response)
Trend Vision One Endpoint Security、Trend Cloud One - Workload and Endpoint Security、Deep Security 與 Vulnerability Protection IPS 規則
- 1011949 - Microsoft Windows Internet Shortcut SmartScreen Bypass Vulnerability (CVE-2024-21412)
- 1011950 - Microsoft Windows Internet Shortcut SmartScreen Bypass Vulnerability Over SMB (CVE-2024-21412)
- 1011119 - Disallow Download Of Restricted File Formats (ATT&CK T1105)
- 1004294 - Identified Microsoft Windows Shortcut File Over WebDav
- 1005269 - Identified Download Of DLL File Over WebDav (ATT&CK T1574.002)
- 1006014 - Identified Microsoft BAT And CMD Files Over WebDav
入侵指標 (IoC)
詳細的 IoC 清單請至此處下載。