一、關于linux下的rootkit
rootkit是Linux平臺下最常見的一種木 馬后門工具,它主要通過替換系統文件來達到攻 擊和和隱蔽的目的,這種木 馬比普通木 馬后門更加危險和隱蔽,普通的檢測工具和檢查手段很難發現這種木 馬。rootkit攻 擊能力極強,對系統的危害很大,它通過一套工具來建立后門和隱藏行跡,從而讓攻 擊者保住權限,以使它在任何時候都可以使用root權限登錄到系統。
rootkit主要有兩種類型:文件級別和內核級別,下面分別進行簡單介紹。
1.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入 侵。
1.2、內核級別的rootkit木 馬
內核級rootkit是比文件級rootkit更高級的一種攻 擊方式,它可以使攻 擊者獲得對系統底層的完全控制權,此時攻 擊者可以修改系統內核,進而截獲運行程序向內核提交的命令,并將其重定向到攻 擊者所選擇的程序并運行此程序,也就是說,當用戶要運行程序A時,被攻 擊者修改過的內核會假裝執行A程序,而實際上卻執行了程序B。
內核級rootkit主要依附在內核上,它并不對系統文件做任何修改,因此一般的檢測工具很難檢測到它的存在,這樣一旦系統內核被植入rootkit,攻 擊者就可以對系統為所欲為而不被發現。目前對于內核級的rootkit還沒有很好的防御工具,因此,做好系統安全防范就非常重要,將系統維持在最小權限內工作,只要攻 擊者不能獲取root權限,就無法在內核中植入rootkit。
二、一次Linux.BackDoor.Gates.5(文件級別rootkit)網絡帶寬攻 擊案例
2.1、問題現象
事情起因是突然發現一臺oracle服務器外網流量跑的很高,明顯和平常不一樣,最高達到了200M左右,這明顯是不可能的,因為oracle根本不與外界交互,第一感覺是服務器被入 侵了。被人當做肉雞了,在大量發包。
這是臺centos6.5 64位的系統,已經在線上運行了70多天了。
2.2、排查問題
排查問題的第一步是查看此服務器的網絡帶寬情況,通過監控系統顯示,此臺服務器占滿了200M的帶寬,已經持續了半個多小時,接著第二步登錄服務器查看情況,通過ssh登錄服務器非常慢,這應該就是帶寬被占滿的緣故,不過最后還是登錄上了服務器,下面是一個top的結果;
可以看到,有一個異常的進程占用資源比較高,名字不仔細看還真以為是一個Web服務進程。但是這個Nginx1確實不是正常的進程。
接著,通過pe -ef命令又發現了一些異常:
發現有個/etc/nginx1進程,然后查看了這個文件,是個二進制程序,基本斷定這就是木 馬文件。
同時又發現,/usr/bin/dpkgd/ps -ef這個進程非常異常,因為正常情況下ps命令應該在/bin目錄下才對。于是進入/usr/bin/dpkgd目錄查看了一下情況,又發現了一些命令,如下圖所示:
由于無法判斷,用了最笨的辦法,找了一臺正常的機器,查看了一下ps命令這個文件的大小,發現只有80K左右,又檢查了/usr/bin/dpkgd/ps,發現文件大小不對,接著又檢查了兩個文件的md5,發現也不一樣。
初步判斷,這些文件都偽裝的外殼命令,其實都是有后門的木 馬.
繼續查看系統可疑目錄,首先查看定時任務文件crontab,并沒有發現異常,然后查看系統啟動文件rc.local,也沒有什么異常,接著進入/etc/init.d目錄查看,又發現了比較奇怪的腳本文件DbSecuritySpt、selinux,如下圖所示:
這兩個文件在正常的系統下是沒有的,所以也初步斷定是異常文件。
接著繼續查看系統進程,通過ps -ef命令,又發現了幾個異常進程,一個是/usr/bin/bsd-port,另一個是/usr/sbin/.sshd,這兩個進程時隱時現,在出現的瞬間被我抓到了。
查看發現/usr/bin/bsd-port是個目錄,進入目錄,發行了幾個文件,如下圖:
有getty字眼,這不是終端管理程序嗎,它用來開啟終端,進行終端的初始化,設置終端,這里出現了終端,馬上聯想到是否跟登錄相關,于是緊接著,又發現了/usr/sbin/.sshd,很明顯,這個隱藏的二進制文件.sshd就是個后 門文件,表面像sshd進程,其實完全不是。
最后,又查看了木 馬最喜歡出現的目錄/tmp,也發現了異常文件,從名字上感覺好像是監控木 馬程序的,如下圖所示:
檢查到這里,基本查明了系統中可能出現的異常文件,當然,不排除還有更多的,下面的排查就是查找更多可疑文件,然后刪除即可。
3、查殺病毒文件
要清楚系統中的牧馬病毒,第一步要做的是先清除這些可疑的文件,這里總結了下此類植入牧馬各種可疑的文件,供大家參考:
檢查是否有下面路徑文件
cat /etc/rc.d/init.d/selinux cat /etc/rc.d/init.d/DbSecuritySpt ls /usr/bin/bsd-port ls /usr/bin/dpkgd
檢查下面文件大小是否正常,可以和正常機器中的文件做比對:
ls -lh /bin/netstat ls -lh /bin/ps ls -lh /usr/sbin/lsof ls -lh /usr/sbin/ss
如果發現有上面可疑文件,需要全部刪除,可刪除的文件或目錄如下:
rm -rf /usr/bin/dpkgd (ps netstat lsof ss) #這是加殼命令目錄 rm -rf /usr/bin/bsd-port #這是木 馬程序 rm -f /usr/bin/.sshd #這是木 馬后門 rm -f /tmp/gates.lod rm -f /tmp/moni.lod rm -f /etc/rc.d/init.d/DbSecuritySpt #這是啟動上述描述的那些木 馬后的變種程序 rm -f /etc/rc.d/rc1.d/S97DbSecuritySpt #刪除自啟動 rm -f /etc/rc.d/rc2.d/S97DbSecuritySpt rm -f /etc/rc.d/rc3.d/S97DbSecuritySpt rm -f /etc/rc.d/rc4.d/S97DbSecuritySpt rm -f /etc/rc.d/rc5.d/S97DbSecuritySpt rm -f /etc/rc.d/init.d/selinux #這個selinux是個假象,其實啟動的是/usr/bin/bsd-port/getty程序 rm -f /etc/rc.d/rc1.d/S99selinux #刪除自啟動 rm -f /etc/rc.d/rc2.d/S99selinux rm -f /etc/rc.d/rc3.d/S99selinux rm -f /etc/rc.d/rc4.d/S99selinux rm -f /etc/rc.d/rc5.d/S99selinux
上面的一些命令(ps netstat lsof ss)刪除后,系統中這些命令就不能使用了,怎么恢復這些命令呢,有兩種方式:一個是從別的同版本機器上拷貝一個正常的文件過來,另一個是通過rpm文件重新安裝這些命令。
例如,刪除了ps命令后,可以通過yum安裝ps命令:
[root@server ~]#yum -y reinstall procps
其中,procps包中包含了ps命令。
[root@server ~]#yum -y reinstall net-tools [root@server ~]#yum -y reinstall lsof [root@server ~]#yum -y reinstall iproute
上面三個命令是依次重新安裝netstat、lsof、ss命令。
4、找出異常程序并殺死
所有可疑文件都刪除后,通過top、ps等命令查看可疑進程,全部kill掉即可,這樣進程kill之后,因為啟動文件已經清除,所以也就不會再次啟動或者生成牧馬文件了。
這個案例是個典型的文件級別rootkit植入系統導致的,最后檢查植入的原因是由于這臺oracle服務器有外網IP,并且沒設置任何防火墻策略,同時,服務器上有個oracle用戶,密碼和用戶名一樣,這樣一來,黑 客通過服務器暴露在外網的22端口,然后通過暴力破解,通過這個oracle用戶登錄到了系統上,進而植入了這個rootkit病毒。
三、Linux安全防護工具ClamAV的使用
ClamAV是一個在命令行下查毒軟件,是免費開源產品,支持多種平臺,如:Linux/Unix、mac OS X、windows、OpenVMS。ClamAV是基于病毒掃描的命令行工具,但同時也有支持圖形界面的ClamTK工具。為什么說是查毒軟件呢,因為它不將殺毒作為主要功能,默認只能查出您服務器內的病毒,但是無法清除,至多刪除文件。不過這樣,已經對我們有很大幫助了。
3.1、快速安裝clamav
clamav的官方網站是http://www.clamav.net, 可以從http://www.clamav.net/downloads 下載最新版本,也可以通過yum在線安裝clamav,因為clamav包含在epel源中,所以方便起見,通過yum安裝最簡單。
[root@server ~]# yum install epel-release [root@server ~]# yum -y install clamav clamav-milter
很簡單吧,就這樣clamav已經安裝好了。
3.2、更新病毒庫
clamav安裝好后,不能馬上使用,需要先更新一下病毒特征庫,不然會有告警信息。更新病毒庫方法如下:
[root@server ~]# freshclam ClamAV update process started at Wed Oct 24 12:03:03 2018 Downloading main.cvd [100%] main.cvd updated (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr) Downloading daily.cvd [100%] daily.cvd updated (version: 25064, sigs: 2131605, f-level: 63, builder: neo) Downloading bytecode.cvd [100%] bytecode.cvd updated (version: 327, sigs: 91, f-level: 63, builder: neo) Database updated (6697945 signatures) from database.clamav.net (IP: 104.16.186.138)
保證你的服務器能夠上網,這樣才能下載到病毒庫,更新時間可能會長一些。
3.3、clamav的命令行使用
clamav有兩個命令,分別是clamdscan和clamscan,其中,clamdscan命令一般用yum安裝才有,需要啟動clamd服務才能使用,執行速度較快;而clamscan命令通用,不依賴服務,命令參數較多,執行速度稍慢。推薦使用clamscan。
執行“clamscan -h”可獲得使用幫助信息,clamscan常用的幾個參數含義如下:
-r/--recursive[=yes/no] 表示遞歸掃描子目錄 -l FILE/--log=FILE 增加掃描報告 --move [路徑] 表示移動病毒文件到指定的路徑 --remove [路徑] 表示掃描到病毒文件后自動刪除病毒文件 --quiet 表示只輸出錯誤消息 -i/--infected 表示只輸出感染文件 -o/--suppress-ok-results 表示跳過掃描OK的文件 --bell 表示掃描到病毒文件發出警報聲音 --unzip(unrar) 表示解壓壓縮文件進行掃描
下面看幾個例子:
(1)、查殺當前目錄并刪除感染的文件
[root@server ~]# clamscan -r --remove
(2)、掃描所有文件并且顯示有問題的文件的掃描結果
[root@server ~]# clamscan -r --bell -i /
(3)、掃描所有用戶的主目錄文件
[root@server ~]# clamscan -r /home
(4)、掃描系統中所有文件,發現病毒就刪除病毒文件,同時保存殺毒日志
[root@server ~]# clamscan --infected -r / --remove -l /var/log/clamscan.log
3.4、查殺系統病毒
下面命令是掃描/etc目錄下所有文件,僅輸出有問題的文件,同時保存查殺日志。
[root@server ~]# clamscan -r /etc --max-recursion=5 -i -l /mnt/a.log ----------- SCAN SUMMARY ----------- Known viruses: 6691124 Engine version: 0.100.2 Scanned directories: 760 Scanned files: 2630 Infected files: 0 Data scanned: 186.64 MB Data read: 30.45 MB (ratio 6.13:1) Time: 72.531 sec (1 m 12 s)
可以看到,掃描完成后有結果統計。
下面我們從eicar.org下載一個用于模擬病毒的文件,看一下clamav是否能夠掃描出來,
[root@server mnt]# wget http://www.eicar.org/download/eicar.com [root@liumiaocn mnt]# ls eicar.com
然后,重新掃描看是否能夠檢測出新下載的病毒測試文件。執行如下命令:
[root@server ~]# clamscan -r / --max-recursion=5 -i -l /mnt/c.log /mnt/eicar.com: Eicar-Test-Signature FOUND ----------- SCAN SUMMARY ----------- Known viruses: 6691124 Engine version: 0.100.2 Scanned directories: 10 Scanned files: 187 Infected files: 1 Data scanned: 214.09 MB Data read: 498.85 MB (ratio 0.43:1) Time: 80.826 sec (1 m 20 s)
可以看到,病毒文件被檢測出來了。eicar.com是一個Eicar-Test-Signature類型病毒文件。缺省的方式下,clamscan只會檢測不會自動刪除文件,要刪除檢測出來的病毒文件,使用“--remove”選項即可。
3.5、設置自動更新病毒庫和查殺病毒
病毒庫的更新至關重要,要實現自動更新,可在計劃任務中添加定時更新病毒庫命令,也就是在crontab添加如下內容:
* 1 * * * /usr/bin/freshclam --quiet
表示每天1點更新病毒庫。
實際生產環境應用,一般使用計劃任務,讓服務器每天晚上定時殺毒。保存殺毒日志,也就是在crontab添加如下內容:
* 22 * * * clamscan -r / -l /var/log/clamscan.log --remove
此計劃任務表示每天22點開始查殺病毒,并將查殺日志寫入/var/log/clamscan.log文件中。
病毒是猖獗的,但是只要有防范意識,加上各種查殺工具,完全可以避免牧馬或病毒的入 侵。






