开篇前言

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:不时出现下面大量异常进程

[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下载源码安装文件。

[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

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)

由于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查看相应的帮助信息

· 扫描所有用户的主目录就使用 clamscan -r /home

· 扫描您计算机上的所有文件并且显示所有的文件的扫描结果,就使用 clamscan -r /

· 扫描您计算机上的所有文件并且显示有问题的文件的扫描结果,就使用 clamscan -r --bell -i /

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

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

手工删除这些文件。然后重新扫描一下,发现木马已经被清理完成。但是按照网上资料进一步查找发现木马启动程序

[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/

http://www.cnblogs.com/kerrycode/p/4754820.html

Linux服务器杀马(转)的更多相关文章

  1. 记一次Linux服务器上查杀木马经历

    开篇前言 Linux服务器一直给我们的印象是安全.稳定.可靠,性能卓越.由于一来Linux本身的安全机制,Linux上的病毒.木马较少,二则由于宣称Linux是最安全的操作系统,导致很多人对Linux ...

  2. Linux中杀不死的进程

    前段时间,一哥们,去杀Linux服务器的进程,发现kill命令失灵了,怎么杀都杀不死. 然后上网查了下资料,原来是要被杀的进程,成为了僵尸进程. 僵尸进程的查看方法: 利用命令ps,可以看到有标记为Z ...

  3. Linux服务器中木马(肉鸡)手工清除方法

    由于自己也碰到过这种情况,刚好看到这篇文章,先转载过来.的确蛮有用的哦. 首先剧透一下后门木马如下: (当然这是事后平静下来后慢慢搜出来的,那个时候喝着咖啡感觉像个自由人) 木马名称 Linux.Ba ...

  4. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  5. Linux服务器挂死案例分析

    问题现象: 在linux服务器上运行一个指定的脚本时,就会出现无数个相同进程的,而且不停的产生,杀也杀不掉,最后系统就陷入死循环,无法登陆,只能人工去按机器的电源键才可以.这够崩溃的吧? 问题分析过程 ...

  6. 在Linux服务器部署 .NET-Core 项目

    一.文章概要  这篇文章是讲述一个Linux 新手将 .NET-Core 项目部署在 Linux 服务器上的一个记录,以及在部署期间遇到的问题以及解决办法.有不恰当的地方.欢迎大神指正. 二.前期准备 ...

  7. Atitit tomcat在linux服务器的启动与其他

    Atitit tomcat在linux服务器的启动与其他 1.1. /home/tomcat/tomcat3/bin/startup.sh1 1.2. 判断启动是否成功 ps -ef|grep tom ...

  8. Linux服务器部署系列之八—Sendmail篇

    Sendmail是目前Linux系统下面用得最广的邮件系统之一,虽然它存在一些不足,不过,目前还是有不少公司在使用它.对它的学习,也能让我们更深的了解邮件系统的运作.下面我们就来看看sendmail邮 ...

  9. Linux服务器启动后只读解决办法

    今天处理一个服务器,远程死活连接不上,只好跑信息中心去看了下服务器. Linux服务器启动之后,提示: give root password for maintenance (or type cont ...

随机推荐

  1. php判断变量是否存在

    isset— 检测变量是否设置, isset() 只能用于变量,因为传递任何其它参数都将造成解析错误.若想检测常量是否已设置,可使用 defined() 函数. 如果已经使用 unset() 释放了一 ...

  2. SharePoint Server 2010 删除Web应用

    SharePoint Server 2010 删除Web应用         因为之前的测试.在SharePointserver创建于非常多Web应用(我是在本机Win7系统上安装的SharePoin ...

  3. 在MyEclipse8.5中配置Tomcat6.0服务器

    一.单击工具栏的的黑小三角,选择—>Configure Server,出现首选项对话框,在对话框的左边框中找到MyEclipse—>Application Servers下找到Tomcat ...

  4. sql中 in 、not in 、exists、not exists 使用方法和区别

    % 的一类. NOT IN:通过 NOT IN keyword引入的子查询也返回一列零值或很多其它值. 以下查询查找没有出版过商业书籍的出版商的名称. SELECT pub_name FROM pub ...

  5. js操作string它substr方法

    substr 方法 从指定的指定起始位置的长度返回一个子. stringvar.substr(start [, length ]) 參数 stringvar 必选项. 要提取子字符串的字符串文字或 S ...

  6. 国内三大PTPrivate Tracker站分析

    除这一行外,下面全部内容都是转载.出处不明. 国内三大PT(Private Tracker)站分析 先郑重的声明一下:本文以下的内容所有是复制粘贴的,不代表老夫的观点. 事实上内容我也没细致看. 贴这 ...

  7. MVC 使用EF Code First数据迁移之添加字段

    PM> add-migration 20161109   -Force 正在为迁移“20161109”搭建基架.此迁移文件的设计器代码包含当前 Code First 模型的快照.在下一次搭建迁移 ...

  8. MySQL与逻辑模块

    启动MySQL 1.初始化模块运行&&存储引擎初始化运行 2.1中运行完毕后 ---->连接管理模块接手 3.连接管理模块启动处理client连接请求的监听程序(tcp/ip 网 ...

  9. 深入浅出JMS(一)——JMS简要

    假设手机只能实时通话.没有邮件和短信功能发生?一个电话回来.只是没有足够的时间去连接.然后传递这款手机的信息肯定是不接受. 么不能先将信息存下来.当用户须要查看信息的时候再去获得信息呢?伴随着这个疑惑 ...

  10. 玩转Web之easyui(一)-----easy ui datagird 分页

    easy ui 中数据表格的分页其实是很简单的,分页是在数据表格可以正常显示数据的基础上进行的,在这里给出servlet的代码,其中selectAll()方法是从数据库中提取所有数据, 分页的一种思路 ...