開篇前言
Linux伺服器一直給我們的印象是安全、穩定、可靠,效能卓越。由於一來Linux本身的安全機制,Linux上的病毒、木馬較少,二則由於宣稱Linux是最安全的作業系統,導致很多人對Linux的安全性有個誤解:以為它永遠不會感染病毒、木馬;以為它沒有安全漏洞。所以很多Linux伺服器都是裸奔的。其實在這次事件之前,我對Linux的安全性方面的認識、重視程度也是有所不足的。系統的安全性是相對而言的,沒有絕對的安全,風險無處不在。
案例描述
我們在雲端(中信國際電訊CPC)的一臺Linux 應用伺服器時不時出現網路中斷情況,最開始反饋到系統管理員和網路管理員哪裡,以為是網路方面的問題。在監控系統後,發現在一些時間段出現高流量的情況,分析發現這臺Linux伺服器只安裝了Tomcat應用程式,沒有任何其它應用程式。產生如此大的流量很不正常,而且出現網路中斷的時刻,就是系統產生高流量的時刻。當然這些都是我後來才瞭解到的一些情況,我沒有這臺伺服器的許可權,系統管理員找我看看能分析出啥問題,所以將root賬號許可權給了我。
案例分析
我連線到伺服器後,執行ifconfig命令,檢查網路卡的傳送、接收資料情況,如下所示,網路卡eth0累計傳送了12.3TB的資料。這明顯不太正常,顯然有應用程式一直在往外發包。我特意對比了另外一臺正常的伺服器後,驗證了這個事實。
那麼是那個應用程式在一直往外傳送包呢? 我首先檢查了Linux系統日誌,發現了一些錯誤、告警資訊。但是作用不大。於是在伺服器上安裝了NetHogs應用程式,實時監控Linux程式的網路頻寬佔用情況。
監控過程確實發現了一些異常情況的程式:
1:/home/WDPM/Development/WebServer/apache-tomcat-7.0.61/cmys 一直在往外發包
2:/usr/bin/bsd-port/agent 一直在往外發包。
3:./cmys一直在往外發包
4:不時出現下面大量異常程式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[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 防毒軟體
ClamAV介紹
ClamAV是一個在命令列下查毒軟體,因為它不將防毒作為主要功能,預設只能查出您計算機內的病毒,但是無法清除,至多刪除檔案。ClamAV可以工作很多的平臺上,但是有少數無法支援,這就要取決您所使用的平臺的流行程度了。另外它主要是來防護一些WINDOWS病毒和木馬程式。另外,這是一個面向服務端的軟體。
下載ClamAV安裝包
ClamAV的官方下載地址為http://www.clamav.net/download.html 我直接使用wget下載原始碼安裝檔案。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[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安裝
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
[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
1 2 3 |
[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
1 2 3 4 5 |
[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:建立目錄
1 2 3 |
[root@LNX17 clamav-0.97.6]# mkdir /opt/clamav/logs [root@LNX17 clamav-0.97.6]# mkdir /opt/clamav/updata |
2:建立檔案
1 2 3 4 5 6 7 8 9 10 11 12 |
[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:修改屬主
1 2 3 4 5 6 7 |
[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
5:升級病毒庫
[root@LNX17 etc]# /opt/clamav/bin/freshclam
ERROR: Can’t change dir to /opt/clamav/share/clamav
出現上面錯誤,直接建立一個資料夾並授權給clamav使用者即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[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) |
由於ClamAV不是最新版本,所以有告警資訊。可以忽略或升級最新版本。病毒庫需要定期升級,例如我第二天升級病毒庫
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[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檢視相應的幫助資訊
· 掃描所有使用者的主目錄就使用 clamscan -r /home
· 掃描您計算機上的所有檔案並且顯示所有的檔案的掃描結果,就使用 clamscan -r /
· 掃描您計算機上的所有檔案並且顯示有問題的檔案的掃描結果,就使用 clamscan -r –bell -i /
執行下面命令掃描根目錄下面的所有檔案。如下所示:56個檔案被感染了。基本上都是Linux.Trojan.Agent和Linux.Backdoor.Gates等。
/opt/clamav/bin/clamscan -r –bell -i
手工刪除這些檔案。然後重新掃描一下,發現木馬已經被清理完成。但是按照網上資料進一步查詢發現木馬啟動程式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[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/