一、簡介編程
漏洞研究主要分爲漏洞分析和漏洞挖掘兩部分。漏洞分析技術是指對已發現漏洞的細節進行深刻分析,爲漏洞利用、補救等處理措施作鋪墊。安全
漏洞挖掘技術是指對未知漏洞的探索,綜合各類應用各類技術和工具,儘量找出軟件中潛在的漏洞。網絡
二、漏洞挖掘技術分類架構
目前普遍應用的漏洞挖掘技術能夠分爲兩類:函數
2.一、靜態代碼審計工具
在路由器漏洞挖掘技術中,因爲系統的封閉性,因此基本上是得不到源代碼的。可使用IDA等彙編工具幫助咱們將二進制代碼轉換爲可讀性更好的彙編代碼,以便對代碼進行彙編層次的審計。測試
2.1.一、人工代碼審計spa
一般對路由器進行人工審計,須要具有審覈人員熟悉二進制、多種彙編語言、操做系統底層的知識。通常採用的步驟爲:操作系統
(1)使用IDA對目標程序進行反彙編。插件
(2)搜索可能形成安全漏洞的危險函數。
(3)跟蹤危險函數如何提取和處理用戶提供的數據的過程,判斷是否存在安全漏洞。
1、可能形成安全漏洞的函數
(1)部分用戶提供數據來源的相關函數
命令行參數:argv操做。
環境變量:getenv()。
輸入數據文件:read()、fscanf()、getc()、fgetc()、fgets()、vfscanf()。
鍵盤輸入/stdin:read()、scanf()、getchar()、gets()。
網絡數據:read()、recv()、recvfrom()。
(2)部分數據操做相關的危險函數
字符串複製:strcpy()、strncpy()。
命令執行:system()、execve()系列。
字符串合併:strcat()。
格式化字符串:sprintf()、snprintf()。
二、跟蹤和分析方法
既然咱們已經知道了哪些函數是可能形成安全漏洞的危險函數,接下來咱們須要定位到危險函數以及如何跟蹤其參數列表。根據危險函數類別的不一樣,提供了兩種跟蹤分析方法:
(1)正向數據流跟蹤
適用於用戶數據輸入類型的危險函數跟蹤。從用戶輸入點(用戶數據輸入函數)開始跟蹤數據處理過程當中數據會對程序邏輯形成何種影響,從而判斷是否形成可利用的安全漏洞。
(2)數據處理逆向流跟蹤
適用於數據操做類型的危險函數跟蹤。跟蹤常見的數據操做危險函數,反向跟蹤函數參數的數據流向,找出源緩衝區和目的緩衝區,肯定輸入數據是否會形成安全漏洞。
這兩種方法各有利弊。正向跟蹤的流程稍顯複雜、分支較多、跟蹤難度大,可是覆蓋全面,能夠找到全部可能的安全漏洞。而逆向跟蹤的數據構造較容易、流程比較肯定,卻容易遺漏漏洞,覆蓋面不廣。
2.1.二、二進制自動化漏洞審計
要想實現對二進制文件潛在漏洞審計的自動化,必須理解二進制文件是哪種可執行文件格式,理解其使用的機器語言指令,而且可以經過對指令流和數據流的分析肯定指令所執行的動做是否可被利用。
二進制文件漏洞自動化審計工具的主要難題集中在如何準確地描述致使漏洞條件的行爲特徵上。這類行爲包括越界訪問分配的內存(棧或堆內存)、使用未初始化的變量或直接將用戶輸入傳給危險函數。要想完成這些任務中的任何一個,自動化分析工具都必須可以精確計算索引變量或指針的值的範圍,追蹤程序使用的用戶輸入的處理流程,並跟蹤程序引用的全部變量的初始化代碼。最後,爲了作到真正有效,還必須可以可靠地執行以上全部任務。
一、BugScam工具
BugScam是Halvar Flake編寫的一組用於IDA Pro的腳本。
IDA Pro具備兩個異常強大的功能,即腳本編程和插件架構。這兩個功能均可以讓用戶擴展IDA Pro的功能,並利用IDA Pro對目標二進制代碼進行大量分析。
BugScam工具會掃描那些每每會致使可被利用漏洞條件的潛在的不安全函數。並且會嘗試執行一些初步的數據流分析,以便更準確地判斷這些不安全函數是否真的能夠被利用。
BugScam工具會在掃描完成後生產一份HTML報告,其中包含潛在問題所處的虛擬地址,以及掃描發現的問題。
BugScam工具在x86平臺上的運行效果仍是不錯的,可是存在必定侷限性。不能審計MIPS指令系統的應用程序,並且誤報率和漏報率仍是稍微高一些。可是能夠將其移植到MIPS系統中。
具體玩法,等之後測試過在寫。
2.二、模糊測試Fuzzing
模糊測試的是一種介於徹底的手工滲透測試與徹底自動化測試本身的安全性黑盒測試類型。測試過程大體分爲5個階段。