記一次入侵Linux服務(wù)器和刪除木馬程序的經(jīng)歷
一、背景
晚上看到有臺(tái)服務(wù)器流量跑的很高,明顯和平常不一樣,流量達(dá)到了800Mbps,第一感覺(jué)應(yīng)該是中木馬了,被人當(dāng)做肉雞了,在大量發(fā)包。
我們的服務(wù)器為了最好性能,防火墻(iptables)什么的都沒(méi)有開(kāi)啟,但是服務(wù)器前面有物理防火墻,而且機(jī)器都是做的端口映射,也不是常見(jiàn)的端口,按理來(lái)說(shuō)應(yīng)該是滿安全的,可能最近和木馬有緣吧,老是讓我遇到,也趁這次機(jī)會(huì)把發(fā)現(xiàn)過(guò)程記錄一下。
二、發(fā)現(xiàn)并追蹤處理
1、查看流量圖發(fā)現(xiàn)問(wèn)題
查看的時(shí)候網(wǎng)頁(yè)非???,有的時(shí)候甚至沒(méi)有響應(yīng)。
2、top動(dòng)態(tài)查看進(jìn)程
我馬上遠(yuǎn)程登錄出問(wèn)題的服務(wù)器,遠(yuǎn)程操作很卡,網(wǎng)卡出去的流量非常大,通過(guò)top發(fā)現(xiàn)了一個(gè)異常的進(jìn)程占用資源比較高,名字不仔細(xì)看還真以為是一個(gè)Web服務(wù)進(jìn)程。
4、結(jié)束異常進(jìn)程并繼續(xù)追蹤
killall -9 nginx1
rm -f /etc/nginx1
干掉進(jìn)程之后,流量立刻下來(lái)了,遠(yuǎn)程也不卡頓了,難道刪掉程序文件,干掉異常進(jìn)程我們就認(rèn)為處理完成了么?想想也肯定沒(méi)那么簡(jiǎn)單的,這個(gè)是木馬啊,肯定還會(huì)自己生成程序文件(果然不出我所料,在我沒(méi)有搞清楚之前,后面確實(shí)又生成了)我們得繼續(xù)追查。
5、查看登錄記錄及日志文件secure
通過(guò)命令last查看賬戶登錄記錄,一切正常。查看系統(tǒng)文件message并沒(méi)有發(fā)現(xiàn)什么,但是當(dāng)我查看secure文件的時(shí)候發(fā)現(xiàn)有些異常,反正是和認(rèn)證有關(guān)的,應(yīng)該是嘗試連進(jìn)來(lái)控制發(fā)包?
7、更多異常文件的發(fā)現(xiàn)
查看定時(shí)任務(wù)文件crontab并沒(méi)有發(fā)現(xiàn)什么一次,然后查看系統(tǒng)啟動(dòng)文件rc.local,也沒(méi)有什么異常,然后進(jìn)入/etc/init.d目錄查看,發(fā)現(xiàn)比較奇怪的腳本文件DbSecuritySpt、selinux。
想到這里,替換的命令應(yīng)該很多,單靠我們?nèi)フ铱隙ㄊ墙鉀Q不了的,我的建議最好是重裝操作系統(tǒng),并做好安全策略,如果不重裝,我下面給一下我的方法,具體行不行有待驗(yàn)證。
三、木馬手動(dòng)清除
現(xiàn)在綜合總結(jié)了大概步驟如下:
1、簡(jiǎn)單判斷有無(wú)木馬
#有無(wú)下列文件
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 #木馬后門(mén)
rm -f /tmp/gates.lod
rm -f /tmp/moni.lod
rm -f /etc/rc.d/init.d/DbSecuritySpt(啟動(dòng)上述描述的那些木馬變種程序)
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(默認(rèn)是啟動(dòng)/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、刪除含木馬命令并重新安裝(或者把上傳的正常程序復(fù)制過(guò)去也行)
我自己重新安裝好像不行,我是找的正常的機(jī)器復(fù)制的命令。
#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、啟動(dòng)服務(wù)
service clamd restart
3、更新病毒庫(kù)
由于ClamAV不是最新版本,所以有告警信息。可以忽略或升級(jí)最新版本。
[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查看相應(yīng)的幫助信息
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、查看日志發(fā)現(xiàn)
把發(fā)現(xiàn)的命令刪掉替換正常的
附錄:Linux.BackDoor.Gates.5
經(jīng)過(guò)查詢資料,這個(gè)木馬應(yīng)該是Linux.BackDoor.Gates.5,找到一篇文件,內(nèi)容具體如下:
某些用戶有一種根深蒂固的觀念,就是目前沒(méi)有能夠真正威脅Linux內(nèi)核操作系統(tǒng)的惡意軟件,然而這種觀念正在面臨越來(lái)越多的挑戰(zhàn)。與4月相比,2014年5月Doctor Web公司的技術(shù)人員偵測(cè)到的Linux惡意軟件數(shù)量創(chuàng)下了新紀(jì)錄,六月份這些惡意軟件名單中又增加了一系列新的Linux木馬,這一新木馬家族被命名為L(zhǎng)inux.BackDoor.Gates。
在這里描述的是惡意軟件家族Linux.BackDoor.Gates中的一個(gè)木馬:Linux.BackDoor.Gates.5,此惡意軟件結(jié)合了傳統(tǒng)后門(mén)程序和DDoS攻擊木馬的功能,用于感染32位Linux版本,根據(jù)其特征可以斷定,是與Linux.DnsAmp和Linux.DDoS家族木馬同出于一個(gè)病毒編寫(xiě)者之手。新木馬由兩個(gè)功能模塊構(gòu)成:基本模塊是能夠執(zhí)行不法分子所發(fā)指令的后門(mén)程序,第二個(gè)模塊在安裝過(guò)程中保存到硬盤(pán),用于進(jìn)行DDoS攻擊。Linux.BackDoor.Gates.5在運(yùn)行過(guò)程中收集并向不法分子轉(zhuǎn)發(fā)受感染電腦的以下信息:
CPU核數(shù)(從/proc/cpuinfo讀?。?br />
CPU速度(從/proc/cpuinfo讀?。?br />
CPU使用(從/proc/stat讀?。?/p>
Gate'a的 IP(從/proc/net/route讀取)。
Gate'a的MAC地址(從/proc/net/arp讀取)。
網(wǎng)絡(luò)接口信息(從/proc/net/dev讀取)。
網(wǎng)絡(luò)設(shè)備的MAC地址。
內(nèi)存(使用/proc/meminfo中的MemTotal參數(shù))。
發(fā)送和接收的數(shù)據(jù)量(從/proc/net/dev讀?。?。
操作系統(tǒng)名稱和版本(通過(guò)調(diào)用uname命令)。
啟動(dòng)后,Linux.BackDoor.Gates.5會(huì)檢查其啟動(dòng)文件夾的路徑,根據(jù)檢查得到的結(jié)果實(shí)現(xiàn)四種行為模式。
如果后門(mén)程序的可執(zhí)行文件的路徑與netstat、lsof、ps工具的路徑不一致,木馬會(huì)偽裝成守護(hù)程序在系統(tǒng)中啟動(dòng),然后進(jìn)行初始化,在初始化過(guò)程中解壓配置文件。配置文件包含木馬運(yùn)行所必須的各種數(shù)據(jù),如管理服務(wù)器IP地址和端口、后門(mén)程序安裝參數(shù)等。
根據(jù)配置文件中的g_iGatsIsFx參數(shù)值,木馬或主動(dòng)連接管理服務(wù)器,或等待連接:成功安裝后,后門(mén)程序會(huì)檢測(cè)與其連接的站點(diǎn)的IP地址,之后將站點(diǎn)作為命令服務(wù)器。
木馬在安裝過(guò)程中檢查文件/tmp/moni.lock,如果該文件不為空,則讀取其中的數(shù)據(jù)(PID進(jìn)程)并“干掉”該ID進(jìn)程。然后Linux.BackDoor.Gates.5會(huì)檢查系統(tǒng)中是否啟動(dòng)了DDoS模塊和后門(mén)程序自有進(jìn)程(如果已啟動(dòng),這些進(jìn)程同樣會(huì)被“干掉”)。如果配置文件中設(shè)置有專門(mén)的標(biāo)志g_iIsService,木馬通過(guò)在文件/etc/init.d/中寫(xiě)入命令行
#!/bin/bash\n<path_to_backdoor>將自己設(shè)為自啟動(dòng),然后Linux.BackDoor.Gates.5創(chuàng)建下列符號(hào)鏈接:
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
如果在配置文件中設(shè)置有標(biāo)志g_bDoBackdoor,木馬同樣會(huì)試圖打開(kāi)/root/.profile文件,檢查其進(jìn)程是否有root權(quán)限。然后后門(mén)程序?qū)⒆约簭?fù)制到/usr/bin/bsd-port/getty中并啟動(dòng)。在安裝的最后階段,Linux.BackDoor.Gates.5在文件夾/usr/bin/再次創(chuàng)建一個(gè)副本,命名為配置文件中設(shè)置的相應(yīng)名稱,并取代下列工具:
/bin/netstat
/bin/lsof
/bin/ps
/usr/bin/netstat
/usr/bin/lsof
/usr/bin/ps
/usr/sbin/netstat
/usr/sbin/lsof
/usr/sbin/ps
木馬以此完成安裝,并開(kāi)始調(diào)用基本功能。
執(zhí)行另外兩種算法時(shí)木馬同樣會(huì)偽裝成守護(hù)進(jìn)程在被感染電腦啟動(dòng),檢查其組件是否通過(guò)讀取相應(yīng)的.lock文件啟動(dòng)(如果未啟動(dòng),則啟動(dòng)組件),但在保存文件和注冊(cè)自啟動(dòng)時(shí)使用不同的名稱。
與命令服務(wù)器設(shè)置連接后,Linux.BackDoor.Gates.5接收來(lái)自服務(wù)器的配置數(shù)據(jù)和僵尸電腦需完成的命令。按照不法分子的指令,木馬能夠?qū)崿F(xiàn)自動(dòng)更新,對(duì)指定IP地址和端口的遠(yuǎn)程站點(diǎn)發(fā)起或停止DDoS攻擊,執(zhí)行配置數(shù)據(jù)所包含的命令或通過(guò)與指定IP地址的遠(yuǎn)程站點(diǎn)建立連接來(lái)執(zhí)行其他命令。
此后門(mén)程序的主要DDoS攻擊目標(biāo)是中國(guó)的服務(wù)器,然而不法分子攻擊對(duì)象也包括其他國(guó)家。下圖為利用此木馬進(jìn)行的DDoS攻擊的地理分布:
相關(guān)文章
Linux系統(tǒng)修改環(huán)境變量的常用方法
這篇文章主要給大家介紹了Linux系統(tǒng)修改環(huán)境變量的常用方法,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-02-02centos7安裝mysql并jdbc測(cè)試實(shí)例詳解
這篇文章主要介紹了centos7安裝mysql并jdbc測(cè)試實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-02-02centos下root運(yùn)行Elasticsearch異常問(wèn)題解決
這篇文章主要介紹了centos下root運(yùn)行Elasticsearch異常問(wèn)題解決的相關(guān)資料,Elasticsearch異常問(wèn)題解決辦法詳細(xì)介紹,需要的朋友可以參考下2016-11-11Linux6.7卸載系統(tǒng)自帶的mysql-libs* crontab命令不能用了原因分析
這篇文章主要介紹了Linux6.7卸載系統(tǒng)自帶的mysql-libs* crontab命令不能用了原因分析及解決方法,非常不錯(cuò),需要的朋友參考下吧2016-12-12開(kāi)啟Apache mod_rewrite模塊示例代碼
這篇文章主要介紹了如何開(kāi)啟Apache mod_rewrite模塊,需要的朋友可以參考下2014-03-03Ubuntu18.04更改apt源為阿里云源的詳細(xì)過(guò)程
安裝Ubuntu 18.04后,使用國(guó)外源太慢了,修改為國(guó)內(nèi)源會(huì)快很多,下面這篇文章主要給大家介紹了關(guān)于Ubuntu18.04更改apt源為阿里云源的相關(guān)資料,需要的朋友可以參考下2021-12-12linux 普通用戶切換成root免密碼的實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇linux 普通用戶切換成root免密碼的實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的。現(xiàn)在就分享給大家。也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12centos6.5服務(wù)器安裝Nginx設(shè)置服務(wù)和開(kāi)機(jī)自啟的方法
本篇文章主要介紹了centos6.5服務(wù)器安裝Nginx設(shè)置服務(wù)和開(kāi)機(jī)自啟的方法,具有一定的參考價(jià)值,有興趣的小伙伴可以了解一下2017-08-08Gentoo 下安裝與配置Nginx+ MySQL + PHP (fastcgi) 環(huán)境步驟分享
Gentoo 下安裝與配置Nginx+ MySQL + PHP (fastcgi) 環(huán)境步驟,需要的朋友可以參考下2013-02-02Linux安裝Redis實(shí)現(xiàn)過(guò)程及報(bào)錯(cuò)解決方案
這篇文章主要介紹了Linux安裝Redis實(shí)現(xiàn)過(guò)程及報(bào)錯(cuò)解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08