一、背景
晚上看到有臺服務器流量跑的很高,明顯和平常不一樣,流量達到了800mbps,第一感覺應該是中木馬了,被人當做肉雞了,在大量發包。
我們的服務器為了最好性能,防火墻(iptables)什么的都沒有開啟,但是服務器前面有物理防火墻,而且機器都是做的端口映射,也不是常見的端口,按理來說應該是滿安全的,可能最近和木馬有緣吧,老是讓我遇到,也趁這次機會把發現過程記錄一下。
二、發現并追蹤處理
1、查看流量圖發現問題
查看的時候網頁非??ǎ械臅r候甚至沒有響應。
2、top動態查看進程
我馬上遠程登錄出問題的服務器,遠程操作很卡,網卡出去的流量非常大,通過top發現了一個異常的進程占用資源比較高,名字不仔細看還真以為是一個web服務進程。
4、結束異常進程并繼續追蹤
killall -9 nginx1
rm -f /etc/nginx1
干掉進程之后,流量立刻下來了,遠程也不卡頓了,難道刪掉程序文件,干掉異常進程我們就認為處理完成了么?想想也肯定沒那么簡單的,這個是木馬啊,肯定還會自己生成程序文件(果然不出我所料,在我沒有搞清楚之前,后面確實又生成了)我們得繼續追查。
5、查看登錄記錄及日志文件secure
通過命令last查看賬戶登錄記錄,一切正常。查看系統文件message并沒有發現什么,但是當我查看secure文件的時候發現有些異常,反正是和認證有關的,應該是嘗試連進來控制發包?
7、更多異常文件的發現
查看定時任務文件crontab并沒有發現什么一次,然后查看系統啟動文件rc.local,也沒有什么異常,然后進入/etc/init.d目錄查看,發現比較奇怪的腳本文件dbsecurityspt、selinux。
想到這里,替換的命令應該很多,單靠我們去找肯定是解決不了的,我的建議最好是重裝操作系統,并做好安全策略,如果不重裝,我下面給一下我的方法,具體行不行有待驗證。
三、木馬手動清除
現在綜合總結了大概步驟如下:
1、簡單判斷有無木馬
#有無下列文件
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
2、上傳如下命令到/root下
ps netstat ss lsof
3、刪除如下目錄及文件
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(默認是啟動/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
4、找出異常程序并殺死
5、刪除含木馬命令并重新安裝(或者把上傳的正常程序復制過去也行)
我自己重新安裝好像不行,我是找的正常的機器復制的命令。
#ps
/root/chattr -i -a /bin/ps && rm /bin/ps -f
yum reinstall procps -y 或 cp /root/ps /bin
#netstat
/root/chattr -i -a /bin/netstat && rm /bin/netstat -f
yum reinstall net-tools -y 或 cp /root/netstat /bin
#lsof
/root/chattr -i -a /bin/lsof && rm /usr/sbin/lsof -f
yum reinstall lsof -y 或 cp /root/lsof /usr/sbin
#ss
/root/chattr -i -a /usr/sbin/ss && rm /usr/sbin/ss -f
yum -y reinstall iproute 或 cp /root/ss /usr/sbin
四、殺毒工具掃描
1、安裝殺毒工具clamav
yum -y install clamav clamav-milter
2、啟動服務
service clamd restart
3、更新病毒庫
由于clamav不是最新版本,所以有告警信息??梢院雎曰蛏壸钚掳姹?。
[root@mobile ~]# freshclam
clamav update process started at sun jan 31 03:15:52 2016
warning: can't query current.cvd.clamav.net
warning: invalid dns reply. falling back to http mode.
reading cvd header (main.cvd): warning: main.cvd not found on remote server
warning: can't read main.cvd header from db.cn.clamav.net (ip: 185.100.64.62)
trying again in 5 secs...
clamav update process started at sun jan 31 03:16:25 2016
warning: can't query current.cvd.clamav.net
warning: invalid dns reply. falling back to http mode.
reading cvd header (main.cvd): trying host db.cn.clamav.net (200.236.31.1)...
ok
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
reading cvd header (daily.cvd): ok (ims)
daily.cvd is up to date (version: 21325, sigs: 1824133, f-level: 63, builder: neo)
reading cvd header (bytecode.cvd): ok (ims)
bytecode.cvd is up to date (version: 271, sigs: 47, f-level: 63, builder: anvilleg)
4、掃描方法
可以使用clamscan -h查看相應的幫助信息
clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log
clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log
clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log
clamscan -r --remove /usr/bin/bsd-port
clamscan -r --remove /usr/bin/
5、查看日志發現
把發現的命令刪掉替換正常的
附錄:linux.backdoor.gates.5
經過查詢資料,這個木馬應該是linux.backdoor.gates.5,找到一篇文件,內容具體如下:
某些用戶有一種根深蒂固的觀念,就是目前沒有能夠真正威脅linux內核操作系統的惡意軟件,然而這種觀念正在面臨越來越多的挑戰。與4月相比,2014年5月doctor web公司的技術人員偵測到的linux惡意軟件數量創下了新紀錄,六月份這些惡意軟件名單中又增加了一系列新的linux木馬,這一新木馬家族被命名為linux.backdoor.gates。
在這里描述的是惡意軟件家族linux.backdoor.gates中的一個木馬:linux.backdoor.gates.5,此惡意軟件結合了傳統后門程序和ddos攻擊木馬的功能,用于感染32位linux版本,根據其特征可以斷定,是與linux.dnsamp和linux.ddos家族木馬同出于一個病毒編寫者之手。新木馬由兩個功能模塊構成:基本模塊是能夠執行不法分子所發指令的后門程序,第二個模塊在安裝過程中保存到硬盤,用于進行ddos攻擊。linux.backdoor.gates.5在運行過程中收集并向不法分子轉發受感染電腦的以下信息:
cpu核數(從/proc/cpuinfo讀?。?br>
cpu速度(從/proc/cpuinfo讀?。?br>
cpu使用(從/proc/stat讀取)。
gate'a的 ip(從/proc/net/route讀?。?。
gate'a的mac地址(從/proc/net/arp讀取)。
網絡接口信息(從/proc/net/dev讀?。?。
網絡設備的mac地址。
內存(使用/proc/meminfo中的memtotal參數)。
發送和接收的數據量(從/proc/net/dev讀取)。
操作系統名稱和版本(通過調用uname命令)。
啟動后,linux.backdoor.gates.5會檢查其啟動文件夾的路徑,根據檢查得到的結果實現四種行為模式。
如果后門程序的可執行文件的路徑與netstat、lsof、ps工具的路徑不一致,木馬會偽裝成守護程序在系統中啟動,然后進行初始化,在初始化過程中解壓配置文件。配置文件包含木馬運行所必須的各種數據,如管理服務器ip地址和端口、后門程序安裝參數等。
根據配置文件中的g_igatsisfx參數值,木馬或主動連接管理服務器,或等待連接:成功安裝后,后門程序會檢測與其連接的站點的ip地址,之后將站點作為命令服務器。
木馬在安裝過程中檢查文件/tmp/moni.lock,如果該文件不為空,則讀取其中的數據(pid進程)并“干掉”該id進程。然后linux.backdoor.gates.5會檢查系統中是否啟動了ddos模塊和后門程序自有進程(如果已啟動,這些進程同樣會被“干掉”)。如果配置文件中設置有專門的標志g_iisservice,木馬通過在文件/etc/init.d/中寫入命令行
#!/bin/bash\n<path_to_backdoor>將自己設為自啟動,然后linux.backdoor.gates.5創建下列符號鏈接:
ln -s /etc/init.d/dbsecurityspt /etc/rc1.d/s97dbsecurityspt
ln -s /etc/init.d/dbsecurityspt /etc/rc2.d/s97dbsecurityspt
ln -s /etc/init.d/dbsecurityspt /etc/rc3.d/s97dbsecurityspt
ln -s /etc/init.d/dbsecurityspt /etc/rc4.d/s97dbsecurityspt
如果在配置文件中設置有標志g_bdobackdoor,木馬同樣會試圖打開/root/.profile文件,檢查其進程是否有root權限。然后后門程序將自己復制到/usr/bin/bsd-port/getty中并啟動。在安裝的最后階段,linux.backdoor.gates.5在文件夾/usr/bin/再次創建一個副本,命名為配置文件中設置的相應名稱,并取代下列工具:
/bin/netstat
/bin/lsof
/bin/ps
/usr/bin/netstat
/usr/bin/lsof
/usr/bin/ps
/usr/sbin/netstat
/usr/sbin/lsof
/usr/sbin/ps
木馬以此完成安裝,并開始調用基本功能。
執行另外兩種算法時木馬同樣會偽裝成守護進程在被感染電腦啟動,檢查其組件是否通過讀取相應的.lock文件啟動(如果未啟動,則啟動組件),但在保存文件和注冊自啟動時使用不同的名稱。
與命令服務器設置連接后,linux.backdoor.gates.5接收來自服務器的配置數據和僵尸電腦需完成的命令。按照不法分子的指令,木馬能夠實現自動更新,對指定ip地址和端口的遠程站點發起或停止ddos攻擊,執行配置數據所包含的命令或通過與指定ip地址的遠程站點建立連接來執行其他命令。
此后門程序的主要ddos攻擊目標是中國的服務器,然而不法分子攻擊對象也包括其他國家。下圖為利用此木馬進行的ddos攻擊的地理分布: