天天看點

Linux平台下高隐匿、高威脅性木馬rootkit的檢測和防範

作者:網際網路螞蟻哥

一、關于linux下的rootkit

近些年來,在網絡安全攻擊中,高隐匿、高持久化的Rootkit技術成為黑客操控的主要手段,本文,我首先對Rootkit的幾種類型進行介紹,主要讓大家了解核心态Rootkit的高度定制化需求和Linux系統上存在的其他類型Rootkit,最後從攻防視角給出對Rootkit進行檢測和防範的工具和方法。

rootkit是Linux平台下最常見的一種木 馬後門工具,它主要通過替換系統檔案來達到攻 擊和和隐蔽的目的,這種木 馬比普通木 馬後門更加危險和隐蔽,普通的檢測工具和檢查手段很難發現這種木 馬。制作精良的Rootkit可以在受害主機長期駐留,讓主機在使用者視角和部分核心視角沒有任何感覺,進而很難通過系統提供的檢測工具以及正常的防病毒軟體進行檢測和清除。

rootkit主要有兩種類型:檔案級别和核心級别,下面分别進行簡單介紹。

1、檔案級别rootkit木 馬

檔案級别的rootkit一般是通過程式漏洞或者系統漏洞進入系統後,通過修改系統的重要檔案來達到隐藏自己的目的。在系統遭受rootkit木 馬後,合法的檔案被木 馬程式替代,變成了外殼程式,而其内部是隐藏着的後門程式。通常容易被rootkit替換的系統程式有login、ls、ps、ifconfig、du、find、netstat等,其中login程式是最經常被替換的,因為當通路Linux時,無論是通過本地登入還是遠端登入,/bin/login程式都會運作,系統将通過/bin/login來收集并核對使用者的賬号和密碼,而rootkit就是利用這個程式的特點,使用一個帶有根權限後門密碼的/bin/login來替換系統的/bin/login,這樣攻 擊者通過輸入設定好的密碼就能輕松進入系統。此時,即使系統管理者修改root密碼或者清除root密碼,攻 擊者還是一樣能通過root使用者登入系統。入 侵者通常在進入Linux系統後,會進行一系列的攻 擊動作,最常見的是安裝嗅探器收集本機或者網絡中其他伺服器的重要資料。在預設情況下,Linux中也有一些系統檔案會監控這些工具動作,例如ifconfig指令,是以,攻 擊者為了避免被發現,會想方設法替換其他系統檔案,常見的就是ls、ps、ifconfig、du、find、netstat等。如果這些檔案都被替換,那麼在系統層面就很難發現rootkit已經在系統中運作了。

這就是檔案級别的rootkit,對系統維護很大,目前最有效的防禦方法是定期對系統重要檔案的完整性進行檢查,如果發現檔案被修改或者被替換,那麼很可能系統已經遭受了rootkit攻 擊。檢查件完整性的工具很多,常見的有Tripwire、 aide等,可以通過這些工具定期檢查檔案系統的完整性,以檢測系統是否被rootkit入 侵。

2、核心級别的rootkit木 馬

核心級rootkit是比檔案級rootkit更進階的一種攻 擊方式,它可以使攻 擊者獲得對系統底層的完全控制權,此時攻 擊者可以修改系統核心,進而截獲運作程式向核心送出的指令,并将其重定向到攻 擊者所選擇的程式并運作此程式,也就是說,當使用者要運作程式A時,被攻 擊者修改過的核心會假裝執行A程式,而實際上卻執行了程式B。

核心級rootkit主要依附在核心上,它并不對系統檔案做任何修改,是以一般的檢測工具很難檢測到它的存在,這樣一旦系統核心被植入rootkit,攻 擊者就可以對系統為所欲為而不被發現。目前對于核心級的rootkit還沒有很好的防禦工具,是以,做好系統安全防範就非常重要,将系統維持在最小權限内工作,隻要攻 擊者不能擷取root權限,就無法在核心中植入rootkit。

二、rootkit後門檢測工具chkrootkit

chkrootkit是一款小巧易用的Unix平台上的可以檢測多種rootkit木 馬的工具。它的功能包括檢測檔案修改、utmp/wtmp/last日志修改、界面欺騙(promiscuous interfaces)、惡意核心子產品(maliciouskernel modules)。它的官方址: http://www.chkrootkit.org/。 目前最新版本為chkrootkit 0.52,chkrootkit沒有包含在官方的CentOS源中,是以要采取手動編譯的方法來安裝,不過這種安裝方法也更加安全。下面簡單介紹下chkrootkit的安裝過程。

1、準備gcc編譯環境

對于CentOS系統,需要安裝gcc編譯環境,執行下述四條指令:

[root@server ~]# yum -y install gcc
[root@server ~]# yum -y install gcc-c++
[root@server ~]# yum -y install make
[root@server ~]# yum install glibc* -y           

2、安裝chkrootkit

為了安全起見,建議直接從官方網站下載下傳chkrootkit源碼,然後進行安裝,操作如下:

[root@server ~]# tar zxvf chkrootkit.tar.gz
[root@server ~]# cd chkrootkit-*
[root@server ~]# make sense           

#注意,上面的編譯指令為make sense

[root@server ~]# cd ..
[root@server ~]# cp -r chkrootkit-* /usr/local/chkrootkit
[root@server ~]# rm -rf chkrootkit-*           

3、使用chkrootkit

我們将chkrootkit程式拷貝到了/usr/local/chkrootkit目錄下,執行如下指令即可顯示chkrootkit的詳細用法:

[root@server chkrootkit]# /usr/local/chkrootkit/chkrootkit  -h
chkrootkit各個參數的含義如下:
-h  顯示幫助資訊
-v  顯示版本資訊
-l  顯示測試内容
-d  debug模式,顯示檢測過程的相關指令程式
-q  安靜模式,隻顯示有問題的内容
-x  進階模式,顯示所有檢測結果
-r dir  設定指定的目錄為根目錄
-p dir1:dir2:dirN   指定chkrootkit檢測時使用系統指令的目錄
-n  跳過NFS連接配接的目錄           

chkrootkit的使用比較簡單,直接執行chkrootkit指令即可自動開始檢測系統。下面是某個系統的檢測結果:

[root@server chkrootkit]# /usr/local/chkrootkit/chkrootkit
Checking `ifconfig'... INFECTED
Checking `ls'... INFECTED
Checking `login'... INFECTED
Checking `netstat'... INFECTED
Checking `ps'... INFECTED
Checking `top'... INFECTED
Checking `sshd'... not infected
Checking `syslogd'... not tested
Checking `tar'... not infected           

從輸出可以看出,INFECTED表示已經感染,not infected表示未感染。此系統的ifconfig、ls、login、netstat、ps和top指令已經被感染。針對被感染rootkit的系統,最安全而有效的方法就是備份資料重新安裝系統。

4、chkrootkit的缺點

chkrootkit在檢查rootkit的過程中使用了部分系統指令,是以,如果伺服器被植入,那麼依賴的系統指令可能也已經被攻 擊者替換,此時chkrootkit的檢測結果将變得完全不可信。為了避免chkrootkit的這個問題,可以在伺服器對外開放前,事先将chkrootkit使用的系統指令進行備份,在需要的時候使用備份的原始系統指令讓chkrootkit對rootkit進行檢測。這個過程可以通過下面的操作實作:

[root@server ~]# mkdir /usr/share/.commands
[root@server ~]# cp `which --skip-alias awk cut echo find egrep id head ls netstat ps strings sed uname` /usr/share/.commands
[root@server ~]# /usr/local/chkrootkit/chkrootkit -p /usr/share/.commands/
[root@server share]# cd /usr/share/
[root@server share]# tar zcvf commands.tar.gz .commands
[root@server share]#  rm -rf commands.tar.gz           

上面這段操作是在/usr/share/下建立了一個.commands隐藏檔案,然後将chkrootkit使用的系統指令進行備份到這個目錄下。為了安全起見,可以将.commands目錄壓縮打包,然後下載下傳到一個安全的地方進行備份,以後如果伺服器遭受攻 擊,就可以将這個備份上傳到伺服器任意路徑下,然後通過chkrootkit指令的“-p”參數指定這個路徑進行檢測即可。

三、rootkit後門檢測工具RKHunter

Rkhunter的中文名叫“Rootkit獵手”, 目前可以發現大多數已知的rootkits和一些嗅探器以及後門程式。它通過執行一系列的測試腳本來确認伺服器是否已經感染rootkits,比如檢查rootkits使用的基本檔案,可執行二進制檔案的錯誤檔案權限,檢測核心子產品等等。在官方的資料中,RKHunter可以作的事情有:

? MD5校驗測試,檢測檔案是否有改動

? 檢測rootkit使用的二進制和系統工具檔案

? 檢測特洛伊木 馬程式的特征碼

? 檢測常用程式的檔案屬性是否異常

? 檢測系統相關的測試

? 檢測隐藏檔案

? 檢測可疑的核心子產品LKM

? 檢測系統已啟動的監聽端口

1、安裝RKHunter

RKHunter的官方網頁位址為:http://rootkit.nl/projects/rootkit_hunter.html, 目前的最新版本是rkhunter-1.4.6.tar.gz。 可以從https://sourceforge.net/projects/rkhunter/files/下載下傳, RKHunter的安裝非常簡單,可以通過源碼安裝,也可以線上yum安裝,這裡以centos7.5為例,過程如下:

[root@server ~]#yum install epel-release
[root@server ~]#yum install rkhunter           

因為rkhunter包含在了EPEL源中,是以要通過yum安裝的話,需要先epel源,然後再安裝rkhunter即可。

2、使用rkhunter指令

rkhunter指令的參數較多,但是使用非常簡單,直接運作rkhunter即可顯示此指令的用法。下面簡單介紹下rkhunter常用的幾個參數選項。

[root@server ~]#/usr/local/bin/rkhunter --help

常用的幾個參數選項有:
-c, --check 必選參數,表示檢測目前系統
--configfile <file> 使用特定的配置檔案
--cronjob   作為cron任務定期運作
--sk, --skip-keypress   自動完成所有檢測,跳過鍵盤輸入
--summary   顯示檢測結果的統計資訊
--update    檢測更新内容           

3、使用rkhunter開始檢測系統

直接執行下面指令,即可開始檢查:

[root@server ~]# /usr/bin/rkhunter -c

Linux平台下高隐匿、高威脅性木馬rootkit的檢測和防範

從圖中可以看出,檢查主要分成6個部分:

第一部分是進行系統指令的檢查,主要是檢測系統的二進制檔案,因為這些檔案最容易被rootkit。顯示OK字樣表示正常,顯示Warning表示有異常,需要引起注意,而顯示“Not found”字樣,一般無需理會。

第二部分,主要檢測常見的rootkit程式,顯示綠色的“Not found”表示系統未感染此rootkit。

第三部分,主要是一些特殊或附加的檢測,例如對rootkit檔案或目錄檢測、對惡意軟體檢測以及對指定的核心子產品檢測。

第四部分,主要對網絡、系統端口、系統啟動檔案、系統使用者群組配置、SSH配置、檔案系統等進行檢測。

第五部分,主要是對應用程式版本進行檢測。

第六部分,其實是上面輸出的一個總結,通過這個總結,可以大概了解伺服器目錄的安全狀态。

在Linux終端使用rkhunter來檢測,最大的好處在于每項的檢測結果都有不同的顔色顯示,如果是綠色的表示沒有問題,如果是紅色的,那就要引起關注了。另外,在上面執行檢測的過程中,在每個部分檢測完成後,需要以Enter鍵來繼續。如果要讓程式自動運作,可以執行如下指令:

[root@server ~]# /usr/local/bin/rkhunter --check --skip-keypress            

同時,如果想讓檢測程式每天定時運作,那麼可以在/etc/crontab中加入如下内容:

10 3 * * * root /usr/local/bin/rkhunter --check --cronjob            

這樣,rkhunter檢測程式就會在每天的3:10分運作一次。

Rkhunter擁有并維護着一個包含rootkit特征的資料庫,然後它根據此資料庫來檢測系統中的rootkits,是以可以對此資料庫進行更新,rkhunter --update

[root@server ~]# rkhunter --update           

那麼簡單來講,RKhunter就像我們的防毒軟體,有着自己的病毒資料庫,對每一個重點指令進行比對,當發現了可疑代碼則會提示使用者。

繼續閱讀