【漏洞分析密技大公開】洞悉駭客的攻擊手法,防駭力就此大躍進!

【我們為什麼挑選這本書】行動網路的興起,使得軟體漏洞戰場漸漸從 PC 端轉移到行動端。駭客自首—極惡網路攻擊的內幕技巧 》這本書講解常見的系統及軟體漏洞的成因與攻擊方法,相信可以為從事軟體安全與行動安全相關領域的讀者,提高漏洞分析的能力。(責任編輯:賴佩萱)

作業系統是集眾多電腦專家的智慧所完成的人類重大工程,程式碼可能數億行,但孔子說過,人非聖賢,孰能無過,是人就會犯錯,那麼組成作業系統的數億行程式,當然也是充滿了人類無意(或有意)所犯下的錯。

網路世界處處充滿漏洞

同樣的道理,由人類所發明的網路系統架構,也是充滿了許多無意或有意的錯誤。這些錯誤也許是一些技術上的邏輯問題,但對整個系統來說,可能就造成了可以讓不相關的人進而控制這些系統,我們將這些錯誤通稱為漏洞(Exploit)。

當全世界有了數十億人、各行各業在使用這些系統時,這些可能微不足道的錯誤就會變得相對非常巨大。試這些系統所處的環境而定,小至個人隱私,大至金融、Utilities(水電瓦斯網路核電)、軍事、國防、國安等領域。

從前幫人偵錯俠義精神的駭客早就不復存在, 網路世界和真實世界早已合為一體,而虛擬貨幣的出現,讓整個網路世界和真實世界的金融體系完全相通 現今駭客的唯一目的就是拿到不勞而獲的暴利,全世界每一個人的錢包都是他們攻擊的目標

分析漏洞:攻擊 VS. 防禦

對於攻擊者,分析漏洞通常都是為了實現漏洞的利用,寫出更穩定的攻擊程式,之後可以用於入侵他人系統或出售。對於防禦者,分析漏洞主要為了弄清楚漏洞的成因與攻擊手法,以便制定出有效的漏洞檢測與防禦方案,幫助維護企業或單位的資訊安全。

也有未在上述兩種角色範圍的漏洞分析人員存在,例如純粹出於個人興趣進行漏洞研究的技術人員,甚至是非專業人員。當分析者的工作與漏洞掛勾後,其分析漏洞的出發點基本就是攻擊者或防禦者的角度。

如何進行「漏洞分析」?

通常我們會利用各式各樣的方法來分析漏洞,最常見的包括靜態分析、動態偵錯,如果有原始程式時,就會進行原始程式分析;有時候我們也會利用不同時間點的更新進行比較;如果能注入資料的話,最常見的就是污點追蹤。這本書就是圍繞在這幾個方式上。

1. 靜態漏洞分析

靜態分析是指 在無須執行程式的情況下,透過 IDA 或 JEB 等反組譯/反編譯工具逆向分析軟體,以掌握其程式執行的邏輯和功能,進一步找出存在安全缺陷的程式; 靜態分析漏洞有時工作量比較大,特別是對於比較龐大的軟體,例如 IE 瀏覽器。

如果只是為了分析某個函數的功能,定向的靜態分析會比較直接高效,但如果想弄清楚不同函數之間的關係,以及變數、傳回值或相互傳遞的參數,可能就需要結合動態偵錯執行程式去追蹤分析。

2. 動態偵錯

動態偵錯就是借助偵錯器追蹤程式的執行過程,包含執行中函數的呼叫關係、傳遞的參數變數和傳回值,以及堆疊的分配情況。 透過動態偵錯追蹤,可以層層回溯目前程式呼叫到的各個函數,有利於從觸發當機的函數往前回溯追蹤,更有目標性地分析,進一步加強分析效率 。大部分的情況下,為了完整高效率地分析軟體漏洞,會採用動靜態結合的分析方式。

3. 原始程式分析

當分析者手上擁有軟體原始程式的時候,就可以透過閱讀原始程式或原始程式偵錯來分析軟體, 對於自己開發的軟體或開放原始碼軟體(例如 Firefox、Chrome 等),採用原始程式分析的方式可能會更便於了解程式功能 ,但大部分的情況下,我們要分析的軟體都是閉源的,此時就得採用其他分析方式了。

4. 更新比較

對於一些大廠商,例如微軟、Adobe,它們每月的第二個星期二(台灣時間是星期三)都會聯合發佈更新,因此這一天也被稱為「微軟更新日」。在發佈的更新中,可能會修復許多未公開的 0 Day 漏洞。

為了發現其中的 0 Day,一些安全人員可能會對發佈的更新(修復程式)與被修復的原文件(漏洞程式)進行比對,找到其中被修改的地方,然後從差異之處發現被修復的漏洞 ,這種方法就叫更新比較,屬於靜態分析的一種方法。

5. 污點追蹤

污點追蹤是指 將外部輸入資料標記為污點,然後在程式動態執行過程中,追蹤污點的傳播過程 ,當污點被傳播到控制執行流程或執行程式中時,就可能導致安全性漏洞的發生,在漏洞採擷與分析中,污點追蹤的想法可能被用得較多。

在很多資訊安全專業的畢業設計中,經常見到污點追蹤的影子,其理論雖然挺好,也顯得高階,但實際上能夠做出較好成品的很少。

污點追蹤猶如「七傷拳」一般,「先傷己,再傷人」,開發污點追蹤工具,不僅費時費力,而且開發完成後,執行比較大的工具常常需要執行很長時間,例如 IE、Adobe 等軟體,有時甚至需要整整一天的時間。

一般是在漏洞位置比較隱蔽,其他分析方法無效或可能耗費過長時間的時候才使用,主要針對檔案格式漏洞 。另外,讀者也可利用 pin 等動態插樁架構開發出動態分析工具,針對特定函數掛鉤,例如堆積分配與釋放函數,根據不同的漏洞場景製作對應的動態追蹤工具,可能效果更佳,更具實戰價值。

(本文書摘內容出自《駭客自首—極惡網路攻擊的內幕技巧 》,由 深智數位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題。)

你可能會有興趣

點關鍵字看更多相關文章: