一、事件背景
Apache ActiveMQ是最流行的开源、多协议、基于 Java 的消息代理。它支持行业标准协议,用户可以从多种语言和平台的客户端使用AMQP协议集成多平台应用程序。
2023年10月26日,Apache ActiveMQ官方发布新版本5.15.16,修复了一个远程代码执行漏洞,攻击者可构造恶意请求通过Apache ActiveMQ的61616端口发送恶意数据导致远程代码执行,从而完全控制Apache ActiveMQ服务器。
2023年10月27日,由于公司有外包开发系统存在该漏洞,服务器被攻击者入侵,我们安全部开始了应急响应和推动加固工作。
二、应急处置过程
上班路上,收到飞书监控群安全告警,到公司后立马登录云安全中心控制台看到告警如下:
由于云安全中心没有提示【拦截成功】,且该云账号的云安全中心为免费版,我们认为攻击者大概率入侵成功,必须立刻启动应急响应。
cat /etc/passwd
crontab -l
ls -al /var/tmp find / -name auditd find / -name atd find / -name polkitd find / -name configs.conf rm -rf /etc/selinux/configs.conf rm -rf /usr/local/share/configs.conf
[root@ecs tmp]# ps -ef | grep kstrp root 16303 1 0 06:49 ? 00:00:00 [kstrp] root 16304 16303 0 06:49 ? 00:00:00 [kstrp] root 16305 16303 0 06:49 ? 00:00:00 [kstrp] root 20583 19373 0 12:04 pts/3 00:00:00 grep --color=auto kstrp [root@ecs tmp]# readlink /proc/16303/exe /var/tmp/atd (deleted) [root@ecs tmp]# kill -9 16303
杀掉kstrp进程后,观察一段时间未再出现。
本以为本次应急告一段落,结果晚上再次出现安全告警,需要再次进行应急:
[root@ecs tmp]# readlink /proc/21944/exe /var/tmp/polkitd (deleted) [root@ecs tmp]# ps -ef | grep 21944 root 21944 19411 0 20:46 ? 00:00:00 [ksoftirqd/0] root 25284 22161 0 23:07 pts/0 00:00:00 grep --color=auto 21944 [root@ecs tmp]# kill -9 21944
执行上述清理操作后过2分钟再次弹出安全告警,发现服务器再次生成configs.conf文件以及ksoftirqd/0进程,怀疑守护进程未全部清理干净,再次进行检查,发现存在多个守护进程ksoftirqd/0
[root@ecs tmp]# systemctl status 25480 ● session-21.scope - Session 21 of user root Loaded: loaded Drop-In: /run/systemd/system/session-21.scope.d └─50-After-systemd-logind\x2eservice.conf, 50-After-systemd-user-sessions\x2eservice.conf, 50-Description.conf, 50-SendSIGHUP.conf, 50-Slice.conf, 50-TasksMax.conf Active: active (abandoned) since Tue 2021-08-24 14:57:57 CST; 2 years 2 months ago CGroup: /user.slice/user-0.slice/session-21.scope ├─12556 /opt/jdk1.8/jre/bin/java -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/mnt/server/... ├─12803 /opt/zbox/run/apache/httpd -k restart ├─12804 /opt/zbox/run/apache/httpd -k restart ├─12805 /opt/zbox/run/apache/httpd -k restart ├─12806 /opt/zbox/run/apache/httpd -k restart ├─12910 /bin/sh /opt/zbox/run/mysql/mysqld_safe --defaults-file=/opt/zbox/etc/mysql/my.cnf ├─13143 /opt/zbox/run/mysql/mysqld --defaults-file=/opt/zbox/etc/mysql/my.cnf --basedir=/opt/zbox/run/mysql --datadir=/opt/zbox/data/mysql --plug... ├─13161 /opt/zbox/run/apache/httpd -k restart ├─19410 [ksoftirqd/0] ├─19411 [ksoftirqd/0] ├─19412 [ksoftirqd/0] └─25480 [ksoftirqd/0]
清理掉所有守护进程并删除configs.conf木马文件后,继续观察半小时,没有出现新的告警、configs.conf、auditd、polkitd、atd木马文件和kstrp、ksoftirqd/0进程,终于可以下班。
[root@ecs tmp]# kill -9 19410 | kill -9 19411 | kill -9 19412 | kill -9 25480
虽然AMQ的61616端口依然开着,但几天未收到告警,本以为攻击者已经遗忘了我们公司,结果下午收到阿里云封禁服务器的通知,原因是服务器对外进行了DDOS攻击。
由于3天没告警,我们初步认为服务器没被入侵,属于误封,发起工单和阿里云进行沟通,得出两个结论:
在没有任何告警信息的情况下,我们再次进行了艰难的排查,主要步骤如下:
[root@ecs ~]# cat /proc/mounts | grep proc /dev/vda1 /proc/18034 ext4 rw,relatime,data=ordered 0 0 [root@ecs~]# umount /proc/18034 [root@ecs~]# ps -ef | grep 18034 root 11715 26645 0 22:30 pts/2 00:00:00 grep --color=auto 18034 root 18034 1 2 05:49 ? 00:29:50 [ksoftirqd/0] [root@ecs~]# lsof -p 18034 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME linux_amd 18034 root cwd DIR 253,17 4096 6816173 /mnt/server/activemq-5.15.10/bin linux_amd 18034 root rtd DIR 253,1 4096 2 / linux_amd 18034 root txt REG 253,17 5398528 6816523 /mnt/server/activemq-5.15.10/bin/linux_amd64 (deleted) linux_amd 18034 root 0r CHR 1,3 0t0 1031 /dev/null linux_amd 18034 root 1w CHR 1,3 0t0 1031 /dev/null linux_amd 18034 root 2w CHR 1,3 0t0 1031 /dev/null linux_amd 18034 root 3u IPv4 261919304 0t0 TCP ecs:52766->20.89.141.233:icl-twobase2 (ESTABLISHED) linux_amd 18034 root 4u a_inode 0,10 0 6358 [eventpoll] linux_amd 18034 root 5r FIFO 0,9 0t0 261080142 pipe linux_amd 18034 root 6w FIFO 0,9 0t0 261080142 pipe linux_amd 18034 root 7u IPv4 261590289 0t0 TCP ecs:35772->194.49.94.12:32675 (ESTABLISHED) [root@ecs~]# kill -9 18034
所有AMQ升级到5.15.16,重新开放61616端口,并且已验证不能再触发漏洞,本次应急响应终于正式告一段落。
三、安全建议
四、IOCs
172.245.16.125/down 4.216.93.211:9865/x.sh 4.216.93.211:25001 47.243.142.18:443 4.216.93.211:5981/ix.sh 146.56.217.27/7LvMgjN2.sh 119.45.155.12/7LvMgjN2.sh 82.115.220.81/bins/x86 194.49.94.12 20.89.141.233 39.103.151.239 39.99.235.57 183.136.225.9 2151.m.x8.eyes.sh 0.tcp.ap.ngrok.io okfile.cc/az www.bailong8888.com/long long.amdc6766.net 149.28.237.94.vultrusercontent.com
/var/tmp/polkitd
/var/tmp/atd
/var/tmp/auditd
/var/tmp/configs.conf
/etc/selinux/configs.conf
/usr/local/share/configs.conf
/usr/local/share/man/configs.conf
/usr/local/share/man/man1/configs.conf
/mnt/server/activemq/bin/linux_amd64
bf0e3caacbe6ccc28b7678d1ec551ca7
8e5672c5f7a049316a902b7d449165c6
0d763111a051c06368d4d25efeb08a05
9dd7853e4915795c528e89bb2548d894
36522b9120906d4f91d7087e5c7ce20c
kstrp
ksoftirqd/0