1. 程式人生 > >Unix.Trojan.DDoS_XOR-1、Linux.Trojan.Agent(Linux.BackDoor.Gates.5)木馬清理

Unix.Trojan.DDoS_XOR-1、Linux.Trojan.Agent(Linux.BackDoor.Gates.5)木馬清理

一、現象

Linux伺服器被黑, 向外瘋狂發包,造成網路癱瘓。nload顯示100Mbit/s。(nload統計流量軟體)

二、木馬掃描

1、ClamAV介紹

ClamAV是一個在命令列下查毒軟體,因為它不將防毒作為主要功能,預設只能查出您計算機內的病毒,但是無法清除,至多刪除檔案。ClamAV可以工作很多的平臺上,但是有少數無法支援,這就要取決您所使用的平臺的流行程度了。另外它主要是來防護一些WINDOWS病毒和木馬程式。另外,這是一個面向服務端的軟體。

相關使用參考http://wiki.ubuntu.org.cn/ClamAV

2、安裝ClamAV

sudo apt-get install clamav

3、升級病毒庫:

sudo  freshclam

4、clamscan.掃描病毒

這裡附帶一些例子

  • 掃描所有使用者的主目錄就使用 clamscan -r /home
  • 掃描您計算機上的所有檔案並且顯示所有的檔案的掃描結果,就使用 clamscan -r /
  • 掃描您計算機上的所有檔案並且顯示有問題的檔案的掃描結果, 就使用 clamscan -r --bell -i /

如果不知道木馬可能的位置就全盤掃吧,時間較長,可以放在晚上掃

clamscan -r --bell -i /
/lib/libudev.so: Unix.Trojan.DDoS_XOR-1 FOUND
/lib/lib3.so.1: Linux.Trojan.Agent FOUND
/usr/bin/jjhltwoxvs: Unix.Trojan.DDoS_XOR-1 FOUND

----------- SCAN SUMMARY -----------
Known viruses: 4059163
Engine version: 0.98.7
Scanned directories: 1300819
Scanned files: 13315360
Infected files: 4
Total errors: 14433
Data scanned: 401706.34 MB
Data read: 788612.48 MB (ratio 0.51:1)
Time: 52742.298 sec (879 m 2 s)

以上標紅的就是發現的病毒檔案。

使用file /lib/libudev.so檢視可以看到,都是可執行檔案。

三、木馬Linux.BackDoor.Gates.5介紹

Linux.BackDoor.Gates.5,此惡意軟體結合了傳統後門程式和DDoS攻擊木馬的功能,用於感染32位Linux版本,根據其特徵可以斷定,是與Linux.DnsAmp和Linux.DDoS家族木馬同出於一個病毒編寫者之手。新木馬由兩個功能模組構成:基本模組是能夠執行不法分子所發指令的後門程式,第二個模組在安裝過程中儲存到硬碟,用於進行DDoS攻擊。Linux.BackDoor.Gates.5在執行過程中收集並向不法分子轉發受感染電腦的以下資訊:

  1. CPU核數(從/proc/cpuinfo讀取)。
  2. CPU速度(從/proc/cpuinfo讀取)。
  3. CPU使用(從/proc/stat讀取)。
  4. Gate'a的 IP(從/proc/net/route讀取)。
  5. Gate'a的MAC地址(從/proc/net/arp讀取)。
  6. 網路介面資訊(從/proc/net/dev讀取)。
  7. 網路裝置的MAC地址。
  8. 記憶體(使用/proc/meminfo中的MemTotal引數)。
  9. 傳送和接收的資料量(從/proc/net/dev讀取)。
  10. 作業系統名稱和版本(通過呼叫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地址的遠端站點建立連線來執行其他命令。


四、木馬清理

1、簡單判斷有無該中木馬

有無下列檔案,有說明中了Linux.BackDoor.Gates.5木馬

cat /etc/rc.d/init.d/selinux

cat /etc/rc.d/init.d/DbSecuritySpt

ls /usr/bin/bsd-port 

ls /usr/bin/dpkgd

檢視大小是否正常(與一正常系統對比),我伺服器上發現大小都是1.1Mbyte,明顯不正常

ls -lh /bin/netstat

ls -lh /bin/netstat

ls -lh /usr/sbin/lsof

2、刪除/bin/netstat、/bin/netstat、/usr/sbin/lsof,從正常系統拷貝該三條命令到/root目錄供使用,再木馬清理完畢再將其拷到對應bin目錄。

3、刪除以下檔案

rm -rf /usr/bin/bsd-port  (木馬程式)
m -rf /usr/bin/dpkgd
rm -f /usr/bin/.sshd 
rm -f /tmp/gates.lock 程序號

rm /etc/cron.hourly/gcc.sh

rm /etc/init.d/selinux (木馬)

rm /etc/init.d/DbSecuritySpt(木馬)

rm /etc/rc1.d/S97DbSecuritySpt

rm /etc/rc2.d/S97DbSecuritySpt

rm /etc/rc3.d/S97DbSecuritySpt

rm /etc/rc4.d/S97DbSecuritySpt

rm /etc/rc5.d/S97DbSecuritySpt

以上檔案刪除了可能立馬就又重新生成了。/etc/rc.d/init.d/selinux、/etc/rc.d/init.d/DbSecuritySpt、/usr/bin/bsd-port 、/usr/bin/dpkgd、/tmp/gates.lock 、 /etc/cron.hourly/gcc.sh都刪不掉,會被重新建立

解決:可以刪除後立馬自己建立一個並設定不允許修改。

如:

rm /etc/cron.hourly/gcc.sh
touch /etc/cron.hourly/gcc.sh
chattr +i
/etc/cron.hourly/gcc.sh

注:chattr +i :設定檔案不能被刪除、改名、設定連結關係,同時不能寫入或新增內容

若以上也不行,那麼就破壞掉木馬檔案,木馬的監控程序發現檔案存在應該不會重新建立,故可以破壞掉:

echo xxxxxxxx > /etc/rc.d/init.d/DbSecuritySpt

4、殺死可疑程序

①使用top檢視到有可以程序


kill -9 9490,殺死後幾秒後就會重新隨機建立一個新的木馬程序。該程序是隨機10字元病毒。那麼說明有個啟動指令碼或程序,在發現程序不再時就立馬重啟該木馬。

我們首先檢視自啟動指令碼。

②ps 檢視上述程序的父程序號為1是init程序,所以應該和init有關,說明系統啟動時建立了該木馬程序,有一個啟動指令碼建立了該程序,然後該程序監控病毒檔案,當病毒檔案被刪除了就會立馬建立。所以檢視/etc/init.d


③在crontab的log裡面,總顯示執行了一個gcc.sh

開啟vi /etc/crontab

內容如下:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
20 04 * * * root /usr/lib/lm/scon.sh
09 18 * * * root /usr/lib/lm/scon.sh
*/3 * * * * root /etc/cron.hourly/gcc.sh //每3分鐘重啟一次
對比發現最後三行是多的。

開啟這三個指令碼發現這三個檔案都是病毒指令碼

④vi /etc/cron.hourly/gcc.sh
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
cp /lib/libudev.so /lib/libudev.so.6
/lib/libudev.so.6

從這個地方可以看到病毒本體:/lib/libudev.so,這個檔案看起來應該是一個庫檔案,但是用file檢視,這個檔案則為一個可執行檔案

刪除該/lib/libudev.so會立馬重新生成,應該是上述top查到的可疑程序監控的。

既然刪不掉,那麼破壞掉:

echo slkfhrl,kfhs > /lib/libudev.so
rm /lib/libudev.so

touch /lib/libudev.so
chattr +i /lib/libudev.so

再kill掉上述木馬程序,發現程序被殺死沒有重新建立。

vi /usr/lib/lm/scon.sh

開啟該檔案發現拷貝了木馬檔案,刪除指令碼中建立的目錄及檔案。

<span style="font-family:SimSun;font-size:14px;">。。。。。。。。。。。。。。
<span style="color:#ff0000;">mkdir /var/opt/lm</span>
cd /var/opt/lm
myFile="/var/opt/lm/pstart"
if [ ! -f "$myFile" ]; then
mkdir /var/opt
<span style="color:#ff0000;">mkdir /var/opt/lm
cp /lib/lib19.so.1 /var/opt/lm/pstart</span>
sleep 1s
chmod 755 /var/opt/lm/pstart
sleep 2s
kill -s 9 `pgrep freeBSD`
sleep 1s
pkill -9 freeBSD
else
sleep 1s
fi


myFile="/var/opt/lm/https"
if [ ! -f "$myFile" ]; then
mkdir /var/opt
mkdir /var/opt/lm
cp /lib/lib17.so.1 /var/opt/lm/https
sleep 1s
chmod 755 /var/opt/lm/https
sleep 2s


。。。。。。。。。。。。。。。</span>

rm /lib/lib19.so.1
rm /lib/lib17.so.1
rm /lib/lib3.so.1

⑥查詢scon.sh檔案從哪生成的

grep -r scon.sh /etc/

下圖可以看到/etc/init.d/iislog中建立了scon.sh檔案,cp /bin/.iptab3 /usr/lib/lm/scon.sh,到這裡算是找到了病毒的源頭:

⑦梳理下:

/bin/.iptab3是病毒源

/etc/init.d/iislog是開機啟動指令碼。並建立相應的病毒檔案/usr/lib/lm/scon.sh ,將該檔案追加到/etc/crontab來定時自啟動。

/etc/crontab中的 /etc/cron.hourly/gcc.sh //每3分鐘重啟一次

cp /lib/libudev.so /lib/libudev.so.6  /lib/libudev.so.6執行病毒體,監控程序發現/lib/libudev.so 背刪就會重新生成。

解決:

將源頭/bin/.iptab3、/etc/init.d/iislog刪掉保證init不會主動啟動病毒;

清理/etc/crontab保證不自啟動;

將病毒指令碼中建立的目錄及檔案都一一刪掉。重啟系統,發現病毒已經清理掉。

殺掉主程序,刪除病毒體/lib/libudev.so

重啟後再次檢查一下步驟3中要刪除的檔案是否沒有被重新建立。

OK,清理完畢!




注:

查詢清理病毒期間用到的工具:

1、nload統計網路流量

2、chattr +i限制檔案修改

3、lsof(list open files)是一個列出當前系統開啟檔案的工具。

4、inotifywait -m /etc/:實時監控檔案變動