1、 關於rootkit
rootkit是Linux平台下最常見的一種木馬后門工具,它主要通過替換系統文件來達到入侵和和隱蔽的目的,這種木馬比普通木馬后門更加危險和隱蔽,普通的檢測工具和檢查手段很難發現這種木馬。
rootkit攻擊能力極強,對系統的危害很大,它通過一套工具來建立后門和隱藏行跡,從而讓攻擊者保住權限,以使它在任何時候都可以使用root 權限登錄到系統。
rootkit主要有兩種類型:文件級別和內核級別。
文件級別的rootkit: 一般是通過程序漏洞或者系統漏洞進入系統后,通過修改系統的重要文件來達到隱藏自己的目的。在系統遭受rootkit攻擊后,合法的文件被木馬程序替代,變成了外殼程序,而其內部是隱藏着的后門程序。
通常容易被rootkit替換的系統程序有login、ls、ps、ifconfig、du、find、netstat等。文件級別的rootkit,對系統危害很大,目前最有效的防御方法是定期對系統重要文件的完整性進行檢查,如Tripwire、aide等。
內核級rootkit: 是比文件級rootkit更高級的一種入侵方式,它可以使攻擊者獲得對系統底層的完全控制權,此時攻擊者可以修改系統內核,進而截獲運行程序向內核提交的命令,並將其重定向到入侵者所選擇的程序並運行此程序。
內核級rootkit主要依附在內核上,它並不對系統文件做任何修改。以防范為主。一般系統鏡像要從官網或可信度高的網站下載鏡像。
2、 RKHunter
rkhunter是Linux系統平台下的一款開源入侵檢測工具,具有非常全面的掃描范圍,除了能夠檢測各種已知的rootkit特征碼以外,還支持端口掃描、常用程序文件的變動情況檢查。
通過一系列腳本來確認服務器是否已經感染rootkit,主要執行以下測試:
1)MD5校驗測試, 檢測文件是否被改動。
2)檢測rootkits使用的二進制和系統工具文件。
3)檢測特洛伊木馬程序的特征碼。
4)檢測常用程序的文件異常屬性。
5)檢測系統相關。如:啟動文件、系統用戶和組配置、ssh配置、文件系統等。
6)檢測隱藏文件、/etc/rc.d/目錄下的所有配置文件、日志文件等。
7)檢測Linux內核監控模塊:驅動模塊(LKM)。
8)檢測系統已經啟動的監聽端口:掃描任何混雜模式下的接口和后門程序常用的端口。
9)檢測應用程序版本,如: Apache Web Server, Procmail等。
10)檢測網絡。
1、編譯安裝rkhunter
yum -y install gcc gcc-c++ make cmake glibc-static glibc-utils wget https://jaist.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.6/rkhunter-1.4.6.tar.gz tar zxvf rkhunter-1.4.6.tar.gz cd rkhunter-1.4.6 ./installer.sh --install
2.為基本系統程序建立校對樣本,建議系統安裝完成后就建立。
rkhunter --propupd # 創建樣本 ls /var/lib/rkhunter/db/rkhunter.dat #樣本文件位置
3、rkhunter的使用及檢測輸出信息說明
執行檢測命令:
rkhunter --check
如果您不想要每個部分都以 Enter 來繼續,想要讓程序自動持續執行,可以使用:
rkhunter --check –sk
檢測過程會分為幾部分
##第一部分:檢測系統命令,主要檢測系統的二進制文件,這些文件最容易被rootkit攻擊;
#[ OK ]表示正常,[ Warning ]表示有異常,[ None found ]未找到
##第二部分:檢測rootkit,主要檢測常見的rootkit程序;
#[ Not found ]表示未感染
##第三部分:特殊或附加檢測:對rootkit文件或目錄檢測、對惡意軟件檢測、對指定內核檢測等
##第四部分:檢測網絡、系統端口、系統啟動文件、系統用戶和組配置、ssh配置、文件系統等
##第五部分:應用程序版本檢測
##第六部分:總結服務器目前的安全狀態
4.在線升級rkhunter
rkhunter是通過一個含有rootkit名字的數據庫來檢測系統的rootkits漏洞, 所以經常更新該數據庫非常重要, 你可以通過下面命令來更新該數據庫:
rkhunter --update
5.檢測最新版本
讓 rkhunter 保持在最新的版本;
rkhunter --versioncheck
6.rkhunter其它用法:自動自行、定向任務執行等
自動執行程序:
rkhunter --check --skip-keypress
加入定時任務:
crontab -e 10 03 * * * /usr/bin/rkhunter --check --skip-keypress >/home/check_rkhunter/chk.txt
3、 chkrookit
1、編譯安裝chkrookit
yum -y install gcc gcc-c++ make cmake glibc-static glibc-utils wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz #下載軟件包 tar zxvf chkrootkit.tar.gz make sense #注意,此處為make sense
2、chkrookit的使用
1)Usage: ./chkrootkit [options] [test ...]
Options:
-h 顯示幫助信息
-V 顯示版本信息
-l 顯示測試內容
-d debug模式,顯示檢測過程的相關指令程序
-q 安靜模式,只顯示有問題部分,
-x 高級模式,顯示所有檢測結果
-r dir 設定指定的目錄為根目錄
-p dir1:dir2:dirN 檢測指定目錄
-n 跳過NFS連接的目錄
2)檢測:直接執行chkrootkit命令即可檢測系統
./chkrootkit |grep INFECTED
3)指定使用備份的系統工具檢測:
-p 指定通過哪個檢測路徑檢測
chkrootkit -p /usr/bin/ chkrootkit -p /usr/share/ | grep INFECTED
4、解決思路
如果您的系統經過 rkhunter 的檢測之后,卻發現很多的『紅字』時,該怎么辦?
基本上,官方網站與一般網管老手的建議都一樣,如果被 rootkit 之類的程序包攻擊后 ( 也就是上一節的檢測表中的第二部分所攻擊時 ),那么最好直接重新安裝系統, 不要存在說可以移除 rootkit 或者木馬程序的幻想,因為,『隱藏』本來就是 rootkit 與木馬程序的拿手好戲! 我們不知道到底這個 rootkit 或者木馬程序有多剽悍,為了保險起見,還是重灌系統吧!如何重灌?簡單的說:
1.將原主機的網絡線拔除;
2.備份您的數據,最好備份成兩部分,一部份是全部的系統內容,越詳盡越好,包括 binary files 與 logfile 等等, 至於另一部份則可以考慮僅備份重要的數據文件即可!
3.將上個步驟的數據備份(僅重要數據部分!)進行整體的檢查,查看是否有怪異的數據存在(這部分可能會花去不少時間!)
4.重新安裝一部完整的系統,這包括:
o僅安裝需要的套件在服務器上面;
o先進行 簡單的防火牆 設定后才進行聯機;
o以 APT/YUM 之類的工具進行在線更新;
o執行類似 rkhunter/nessus 之類的軟件,檢驗系統是否處在較為安全的狀態
5.將原本的重要數據移動至上個步驟安裝好的系統當中,並啟動原本服務器上面的各項服務;
6.以 rkhunter/nessus 之類的軟件檢驗系統是否處在較為安全的環境,並且加強防火牆的機制!
7.最后,將原本完整備份的數據拿出來進行分析,尤其是 logfile 部分,試圖找出 cracker 是那個服務?那個時間點? 以那個遠程 IP 聯機進入本機等等的信息,並針對該信息研擬預防的方法,並應用在已經運作的機器上。
備份chkrootkit使用的系統命令
chkrootkit在檢測rootkit時使用部分系統命令,如果系統被入侵,那么依賴的系統命令也可能已經被入侵者替換,從而導致檢測結果不可信。
所以在服務器對外開放前,建議事先備份chkrootkit使用的系統命令,在chkrootkit做系統檢測時使用備份的原始系統命令對rootkit進行檢測可以保證結果可信度。
以下是具體步驟:
#復制系統命令 cp `which ssh awk cut echo find egrep id head ls netstat ps strings sed uname` ./commands #壓縮檢測用到的系統工具並備份到安全目錄 tar zcvf commands.tar.gz ./commands sz commands.tar.gz # 下載到本機 rm -rf commands.tar.gz