萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> 自由組合:Linux下攻擊軟件大荟萃

自由組合:Linux下攻擊軟件大荟萃

class="152961"> 現在,大量的網絡服務器開始使用Linux操作系統,Linux服務器的安全性也開始受到關注。對Linux服務器攻擊的定義是:攻擊是一種旨在妨礙、損害、削弱、破壞Linux服務器安全的未授權行為,攻擊的范圍可以從服務拒絕直至完全危害和破壞Linux服務器。對Linux服務器攻擊有許多種類,從攻擊深度的角度說明,我們可以把攻擊分為四級:服務拒絕攻擊(DoS)、本地用戶獲取了非授權的文件的讀寫權限、遠程用戶獲得特權文件的讀寫權限、遠程用戶獲得根權限。下面,我們將選取一些有針對性的經典工具,一一加以說明。

1、溢出:從開源代碼開始

Linux系統中最常見的缺陷就是緩沖區溢出,緩沖區以前可能被定義為“包含相同數據類型的實例的一個連續計算機內存塊”。極其常見的緩沖區種類是簡單的字符數組,溢出就是數據被添加到分配給該緩沖區的內存塊之外。由此,我們可以看到,作為開源系統,Linux系統中的代碼檢查就顯得十分重要。對於攻擊者和管理員來說,誰首先重視它,就在一定程度上取得了主動權。

(1)SPIKE

SPIKE是immunitysec公司的Dave Aitel寫的一個黑盒進行安全測試的工具。SPIKE提供了各種各樣的構造函數。例如s_binary可以構造二進制數據,s_string可以構造字符串,s_unistring可以構造UNICODE字符串等。SPIKE的另一個優勢是Dave Aitel的Fuzz理論,它可以構造一些特殊的數字或者字符串作為程序的輸入,檢查程序是否能夠處理這些異常數據。此外,SPIKE裡邊提供了常見的協議支持,例如SUN RPC和MS RPC。


(2)Lint

Lint能夠檢查的部分錯誤列表:可能的空指針;在釋放內存之後使用了該指針;賦值次序問題;拼寫錯誤等。通常,一個C/C++的編譯器假設程序是正確的,而Lint恰恰相反,因此,它優於編譯器執行的一般性檢查。Lint還可以貫穿多個文件來執行它的錯誤檢查和代碼分析,這是編譯器做不到的。比較流行的Lint 程序有:PC-lint是一個由Gimpel Software提供的支持C/C++的商用程序;Splint (原來的 LCLint) 是一個GNU免費授權的 Lint程序,但是只支持C不支持C++。

運行 Lint時,和正常的編譯器一樣,只要把直接加入的makefile 中就可以了。通過配置選項、代碼注釋等方法可以控制和校准Lint的輸出。例如,這裡有一個返回NULL指針的函數,Splint可以通過下面的注釋 /*@null@*/ 來識別:

/*@null@*/ void *test(void)
{
// a function that returns NULL!
return NULL;
}

這樣做有兩個目的:防止Splint為這個返回Null指針的函數告警;保證Splint 檢查任何調用該函數的代碼中使用該函數的返回指針是有效的。

(3)Flawfinder

Flawfinder 是一款用Python編寫的c、c++程序安全審核工具,可以檢查潛在的安全風險。它通過搜索檢測文件源代碼從而得到潛在的安全漏洞,支持檢測數據庫,以HTML格式生成報告。

copyright © 萬盛學電腦網 all rights reserved