一、問題現象
事情起因是突然發現一臺oracle服務器外網流量跑的很高,明顯和平常不一樣,最高達到了200M左右,這明顯是不可能的,因為oracle根本不與外界交互,第一感覺是服務器被入 侵了。被人當做肉雞了,在大量發包。
這是臺centos7.5 64位的系統,已經在線上運行了70多天了。
二、排查問題
排查問題的第一步是查看此服務器的網絡帶寬情況,通過監控系統顯示,此臺服務器占滿了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,也發現了異常文件,從名字上感覺好像是監控木 馬程序的,如下圖所示:
檢查到這里,基本查明了系統中可能出現的異常文件,當然,不排除還有更多的,下面的排查就是查找更多可疑文件,然后刪除即可。
三、查殺病毒文件
要清楚系統中的牧馬病毒,第一步要做的是先清除這些可疑的文件,這里總結了下此類植入牧馬各種可疑的文件,供大家參考:
檢查是否有下面路徑文件
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命令。
四、找出異常程序并殺死
所有可疑文件都刪除后,通過top、ps等命令查看可疑進程,全部kill掉即可,這樣進程kill之后,因為啟動文件已經清除,所以也就不會再次啟動或者生成牧馬文件了。
這個案例是個典型的文件級別rootkit植入系統導致的,最后檢查植入的原因是由于這臺oracle服務器有外網IP,并且沒設置任何防火墻策略,同時,服務器上有個oracle用戶,密碼和用戶名一樣,這樣一來,黑 客通過服務器暴露在外網的22端口,然后通過暴力破解,通過這個oracle用戶登錄到了系統上,進而植入了這個rootkit病毒。