河南 許紅軍
當SSH 連接建立后,執(zhí)行“top”命令,在“Load average”欄中顯示系統(tǒng)的負載并不是很高。但在進程列表中發(fā)現(xiàn)名為“apachel”的進程的CPU 使用率很高,從表面看起來這似乎是一個Web 服務,可實際上該機根本沒有安裝任何Web 服務,而且其名稱有些欲蓋彌彰。
可以肯定的是,該進程極為可疑。執(zhí)行“ps-ef”命令,顯示進程的完整路徑信息,發(fā)現(xiàn)上述進程的路徑為“/etc/apachel”,而且發(fā)現(xiàn)“ps”命令的路徑位于“/usr/bin/pythd”,這明顯和實際情況不符,因為“ps”命令文件位于“/bin”路徑下。
進入“/usr/bin/pythd”路徑,執(zhí)行“l(fā)l”命令,發(fā)現(xiàn)存在“psof”“netstat”“ps”“l(fā)s”等命令文件。從別的正常的主機上查看這些命令文件的大小,發(fā)現(xiàn)存在明顯差異。
毫無疑問這些命令文件都是些冒牌貨。執(zhí)行“crontab -l”命令,在列表中沒有發(fā)現(xiàn)可疑的定時任務。對系統(tǒng)的關鍵位置進行檢查,在“/etc/init.d”目錄中發(fā)現(xiàn)名為“l(fā)ekzina”“gtvdump”等可疑文件,在該路徑中的文件可以跟隨系統(tǒng)自動運行的。進入“/etc/rc.d/rc1.d”“/etc/rc.d/rc2.d”“/etc/rc.d/rc3.d”“/etc/rc.d/rc4.d”“/etc/rc.d/rc5.d”等目錄,在其中 發(fā)現(xiàn)名為“st0lekzina”“stgtvdump”等可疑文件,很明顯這些病毒試圖在不同運行級別下啟動。
反復執(zhí)行“ps -ef”命令,發(fā)現(xiàn)名為“/usr/bin/nshbsdy”和“/usr/bin/libudev”進 程有忽隱忽現(xiàn)的情況,經(jīng)過檢測發(fā)現(xiàn)“/usr/bin/nshbsdy”是一個目錄,進入該目錄,執(zhí)行“l(fā)l”命令,發(fā)現(xiàn)其中存在“getty”“getty.lock”等文件。對“/usr/bin/libudev”進行分析,發(fā)現(xiàn)這是一個隱藏的二進制文件,可能是用來開啟后門的。
進入“/tmp”目錄,在其中發(fā)現(xiàn)了名為“gcc.lod”和“mtyke.load”文件很可疑,因為對于病毒來說,一般都會在“/tmp”中進行非法活動。對于這些病毒文件,必須進行清除。
例如,執(zhí)行“rm -rf/usr/bin/pythd”“rm -rf/usr/bin/nshbsdy”命令,將包含非法命令文件的目錄刪除。執(zhí)行“rm -f/usr/bin/libudev”命令,將后門程序刪除。按照同樣的方法,將所有的病毒全部刪除。之后運行“top”命令,找到“apachel”等非法進程的PID 號,使用“kill -9 xxx”命令,將其清除即可,這里的“xxx”表示具體的PID。之后重啟系統(tǒng),對系統(tǒng)進行檢查,發(fā)現(xiàn)上述可疑文件都不再出現(xiàn),系統(tǒng)終于恢復正常。
因為執(zhí)行了以上刪除操作后,可能會導致“l(fā)s”等命令無法使用,解決方法是從其他主機上復制這些的命令文件到本機對應路徑即可。
根據(jù)上述情況分析,該機安裝了Oracle 數(shù)據(jù)庫,用戶名和密碼均為“oracle”,因為密碼設置的比較簡單,而且又開啟了TCP 22 端口,所以黑客掃描到該機后,就進行了非法登錄,并替換了系統(tǒng)的命令文件,開啟了后門程序,才導致該機出現(xiàn)上述異常狀況。因此,設置比較復雜的密碼,修改默認的連接端口,使用防火墻配置安全策略,對開放的端口進行保護等方式,來提高該機的安全性。
從以上的排查實例可以看出,該服務器實際遭遇了文件級別的RootKit 病毒的襲擾。
對于 Linux 來說,Rootkit 級別的病毒是比較難以對付的。RootKit 病毒的最大特點是可以通過替換系統(tǒng)文件的方式,來達到攻擊系統(tǒng)和和隱蔽自身的目的。使用一般的防御手段,是難以清查這些病毒的。
RootKit 病毒具有很強的隱蔽性,對系統(tǒng)安全危害很大,黑客利用各種系統(tǒng)漏洞非法控制目標服務器,并在系統(tǒng)中植入RootKit 病毒,不僅可以建立很隱蔽的后門,還可以隱藏其蹤跡,讓黑客非法擁有攻擊權限,并且可以隨時利用由RootKit建立的后門登錄系統(tǒng)。
一般來說,RootKit 病毒包括文件級別和內(nèi)核級別兩種類型。對于前者來說,會通過修改或者替換系統(tǒng)文件的方式來隱藏自身。
這樣,合法的系統(tǒng)文件被RootKit 病毒取代,其內(nèi)部隱藏的是后門程序。例如,Linux 的login、ls、ps、ifconfig 等命令文件很容易成為RootKit 病毒攻擊的目標。如果login 被替換的話,那么當在本地登錄或者遠程登錄時,都必然會運行“/bin/login”程 序,Linux 會利用該程序來獲取用戶輸入的賬號和密碼,并判斷其是否可以正常登錄。
但是,該虛假的“l(fā)ogin”程序內(nèi)部帶有Root 權限后門密碼,黑客可以根據(jù)預設的密碼輕松登錄。為了防止用戶查看到入侵的痕跡信息,黑客還會替換相關的系統(tǒng)命令文件,例如ls、ps、ifconfig、du、find、netstat等。當用戶運行這些命令,來查看系統(tǒng)關鍵信息時,當然無法了解到真實信息。造成在系統(tǒng)層面難以發(fā)現(xiàn)RootKit 病毒的情況。
為了防范文件級別的RootKit 病毒,最好的辦法是經(jīng)常使用Tripwire、aide 等工具,對系統(tǒng)重要文件的完整性進行檢查,如果發(fā)現(xiàn)文件被修改或者被替換,那么就要引起警惕了。
而對于內(nèi)核級別的RootKit 病毒來說,其隱蔽性和危害性要比文件級別的RootKit 病毒大得多。利用內(nèi)核級別的RootKit 病毒,黑客可以獲得對系統(tǒng)底層的完全控制權,黑客甚至可以據(jù)此對系統(tǒng)內(nèi)核進行修改,嗅探和攔截正常程序向內(nèi)核提交的命令,并將其重定向到黑客指定的惡意程序上。這樣,用戶運行了正常的程序,實際上運行的是黑客指定的惡意程序。
RootKit 病毒主要活動在系統(tǒng)內(nèi)核中,對于系統(tǒng)文件一般不會進行修改,常規(guī)的安全檢測工具是無法發(fā)現(xiàn)其蹤跡的。從原理上說,對于內(nèi)核級別的RootKit 病毒,并沒有很好的安全工具可以有效防御。所以,配置嚴格的安全策略,并讓系統(tǒng)在最小權限內(nèi)運作,讓黑客盡量不要獲取Root 權限,就可以有效避免其在內(nèi)核中安裝RootKit 病毒。
利用Chkrootkit 這款精巧的Rootkit 病毒的工具,可以幫助用戶發(fā)現(xiàn)RootKit病毒的蹤跡。它可以檢測系統(tǒng)文件和日志修改信息,發(fā)現(xiàn)和RootKit 相關的界面欺騙和惡意核心模塊。
執(zhí)行“yum -y install gcc”“yum -y install gcc-c++”“yum -y installmake”“yuminstallglibc* -y”等命令,來安裝GCC 編譯環(huán)境。執(zhí)行“tar zxvf chkrootkit.tar.gz”“cd chkrootkit”“make sense”“cp -r chkrootkit-*/usr/local/chkrootkit”“rm -rf chkrootkit-*”等命令,執(zhí)行編譯和安裝操作。
執(zhí)行“/usr/local/chkrootkit/chkrootkit”命令,對系統(tǒng)進行檢測。如果在檢測到的命令文件后面出現(xiàn)“INFECTED”提示,說明其已經(jīng)被Rootkit 病毒破壞。因為該工具在檢測的時候,會使用到了一些系統(tǒng)命令,如果這些系統(tǒng)命令被破壞,就會造成該工具無法正常檢測。因此,在系統(tǒng)處于正常狀態(tài)時,可以執(zhí)行“mkdir/usr/data/chkbackup”命令,創(chuàng)建用來備份該工具的目錄。
執(zhí)行“cp `which--skip-alias awk cut echo find egrep id head ls netstat ps strings sed uname`/ usr/data/chkbackup”命令,將該工具使用到的系統(tǒng)命令復制到上述目錄中。執(zhí)行“cd/ data/chkbackup/”“tar zcvf chkbackup.tar.gz chkbackup”命令,將該目錄進行打包壓縮。這樣,如果系統(tǒng)被RootKit 病毒被破壞,可以從該壓縮包中提取出來。之后執(zhí)行“/usr/local/chkrootkit/chkrootkit -p/usr/data/chkbackup/”命令,讓Chkrootkit 使用這些純凈的系統(tǒng)命名文件,對系統(tǒng)檢測檢測。
此外,還可以用Rkhunter這個優(yōu)秀的“獵手”,來檢測RootKit 病毒。其可以發(fā)現(xiàn)大多數(shù)已知的Rootkit 病毒,并有效確認系統(tǒng)否已經(jīng)存在Rootkit 病毒。其擁有MD5 校驗測試,檢測文件是否有改動,檢測木馬程序的特征碼,檢測常用程序的文件屬性是否異常,檢測隱藏文件,檢測可疑的核心模塊,檢測系統(tǒng)已啟動的監(jiān)聽端口等功能。例如執(zhí)行“yum install epel-release”“yum install rkhunter”命令,就可以安裝該工具。執(zhí)行“/usr/bin/rkhunter -c”命令,開始對系統(tǒng)進行檢測。
在檢測信息中首先對系統(tǒng)命令進行檢查,如果顯示“OK”的話說明一切正常,顯示“Warning”表示存在異常情況。之后針對常見的Rootkit 程序進行檢測,然后執(zhí)行一些特殊或附加的檢測,例如對Rootkit 文件或目錄檢測、對惡意軟件檢測以及對指定的內(nèi)核模塊檢測等。接下來針對對網(wǎng)絡、系統(tǒng)端口、系統(tǒng)啟動文件、系統(tǒng)用戶和組配置、SSH 配置、文件系統(tǒng)等進行檢測。隨后對應用程序版本進行檢測,最后顯示檢測報告信息。
Rkhunter 的優(yōu)點之一是會使用不同的顏色來顯示不同的檢測信息。例如檢測項目如果顯示為綠色,說明沒有問題。如果顯示為紅色,就說明存在風險。為了實現(xiàn)快速檢測,可以執(zhí)行“/usr/local/bin/rkhunter --check --skipkeypress”命令來實現(xiàn)。為了實現(xiàn)自動檢測,可以執(zhí)行“vim/etc/crontab”命令,添加“1 0 * * * root/usr/local/bin/rkhunter--check --cronjob”行,在每天凌晨執(zhí)行檢測任務。執(zhí)行“rkhunter --update”命令,可以升級Rootkit 特征數(shù)據(jù)庫,來發(fā)現(xiàn)新的RootKit病毒。
當然,使用ClamAV 安全軟件也可以有效防御RootKit 病毒。執(zhí)行“yum install epel-release”“yum -y install clamav clamav-milter”命令,安裝該軟件。之后執(zhí)行“freshclam”命令,來更新病 毒庫。ClamAV 提供了“clamdscan”和“clamscan”兩個檢測名里面那個,前者需要啟動clamd 服務才能使用,執(zhí)行速度較快,后者雖然可以直接運行,但速度較慢。
這里使用前者,執(zhí)行“clamscan --infected-r/ --remove -l/var/log/scan.log”命令,可以對系統(tǒng)文件進行檢測,并將檢測信息保存到指定的日志文件中。執(zhí)行“clamscan-r/etc --max-recursion=5-i -l/mnt/virscan.log”命令,對“/etc”目錄進行檢測。
為便于使用,可在“/etc/crontab”中添加“0 1* * * /usr/bin/freshclam--quiet”行,讓其在指定時間升級病毒庫。添加“0 3 * * * clamscan -r/ -l/var/log/scan.log--remove”命令,在每天指定時間對系統(tǒng)進行檢測。