一次Linux伺服器被入侵和刪除木馬程式的經歷

tonykorn97發表於2017-05-25
轉帖地址:http://wzlinux.blog.51cto.com/8021085/1740113

原創作品,允許轉載,轉載時請務必以超連結形式標明文章 原始出處 、作者資訊和本宣告。否則將追究法律責任。http://wzlinux.blog.51cto.com/8021085/1740113

一、背景

    晚上看到有臺伺服器流量跑的很高,明顯和平常不一樣,流量達到了800Mbps,第一感覺應該是中木馬了,被人當做肉雞了,在大量發包。

    我們的伺服器為了最好效能,防火牆(iptables)什麼的都沒有開啟,但是伺服器前面有物理防火牆,而且機器都是做的埠對映,也不是常見的埠,按理來說應該是滿安全的,可能最近和木馬有緣吧,老是讓我遇到,也趁這次機會把發現過程記錄一下。

二、發現並追蹤處理

1、檢視流量圖發現問題

    檢視的時候網頁非常卡,有的時候甚至沒有響應。

2、top動態檢視程式

    我馬上遠端登入出問題的伺服器,遠端操作很卡,網路卡出去的流量非常大,透過top發現了一個異常的程式佔用資源比較高,名字不仔細看還真以為是一個Web服務程式。

3、ps命令檢視程式的路徑

     發現這個程式檔案在/etc目錄下面,是個二進位制程式,我複製了下來,放到了本文附近位置,以供大家在虛擬機器上面研究,哈哈。

4、結束異常程式並繼續追蹤

1
2
killall -9 nginx1
rm -f /etc/nginx1

    幹掉程式之後,流量立刻下來了,遠端也不卡頓了,難道刪掉程式檔案,幹掉異常程式我們就認為處理完成了麼?想想也肯定沒那麼簡單的,這個是木馬啊,肯定還會自己生成程式檔案(果然不出我所料,在我沒有搞清楚之前,後面確實又生成了)我們得繼續追查。

5、檢視登入記錄及日誌檔案secure

    透過命令last檢視賬戶登入記錄,一切正常。檢視系統檔案message並沒有發現什麼,但是當我檢視secure檔案的時候發現有些異常,反正是和認證有關的,應該是嘗試連進來控制發包?

6、再次ps檢視程式

    其實第一次ps的時候就有這個問題,那時候沒有發現,第二次是自習檢視每個程式,自習尋找不太正常的程式,發現了一個奇怪的ps程式。

    我找了一臺正常的機器,檢視了一下ps命令的大小,正常的大約是81KB,然後這臺機器上面的ps卻高達1.2M,命令檔案肯定是被替換了。

   然後進入另一個ps的目錄,看到有如下幾個命令,然後我有查詢了一下系統的這幾個命令,發現都變得很大,都達到了1.2M,這些系統命令檔案肯定是都被替換了。

7、更多異常檔案的發現

   檢視定時任務檔案crontab並沒有發現什麼一次,然後檢視系統啟動檔案rc.local,也沒有什麼異常,然後進入/etc/init.d目錄檢視,發現比較奇怪的指令碼檔案DbSecuritySpt、selinux。

    第一個檔案可以看出他就是開機啟動那個異常檔案的,第二個應該和登入有關,具體我還不是很清楚,反正肯定是有問題的。

   既然和登入有關,那就找和ssh相關的,找到了下面的一個檔案,是隱藏檔案,這個也是木馬檔案,我們先記錄下來,這樣程式名字都和我們的服務名字很相近,就是為了迷惑我們,他們的大小都是1.2M,他們有可能是一個檔案。

   我有看了一下木馬喜歡出現的目錄/tmp,也發現了異常檔案,從名字上感覺好像是監控木馬程式的。

    想到這裡,替換的命令應該很多,單靠我們去找肯定是解決不了的,我的建議最好是重灌作業系統,並做好安全策略,如果不重灌,我下面給一下我的方法,具體行不行有待驗證。

三、木馬手動清除

    現在綜合總結了大概步驟如下:

1、簡單判斷有無木馬

1
2
3
4
5
6
7
8
9
10
#有無下列檔案
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下

1
ps netstat ss lsof

3、刪除如下目錄及檔案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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、刪除含木馬命令並重新安裝(或者把上傳的正常程式複製過去也行)

    我自己重新安裝好像不行,我是找的正常的機器複製的命令。

1
2
3
4
5
6
7
8
9
10
11
12
#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

1
yum -y install clamav clamav-milter

2、啟動服務

1
service clamd restart

3、更新病毒庫

    由於ClamAV不是最新版本,所以有告警資訊。可以忽略或升級最新版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[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檢視相應的幫助資訊

1
2
3
4
5
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核心作業系統的惡意軟體,然而這種觀念正在面臨越來越多的挑戰。與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讀取)。

  • CPU速度(從/proc/cpuinfo讀取)。

  • 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建立下列符號連結:

1
2
3
4
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/再次建立一個副本,命名為配置檔案中設定的相應名稱,並取代下列工具:

1
2
3
4
5
6
7
8
9
/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攻擊的地理分佈:


                              




本文出自 “運維點滴記錄” 部落格,請務必保留此出處http://wzlinux.blog.51cto.com/8021085/1740113

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-2139844/,如需轉載,請註明出處,否則將追究法律責任。

相關文章