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