Vor einiger Zeit haben wir etwas Nachforschungen im Bereich Industrial Control Systems (ICS) betrieben - dabei sind wir auf manchen Systemen auch auf eine Datei mit dem Namen “photo.scr” gestoßen. Unsere Erkenntnisse dazu wollen wir in diesem Blogpost teilen - damit Dritte verstehen können, wie die gefundene Malware funktioniert und wie man sich am besten vor ihr schützen kann.
Zunächst wussten wir nicht genau, was es mit der “photo.scr” auf sich hatte. Da die Datei sich auf einigen Systemen allerdings in jedem Ordner finden ließ und sich zudem bei Betrachten von HTML-Dateien (den Hilfedateien einer ICS-Software) einen Autodownload dieser Datei startete, entschlossen wir uns die auffällige Datei etwas genauer zu untersuchen. Wie sich später zeigte gehört die Datei zu einem Kryptomining-Botnet - über das bereits andere Sicherheitsunternehmen berichtet hatten.
Einige Erkenntnisse haben wir bereits in einem Artikel auf golem.de vorgestellt: Kritische Infrastrukturen: Wenn die USV Kryptowährungen schürft
Für die Analyse nutzten wir unter anderem den Dienst malwr.com. Wir luden dort mehrere Samples hoch und entdeckten auch bereits hochgeladene Versionen dieser Software. Soweit wir das beurteilen können, funktionierten alle Samples nach demselben Prinzip. Wir fokussierten uns insbesondere auf dieses Sample - da wir es auf einem ICS gefunden und anschließend näher untersucht haben.
Analyse
Die Datei ist 1578496 Bytes (~1.6 MB) groß und wird als PE32 executable (GUI) Intel 80386 (stripped to external PDB), for MS Windows
erkannt:
1 2 3 4 5 |
|
Hashsummen des Sampels
1 2 3 4 5 6 7 8 |
|
Wie wir wissen, sollte man nicht das Kommando “strings” auf unbekannten Dateien ausführen, deswegen nutzten wir die hilfreichen Features von Radare2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Wie man sieht, ist die .rsrc
Ressource-Section, mit ungefähr 1.4 MB von insgesamt 1.6 MB, am Größten. Es lohnt sich also einen Blick dahineinzuwerfen. Dazu kann man das praktische Tool wrestool nutzen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Diesmal gibt es einige kleinere Dateien, wobei eine besonders heraussticht: Gleich ganz oben mit dem Suffix “RCDATA1”. Die anderen Dateien zeigte das wrestool
als Icons an, diese scheinen aber, bis auf zwei Ausnahmen eines Ordnersymbols, keine zu sein. Das Ordnersymbol dient offensichtlich dazu Nutzer zu täuschen (Social Engineering), damit diese einen Doppelklick auf den vermeintlichen Ordner machen.
Moderne Webbrowser, wie der Mozilla Firefox zeigen trotz verfälschtem Symbol an, dass es sich bei der abgerufenen Datei um eine ausführbare Datei handelt.
Die verdächtige größere Datei scheint wieder eine Windows-Executable zu sein:
1 2 3 4 5 |
|
Sucht man nach der MD5-Summe 3afeb8e9af02a33ff71bf2f6751cae3a
, so findet man heraus, dass es sich um eine Programm namens NsCpuCNMiner32.exe handelt - Das werden wir später an einer anderen Stelle noch erkennen.
Führt man in Radare2 das Kommando iz | less
aus, so bekommt man eine Auflistung aller Strings in der .data
Sektion. Hier lassen sich interessante Sachen entdecken!
Zum Beispiel die Hosts mit denen die Malware kommuniziert:
1 2 3 4 5 6 7 8 9 |
|
Konkret sieht man aus dem malwr.com-Log, dass ein HTTP-Request an folgende URL gestellt wird: httpx://stafftest .ru/test.html. Das finden wir auch in der Binary logischweise wieder:
1
|
|
Ruft man diese URL in einer abgeschirmten Umgebung auf, so bekommt man HTML-Quelltext und viel Buchstabensalat zurück. Eine Analyse von Fortinet zeigt, dass scheinbar nur Buchstaben verstauscht werden müssen, um die Kommandos zu entschlüsseln - Es handelt sich offensichtlich um eine ROT47 Methode auf einem eigenen Schriftsatz - der folgendermaßen gelöst werden kann.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Eine beispielhafte Ausgabe findet man in unserem Paste.
1
|
|
Zudem wird ein HTTP-Request vorgenommen bei dem mehrere Daten übermittelt werden, so etwa eine Version (ver
), der Computername, der Nutzer und inwieweit das Programm nach dem Neustart des Rechners ausgeführt wird. Vermutlich werden diese Werte genutzt, um sie in ein Backend der Cyberkriminellen einzupflegen - darüber haben diese jederzeit Überblick wie viele und welche Systeme befallen sind.
Der Parameter ver
deutet zudem darauf hin, dass die Entwicklung der Malware tatsächlich erstaunlich professionell, mit immer neuen Releases, verläuft. Eine Analyse von GuardiCore legt nahe, dass mit jeder neuen Version auch neue Verbreitungswege zu der Malware hinzugefügt werden.
In der Liste der Strings finden wir den oben bereits extrahierten NsCpuCNMiner wieder (dieser existiert in manchen Versionen der Malware sowohl in der 32-bit, als auch in der 64-bit Variante), welcher im %%TEMP%%
-Verzeichnis abgelegt und von dort ausgeführt wird.
1 2 |
|
Der Miner wird defaultmäßig mit Mining-Pools ausgeführt, die bereits in der “photo.scr” hinterlegt sind. Darüber hinaus wird eine Liste mit möglichen Mining-Pools mit dem gezeigten HTTP-Request ermittelt und in einer Datei mit dem Namen “pools.txt” gespeichert. Per Shell-Kommando kann die entsprechende Datei bei Aufruf des Miners übergeben werden.
1
|
|
Damit die getanene Arbeit und deren Ergebnisse einem Account auf einem der Mining-Pools zugeordnet werden kann, muss oft ein Account-spezifischer API-Key angegeben werden:
1
|
|
Reddit-Nutzer konnten weitere, wahrscheinlich zugehörende, Adressen und API-Keys ausfindig machen.
Um sich zu verbreiten, brute-forced der Miner FTP-Logins. Dazu nutzt er folgende Benutzernamen…
1 2 3 4 5 6 7 8 9 |
|
…und Passwörter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Die folgenden Dateiendungen könnten darauf hindeuten, dass die Malware Dateien mit dieser Endung manipuliert, um sich weiter zu verbreiten:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Die Manipulation beinhaltet vor allem das Erstellen eines 1x1 großen Iframes über welchen auf die entsprechende Datei (photo.scr) verwiesen wird. Der Code dazu lautet:
1
|
|
Um immer im Hintergrund zu laufen und um sich auf weitere Systeme zu verbreiten wird ein Registry-Eintrag angelegt und zudem versucht sich auf alle angeschlossene Laufwerke zu kopieren:
1 2 |
|
Zudem wird nach Doppelklick auf die Datei ein Countdown von 5 Wochen (über 3.100.000 Sekunden) gestartet - erst nach dieser Zeit findet die geschilderte aggressive Verbreitung statt - zuvor wird zunächst heimlich und im Hintergrund Kryptomining betrieben.
Maßnahmen der Malware zur Verbreitung & möglicher Schaden
Die Malware nutzt verschiedene Formen der Verbreitung:
- Bruteforcing von FTP-Servern (mittels Wortliste)
- Verteilen auf angeschlossene Festplatten (Laufwerke)
- Verwendung von 1x1 Iframes innerhalb von HTML-Dateien, um einen Autodownload zu erreichen
- Erstellen von WLAN-Hotspots (gefunden in Samples von GuardiCore)
Anders als bei Ransomeware liegt kein wirklich sichtbarer Schaden vor, da die Schadware ausschließlich Rechenkapazität nutzt und geringfügig Speicher belegt. Allerdings haben wir den Wurm auch auf Industrial Control Systems gefunden - in solchen Umgebungen kann es gefährlich sein, wenn der Wurm versucht sich aggressiv (beispielsweise durch Kopieren) weiterzuverbreiten.
Es ist unklar, wer hinter diesem Vorgehen steckt - allerdings gehen wir davon aus, dass der oder die Cyberkriminellen durchaus ein ansehnliches Einkommen durch dieses Vorgehen generieren können, was mitunter im 6 oder sogar 7-stelligen Bereich liegen könnte.
Zur Berechnung dieses Bereiches haben wir uns die standardmäßigen Monero Mining Konfigurationen angeschaut und angenommen, dass ein befallener Computer (Dual Core) im Durchschnitt eine Hash-Rate von 62 H/s besitzt. (Diese Annahme ich durchaus verhalten, da Gaming-PCs und co. eine deutlich höhere Hash-Rate haben.) Zudem nehmen wir einen Pool Fee von 2% an, was auch eher überdurchschnittlich hoch, also entsprechend negativ für die Cyberkriminellen, ist. Nutzt man diese hypothetischen Angaben und gibt sie in einen Mining-Rechner ein, so erhält man unter Berücksichtigung der aktuellen Mining-Werte (Difficulty & Reward) eine wöchtenliche Erzielung von 0,44$ pro befallenem Gerät.
1
|
|
Bei 50000 befallenen Geräten würde man so pro Woche bereits einen Wert von 22000 $ generieren.
1
|
|
Da der Threat-Actor mindestens schon seit Ende des letzten Jahres bzw. Anfang 2016 aktiv ist (das legen die Untersuchungen anderer Sicherheitsexperten nahe, siehe bspw. GuardiCore), könnte man den wöchentlichen Wert mit der Anzahl der Kalenderwochen in 2016 multiplizieren und hätte dann eine ungefähre Ahnung davon, wie viel die Cyberkriminellen verdient haben könnten. Es ist natürlich richtig einzuwenden, dass nicht alle PCs zu jedem Zeitpunkt an sind, Erkennungen durch Antivierensysteme erfolgen und auch die Währung selbst Schwankungen unterliegt - aber die zu Grunde liegenden 50000 befallenden Geräte sind ja ebenfalls eine reine Schätzung und könnten sogar, angesichts der geschilderten aggressiven Verbreitung, deutlich höher ausfallen.
Fireeye hat vor einiger Zeit eine Malware der gleichen Familie gefunden, diese hat .top-Domains genutzt, um sich zu verbreiten. Da die Command und Control Server die gleichen sind, wie in der von uns gefundenen Malware ist zu vermuten, dass die gleichen Akteure hinter der Malware stecken oder aber sogar ein Malware as a Service Programm genutzt wird (die Cyberkriminelle also andere Kriminelle bezahlen - die ihre Malware an mögliche Opfer verteilen).
Schutz vor dieser Malware
Nachfolgend wollen wir noch eine kurze Übersicht über mögliche Schutzmaßnahmen geben, damit man selbst nicht Opfer und damit Teil einer unfreiwilligen Mining-Operation wird.
Als Betreiber einer IT-Infrastrukur:
- Sichere Passwörter für FTP nutzen
- IP-Bann nach mehrfacher Fehlauthentifizierung
- Blacklisting der oben gennannten URLs in Webproxies oder Firewalls
- Virensystem auf dem aktuellen Stand halten und regelmäßige Scans durchführen
Als Besitzer eines Endgerätes:
- Skeptisch sein: Keine merkwürdigen Dateien per Doppelklick öffnen
- Dateianhänge in Windows anzeigen lassen
- In unbekannten WLANs immer vorsichtig agieren
- Autodownloads auf fremden Webseiten nicht anklicken
- Virensystem auf dem aktuellen Stand halten und regelmäßige Scans durchführen
Das Team der Internetwache.org