Operation PowerFall攻擊活動中的IE和Windows 0day漏洞

2020-12-05 騰訊網

研究人員在Operation PowerFall攻擊活動中發現了一個0 day漏洞——CVE-2020-1380。該漏洞是一個JS中的UAF漏洞,補丁已於2020年8月11日發布。

IE 11遠程代碼執行漏洞利用

最近發現的在野IE 0 day漏洞利用主要是依賴JavaScript 引擎jscript.dll中CVE-2020-0674、CVE-2019-1429、CVE-2019-0676和 CVE-2018-8653等漏洞。而CVE-2020-1380是jscript9.dll中的漏洞,從IE 9開始默認使用。

CVE-2020-1380是JIT 優化引發的UAF漏洞,是由於即時編譯代碼中缺乏必要的檢查導致的。觸發該漏洞的PoC代碼如下:

function func(O, A, F, O2) // execute abp.valueOf() and write by dangling pointerA[5] = O;};// prepare objectsvar an = new ArrayBuffer(0x8c);var fa = new Float32Array(an);// compile funcfunc(1, fa, 1, {});for (var i = 0; i

漏洞利用使用對象abp和valueOf()方法。該方法在對象轉化為浮點數時執行,但是該方法中有釋放ArrayBuffer的代碼。為了防止值保持在釋放的對象的內存中,JS引擎在保持該值之前需要檢查對象的狀態。為了安全地轉化和保持浮點值,JScript9.dll會使用函數Js::TypedArray

int Js::TypedArray::BaseTypedDirectSetItem(Js::TypedArray *this, unsigned int index, void *object, int reserved)return 1;}double Js::JavascriptConversion::ToNumber(void *object, struct Js::ScriptContext *context)elseelse{*(float *)buffer = *(double *)(object->value);}}}}

以下是Js::JavascriptConversion::ToFloat_Helper() 函數的代碼:

void Js::JavascriptConversion::ToFloat_Helper(void *object, float *buffer, struct Js::ScriptContext *context){*buffer = Js::JavascriptConversion::ToNumber_Full(object, context);}

與翻譯模式不同的是,在實時編譯的代碼中,並不會檢查ArrayBuffer,其內存會被釋放然後在valueOf()函數被調用時重新聲明。此外,攻擊者可以控制返回值要寫入的index。當PoC 中的arguments.length = 0;和arguments.push(O2); 被替換為arguments[0] = O2;時,Js::JavascriptConversion::ToFloat_Helper()並不會觸發漏洞,因為調用會被禁用,也不會執行到valueOf()的調用。

為了確保函數func()即時編譯,漏洞利用執行了該函數0x10000次,只有在func()函數多執行一次後才會觸發漏洞。為了釋放ArrayBuffer,漏洞利用會濫用Web Workers API。函數postMessage() 會用來序列號對象並發送。轉化的對象被釋放後,在當前腳本環境中會無法使用。當ArrayBuffer被釋放時,漏洞利用會通過模擬Sleep()函數的使用來觸發垃圾回收:檢查Date.now()和之前保存的值之間的時間間隔。之後,漏洞利用會聲明含有整數數組的內存。

for (var i = 0; i

在創建了大量的數組後,IE就會分配IE定製堆首先使用的新的LargeHeapBlock 對象。LargeHeapBlock對象會保存為數組分配的緩存地址。如果成功獲得期望的內存布局,漏洞就會用0覆寫LargeHeapBlock的偏移量0x14,即分配的區塊數。

jscript9.dll x86的LargeHeapBlock結構

之後,漏洞利用會分配大量的數組,並設置為漏洞利用初始階段準備的另一個數組。然後該數組會設置為null,漏洞利用會調用CollectGarbage()函數。導致堆的碎片重新整理,修改後的LargeHeapBlock和相關的數組緩存都會釋放。此時,漏洞利用會創建大量的整數數組來重新聲明之前釋放的數組緩存。新創建的數組在index 0處有一個值,並通過到之前釋放的數組的指針來檢查漏洞利用是否成功。

for (var i = 0; i

因此,漏洞利用會創建兩個指向相同位置的緩存的JavascriptNativeIntArray對象。因此可以提取對象的地址,甚至創建新構造的對象。漏洞利用使用了這些原語來創建了一個構造的DataView 對象,並獲取了進程整個地址空間的讀寫權限。

利用任意讀寫原語的構造可以繞過Control Flow Guard (CFG)和實現代碼執行。漏洞利用使用Array的vftable指針來獲得jscript9.dll的模塊基地址。然後分析jscript9.dll的PE header來獲取Import Directory Table的地址,並解析其他模塊的基地址。目標是找到函數VirtualProtect()的地址,這會將shellcode變得可以執行。之後,漏洞利用會在jscript9.dll中搜索2個籤名。這些籤名對應Unicode字符串split的地址和函數JsUtil::DoublyLinkedListElement

之後進入下一個階段。漏洞利用會執行split()方法,並提供一個含有覆寫的valueOf()方法的對象作為限制參數。函數Js::JavascriptString::EntrySplit()在執行過程中valueOf()方法也會執行,漏洞利用會搜索線程的棧來找到返回的地址,並shellcode放置在之前的緩存中,獲取其地址,並通過覆寫函數的返回地址來構造一個return-oriented programming (ROP)鏈來執行shellcode。

下一個階段

Shellcode是加到shellcode的PE模塊的反射型DLL加載器。該模塊非常小,整個功能位於單獨的函數中。並在臨時文件夾中創建一個名為ok.exe的文件,並將遠程代碼執行漏洞利用中的另一個可執行文件的內容寫入。之後,執行ok.exe。

ok.exe可執行文件中含有GDI Print / Print Spooler API中任意指針簡接引用漏洞CVE-2020-0986的權限提升漏洞利用。該漏洞利用可以使用進程間通信來實現splwow64.exe進程的任意內存讀寫,並用它來實現splwow64.exe進程的代碼執行,繞過CFG 和EncodePointer保護。漏洞利用以及兩個可仔細文件都會嵌入到其資源中。第一個可執行文件會寫入磁碟中(CreateDC.exe),然後用來創建漏洞利用所需的設備環境(device context)。第二個可執行文件名為PoPc.dll,如果漏洞利用成功,splwow64.exe就會執行。

來自splwow64.exe的惡意PowerShell 命令執行

PoPc.dll的主要功能位於單個函數中,執行一個編碼的PowerShell命令來從www[.]static-cdn1[.]com/update.zip下載文件,並以upgrader.exe保存到臨時文件中並執行。

參考及來源:https://securelist.com/ie-and-windows-zero-day-operation-powerfall/97976/

相關焦點

  • 大神淺談:IE和Windows的兩個0-day漏洞分析
    經過進一步分析發現,該工具使用了以前未知的完整利用鏈,其中包括兩個0-day漏洞:Internet Explorer遠程代碼執行漏洞、Windows特權提升漏洞。與我們以前在WizardOpium惡意活動中發現的攻擊鏈不同,新的攻擊鏈可以針對Windows 10的最新版本發動攻擊。
  • 對2019年各個國家0 day漏洞使用情況的介紹
    根據研究結果,與前3年相比,我們發現2019年被利用的零日(0-day)漏洞數量更多。雖然並非每次0-day利用都能溯源到特定的攻擊組織,但我們發現越來越多的攻擊組織已經逐步具備這類能力。此外,有些攻擊組織會購買商業公司提供的進攻性網絡產品及服務,所利用的0-day數量也越來越多,並且隨著時間的推移,針對中東的0-day攻擊事件也越來越多。
  • 微軟Windows 0day漏洞遭黑客利用 U盤成幫兇
    致使用戶電腦中的設置被更改,不僅會彈出廣告網頁,甚至面臨遊戲、qq、銀行帳號可能被盜走的危險。金山安全反病毒專家表示,該漏洞可能會在近期引發大規模的木馬攻擊,在微軟沒有發布漏洞補丁之前,金山全系列安全軟體不用升級即可自動免疫此類漏洞及相關病毒木馬。
  • 使用Windows與Android雙平臺在野漏洞利用鏈的APT攻擊活動
    Google ProjectZero與威脅分析小組(TAG)披露了一個高級可持續性威脅(APT)攻擊活動,該漏洞利用鏈分別針對Windows和Android用戶進行0day漏洞攻擊。
  • 360全球首家發現新型攻擊使用微軟Office 0day漏洞
    作為全球首家發現並向微軟報告該漏洞細節的安全廠商,360安全團隊在漏洞發現後緊急升級了熱補丁,在官方補丁未發布前就實現了對該漏洞攻擊的有效檢測和防禦。同時,360通過與微軟安全團隊的積極配合,火速推進了該漏洞補丁的發布,使其在發現一周內得以妥善修復。在官方公告中,微軟對360的貢獻進行了公開致謝。
  • Serv-U FTP Server 0day漏洞分析報告
    【IT168 資訊】Serv-U FTP Server 0day漏洞是一個Serv-U遠程目錄遍歷漏洞,2011-12-01公布。該漏洞最終可以導致遠程目錄遍歷漏洞,可以覆蓋、下載任意文件。
  • 小心新Adobe Flash 0day漏洞 易受攻擊
    1Flash又曝新0day漏洞  近日,有安全機構曝出Adobe Flash Player又被發現存在一個尚未公開的新0day漏洞,該漏洞可輕易地被黑客攻擊並利用。黑客只需使用Angler EK攻擊套件對該0day漏洞發動攻擊,便可能導致受害者的電腦被用來建立殭屍網絡。
  • 黑客正在利用多個 WordPress 插件的 0day 漏洞對網站發起攻擊 |...
    造成這種停機的原因可能是冬季假期,正如我們在前幾年所看到的那樣,這通常會導致惡意軟體和黑客活動在全球範圍內放緩,因為黑客也會休息一下。在過去的兩周中,我們發現針對 WordPress 網站的攻擊有所復甦,這標誌著 12 月和 1 月相對平靜的時期已經結束。
  • CVE-2020-7200:HPE 0day漏洞
    近日,Hewlett Packard Enterprise (HPE) 公開了HPE Systems Insight Manager (SIM)軟體專用版Windows 和Linux 版本的一個0 day安全漏洞。HPE SIM軟體是多HPE 伺服器、存儲和網絡產品的遠程支持自動化解決方案。
  • WordPress SMTP 0 day漏洞
    研究人員在WordPress SMTP 插件中發現了一個0 day漏洞,攻擊者利用該插件漏洞可以重置管理員帳戶密碼。WordPress SMTP插件是非常受歡迎的一個插件,是一個允許網站管理員配置網站郵件的SMTP 設置的插件。已經在超過50萬個網站中安裝。
  • IE瀏覽器0-Day漏洞得到修復 多個韓國網站曾被利用漏洞攻擊
    其中有一個安全補丁針對修復了影響多個IE瀏覽器版本的0-Day安全漏洞,該漏洞的CVE識別碼為CVE-2016-0189,影響IE9/10/11瀏覽器及Windows 10原生Interne Explorer 11版本。
  • Google披露了未打補丁的Windows 0day漏洞
    谷歌的Zero團隊已經公開了Windows後臺列印程序API中一個未打補丁的0day安全漏洞的詳細信息,一些威脅者可能會利用該漏洞執行任意代碼。 在9月24日Microsoft未能披露後的90天內未能修補此漏洞之後,未打補丁的漏洞細節被公開披露。 該漏洞最初被追蹤為CVE-2020-0986,涉及GDI Print/Print Spooler API(「splwow64.exe」)中的權限提升漏洞。
  • Windows 改進的安全特性減少了黑客的漏洞攻擊
    在 Bluehat 安全會議上發表的一項研究顯示,Windows 不斷的安全改進產生了效益,黑客針對 Windows 的漏洞攻擊有效減少。
  • 黑客50萬美元出售Zoom 0 day漏洞
    黑客50萬美元出售Zoom 0 day漏洞 近日,又有黑客在暗網出售影響Zoom Windows客戶端的0 day遠程代碼執行漏洞利用代碼,售價為50萬美元。同時還附送一個Zoom macOS客戶端的漏洞濫用代碼。
  • 攻擊者利用Sophos防火牆中的0-day代碼執行漏洞
    到2020年的SQL注入漏洞仍然存在。安全公司Sophos的官員周日表示,該公司一個被頻繁使用的防火牆的用戶遭到了0-day攻擊,其目的是竊取用戶名、密碼保護密碼和其他敏感數據。經過充分研究和開發的攻擊利用了Sophos XG Firewall的完全修補版本中的SQL注入漏洞。有了這個系統,它下載並安裝了一系列腳本,這些腳本最終執行了旨在與用戶名,用戶名,密碼的加密哈希形式以及管理員帳戶密碼的SHA256哈希哈希化的代碼。Sophos已發布了一個緩解漏洞的修補程序。
  • 【安全圈】Google 披露 Windows 10 0day 提權漏洞
    因在 90 天截止日期前仍然未修復,Google 公開了一個正被利用的 Windows 10 0day 提權漏洞。 Google Project Zero 的漏洞披露政策是:不管有沒有修復,它都會在默認 90 天后披露漏洞細節,除非已有協議存在。
  • IE8 因漏洞正面臨被攻擊危險,IE9/IE10 依舊安全
    12月30日消息,如果你仍然在使用XP和IE8,那麼真的應該考慮升級到新系統和瀏覽器了。現在正有個針對IE8漏洞發起的網絡攻擊。據FireEye軟體安全公司的消息,他們確認網絡上的惡意內容是利用Adobe Flash生成了針對IE8(全補丁版本)的攻擊,源自零日(zero-day)漏洞。
  • Tor被曝多個0 day漏洞,官方給出回應!
    2個影響Tor網絡和瀏覽器的0 day漏洞技術細節,並稱近期會發布其他3個漏洞的細節。有專家確認,利用這些漏洞中的1個可以對Tor伺服器進行去匿名,獲取真實的IP 地址。 漏洞概述 漏洞1 在7月23日的博文中,研究人員描述了企業和網際網路服務提供商如何通過掃描包籤名的網絡連接來攔截用戶連接到Tor網絡,因為Tor流量的包籤名是獨特的可以作為特徵來識別的。
  • 新年大漏洞 Windows系統MHTML漏洞報導
    網民只需升級安裝最新版360安全衛士,即可攔截針對該漏洞的各種攻擊,同時也能避免電腦與知名網站出現兼容性問題。而微軟Windows系統最新的MHTML 0day漏洞會導致網民電腦中的Cookie文件被黑客竊取,造成電子郵件洩露、微博帳號被黑客冒用等後果。該漏洞影響各個Windows系統中的IE瀏覽器,涉及全球高達9億IE瀏覽器用戶。目前,Google等不少全球知名網站均存在可觸發MHTML漏洞的缺陷,因而該漏洞的影響範圍相當廣泛。
  • Chrome再更新,修復0 day漏洞
    Chrome再更新,修復0 day漏洞 Chrome用戶請注意,請儘快更新到 86.0.4240.183版本。11月2日,谷歌Chrome發布Windows、Mac和 Linux 86.0.4240.183版本,其中修復了10個安全漏洞,其中包含1個高危的在野利用0 day漏洞——CVE-2020-16009。