在網(wǎng)絡(luò)攻擊環(huán)境下,這卻是可能發(fā)生的。當(dāng)一個攻擊者利用一個系統(tǒng)漏洞非法入侵進入到你的系統(tǒng)。當(dāng)你使用ps命令列出系統(tǒng)中的所有的進程時,卻看不到什么異常的證據(jù)。你查看你的password文件,一切也是那么的正常。到底發(fā)生了什么事情呢?當(dāng)系統(tǒng)進入到你的系統(tǒng)以后,第一步要做的事情就是取代系統(tǒng)上某些特定的文件:如netstat命令等。當(dāng)你使用netstat -a命令時,就不會顯示系統(tǒng)攻擊者存在的信息。當(dāng)然攻擊者將替代所有的可能泄露其存在的文件。一般來說包括:
|
由于這些文件已經(jīng)被取代。所以簡單的利用ls命令查看這些文件是看不出什么破綻的。有若干種方法你可以驗證系統(tǒng)文件的完整性。如果你安裝的是Red Hat, Caldera, TurboLinux或任何使用RPM的系統(tǒng)。你可以利用RPM來驗證系統(tǒng)文件的完整性:
首先你應(yīng)該查明你的那些你需要查看的文件來自哪個軟件包,使用rpm命令你可以查明某個文件屬于某個包:
|
然后,可以掃描整個rpm包來查看那些發(fā)生了改變。對沒有發(fā)生改變的包使用該命令將沒有任何輸出信息,如下所示:
|
將netstat的5.2版本的二進制可執(zhí)行文件替換為6.0的版本以后再使用該命令的結(jié)果為:
|
這說明/bin/netstat/文件已經(jīng)被修改。若我使用rpm -qf測試ps和top命令可以得到其屬于包procps,然后在驗證包procps的完整性。下面是一個被黑的站點的結(jié)果:
|
攻擊者入侵到系統(tǒng)中,并且用自己的ps及top命令替代了我們系統(tǒng)中的命令。從而使管理員看不到其運行的進程,也許是一個sniffer來監(jiān)聽所有的用戶所有進出網(wǎng)絡(luò)的數(shù)據(jù)并找尋到密碼信息。
下面是一個小的script來掃描你系統(tǒng)的所有的rpm庫,并檢查所有的包是否被篡改。但是應(yīng)該注意的是并不是所有該scripts報告的問題都是說明該系統(tǒng)文件被攻擊者破壞。例如你的apssword文件一般肯定和你安裝系統(tǒng)時是不同的:
|
當(dāng)你運行該scripts時,輸出被定向到文件/tmp/rpmverify.out你可以使用less命令查看該文件。但是由于文本文件如:/etc/passwd, /etc/inetd.conf等很可能顯示為被修改過。但是你如何知道這些是管理員自己修改的還是入侵者修改的呢方法是在你確保你的系統(tǒng)是干凈的,沒有被攻擊者入侵時,你為這些系統(tǒng)文件創(chuàng)建指紋信息。在你懷疑你的系統(tǒng)被入侵時使用這些這些指紋信息來判定系統(tǒng)是否被入侵。創(chuàng)建文件的指紋信息是通過命令md5sum 來實現(xiàn)的:
|
這些數(shù)據(jù)是我的系統(tǒng)上的文件的指紋信息。不同的系統(tǒng)上的文件的 指紋信息可能是不同的,你應(yīng)該是使用md5sum來計算自己系統(tǒng)文件的指紋信息。下面是一些你應(yīng)該創(chuàng)建指紋信息的文件;
|
通過指紋信息你可以決定是否有系統(tǒng)文件被修改。