從 Follina 到 Rozena - 利用 Discord 分發后門
從 Follina 到 Rozena - 利用 Discord 分發后門
2022 年 5 月,微軟發布了關于 CVE-2022-30190 的公告,該公告是關于 Microsoft Windows 支持診斷工具 (MSDT) 遠程代碼執行漏洞。攻擊者可以在 Microsoft Office 文檔中注入指向 OLE 對象的惡意外部鏈接,然后誘使受害者單擊或簡單地預覽文檔以觸發此漏洞。然后它將在受害者的機器上執行一個有效載荷。由于此漏洞是公開利用且具有高嚴重性,FortiGuard Labs于5 月31日發布了爆發警報,并于 2022 年 6 月 1 日發布了一篇博客文章來解決該問題。
在上個月的跟蹤過程中,我們發現了一個利用 CVE-2022-30190(又名 Follina)的文檔,然后下載了 Rozena 以部署無文件攻擊并利用公共 Discord CDN 附件服務。Rozena 是一種后門惡意軟件,能夠將遠程 shell 連接注入攻擊者的計算機。在這篇博客中,我們將解釋攻擊者如何通過此漏洞傳遞此有效載荷,以及 Rozena 及其 shellcode 的詳細信息。
受影響的平臺: Microsoft Windows
影響方: Microsoft Windows 用戶
影響:受影響機器的完全控制
嚴重性:嚴重
開發
原始惡意文檔 (SHA256: 432bae48edf446539cae5e20623c39507ad65e21cb757fb514aba635d3ae67d6) 包含一個外部 Web 鏈接,如圖 1 所示。關系目錄 (word/_rels/document.xml.rels) 是一個 XML 文件,用于映射 .docx 文件中的關系以及資源包之外,例如鏈接或圖像。
圖 1. Document.xml.rels 在 oleObject 中包含惡意外部鏈接
單擊文檔后(如圖2所示),它開始連接到外部Discord CDN附件空間'hxxps://cdn[.]discordapp.com/attachments/986484515985825795/986821210044264468/index[.]htm'下載一個 HTML 文件。
圖 2. 單擊文檔后連接到外部鏈接
下載 HTML 文件 (SHA256: 3558840ffbc81839a5923ed2b675c1970cdd7c9e0036a91a0a728af14f80eff3) 后,該文檔會使用 PowerShell 命令調用 msdt.exe。完整的有效載荷如圖 3 所示。
圖 3. index.html 調用 MSDT
它在運行時組裝的單獨字符串的連接有點混淆,以隱藏實際命令并逃避簡單的字符串檢測。我們解碼了一個 Base64 字符串,完整的命令如圖 4 所示。
PowerShell 代碼將下載一個批處理文件 cd.bat (SHA256: 5d8537bd7e711f430dc0c28a7777c9176269c8d3ff345b9560c8b9d4daaca002) 并在沒有窗口隱藏自身的情況下啟動它。然后它調用另一個 Web 請求來下載 Rozena 并 在 Windows 任務文件夾中保存為“Word.exe”(SHA256:69377adfdfa50928fade860e37b84c10623ef1b11164ccc6c4b013a468601d88)。
這兩個文件也是從 Discord CDN 附件空間下載的,channelID 與原始文檔中的外部鏈接相同。
圖 4. Base64 解碼命令
如圖 5 所示,cd.bat 文件有四個任務:
- 下載另一個文件 1c9c88f811662007.docx (SHA256: e3af143ba12209fafdc3089a740d23faf59f6f1508c00d8f56f8cc9d0c8ebf89) 以分散注意力
- 殺死進程“msdt.exe”和“WINWORD.exe”以消除利用CVE-2022-30190的痕跡
- 通過添加注冊表運行鍵為 Rozena “Word.exe”創建持久性。
- 刪除 bat 文件。
圖 5. cd.bat 文件內容
分心
在潛入 Rozena 之前,這個攻擊者決定分散受害者的注意力。原始文件除了 oleObject 中的外部鏈接外沒有任何內容。為了不讓受害者注意到任何奇怪的東西,批處理文件下載了另一個 Word 文檔,1c9c88f811662007.docx,其中包含大量圖片(參見圖 6)。為了使它看起來更真實,此文檔保存在目錄 C:\\users\$env:USERNAME\Downloads 中,名稱較短,為 18562.docx。
圖 6. 分散注意力的 Word 文檔
羅澤娜
攻擊者利用默認 Window 的功能,即不顯示文件擴展名。因此,攻擊者欺騙了受害者,如圖 7 所示。綠色的是沒有傷害的分心文件,紅色的是 Rozena。當它是一個可執行文件時,它使用 Microsoft Word 圖標。PE 標頭如圖 8 所示。
圖 7. Rozena “Word.exe” 使用 Microsoft Word 文件圖標
圖 8. Rozena 的文件頭
執行后,它將為 PowerShell 命令創建一個進程。我們可以從流程資源管理器中找到該鏈(如圖 9 所示)。完整的 PowerShell 命令如圖 10 所示,它是 Base64 編碼的。
圖 9. Rozena 的執行
圖 10. 從 Rozena 提取的完整 PowerShell 命令
如圖 11 所示,解碼后的命令只有一項工作:注入 shellcode。首先,它為整個注入過程定義了一個變量“$gcr”。它使用 DLLImport 用于 kernel32.dll 和 msvcrt.dll 用于導入特定的 API:VirtualAlloc、CreateThread 和 Memset,以實現代碼注入。它有一些十六進制字節來定義稍后要注入的代碼塊。然后它將這些字節復制到分配的內存中,并將它們注入到正在運行的 PowerShell.exe 中。最后,它設置一個循環來開始睡眠。在底部以紅色突出顯示的部分,它使用 Base64 對來自“$gcr”的上述注入代碼進行編碼,然后使用參數 -ec 調用一個新的 PowerShell 進程。
圖 11. 解碼的 PowerShell 命令
外殼代碼
我們從圖 12 所示的命令中提取了 shellcode(SHA256:27F3BB9AB8FC66C1CA36FA5D62EE4758F1F8FF75666264C529B0F2ABBADE9133)。為了深入研究這一點,我們使用 IDA 檢查了這個二進制文件。它可以分為以下幾個步驟:
- 檢索解碼密鑰
- 檢索相對于 EIP 的位置(圖 13)
- 解碼 (XOR)
圖 12. 提取的 shellcode
圖 13. 檢索相對于 EIP 的位置
根據上述說明,我們可以將其識別為 Shikata Ga Nai (SGN) 編碼。SGN 編碼模式來自最流行的漏洞利用框架 Metasploit。它是一種多態 XOR 加性反饋編碼器,允許惡意行為者逃避檢測。解碼后,這個 shellcode 的主要目的是啟動一個反向 shell 到攻擊者的主機 microsofto.duckdns[.]org,TCP 端口為 55911,如圖 14 所示。
圖 14. 反向外殼
從交付惡意文檔和利用 CVE-2022-30190 (Follina) 到從 Discord CDN 附件空間部署 Rozena 的完整攻擊場景如圖 15 所示。
圖 15. 攻擊場景
結論
CVE-2022-30190 是一個高嚴重性漏洞,可讓惡意行為者通過 MS Word 文檔傳遞惡意軟件。Microsoft 已于 2022 年 6 月 14 日為其發布了補丁。在此博客中,我們展示了攻擊者如何利用 Follina 并包含 Rozena 和 SGN ShellCode 的詳細信息。用戶應立即應用補丁并應用 FortiGuard 保護以避免威脅。
文章轉自:卡拉林