ecs 中毒的一次处理过程
原文:张馆长博客,ecs 中毒的一次处理过程 一次客户 ecs 中毒的处理过程,可以给读者参考下中毒的处理过程。
由来
客户机器中毒了,pm 找我来让处理下,记录下,给其他人做个处理过程的参考。
处理过程
机器是 centos ,先利用 rpm -V <pkg_name>
确认基础的排查命令没被修改过:
$ rpm -qf `which ps`
procps-ng-3.3.10-23.el7.x86_64
$ rpm -V procps-ng
$ rpm -qf `which top`
procps-ng-3.3.10-23.el7.x86_64
top 看到异常 cpu 的进程占用 cpu 很高:
$ top
top - 19:44:29 up 34 days, 5:08, 4 users, load average: 612.03, 617.15, 482.75
Tasks: 2014 total, 66 running, 1946 sleeping, 0 stopped, 2 zombie
%Cpu(s): 96.6 us, 3.1 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 13186040+total, 2722452 free, 48820448 used, 80317504 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 78946784 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1206 root 20 0 5251748 2.3g 3584 S 2956 1.8 465:37.77 ld-linux-x86-64
给它 STOP
信号不让 cpu 切换到它,而不是直接 kill 掉它:
$ kill -STOP 1206
查看来源和清理:
$ ll /proc/1206/exe
lrwxrwxrwx 1 root root 0 Apr 21 19:44 /proc/1206/exe -> /dev/shm/.x/stak/ld-linux-x86-64.so.2
清理定时任务
排查定时任务,发现有内容,清理掉, crond 的子目录也看下,文件内容和多了的子文件也处理下
$ crontab -l
* * * * * /dev/shm/.x/upd >/dev/null 2>&1
@reboot /dev/shm/.x/upd >/dev/null 2>&1
[root@p-96b7-dndl etc]# find /etc/cron.* -type f
/etc/cron.d/0hourly
/etc/cron.d/sysstat
/etc/cron.daily/logrotate
/etc/cron.daily/man-db.cron
/etc/cron.deny
/etc/cron.hourly/0anacron
查看下进程树,是否有父进程拉起 1206
:
$ pstree -sp 1206
systemd(1)───ld-linux-x86-64(1206)─┬─{ld-linux-x86-64}(1209)
├─{ld-linux-x86-64}(1211)
├─{ld-linux-x86-64}(1216)
├─{ld-linux-x86-64}(1217)
├─{ld-linux-x86-64}(1218)
├─{ld-linux-x86-64}(6436)
├─{ld-linux-x86-64}(6437)
├─{ld-linux-x86-64}(6439)
├─{ld-linux-x86-64}(6440)
├─{ld-linux-x86-64}(6441)
├─{ld-linux-x86-64}(6443)
├─{ld-linux-x86-64}(6471)
├─{ld-linux-x86-64}(6472)
├─{ld-linux-x86-64}(6476)
├─{ld-linux-x86-64}(6484)
├─{ld-linux-x86-64}(6489)
├─{ld-linux-x86-64}(6495)
├─{ld-linux-x86-64}(6501)
├─{ld-linux-x86-64}(6504)
├─{ld-linux-x86-64}(6505)
├─{ld-linux-x86-64}(6508)
├─{ld-linux-x86-64}(6509)
├─{ld-linux-x86-64}(6511)
├─{ld-linux-x86-64}(6523)
├─{ld-linux-x86-64}(6527)
├─{ld-linux-x86-64}(6529)
├─{ld-linux-x86-64}(6531)
├─{ld-linux-x86-64}(6535)
├─{ld-linux-x86-64}(6547)
├─{ld-linux-x86-64}(6554)
├─{ld-linux-x86-64}(6563)
├─{ld-linux-x86-64}(6567)
├─{ld-linux-x86-64}(6568)
├─{ld-linux-x86-64}(6569)
├─{ld-linux-x86-64}(6572)
├─{ld-linux-x86-64}(6579)
└─{ld-linux-x86-64}(6580)
发现并没有,查看下进程的 cmdline
:
$ xargs -0 < /proc/1206/cmdline
xmrig
--library-path stak stak/xmrig -o 185.82.200.52:443 -k
检查系统的 so 和开机启动项
搜了下这个 ip 是外国的,查看下 ld 的 so 导入配置文件,看看是否有被加入额外的 so 导入:
$ rpm -qf /etc/ld.so.conf
glibc-2.17-260.el7.x86_64
# glibc 也提供了很多基础的 so,这部同时也可以看出来
# 基础的 so 有被替换不
$ rpm -V glibc
同理查看下 systemd 的
$ rpm -V systemd
.M....... c /etc/machine-id
SM5....T. c /etc/rc.d/rc.local # 这个文件也记得查下
S.5....T. c /etc/systemd/system.conf
.M....... g /etc/udev/hwdb.bin
.M....... g /var/lib/systemd/random-seed
.M....G.. g /var/log/journal
.M....G.. g /var/log/wtmp
.M....G.. g /var/run/utmp
# 查看下有没有被添加 systemd 的开机启动任务
$ systemctl list-units
清理进程相关
我们环境是 k8s 和 docker 的,etcd 没证书,kubelet 的 http 可写,docker 开网络端口不 tls,redis 无密码这种现象是不存在的。看了下我们配置的部署配置文件,初步怀疑是一个有 sudo 的弱密码用户被爆破导致的中毒,查看了具有 sudo 权限和 root 的 ~/.ssh/authorized_keys
也没被添加别人的公钥(有的话记得清理下),开始删除挖矿进程的目录:
rm -rf /dev/shm/.x/
kill -9 1206
排查网络
看看是否还有其他后台进程上报或者下载的,看了下 udp 的正常,所以提取所有活跃的 tcp 连接 ip 看看有异常的 IP 没:
$ netstat -ant |& grep -Po '(\d{1,3}\.){3}\d{1,3}' | sort | grep -v 10.187.0 | uniq -c
49 0.0.0.0
2 119.82.135.65
111 127.0.0.1
4 169.254.169.254
2271 192.168.0.235
13 2xx.1xx.15.161
1 3x.1xx.2x.7
27 4x.x.1xx.x3
1 xx.1xx.6x.x54
$ netstat -ant | grep 119.82.135.65
tcp 0 1281 192.168.0.235:22 119.82.135.65:38525 LAST_ACK
tcp 0 1 192.168.0.235:22 119.82.135.65:54598 LAST_ACK
$ lsof -nPi :38525
$ lsof -nPi :54598
$
看了下只有不断被外国 IP 暴力 ssh 的 IP,其余几个 IP 是我和客户那边的人员 IP。让客户改密码后再观察下。
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.