對(duì)于RootKit后門來說,大體上分為內(nèi)核級(jí)別和文件級(jí)別兩類。對(duì)于前者來說,其危害性尤為嚴(yán)重,因?yàn)槠錆B透進(jìn)入了系統(tǒng)內(nèi)核,卻沒有對(duì)系統(tǒng)文件進(jìn)行任何修改,所以普通的安全工具是無法察覺到其存在的。當(dāng)RootKit后門潛伏到系統(tǒng)內(nèi)核后,黑客就可以輕松的獲得系統(tǒng)底層的控制權(quán),甚至可以對(duì)系統(tǒng)內(nèi)核進(jìn)行修改,非法攔截外層程序向內(nèi)核提交的各種命令和數(shù)據(jù)。這樣黑客就可以通過重定向的方式,劫持用戶所要運(yùn)行的程序或者數(shù)據(jù),讓黑客預(yù)設(shè)的不法程序獲得運(yùn)行權(quán),來擾亂系統(tǒng)的正常運(yùn)作。
對(duì)于內(nèi)核級(jí)別的RootKit后門,其防御難度是比較大的,這就要求管理員提前最好各種應(yīng)對(duì)措施。例如使用權(quán)限最小化原則管理系統(tǒng),盡可能防止黑客獲取Root權(quán)限,避免其在系統(tǒng)內(nèi)核中安置RootKit后門。
對(duì)于文件型RootKit來說,其特點(diǎn)是采用“李代桃僵”的方式,通過非法替換系統(tǒng)重要文件來隱藏自己。當(dāng)黑客通過各種系統(tǒng)漏洞侵入系統(tǒng)后,會(huì)對(duì)正常的系統(tǒng)文件(例如各種命令程序:login、ls、netstat等)進(jìn)行非法替換操作,使RootKit后門程序得以冒稱正常的系統(tǒng)文件。
最常見的手法是對(duì)“/bin/log”文件進(jìn)行非法替換,該程序主要作用是對(duì)用戶提交的登錄賬戶和密碼進(jìn)行驗(yàn)證,因?yàn)椴还苁潜镜剡€是遠(yuǎn)程登錄,都會(huì)使用到該程序,黑客將“/bin/log”文件替換為包含特殊密碼信息的RootKit后門,而其管理登錄的正常功能沒有變化。這樣黑客就可以Root賬戶身份登錄系統(tǒng),即使管理員有所察覺,為Root賬戶更改了復(fù)雜的密碼,對(duì)黑客的登錄其實(shí)沒有任何影響。
當(dāng)然,黑客不滿足于替換某個(gè)系統(tǒng)文件,因?yàn)檫@樣的做的話很容易露出馬腳,所以黑客慣用的招數(shù)是對(duì)所有影響到其不法行為的系統(tǒng)文件都進(jìn)行替換。例如為了防止管理員運(yùn)行“ifconfig”、“find”、“netstat”等命令發(fā)現(xiàn)其活動(dòng)蹤跡,就會(huì)使用精心設(shè)計(jì)的RootKit程序?qū)@些文件全部進(jìn)行替換,這樣管理員僅僅依靠這些“叛變”后的系統(tǒng)命令,自然是無法察覺到黑客活動(dòng)的。
對(duì)于文件型RootKit木馬來說,最直接有效防御方法是使用Tripwire、Aide等工具,定期對(duì)系統(tǒng)文件進(jìn)行完整性檢測(cè),如果發(fā)現(xiàn)相關(guān)的系統(tǒng)出現(xiàn)異常變動(dòng),就說明RootKit很有可能嵌入了系統(tǒng)。
使用CHKrootkit這款工具,可以快速檢測(cè)Linux中是否存在RootKit后門,執(zhí)行“yum -y install gcc”、“yum -y install gcc-c++”、“yum -y install make”、“tar zxvf chkrootkit.tar.gz”,“cd chkrootkit-*”、“make sense”,“cd ..”、“cp -r chkrootkit-* /usr/local/chkrootkit”等命令,來安裝CHKrootkit以及所需的組件。執(zhí)行“/usr/local/chkrootkit”命令,就可以對(duì)系統(tǒng)進(jìn)行檢測(cè),如果在對(duì)應(yīng)系統(tǒng)文件或者命令后面顯示“INFECTED”字樣,就說明其已經(jīng)被RootKit后門所控制。
當(dāng)然,要想充分發(fā)揮該工具的功能,需要深入其各項(xiàng)運(yùn)行參數(shù)。例如“執(zhí)行/usr/local/chkrootkit -q”命令,實(shí)現(xiàn)安靜檢測(cè)模式,只顯示存在問題的項(xiàng)目。如果后跟“-l”參數(shù),可以顯示測(cè)試的內(nèi)容;如果后跟“-d”參數(shù),則進(jìn)入debug模式,會(huì)顯示檢測(cè)過程中使用到的相關(guān)命令;如果后跟“-x”參數(shù),則進(jìn)入高級(jí)檢測(cè)模式,顯示所有的檢測(cè)數(shù)據(jù);如果后跟“-r dir”參數(shù),可以將指定的目錄作為根目錄;如果后跟“-p dir”參數(shù),可以指定檢測(cè)時(shí)鎖使用到的系統(tǒng)命令所在的目錄;如果后跟“-n”參數(shù),可以跳過NFS連接的目錄。注意,在使用CHKrootkit時(shí),會(huì) 使 用 到一些相關(guān)的系統(tǒng)命令(例如awk、cut、find等),如果這些系統(tǒng)命令被RootKit耨們控制,自然會(huì)影響到檢測(cè)精度。
因此,最可靠的方法是在系統(tǒng)處于干凈狀態(tài)時(shí)(例如剛安裝完系統(tǒng)),將這些系統(tǒng)命令文件備份出來,便于在檢測(cè)時(shí)使用。例如執(zhí)行“cp ` which --skipalias awk cut echo find egrep id head ls netstat ps string sed uname` /var/cmdbeifen/”命令,將相關(guān)的命令備份到指定的目錄中,并忽略這些命令的別名而只顯示命令正常執(zhí)行的結(jié)果。為了便于保存,執(zhí)行“tar zcvf /usr/cmdbeifen.tar.gz /var/cmdbeifen/”之類的命令,將備份的所有文件打包壓縮。在執(zhí)行執(zhí)行檢測(cè)時(shí),可以執(zhí)行“/usr/local/chkrootkit -p /var/cmdbeifen/”之類的命令,使用這些純凈的系統(tǒng)命令,來執(zhí)行檢測(cè)操作,從而有效的保證檢測(cè)的精度。
同CHKrootkit相 比,RKHunter是一款功能強(qiáng)大的RootKit后門檢測(cè)工具,其可以通過執(zhí)行預(yù)設(shè)的腳本,來檢測(cè)系統(tǒng)中是否存在RootKit后門。
該工具可以利用MD5算法進(jìn)行檢測(cè)校驗(yàn),檢測(cè)文件內(nèi)容是否存在可疑變動(dòng),可以對(duì)系統(tǒng)文件和命令進(jìn)行掃描,發(fā)現(xiàn)其是否被RootKit非法利用。RKHunter可以檢測(cè)木馬的特征信息,對(duì)常用文件的屬性信息進(jìn)行分析,發(fā)現(xiàn)可能存在的問題,還可以檢測(cè)隱藏的文件,可疑的系統(tǒng)核心模塊,對(duì)開啟的網(wǎng)絡(luò)端口進(jìn)行監(jiān)控。
執(zhí) 行“tar -zxvf rhkunter-x.x.x.tar.gz”,“cd rhkunter-x.x.x.tar.gz”,
“./installer.sh --layout default --instal”等 命令,來安裝該工具,其中的“x.x.x”表示具體的版本號(hào)。以Root身份在命令行下執(zhí)行 運(yùn) 行“/usr/local/bin/rkhunter -c”命令,對(duì)系統(tǒng)進(jìn)行全面檢測(cè),其過程依次包括對(duì)系統(tǒng)二進(jìn)制命令進(jìn)行檢測(cè),確定是否被RootKit所控制。之后對(duì)常見的RootKit后門程序進(jìn)行掃描。
接下來執(zhí)行一些特殊的檢測(cè),包括重要的目錄,指定的系統(tǒng)內(nèi)核模塊,惡意程序等對(duì)象進(jìn)行掃描。之后對(duì)網(wǎng)絡(luò)端口、連接信息、啟動(dòng)文件、系統(tǒng)配置信息、登錄參數(shù)、文件系統(tǒng)等目標(biāo)進(jìn)行深入檢測(cè),來發(fā)現(xiàn)潛在的其中的RootKit程序。當(dāng)檢測(cè)完成后,會(huì)顯示詳細(xì)的報(bào)告信息,管理員借此可以全面了解系統(tǒng)的安全狀況。
為便于區(qū)別不同的檢測(cè)信息,該工具使用綠色表示安全的項(xiàng)目,紅色顯示存在危險(xiǎn)的項(xiàng)目。當(dāng)然,要想充分發(fā)揮該工具的功能,需要合理使用其各項(xiàng)運(yùn)行參數(shù)。例如可以對(duì)“/etc/crontab”文件進(jìn)行編輯,在其中添加“0 7 * * * /usr/local/bin/rkhunter -check--cronjob”行,讓該工具在每天的上午7點(diǎn)定時(shí)運(yùn)行。執(zhí)行“/usr/local/bin/rkhunter -summary”命令,顯示詳細(xì)的統(tǒng)計(jì)信息。執(zhí)行“/usr/local/bin/rkhunter--check -sk”命令,可以讓檢測(cè)過程連貫進(jìn)行。