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

2023-10-27

开篇前言

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

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 杀毒软件

 

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

image

· 扫描所有用户的主目录就使用 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/

转载于:https://www.cnblogs.com/kerrycode/p/4754820.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记一次Linux服务器上查杀木马经历 的相关文章

  • 学习要按部就班进行,不功利,当做乐趣进行就行了。

    这段时间 回老家工作了 有点浮躁 急于求成了 也有点摆烂了 不过在老家就业 也不代表将来不失业 也不是自己家开的公司 哈哈 所以 还是要按部就班进行 不功利 最优化进行就行了 学习时长能完成就是成功 当做乐趣就可以了
  • 字符串01--替换空格

    字符串01 替换空格 jz02 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 请实现一个函数 将一个字符串中的每个空格替换成 20 例如 当字符串为We Are Happy 则经过替换之后的字符串为We 20Are 20Ha
  • makefile的一些技巧总结

    1 运行目录存在相同名称文件或文件目录 比如log 则make log报错 在makefile开头加入 PHONY log 2 默认命令 需要遵循Makefile语法 bin sh语法 2 1 bin sh语法 需要反斜杠 保证一行执行完成
  • 【es数据库】python 使用Elasticsearch数据库

    es 数据库 Elasticsearch是一个开源的高扩展性搜索引擎 它可以快速地存储 搜索和分析大量的数据 使用Python语言和Elasticsearch 可以轻松地创建和操作 数据库 和 数据库表 而且具备分布式和高扩展性的特点 适用
  • 磁珠反谐振案例

    转载文章 原作者 一博科技 高速先生 PCB设计会存在各种大大小小的误区 有的误区很容易用简单的理论进行解释 有的却显得神秘而难懂 高速先生最近和粉丝们的互动中惊讶的发现 磁珠对电源纹波可能会存在反面影响这个误区原来一直都是谜一样的存在 高
  • EasyX基本概念

    一 EasyX颜色的表示方法 1 使用预定义常量和16进制表示颜色 比如setlinecolor oxffoooo setlinecolor BLUE 使用教程里有常见颜色的预定义常量值 2 用RGB宏合成颜色 比如setlinecolor
  • FasterRCNN(一)网络部分代码分析

    一 定义一个RCNN的类作为基础 1 self build network self sess is training True 函数 构建网络框架 with tf variable scope RCNN initializer tf tr
  • 浅谈人群行为分析算法

    概述 人群行为分析算法分为四个主要方向 1 行人检测 Pedestrian Detection 2 人群计数 Crowd Counting 3 人群密度分析 Crowd Density Estimation 4 人群状态分析 Crowd B
  • session.getServletContext

    request getSession getServletContext 获取的是page的上下文 request getSession getServletContext getRealPath 是获取的的tamcat的路径 部署项目后相
  • Spring配置文件对于占位符 ${} 的解析源码分析

    1 前言 由于公司新项目的搭建 而且选择了 spring boot 对于 spring boot 其中的好处就是我们无需在为其配置大量的 XML 完全可以基于注解的方式来进行配置 但也没有完全采用 java config 配置 至少在我们项
  • request.getParameter() 和request.getAttribute() 区别

    getParameter 是用来接受用post个get方法传递过来的参数的 getAttribute 必须先setAttribute 1 request getParameter 取得是通过容器的实现来取得通过类似post get等方式传入
  • 【异周话题 第 16 期】2018年,你最期待的前端开发技术有哪些?

    异周话题 第 16 期 2018年 你最期待的前端开发技术有哪些 话题背景 2017年已经过去 2018年如约而至 2017年在前端领域里 react已经逐渐占据主流 Angular 发布了 v4 以及 v5 Vue js 继续流行 谷歌也
  • 禁止取消checkbox选中

    问题描述 checkbox复选框 只能选中而不能取消选中 因为checkbox是HTML中的元素 可能不能让它不选中自己 所以我的方法是 不直接对checkbox处理 在它上面再加一层div 每次点击checkbox时 其实是点击div c
  • 21天JenkinsDay11 对某个job单独设置权限

    http istester com jenkins 438 html
  • Ubuntu下制作Windows启动盘

    下载脚本https download csdn net download idwtwt 87559777 安装依赖 sudo apt install wimtools 执行制作 woeusb 5 2 4 bash device Win10
  • 蓝牙学习笔记

    Bluetoth学习笔记 前言 蓝牙技术其实包括BR EDR LE以及AMP三种 其中BR是传统的蓝牙技术 也是我们最常用的一种 LE是低功耗模式 是目前流行的模式 三种模式RF都使用2 4GHz ISM Industrial Scient
  • FPGA开发软件详细清单

    前言 主流的FPGA公司有ISE ALTERA LATTICE三家 各自的开发软件也不一样 1 Xilinx公司软件链接 1 ISE 14 7 百度云链接 https pan baidu com s 1O E y7RsDvbOWjvDKQf
  • A卡和N卡

    NVIDIA 全称为NVIDIA Corporation NASDAQ NVDA 官方中文名称英伟达 A卡 AMD的卡 N卡 英伟达的卡 DirectXDirectCompute对手是OpenGL opencl 对手是cuda AMD的卡特
  • QT中的QMQTT通信

    1 将qmqtt的包下载完之后加载到工程中 qt中qmqtt通讯包 桌面系统文档类资源 CSDN下载 2 h文件添加下列语句 QMQTT Client client 3 在cpp文件中初始化 client new QMQTT Client
  • 21张让你Python代码能力突飞猛进的速查表

    随着深度学习的蓬勃发展 越来越多的小伙伴们开始使用python作为主打代码 python有着种类繁多的第三方库 这里为大家从网络上收集了一些代码速查表 21张让你Python代码能力突飞猛进的速查表随着深度学习的蓬勃发展 越来越多的小伙伴们

随机推荐

  • php 服务器端主动发数据到客户端解决办法

    1 在客户端使用隐藏 iframe 其src指向服务器端的控制代码 比如 server php 2 在server php 通过 while 实现永不结束的请求 在循环内 实现断点 比如 sleep 2 表示每2秒钟循环一次 3 在每次循环
  • vue-admin-template的基本使用

    目录 NodeJs基础 NPM使用 yarn使用 模块化开发 使用vue admin template 修改请求路径 修改路由 先使用vsCode创建一个工作区 创建一个空的文件夹 使用vsCode打开这个文件夹 将文件夹另存为工作区 最终
  • react的map循环嵌套

    var btnType Object keys obj map key i gt var item obj key map s index gt return
  • cublasSgetriBatched的input matrix A 的值,在計算之後是否被改變或叫做污染,答案是No

    基於Nvidia的sample源文件改寫 可以發現 Sgetri的輸入矩陣A的元素值 并沒有改變 編譯的話 在cudaSample對應的blas文件夾中置入如下cu文件 并且修改對應的makefile裏的變量名字來編譯運行 Copyrigh
  • Equal Sums CodeForces - 988C(map+pair应用)

    题意 小A有 n 个整数数列 a1 a2 an 每个数列的长度为li 请你找出两个编号不同的数列 并从这两个数列中各恰好删除一个数 使得这两个数列的和相等 AC代码 参考了大佬的博客 include
  • 【Matlab】基于SVM支持向量机的数据回归预测(Excel可直接替换数据)

    Matlab 基于SVM支持向量机的数据回归预测 Excel可直接替换数据 1 模型原理 2 文件结构 3 Excel数据 4 分块代码 5 完整代码 6 运行结果 1 模型原理 支持向量机 Support Vector Machine S
  • hadoop之MapReduce

    MapReduce的处理过程分为两个步骤 map和reduce 每个阶段的输入输出都是key value的形式 key和value的类型可以自行指定 map阶段对切分好的数据进行并行处理 处理结果传输给reduce 由reduce函数完成最
  • 利用ApiPost实现Mock Server服务

    APIPOST可以让你在没有后端程序的情况下能真实地返回接口数据 你可以用APIPOST实现项目初期纯前端的效果演示 也可以用APIPOST实现开发中的数据模拟从而实现前后端分离 在使用APIPOST之前 你的团队实现数据模拟可能是下面的方
  • gitHub OpenSSL SSL_read: Connection was reset, errno 10054 解决方法

    gitHub OpenSSL SSL read Connection was reset errno 10054 解决方法 将原先使用密码提交的方法 更换为使用基于令牌 token 的身份验证提交 获取方法令牌 token 的步骤如下 在这
  • 最近涉猎的东西总结

    1 Erlang 2 RabbitMQ Java Client 3 Java AES 加密类库 4 Jackson类库 操作Json格式字符串
  • SpringMVC之JSON数据返回与异常处理机制

    目录 一 SpringMVC的JSON数据返回 1 导入Maven依赖 2 配置spring mvc xml 3 ResponseBody注解的使用 3 1案例演示 1 List集合转JSON 2 Map集合转JSON 3 返回指定格式St
  • buck电路上下管_关于Buck变换器上管MOSFET开关速度的优劣势是什么?

    答 Buck变换器上管MOSFET开关速度的分析及提高 目前 Buck变换器在电脑主板 通信电源 手机等电子产品中的应用越来越广泛 随着全世界节能减排的发展 Buck变换器的效率成为评价电源系统性能优劣及可靠性的最重要指标 Buck电路的效
  • string数组转int数组

    string数组类型转换为int数组 方法一 ConvertAll的用法 1 public static int StrToInt string str 2 3 return int Parse str 4 5 6 string arrs
  • 华为CE12808/S9700交换机istack/CSS堆叠主备倒换操作命令步骤

    一 华为CE12808交换机 istack堆叠状态 1 设备型号 交换机一 HUAWEI CE12808 交换机二 HUAWEI CE12808 2 istack堆叠主备倒换操作步骤 2 1 设备当前配置保存并进行备份 2 2 切换所用命令
  • Flink java模拟生成自定义流式数据

    思路如下 定义一个POJO类 注意flink里使用的类必须有一个无参的构造方法 自定义DataSource实现SourceFunction接口 使用ctx collect 传入想要发送的数据就可以了 首先定义一个POJO类 class My
  • 渗透测试工程师的一些面试题3(同样适合刚入门的小白看哦~~~!)

    SQL注入防护 1 使用安全的API 2 对输入的特殊字符进行Escape转义处理 3 使用白名单来规范化输入验证方法 4 对客户端输入进行控制 不允许输入SQL注入相关的特殊字符 5 服务器端在提交数据库进行SQL查询之前 对特殊字符进行
  • TypeError: 'method' object is not subscriptable

    TypeError method object is not subscriptable 此错误一般是函数没加括号导致 下图写错了应该是 case id self sheet cell row 1 value
  • C++ - 重载函数与模板函数(function template)

    参考 CSDN C C 中函数重载的理解 Essential C 一 重载函数 1 1 重载函数的意义 重载函数通常用来在同一个作用域内用同一个函数名命名一组功能相似的函数 这样做减少了函数名的数量 避免了名字空间的污染 对于程序的可读性有
  • 什么是DDoS攻击

    DDoS攻击的定义 DDoS Distributed Denial of Service 分布式拒绝服务 攻击 是指攻击者控制僵尸网络中的大量僵尸主机向攻击目标发送大流量数据 耗尽攻击目标的系统资源 导致其无法正常地响应服务请求 如下图所示
  • 记一次Linux服务器上查杀木马经历

    开篇前言 Linux服务器一直给我们的印象是安全 稳定 可靠 性能卓越 由于一来Linux本身的安全机制 Linux上的病毒 木马较少 二则由于宣称Linux是最安全的操作系统 导致很多人对Linux的安全性有个误解 以为它永远不会感染病毒