一(yī)般情況下(xià),安全掃描器(qì)具備三項功能(néng),下(xià)面上(shàng)海觀初帶大家一(yī)起看(kàn)看(kàn)吧(ba):
● 發現Internet上(shàng)的一(yī)個(gè)網絡或者一(yī)台主機(jī);
● 一(yī)旦發現一(yī)台主機(jī),能(néng)發現其上(shàng)所運行的服務類型;
● 通(tōng)過對這些服務的測試,可以發現存在的已知漏洞,并給出修補建議。
源代碼掃描
源代碼掃描主要針對開(kāi)放(fàng)源代碼的程序,通(tōng)過檢查程序中不符合安全規則的文件(jiàn)結構、命名規則、函數、堆棧指針等,進而發現程序中可能(néng)隐含的安全缺陷。這種漏洞分析技(jì)術(shù)需要熟練掌握編程語言,并預先定義出不安全代碼的審查規則,通(tōng)過表達式匹配的方法檢查源程序代碼。
由于程序運行時是動态變化的,如果不考慮函數調用的參數和調用環境,不對源代碼進行詞法分析和語法分析,就(jiù)沒有辦法準确地把握程序的語義,因此這種方法不能(néng)發現程序動态運行過程中的安全漏洞。
反彙編掃描
反彙編掃描對于不公開(kāi)源代碼的程序來說往往是很有效的發現安全漏洞的辦法。分析反彙編代碼需要有豐富的經驗,也可以使用輔助工(gōng)具來幫助簡化這個(gè)過程,但不可能(néng)有一(yī)種完全自(zì)動的工(gōng)具來完成這個(gè)過程。例如,利用一(yī)種的反彙編程序IDA(www.datarescue.com)就(jiù)可以得到(dào)目标程序的彙編腳本語言,再對彙編出來的腳本語言進行掃描,進而識别一(yī)些可疑的彙編代碼序列。
通(tōng)過反彙編來尋找系統漏洞的好處是,從(cóng)理論上(shàng)講,不論多(duō)麽複雜(zá)的問題總是可以通(tōng)過反彙編來解決。它的缺點也是顯然的,這種方法費(fèi)時費(fèi)力,對人員(yuán)的技(jì)術(shù)水(shuǐ)平要求很高(gāo),同樣不能(néng)檢測到(dào)程序動态運行過程中産生(shēng)的安全漏洞。
環境錯(cuò)誤注入
由程序執行是一(yī)個(gè)動态過程這個(gè)特點,不難看(kàn)出靜(jìng)态的代碼掃描是不完備的。環境錯(cuò)誤注入是一(yī)種比較成熟的軟件(jiàn)測試方法,這種方法在協議安全測試等領域中都已經得到(dào)了很好的應用。
系統通(tōng)常由“應用程序”和“運行環境”組成。由于各種原因,程序員(yuán)總是假定認為(wèi)他們的程序會(huì)在正常環境中正常地運行。當這些假設成立時,他們的程序當然是正确運行的。但是,由于作為(wèi)共享資源的環境,常常被其他主體所影響,尤其是惡意的用戶,這樣,程序員(yuán)的假設就(jiù)可能(néng)是不正确的。程序是否能(néng)夠容忍環境中的錯(cuò)誤是影響程序健壯性的一(yī)個(gè)關鍵問題。
錯(cuò)誤注入,即在軟件(jiàn)運行的環境中故意注入人為(wèi)的錯(cuò)誤,并驗證反應——這是驗證計算(suàn)機(jī)和軟件(jiàn)系統的容錯(cuò)性、可靠性的一(yī)種有效方法。在測試過程中,錯(cuò)誤被注入到(dào)環境中,所以産生(shēng)了幹擾。換句話,在測試過程中幹擾軟件(jiàn)運行的環境,觀察在這種幹擾情況下(xià)程序如何反應,是否會(huì)産生(shēng)安全事(shì)件(jiàn),如果沒有,就(jiù)可以認為(wèi)系統是安全的。概言之,錯(cuò)誤注入方法就(jiù)是通(tōng)過選擇一(yī)個(gè)适當的錯(cuò)誤模型試圖觸發程序中包含的安全漏洞。
在真實情況下(xià),觸發某些不正常的環境是很困難的,知道如何觸發依賴于測試者的有關“環境”方面的知識。所以,在異常的環境下(xià)測試軟件(jiàn)安全變得困難。錯(cuò)誤注入技(jì)術(shù)提供了一(yī)種模仿異常環境的方法,而不必關心實際中這些錯(cuò)誤如何發生(shēng)。
軟件(jiàn)環境錯(cuò)誤注入分析還(hái)依賴于操作系統中已知的安全缺陷,也就(jiù)是說,對一(yī)個(gè)軟件(jiàn)進行錯(cuò)誤注入分析時,要充分考慮到(dào)操作系統本身所存在的漏洞,這些操作系統中的安全缺陷可能(néng)會(huì)影響到(dào)軟件(jiàn)本身的安全。所以選擇一(yī)個(gè)适當的錯(cuò)誤模型來觸發程序中所隐含的安全漏洞是非常重要的。我們需要選擇一(yī)個(gè)适當的錯(cuò)誤模型,能(néng)夠高(gāo)水(shuǐ)平地模拟真實的軟件(jiàn)系統,然後分析漏洞數據庫記錄的攻擊者利用漏洞的方法,把這些利用變為(wèi)環境錯(cuò)誤注入,從(cóng)而縮小(xiǎo)在測試過程中錯(cuò)誤注入和真實發生(shēng)的錯(cuò)誤之間的差異。
總結
這裡(lǐ)介紹的幾種漏洞檢測的方法,其中安全掃描技(jì)術(shù)主要是針對已知漏洞的檢測,後面三種主要是針對未知漏洞的檢測。對于未知漏洞的檢測,源代碼掃描(包括反彙編掃描)屬于靜(jìng)态檢測技(jì)術(shù),而環境錯(cuò)誤注入法屬于動态檢測技(jì)術(shù)。
另外,換個(gè)視角來看(kàn),源代碼掃描(包括反彙編掃描)類似于白(bái)盒測試,它檢測軟件(jiàn)系統源碼中可能(néng)存在的問題;環境錯(cuò)誤注入方法類似于黑(hēi)盒測試,它不關注代碼的問題,而是通(tōng)過對程序運行環境的幹擾,關注運行程序對于注入錯(cuò)誤的反應,以便從(cóng)程序外圍發現問題。
漏洞檢測的目的在于發現漏洞,修補漏洞,進而從(cóng)根本上(shàng)提高(gāo)信息系統的安全性,以緻從(cóng)根本上(shàng)減少安全事(shì)件(jiàn)的發生(shēng)。
以上(shàng)就(jiù)是上(shàng)海觀初和大家分享的内容,希望能(néng)夠幫助到(dào)大家。還(hái)有想了解的持續關注我們!