常見的漏洞挖掘分析技術有:
人工分析
人工分析是一種灰盒分析技術。針對被分析目標程序,手工構造特殊輸入條件,觀察輸出、目標狀態變化等,獲得漏洞的分析技術。輸入包括有效的和無效的輸入,輸出包括正常輸出和非正常輸出。非正常輸出是漏洞出現的前提,或者就是目標程序的漏洞。非正常目標狀態的變化也是發現漏洞的預兆,是深入挖掘的方向。人工分析高度依賴于分析人員的經驗和技巧。人工分析多用于有人機交互界面的目標程序,Web漏洞挖掘中多使用人工分析的方法。
Fuzzing技術
Fuzzing技術是一種基于缺陷注入的自動軟件測試技術,它利用黑盒分析技術方法,使用大量半有效的數據作為應用程序的輸入,以程序是否出現異常為標志,來發現應用程序中可能存在的安全漏洞。半有效數據是指被測目標程序的必要標識部分和大部分數據是有效的,有意構造的數據部分是無效的,應用程序在處理該數據時就有可能發生錯誤,可能導致應用程序的崩潰或者觸發相應的安全漏洞。
Fuzzer軟件可以用于檢測多種安全漏洞,包括緩沖區溢出漏洞、整型溢出漏洞、格式化字符串和特殊字符漏洞、競爭條件和死鎖漏洞、SQL注入、跨站腳本、RPC漏洞攻擊、文件系統攻擊、信息泄露等。與其它技術相比,Fuzzing技術具有思想簡單,容易理解、從發現漏洞到漏洞重現容易、不存在誤報的優點。
同時它也存在黑盒分析的全部缺點,而且具有不通用、構造測試周期長等問題。常用的Fuzzer軟件包括SPIKE Proxy、Peach Fuzzer Framework、Acunetix Web Vulnerability Scanner的HTTP Fuzzer、OWASP JBroFuzz、WebScarab等。
補丁比對技術
補丁比對技術主要用于黑客或競爭對手找出軟件發布者已修正但未尚公開的漏洞,是黑客利用漏洞前經常使用的技術手段。
安全公告或補丁發布說明書中一般不指明漏洞的準確位置和原因,黑客很難僅根據該聲明利用漏洞。黑客可以通過比較打補丁前后的二進制文件,確定漏洞的位置,再結合其他漏洞挖掘技術,即可了解漏洞的細節,最后可以得到漏洞利用的攻擊代碼。簡單的比較方法有二進制字節和字符串比較、對目標程序逆向工程后的比較兩種。
常用的補丁比對工具有Beyond Compare、IDACompare、Binary Diffing Suite(EBDS)、BinDiff、NIPC Binary Differ(NBD)。此外大量的高級文字編輯工具也有相似的功能,如Ultra Edit、HexEdit等。這些補丁比對工具軟件基于字符串比較或二進制比較技術。
靜態分析技術
靜態分析技術是對被分析目標的源程序進行分析檢測,發現程序中存在的安全漏洞或隱患,是一種典型的白盒分析技術。它的方法主要包括靜態字符串搜索、上下文搜索。
靜態分析過程主要是找到不正確的函數調用及返回狀態,特別是可能未進行邊界檢查或邊界檢查不正確的函數調用,可能造成緩沖區溢出的函數、外部調用函數、共享內存函數以及函數指針等。對開放源代碼的程序,通過檢測程序中不符合安全規則的文件結構、命名規則、函數、堆棧指針可以發現程序中存在的安全缺陷。
被分析目標沒有附帶源程序時,就需要對程序進行逆向工程,獲取類似于源代碼的逆向工程代碼,然后再進行搜索。使用與源代碼相似的方法,也可以發現程序中的漏洞,這類靜態分析方法叫做反匯編掃描。
由于采用了底層的匯編語言進行漏洞分析,在理論上可以發現所有計算機可運行的漏洞,對于不公開源代碼的程序來說往往是最有效的發現安全漏洞的辦法。但這種方法也存在很大的局限性,不斷擴充的特征庫或詞典將造成檢測的結果集大、誤報率高;同時此方法重點是分析代碼的”特征”,而不關心程序的功能,不會有針對功能及程序結構的分析檢查。
動態分析技術
動態分析技術起源于軟件調試技術,是用調試器作為動態分析工具,但不同于軟件調試技術的是它往往處理的是沒有源代碼的被分析程序,或是被逆向工程過的被分析程序。動態分析需要在調試器中運行目標程序,通過觀察執行過程中程序的運行狀態、內存使用狀況以及寄存器的值等以發現漏洞。
一般分析過程分為代碼流分析和數據流分析。代碼流分析主要是通過設置斷點動態跟蹤目標程序代碼流,以檢測有缺陷的函數調用及其參數。數據流分析是通過構造特殊數據觸發潛在錯誤。比較特殊的,在動態分析過程中可以采用動態代碼替換技術,破壞程序運行流程、替換函數入口、函數參數,相當于構造半有效數據,從而找到隱藏在系統中的缺陷。常見的動態分析工具有SoftIce、OllyDbg、WinDbg等。
典型技術應用
使用Acunetix Web Vulnerability Scanner軟件進行漏洞挖掘,該軟件提供了一些預定義好的Fuzz運算參數庫,可以便于初學者上手,也可以方便分析者使用。過程如下:
定義HTTP請求(Request),即定義所需訪問的網頁URL;
定義運算參數(Add generator),即定義可能產生漏洞的字符串表達式,如:查找$password、$passwd、$token;
插入運算參數(Insert into request),即將定義好的多條運算參數綁定為一條搜索策略;
定義成功觸發特征(Fuzzer Filters),將運算參數與HTTP請求綁定;
掃描(Start);
等待軟件返回匹配的項,這些項就是可能的漏洞。
經過以上步驟,一個網頁中可能存在的漏洞就被發現了。
回答所涉及的環境:聯想天逸510S、Windows 10。
常見的漏洞挖掘分析技術有:
人工分析
人工分析是一種灰盒分析技術。針對被分析目標程序,手工構造特殊輸入條件,觀察輸出、目標狀態變化等,獲得漏洞的分析技術。輸入包括有效的和無效的輸入,輸出包括正常輸出和非正常輸出。非正常輸出是漏洞出現的前提,或者就是目標程序的漏洞。非正常目標狀態的變化也是發現漏洞的預兆,是深入挖掘的方向。人工分析高度依賴于分析人員的經驗和技巧。人工分析多用于有人機交互界面的目標程序,Web漏洞挖掘中多使用人工分析的方法。
Fuzzing技術
Fuzzing技術是一種基于缺陷注入的自動軟件測試技術,它利用黑盒分析技術方法,使用大量半有效的數據作為應用程序的輸入,以程序是否出現異常為標志,來發現應用程序中可能存在的安全漏洞。半有效數據是指被測目標程序的必要標識部分和大部分數據是有效的,有意構造的數據部分是無效的,應用程序在處理該數據時就有可能發生錯誤,可能導致應用程序的崩潰或者觸發相應的安全漏洞。
Fuzzer軟件可以用于檢測多種安全漏洞,包括緩沖區溢出漏洞、整型溢出漏洞、格式化字符串和特殊字符漏洞、競爭條件和死鎖漏洞、SQL注入、跨站腳本、RPC漏洞攻擊、文件系統攻擊、信息泄露等。與其它技術相比,Fuzzing技術具有思想簡單,容易理解、從發現漏洞到漏洞重現容易、不存在誤報的優點。
同時它也存在黑盒分析的全部缺點,而且具有不通用、構造測試周期長等問題。常用的Fuzzer軟件包括SPIKE Proxy、Peach Fuzzer Framework、Acunetix Web Vulnerability Scanner的HTTP Fuzzer、OWASP JBroFuzz、WebScarab等。
補丁比對技術
補丁比對技術主要用于黑客或競爭對手找出軟件發布者已修正但未尚公開的漏洞,是黑客利用漏洞前經常使用的技術手段。
安全公告或補丁發布說明書中一般不指明漏洞的準確位置和原因,黑客很難僅根據該聲明利用漏洞。黑客可以通過比較打補丁前后的二進制文件,確定漏洞的位置,再結合其他漏洞挖掘技術,即可了解漏洞的細節,最后可以得到漏洞利用的攻擊代碼。簡單的比較方法有二進制字節和字符串比較、對目標程序逆向工程后的比較兩種。
常用的補丁比對工具有Beyond Compare、IDACompare、Binary Diffing Suite(EBDS)、BinDiff、NIPC Binary Differ(NBD)。此外大量的高級文字編輯工具也有相似的功能,如Ultra Edit、HexEdit等。這些補丁比對工具軟件基于字符串比較或二進制比較技術。
靜態分析技術
靜態分析技術是對被分析目標的源程序進行分析檢測,發現程序中存在的安全漏洞或隱患,是一種典型的白盒分析技術。它的方法主要包括靜態字符串搜索、上下文搜索。
靜態分析過程主要是找到不正確的函數調用及返回狀態,特別是可能未進行邊界檢查或邊界檢查不正確的函數調用,可能造成緩沖區溢出的函數、外部調用函數、共享內存函數以及函數指針等。對開放源代碼的程序,通過檢測程序中不符合安全規則的文件結構、命名規則、函數、堆棧指針可以發現程序中存在的安全缺陷。
被分析目標沒有附帶源程序時,就需要對程序進行逆向工程,獲取類似于源代碼的逆向工程代碼,然后再進行搜索。使用與源代碼相似的方法,也可以發現程序中的漏洞,這類靜態分析方法叫做反匯編掃描。
由于采用了底層的匯編語言進行漏洞分析,在理論上可以發現所有計算機可運行的漏洞,對于不公開源代碼的程序來說往往是最有效的發現安全漏洞的辦法。但這種方法也存在很大的局限性,不斷擴充的特征庫或詞典將造成檢測的結果集大、誤報率高;同時此方法重點是分析代碼的”特征”,而不關心程序的功能,不會有針對功能及程序結構的分析檢查。
動態分析技術
動態分析技術起源于軟件調試技術,是用調試器作為動態分析工具,但不同于軟件調試技術的是它往往處理的是沒有源代碼的被分析程序,或是被逆向工程過的被分析程序。動態分析需要在調試器中運行目標程序,通過觀察執行過程中程序的運行狀態、內存使用狀況以及寄存器的值等以發現漏洞。
一般分析過程分為代碼流分析和數據流分析。代碼流分析主要是通過設置斷點動態跟蹤目標程序代碼流,以檢測有缺陷的函數調用及其參數。數據流分析是通過構造特殊數據觸發潛在錯誤。比較特殊的,在動態分析過程中可以采用動態代碼替換技術,破壞程序運行流程、替換函數入口、函數參數,相當于構造半有效數據,從而找到隱藏在系統中的缺陷。常見的動態分析工具有SoftIce、OllyDbg、WinDbg等。
典型技術應用
使用Acunetix Web Vulnerability Scanner軟件進行漏洞挖掘,該軟件提供了一些預定義好的Fuzz運算參數庫,可以便于初學者上手,也可以方便分析者使用。過程如下:
定義HTTP請求(Request),即定義所需訪問的網頁URL;
定義運算參數(Add generator),即定義可能產生漏洞的字符串表達式,如:查找$password、$passwd、$token;
插入運算參數(Insert into request),即將定義好的多條運算參數綁定為一條搜索策略;
定義成功觸發特征(Fuzzer Filters),將運算參數與HTTP請求綁定;
掃描(Start);
等待軟件返回匹配的項,這些項就是可能的漏洞。
經過以上步驟,一個網頁中可能存在的漏洞就被發現了。
回答所涉及的環境:聯想天逸510S、Windows 10。