記一次Linux服務器上查殺木馬經歷


開篇前言

     Linux服務器一直給我們的印象是安全、穩定、可靠,性能卓越。由於一來Linux本身的安全機制,Linux上的病毒、木馬較少,二則由於宣稱Linux是最安全的操作系統,導致很多人對Linux的安全性有個誤解:以為它永遠不會感染病毒、木馬;以為它沒有安全漏洞。所以很多Linux服務器都是裸奔的。其實在這次事件之前,我對Linux的安全性方面的認識、重視程度也是有所不足的。系統的安全性是相對而言的,沒有絕對的安全,風險無處不在。

 

案例描述

我們在雲端(中信國際電訊CPC)的一台Linux 應用服務器時不時出現網絡中斷情況,最開始反饋到系統管理員和網絡管理員哪里,以為是網絡方面的問題。在監控系統后,發現在一些時間段出現高流量的情況,分析發現這台Linux服務器只安裝了Tomcat應用程序,沒有任何其它應用程序。產生如此大的流量很不正常,而且出現網絡中斷的時刻,就是系統產生高流量的時刻。當然這些都是我后來才了解到的一些情況,我沒有這台服務器的權限,系統管理員找我看看能分析出啥問題,所以將root賬號權限給了我。

 

案例分析

我連接到服務器后,運行ifconfig命令,檢查網卡的發送、接收數據情況,如下所示,網卡eth0累計發送了12.3TB的數據。這明顯不太正常,顯然有應用程序一直在往外發包。我特意對比了另外一台正常的服務器后,驗證了這個事實。

clip_image001

那么是那個應用程序在一直往外發送包呢? 我首先檢查了Linux系統日志,發現了一些錯誤、告警信息。但是作用不大。於是在服務器上安裝了NetHogs應用程序,實時監控Linux進程的網絡帶寬占用情況。

clip_image002

監控過程確實發現了一些異常情況的進程:

1:/home/WDPM/Development/WebServer/apache-tomcat-7.0.61/cmys 一直在往外發包

2:/usr/bin/bsd-port/agent 一直在往外發包。

3:./cmys一直在往外發包

4:不時出現下面大量異常進程

image

[root@LNX17 /]# ps -ef | grep getty
root      2012     1  0 May22 tty2     00:00:00 /sbin/mingetty /dev/tty2
root      2014     1  0 May22 tty3     00:00:00 /sbin/mingetty /dev/tty3
root      2018     1  0 May22 tty4     00:00:00 /sbin/mingetty /dev/tty4
root      2020     1  0 May22 tty5     00:00:00 /sbin/mingetty /dev/tty5
root      2022     1  0 May22 tty6     00:00:00 /sbin/mingetty /dev/tty6
root     13835 32735  0 01:02 pts/0    00:00:00 grep getty
[root@LNX17 tmp]# ll /usr/bin/bsd-port/
total 2324
-rwxr-xr-x. 1 root root 1135000 Jul 17 08:28 agent
-rwxr-xr-x. 1 root root       4 Jul 17 08:28 agent.conf
-rw-r--r--. 1 root root      27 Jul 21 12:42 cmd.n
-rw-r--r--. 1 root root      73 Aug 21 21:30 conf.n
-rwxr-xr-x. 1 root root 1223123 Aug 21 04:08 getty
-rwxr-xr-x. 1 root root       5 Aug 21 04:08 getty.lock

搜索/usr/bin/bsd-port/agent等進程相關資料,發現很多關於木馬、后門方面的文章,嚴重懷疑服務器被掛馬了。手工殺進程或手工刪除/home/WDPM/Development/WebServer/apache-tomcat-7.0.61/cmys文件,發現不過一會兒,又會出現相同的進程和文件。於是下載安裝了AVG ANTIVIRUS FREE - FOR LINUX這款殺毒軟件,但是啟動服務失敗,不想折騰,於是安裝了ClamAV 殺毒軟件

clip_image004

 

ClamAV介紹

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

 

下載ClamAV安裝包

    ClamAV的官方下載地址為http://www.clamav.net/download.html 我直接使用wget下載源碼安裝文件。

[root@LNX17 tmp]# wget http://nchc.dl.sourceforge.net/project/clamav/clamav/0.97.6/clamav-0.97.6.tar.gz
--2015-08-21 21:58:36--  http://nchc.dl.sourceforge.net/project/clamav/clamav/0.97.6/clamav-0.97.6.tar.gz
Resolving nchc.dl.sourceforge.net... 211.79.60.17, 2001:e10:ffff:1f02::17
Connecting to nchc.dl.sourceforge.net|211.79.60.17|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14765896 (14M) [application/x-gzip]
Saving to: “clamav-0.97.6.tar.gz”
 
100%[==============================================================>] 14,765,896   652K/s   in 71s     
 
2015-08-21 21:59:48 (204 KB/s) - “clamav-0.97.6.tar.gz” saved [14765896/14765896]
 
[root@LNX17 tmp]# wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz
--2015-08-21 22:00:24--  http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz
Resolving nchc.dl.sourceforge.net... 211.79.60.17, 2001:e10:ffff:1f02::17
Connecting to nchc.dl.sourceforge.net|211.79.60.17|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 560351 (547K) [application/x-gzip]
Saving to: “zlib-1.2.7.tar.gz”
 
100%[=============================================================>] 560,351      287K/s   in 1.9s    
 
2015-08-21 22:00:26 (287 KB/s) - “zlib-1.2.7.tar.gz” saved [560351/560351]

 

1、zlib-1.2.7.tar.gz安裝

[root@LNX17 tmp]# tar xvzf zlib-1.2.7.tar.gz
[root@LNX17 tmp]# cd zlib-1.2.7
[root@LNX17 zlib-1.2.7]# ./configure 
Checking for gcc...
Checking for shared library support...
Building shared library libz.so.1.2.7 with gcc.
Checking for off64_t... Yes.
Checking for fseeko... Yes.
Checking for strerror... Yes.
Checking for unistd.h... Yes.
Checking for stdarg.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for attribute(visibility) support... Yes.
Looking for a four-byte integer type... Found.
[root@LNX17 zlib-1.2.7]# make && make install
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o example.o test/example.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o adler32.o adler32.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o crc32.o crc32.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o deflate.o deflate.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o infback.o infback.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o inffast.o inffast.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o inflate.o inflate.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o inftrees.o inftrees.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o trees.o trees.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o zutil.o zutil.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o compress.o compress.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o uncompr.o uncompr.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzclose.o gzclose.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzlib.o gzlib.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzread.o gzread.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN   -c -o gzwrite.o gzwrite.c
ar rc libz.a adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o 
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example example.o -L. libz.a
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o minigzip.o test/minigzip.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip minigzip.o -L. libz.a
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/adler32.o adler32.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/crc32.o crc32.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/deflate.o deflate.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/infback.o infback.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inffast.o inffast.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inflate.o inflate.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inftrees.o inftrees.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/trees.o trees.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/zutil.o zutil.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/compress.o compress.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/uncompr.o uncompr.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzclose.o gzclose.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzlib.o gzlib.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzread.o gzread.c
gcc -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzwrite.o gzwrite.c
gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -O3  -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o libz.so.1.2.7 adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo  -lc 
rm -f libz.so libz.so.1
ln -s libz.so.1.2.7 libz.so
ln -s libz.so.1.2.7 libz.so.1
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o examplesh example.o -L. libz.so.1.2.7
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzipsh minigzip.o -L. libz.so.1.2.7
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o example64.o test/example.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example64 example64.o -L. libz.a
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o minigzip64.o test/minigzip.c
gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip64 minigzip64.o -L. libz.a
cp libz.a /usr/local/lib
chmod 644 /usr/local/lib/libz.a
cp libz.so.1.2.7 /usr/local/lib
chmod 755 /usr/local/lib/libz.so.1.2.7
cp zlib.3 /usr/local/share/man/man3
chmod 644 /usr/local/share/man/man3/zlib.3
cp zlib.pc /usr/local/lib/pkgconfig
chmod 644 /usr/local/lib/pkgconfig/zlib.pc
cp zlib.h zconf.h /usr/local/include
chmod 644 /usr/local/include/zlib.h /usr/local/include/zconf.h

 

2:添加用戶組clamav和組成員clamav

[root@LNX17 zlib-1.2.7]# groupadd clamav
[root@LNX17 zlib-1.2.7]# useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav
[root@LNX17 zlib-1.2.7]# 

3:安裝Clamav-0.97.6

[root@LNX17 tmp]# tar xvzf clamav-0.97.6.tar.gz
[root@LNX17 tmp]# cd clamav-0.97.6
[root@LNX17 clamav-0.97.6]# ./configure --prefix=/opt/clamav  --disable-clamav
[root@LNX17 clamav-0.97.6]# make
[root@LNX17 clamav-0.97.6]# make install

 

配置Clamav

 

1:創建目錄

[root@LNX17 clamav-0.97.6]# mkdir /opt/clamav/logs 
 
[root@LNX17 clamav-0.97.6]# mkdir /opt/clamav/updata 

 

2:創建文件

[root@LNX17 clamav-0.97.6]# touch /opt/clamav/logs/freshclam.log
[root@LNX17 clamav-0.97.6]# touch /opt/clamav/logs/clamd.log
[root@LNX17 clamav-0.97.6]# 
 
[root@LNX17 clamav-0.97.6]# cd /opt/clamav/logs
[root@LNX17 clamav]# cd logs
[root@LNX17 logs]# ls
clamd.log  freshclam.log
[root@LNX17 logs]# ls -lrt
total 0
-rw-r--r--. 1 root root 0 Aug 21 22:10 freshclam.log
-rw-r--r--. 1 root root 0 Aug 21 22:10 clamd.log

 

3:修改屬主

[root@LNX17 logs]# chown clamav:clamav clamd.log 
[root@LNX17 logs]# chown clamav:clamav freshclam.log 
[root@LNX17 logs]# ls -lrt
total 0
-rw-r--r--. 1 clamav clamav 0 Aug 21 22:10 freshclam.log
-rw-r--r--. 1 clamav clamav 0 Aug 21 22:10 clamd.log
[root@LNX17 logs]# 

 

4:修改配置文件

#vi /opt/clamav

/etc/clam.conf

         # Example 注釋掉這一行. 第8 行  

        LogFile /opt/clamav/logs/clamd.log   刪掉前面的注釋目錄改為/opt/clamav/logs/clamd.log  

     PidFile /opt/clamav/updata/clamd.pid 刪掉前面的注釋路徑改為/opt/clamav/updata/clamd.pid

     DatabaseDirectory /opt/clamav/updata 同上

#vi /opt/clamav

/etc/clamfreshclam.conf , 將Example 這一行注釋掉。否則在更新反病毒數據庫是就有可能出現下面錯誤

 

[root@LNX17 clamav]# /opt/clamav/bin/freshclam

ERROR: Please edit the example config file /opt/clamav/etc/freshclam.conf

ERROR: Can't open/parse the config file /opt/clamav/etc/freshclam.conf

clip_image005

 

5:升級病毒庫

[root@LNX17 etc]# /opt/clamav/bin/freshclam

ERROR: Can't change dir to /opt/clamav/share/clamav

出現上面錯誤,直接創建一個文件夾並授權給clamav用戶即可。

[root@LNX17 etc]# mkdir -p /opt/clamav/share/clamav
[root@LNX17 etc]# chown clamav:clamav /opt/clamav/share/clamav
[root@LNX17 etc]# 
 
[root@LNX17 etc]# /opt/clamav/bin/freshclam
ClamAV update process started at Fri Aug 21 22:42:18 2015
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.97.6 Recommended version: 0.98.7
DON'T PANIC! Read http://www.clamav.net/support/faq
nonblock_connect: connect timing out (30 secs)
Can't connect to port 80 of host database.clamav.net (IP: 211.239.150.206)
Trying host database.clamav.net (120.29.176.126)...
nonblock_recv: recv timing out (30 secs)
WARNING: getfile: Download interrupted: Operation now in progress (IP: 120.29.176.126)
WARNING: Can't download main.cvd from database.clamav.net
Trying again in 5 secs...
ClamAV update process started at Fri Aug 21 23:03:32 2015
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.97.6 Recommended version: 0.98.7
DON'T PANIC! Read http://www.clamav.net/support/faq
Downloading main.cvd [100%]
main.cvd updated (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Downloading daily.cvd [100%]
daily.cvd updated (version: 20817, sigs: 1537382, f-level: 63, builder: neo)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 268, sigs: 47, f-level: 63, builder: anvilleg)
Database updated (3961654 signatures) from database.clamav.net (IP: 219.94.128.99)

clip_image006

由於ClamAV不是最新版本,所以有告警信息。可以忽略或升級最新版本。病毒庫需要定期升級,例如我第二天升級病毒庫

[root@LNX17 ~]# /opt/clamav/bin/freshclam
ClamAV update process started at Mon Aug 24 10:10:25 2015
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.97.6 Recommended version: 0.98.7
DON'T PANIC! Read http://www.clamav.net/support/faq
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Downloading daily-20818.cdiff [100%]
Downloading daily-20819.cdiff [100%]
Downloading daily-20820.cdiff [100%]
Downloading daily-20821.cdiff [100%]
Downloading daily-20822.cdiff [100%]
Downloading daily-20823.cdiff [100%]
Downloading daily-20824.cdiff [100%]
Downloading daily-20825.cdiff [100%]
Downloading daily-20826.cdiff [100%]
Downloading daily-20827.cdiff [100%]
Downloading daily-20828.cdiff [100%]
Downloading daily-20829.cdiff [100%]
daily.cld updated (version: 20829, sigs: 1541624, f-level: 63, builder: neo)
bytecode.cvd is up to date (version: 268, sigs: 47, f-level: 63, builder: anvilleg)
Database updated (3965896 signatures) from database.clamav.net (IP: 203.178.137.175)

6:ClamAV 使用

可以使用/opt/clamav/bin/clamscan -h查看相應的幫助信息

image

· 掃描所有用戶的主目錄就使用 clamscan -r /home

· 掃描您計算機上的所有文件並且顯示所有的文件的掃描結果,就使用 clamscan -r /

· 掃描您計算機上的所有文件並且顯示有問題的文件的掃描結果,就使用 clamscan -r --bell -i /

執行下面命令掃描根目錄下面的所有文件。如下所示:56個文件被感染了。基本上都是Linux.Trojan.Agent和Linux.Backdoor.Gates等。

/opt/clamav/bin/clamscan -r --bell -i

clip_image007

clip_image008

clip_image009

clip_image010

手工刪除這些文件。然后重新掃描一下,發現木馬已經被清理完成。但是按照網上資料進一步查找發現木馬啟動程序

[root@LNX17 ~]# cd /etc/init.d/
[root@LNX17 init.d]# ls Db*
DbSecurityMdt  DbSecuritySpt
[root@LNX17 init.d]# ls sel*
selinux
[root@LNX17 init.d]# more selinux 
#!/bin/bash
/usr/bin/bsd-port/getty
[root@LNX17 init.d]# more DbSecuritySpt 
#!/bin/bash
/home/WDPM/Development/WebServer/apache-tomcat-7.0.61/cmys
[root@LNX17 init.d]# more DbSecurityMdt 
#!/bin/bash
/root/cmy6
[root@LNX17 init.d]# more DbSecurityMdt 
#!/bin/bash
/root/cmy6

 

[root@LNX17 bin]# ls bsd*
 
agent.conf cmd.n conf.n getty.lock
 
[root@LNX17 bin]# cd bsd-port/
 
[root@GETLNX17 bsd-port]# ls
 
agent.conf cmd.n conf.n getty.lock
 
[root@LNX17 bsd-port]# more agent.conf 
 
3341
 
[root@LNX17 bsd-port]# more getty.lock 
 
1013
 
[root@LNX17 bsd-port]# cd ..
 
[root@LNX17 bin]# rm -rf bsd-port

此時在用nethogs監控進程的網絡流量,發現已經沒有異常進程了,應該算是徹底清除了。

 

關於Linux.Backdoor.Gates,看到一篇介紹資料了相關內容:Linux.BackDoor.Gates.5——又一針對Linux的木馬, 具體內容如下所示:

------------------------------------------------------------------------------------------------------------------------------ 

某些用戶有一種根深蒂固的觀念,就是目前沒有能夠真正威脅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創建下列符號鏈接:

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攻擊的地理分布:

 

參考資料:

http://blog.csdn.net/liukeforever/article/details/38560363

http://vekergu.blog.51cto.com/9966832/1619266

http://blog.csdn.net/liukeforever/article/details/38560363

http://bbs.appstar.com.cn/thread-10205-1-1.html

http://yangrong083.blog.163.com/blog/static/113406097201371235159424/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM