研究人員發現一起利用Chrome和Windows 系統0 day漏洞的攻擊利用鏈。
2021年4月14日,Kaspersky研究人員檢測到針對多個公司的定向攻擊活動。進一步分析發現,這些攻擊活動都利用谷歌Chrome和微軟Windows 的0 day漏洞攻擊利用鏈。研究人員發現并分析了用于沙箱逃逸和獲得權限提升的漏洞利用。
該權限提升漏洞利用可以在最新的Windows 10(17763 – RS5, 18362 – 19H1, 18363 – 19H2, 19041 – 20H1, 19042 – 20H2) 版本上工作,并且利用了微軟Windows操作系統內核的兩個不同漏洞。漏洞CVE編號為CVE-2021-31955和CVE-2021-31956。
遠程代碼執行漏洞利用
所有的攻擊活動都是通過Chrome瀏覽器執行的。雖然研究人員無法獲取漏洞利用的JS代碼,但是研究人員根據相關攻擊活動的時間軸推測出了利用的漏洞——CVE-2021-21224。此外,研究人員還推測攻擊者使用JS文件以及正則測試來開發漏洞利用,并用于攻擊活動。
權限提升漏洞利用
CVE-2021-31955
CVE-2021-31955漏洞是ntoskrnl.exe中的一個信息泄露漏洞。該漏洞與Windows操作系統的一個特征SuperFetch有關。SuperFetch是在Windows Vista中引入的,旨在通過預加載常用的應用到內存中來減少軟件的加載時間。所以,函數NtQuerySystemInformation 實現了一個非常特殊的系統信息類——SystemSuperfetchInformation。系統信息類包含了多個不同的SuperFetch信息類。漏洞就存在于NtQuerySystemInformation 函數返回的 SuperFetch信息類SuperfetchPrivSourceQuery中包含當前執行的進程的EPROCESS kernel 地址。
CVE-2021-31955 漏洞存在的MemInfo工具源碼
CVE-2021-31956
CVE-2021-31956漏洞是 ntfs.sys中的一個堆緩存溢出漏洞。函數NtfsQueryEaUserEaList會處理該文件的一系列擴展屬性,并保存提取的值到緩存中。該函數可以通過ntoskrnl syscall系統調用訪問,并可以控制輸出緩存的大小。如果擴展屬性的大小不一致,函數就會計算填充,并把下一個擴展屬性保存為32位。有代碼會檢查輸出緩存是否足以滿足擴展屬性+填充,但是該檢查的代碼并沒有檢查可能存在的證書下溢。因此,基于堆的緩存溢出就發生了。
NtfsQueryEaUserEaList函數偽代碼
漏洞利用使用CVE-2021-31955漏洞來獲取EPROCESS結構的kernel地址,可以使用相同的利用技術來竊取SYSTEM token。但是漏洞利用使用了很少見的“PreviousMode” 技術。
惡意軟件模塊
除了之前提到的漏洞利用外,完整的攻擊鏈中包含4個惡意軟件模塊,分別是:
· Stager
· Dropper
· Service
· Remote shell
Stager
Stager模塊是用來通知漏洞利用成功的。此外,該模塊還會從遠處服務器下載和執行復雜的惡意軟件釋放器模塊。每個stager 模塊都會有受害者的配置信息,包括C2 URL、session ID、解密下一階段惡意軟件的秘鑰等。
研究人員發現所有stager模塊樣本都使用了相同的URL地址來下載加密的惡意軟件釋放器模塊——hxxps://p{removed}/metrika_upload/index.php。
Dropper
釋放器模塊是用來安裝偽裝成合法Windows操作系統文件的可執行文件。其中一個文件 %SYSTEM%\WmiPrvMon.exe 注冊為服務,用作第二個可執行文件的啟動器。第二個可執行文件具有遠程shell功能,可以看做是攻擊活動的主要payload。目前還沒有發現該模塊與其他已知軟件的相似之處。
Remote shell
遠程shell模塊硬編碼了C2服務器的URL。所有客戶端與C2服務器之間的通信都是經過認證和加密的。遠程shell模塊可以下載和上傳文件、創建進程、休眠特定時間、將自己從被黑的機器上刪除等。
微軟已經在6月的微軟補丁修復了這兩個安全漏洞。