標籤:

零日競賽:Google和360如何改變內核漏洞挖掘領域的規矩?

大概在2013年,Google開始改變內核漏洞挖掘領域的規矩。

為了更好地保護用戶,它招聘全球頂尖安全人才組建Project Zero(簡稱P0)安全團隊,去尋找互聯網上各種流行軟體的安全漏洞。

P0發現的部分漏洞

作為全球最流行軟體,Windows自然是P0的頭號目標。當時,Windows時常爆出零日漏洞被野外利用,還有眾多情報機構虎視眈眈,它的「修修補補」難以對抗國家級別的攻擊對手。P0另闢蹊徑,使用模擬、Fuzz技術和機器集群打造出漏洞挖掘系統Bochspwn,用機器算力替代人力對系統薄弱點進行集中分析,近5年時間不完全統計向微軟報告了近百個Windows內核高危漏洞。其中不少漏洞修復周期較長,還引發了微軟和Google關於漏洞披露方面的口水大戰。

Bochspwn被認為是Google P0團隊的內核零日漏洞挖掘神器。和其它輔助分析工具相比,Bochspwn在操作系統下層監聽內存變化,能發現更全面的錯誤異常信息,因此也更容易找到漏洞。

在Bochspwn之後,業內其它團隊也有嘗試開發基於虛擬化技術的Windows內核漏洞挖掘工具,不過有成效的不多,360冰刃實驗室今年8月公布的DigTool算是裡邊的佼佼者。DigTool利用硬體虛擬化技術監控內存錯誤數據,在功能驗證階段已經找出20個Windows內核漏洞、41個殺毒廠商驅動漏洞。

本文將以Bochspwn、Digtool兩款工具為主線,介紹自動化漏洞挖掘工具的最新進展。

虛擬化監控

要做自動化漏洞挖掘工具,首先要考慮如何實現內存監控。2012年,在Bochspwn的技術棧選型上,P0團隊面臨三種選擇:

1、修改系統異常處理,利用頁面訪問許可權截取內存引用。該方法對系統內核改動太大,移植很不方便。不過它具備最佳性能優勢,並可以在物理硬體層面進行監聽。

2、使用輕量級hypervisor去截取內存,侵入性較小,不用對內核做太多修改。但要開發一套具備廣泛日誌記錄功能的hypervisor複雜且耗時。

3、使用CPU模擬虛擬機來運行操作系統,在軟體層面監聽內存。這樣做性能開銷非常大,無法測試少數硬體的內核模塊;優點是工作量最小、上手最簡單快速。

權衡所有優缺點後,P0決定採用第三種方案,使用開源軟體Bochs x86模擬器開發了全系統內存監控工具Bochspwn。他們當時表示:「CPU模擬方案具備壓倒性的優勢」。考慮到那時P0團隊應該剛剛籌建,人員不足,這句話大概能理解。

2013年Bochspwn初見成效、發現一大堆Windows內核漏洞後, @j00ru和@gynvael反思,Bochspwn實在太慢太卡了,要給運行時的完整操作系統做分析,使得它很多時候都無法交互。儘管可以對CPU佔用再優化,但Bochs本身的低效率讓這種優化很難有意義。

另一種選擇是,放棄CPU模擬方案,改用Intel和AMD的虛擬化技術來控制操作系統,做輕量級hypervisor。同年8月,@j00ru在BlackHat上公布HyperPwn,一個把操作系統放進hypervisor里作為VMM運行的項目,很遺憾由於在內存處理上碰到難題,這個項目當時沒能完成,後來竟沒了聲音。

@j00ru未竟的項目,在2017年被@PJF(潘劍鋒)實現。

@PJF是360冰刃實驗室負責人、知名反病毒內核軟體冰刃作者,他於2014年開始構思Digtool,使用硬體虛擬化技術(Intel PT)打造漏洞檢測框架,2017年初步完成亮相時,同樣刷了一大波Windows內核漏洞,並且介紹論文還投中四大國際學術會議之一的USENIX Security。?

Digtool的架構

Digtool漏洞檢測部分最大亮點在於:@PJF沒有用任何現有虛擬機或模擬器軟體方案,而是近乎奇蹟地獨立實現了一套專用於內存監控的輕量級hypervisor

他認為現有方案都不夠完美,例如Driver Verifier沒有源碼,AddressSanitizer是編譯時工具,Patching異常處理會影響系統穩定且無法移植,Pin、DynamoRIO之類難以在內核態運行,PEMU沒有內存監控模塊,Xenpwn只能跟蹤物理內存地址,Bochspwn性能太差…

獨立實現hypervisor層監控的Digtool優勢明顯,支持閉源軟體、對系統穩定性沒有損傷、性能極佳、可移植性好,並且可以獲得最全面的內存監控數據。@PJF說:「Bochspwn跑一次可能要一兩天,而Digtool只需要一兩小時。」

漏洞發現

現盤古首席科學家王鐵磊曾總結過漏洞挖掘研究現狀,他把漏洞發現技術分為主動挖掘和被動發現,主動挖掘有手工分析、動態分析、靜態分析三類,其中以模糊測試(fuzz)為代表的動態漏洞挖掘技術已經被業界廣泛接受,成為軟體安全測試的重要手段。

在Github上搜索fuzz,有八千多個項目,裡邊有大量知名fuzz軟體和案例,但最流行的fuzz軟體並不在這裡,而是在一個個人網站上。它叫american fuzzy lop(AFL),由全球最有影響力的安全專家之一@lcamtuf 打造,是現在許多二進位白帽子fuzz從入門到精通的必備軟體。

比如幾個月前,騰訊安全研究員@lcatro 使用AFL和網上開源測試樣本對圖片處理庫ImageMagick進行fuzzing,很快就收穫20個CVE漏洞。@lcatro 的內存監控工具是AddressSanitizer,上文提過它的缺點,需要被測軟體源碼在編譯時引入才能工作,對Windows等閉源軟體沒有價值。

Fuzzing ImageMagick的具體效果

回到Bochspwn上來,作為Google P0神器,它最開始的作用是安全研究員發現某類攻擊面或姿勢後,在內核里對該類漏洞進行「清掃」(fuzz)。2013年首次亮相時,Bochspwn在Windows內核、驅動程序里找到50個double fetch漏洞,對這類漏洞的宣傳科普起到了重要作用。

兩年後,字體處理漏洞泛濫現象嚴重,包括超級木馬Duqu、comex版iOS越獄、幾次Pwn2own比賽都使用了字體處理零日漏洞,安全會議上隨處可見相關討論。從用戶安全形度來考慮,情況非常不利。P0團隊希望解決這個問題,他們投入數千台機器,先後三次對Windows內核字體部分進行fuzz,整個過程特別複雜,不同階段、目標、文件格式需要單獨配置/定製,最後一年時間發現了16個字體處理嚴重漏洞,為Windows字體處理安全改進做出了很大貢獻。

字體fuzz輕車熟路後,2016年年底P0又盯上Windows文本編碼庫Uniscribe。Uniscribe此前鮮有人關注,但跑過一輪Bochspwn後「名聲」大漲,爆出29個漏洞。Uniscribe的成果表明,fuzz是一種通用性技術,其大部分組件對不同目標都可以重用。

和戰果累累的Bochspwn相比,Digtool稍顯稚嫩,它的優勢是在通用性、性能、效率上做得更好。

Bochspwn公開信息顯示支持識別double fetch、內核堆棧泄漏兩類漏洞(可能有所保留),Digtool則支持UNPROBE、TOCTTOU、UAF、OOB、參數未檢查、信息泄漏六種漏洞識別,並且很快將支持第七種未初始化堆棧;性能方面前文說過;效率上則是前兩方面帶來的綜合差距,Digtool有著碾壓式性能體驗,可以在運行正常工作任務的同時監控內存、分析識別漏洞,這是Bochspwn所無法做到的。

8月參加USENIX Security會議前,Digtool牛刀小試,在Windows上發現20個內核漏洞、5款殺毒軟體上發現41個驅動漏洞。因為監控和分析組件做得足夠好,Digtool甚至不用專門的fuzz,僅靠系統運行任務所產生的代碼覆蓋也能發現漏洞。

最後

經過五年開發和完善,Bochspwn已經成為漏洞挖掘領域的一面旗幟,它代表「人+機器」模式當前所能達到的最高水準。

Digtool還不夠成熟,它需要切實的成果來展示證明自己,而它的潛力顯然不止於此,未來將是Bochspwn強有力的挑戰者和超越者。

限於篇幅,本文僅介紹了Bochspwn、Digtool的部分模塊,以後有機會我們會展開講講裡邊的其它部分。

參考資料

嘶吼對@PJF的採訪

Digtool: A Virtualization-Based Framework for Detecting Kernel Vulnerabilities(Jianfeng Pan, Guanglu Yan, and Xiaocao Fan, IceSword Lab)

Identifying and Exploiting Windows Kernel Race Conditions via Memory Access Patterns(Mateusz Jurczyk, Gynvael Coldwind)

A year of Windows kernel font fuzzing #1: the results(Mateusz Jurczyk of Google Project Zero)

A year of Windows kernel font fuzzing #2: the techniques(Mateusz Jurczyk of Google Project Zero)

Notes on Windows Uniscribe Fuzzing(Mateusz Jurczyk of Google Project Zero)

Announcing Bochspwn Reloaded and my REcon Montreal 2017 slides

面向二進位程序的漏洞挖掘關鍵技術研究(王鐵磊)

自動化挖掘 windows 內核信息泄漏漏洞(fanxiaocao(@TinySecEx) and @pjf_ of IceSword Lab)

如若轉載,請註明原文地址: 4hou.com/info/observati 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

TAG:信息安全 |