0X00 前言
昨天晚上,阿里云给我发了短信和邮件来,说我的机子存在对其他服务器攻击的行为,于是就上机排查,写了这篇文章来记录一下
这台主机本来是我昨天下午做实验用的,当时做了一个软连接后门,但想着后面可能做笔记还用得上就没有将它关闭,没想到就这六个小时不到的时间里,被一个坏b给拿去利用了。在排查前,考虑到有可能是当时做软连接后门的实验没有关闭导致攻击者连接上,阿里云也封禁了对外22端口的访问,而且只是一台做实验的云主机,就没有去做隔离。
0x01 上机排查
查看外连
上机后,因为收到的告警是对外攻击,所以就先执行netstat -anpt
查看外连进程,
一看,居然有这么多的外连信息,都来自于18784/work32
这个进程,看起来是利用我的机子来爆破其他主机的ssh端口
定位恶意进程
通过执行lsof -p 18784
,可以查看到该进程的信息(包括路径、外连),ps -aux | grep 18784
筛选出该进程(执行时间、参数等),也就定位到了这个进程的路径/usr/.work/.work32
、执行命令参数/usr/.work/work32 -daemon root 123456
确定攻击方式
为了进一步确认攻击入口,通过last -n 10
来查看近十次登录成功记录,但疑惑的是,并没有攻击者的ip,全都是自己的。这里就出现了问题,也没有找到相关解决方案,只有从/var/log/secure
中得到了攻击者的ssh连接信息。
当时只记录了这些,足以分析出攻击者的源地址为182.115.239.239:56677
,先是通过Http请求了软连接后门的端口,再使用ssh进行连接,整个过程一分钟不到
Jul 13 21:38:09 Alicloud su[18728]: Bad protocol version identification 'GET / HTTP/1.1' from 182.115.239.239 port 56677
Jul 13 21:38:13 Alicloud su[18729]: Accepted password for root from 182.115.239.239 port 64440 ssh2
Jul 13 21:38:13 Alicloud su[18729]: pam_unix(su:session): session opened for user root by (uid=0)
Jul 13 21:38:35 Alicloud su[18729]: pam_unix(su:session): session closed for user root
Jul 13 21:39:05 Alicloud sshd[19022]: Bad protocol version identification 'GET
查找修改项
再通过查看/var/log/cron
,同样的时间点出现了计划任务重载,意味着计划任务被修改
再去查看日志计划任务/etc/crontab
,有一个新增条目是执行/usr/.work/work32
,但没有参数,每个小时执行一次
排查tmp
再来到/tmp
路径下,这个路径权限为777,是最有可能遗留后门、挖矿等程序的路径,果然不出所料,新增了4个文件(图是后面补充的)
根据config.json
来看,很容易就看出这是个挖矿木马,其中矿池地址为xmr.crypto-pool.fr:6666
,情报中心也有恶意的标签存在
{
"api": {
"id": null,
"worker-id": null
},
"http": {
"enabled": false,
"host": "127.0.0.1",
"port": 0,
"access-token": null,
"restricted": true
},
"autosave": true,
"background": true,
"colors": true,
"title": true,
"randomx": {
"init": -1,
"mode": "auto",
"1gb-pages": false,
"rdmsr": true,
"wrmsr": false,
"numa": true
},
"cpu": {
"enabled": true,
"huge-pages": true,
"hw-aes": null,
"priority": null,
"memory-pool": false,
"yield": true,
"argon2-impl": null,
"astrobwt-max-size": 550,
"astrobwt-avx2": false,
"argon2": [0],
"astrobwt": [-1],
"cn": [
[1, 0]
],
"rx": [0],
"rx/wow": [0],
"cn/0": false,
"rx/arq": "rx/wow",
"rx/keva": "rx/wow"
},
"donate-level": 0,
"donate-over-proxy": 1,
"log-file": null,
"pools": [
{
"algo": null,
"coin": null,
"url": "xmr.crypto-pool.fr:6666",
"user": "47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV",
"pass": "x",
"rig-id": null,
"nicehash": false,
"keepalive": false,
"enabled": true,
"tls": false,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null
}
],
"print-time": 60,
"retries": 5,
"retry-pause": 5,
"syslog": false,
"user-agent": null,
"verbose": 0,
"watch": true
}
通过查询这个域名指向的主机,没有结果,执行top
命令没有发现CPU占用率高的进程,就是因为这个挖矿木马无法连接到矿池
再查看shell脚本(auth.sh/secure.sh
),这个脚本居然是自动化的ssh登录失败防御机制,没想到这个坏b还整个这玩意
#!/bin/bash
LIMIT=8
while true ; do
TIME=$(date '+%b %e %H') #example: Apr 11 11
BLOCK_IP=$(grep "$TIME" /var/log/auth.log|grep Failed|awk '{print $(NF-3)}'|sort|uniq -c|awk '$1>"$LIMIT"{print $1":"$2}')
for i in $BLOCK_IP
do
IP=$(echo $i|awk -F: '{print $2}')
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];
then
echo "sshd:$IP" >> /etc/hosts.deny
fi
done
sleep 60
0x02 攻击分析
情报沙箱
将恶意程序删除,修改的文件恢复后,为了确保应急是否完成,又将work32
样本放到了情报沙箱中检测,没想到疏漏了开机自启动项和ssh公钥
在/etc/rc.local
中发现了/usr/.work/work32
的自启动项,不过好在恶意程序删除了,将这个条目删除
再查看/root/.ssh/authorized_keys
中,将下面这条新增的公钥删除
分析攻击者
接下来对攻击者进行分析,谈不上溯源,因为给的就一个住宅IP,这里推荐一个网站,IP溯源_IP.SY 可以定位到一个小范围,查询攻击者IP182.115.239.239
,大致位置就位于济源市黄河明珠花苑
这个小区的周边,也有可能就是在这个小区
0x03 结尾
这次应急响应就到这里了,到今天晚上阿里云也是解除了拦截
参与讨论