Von Scarlett Johansson zum Monero-Mining – Ablauf eines Hackerangriffs auf eine Postgre-Datenbank

imperva-logo-lg

Ein Gastbeitrag vom Team der Imperva-Sicherheitsforscher 

Das Team um die Sicherheitsforscher von Imperva haben in den letzten Wochen eine interessante Angriffstechnik beobachtet, mit der einer ihrer PostgreSQL-Server attackiert wurde. Nach dem Einloggen in die Datenbank machte sich der Angreifer daran, verschiedene Payloads zu erstellen, Verschleierungstechniken mit eingebetteten Binärdateien in einem heruntergeladenen Bild anzuwenden, Payloads auf der Festplatte zu extrahieren und aus der Ferne deren Ausführung zu veranlassen. Wie bei so vielen anderen Angriffen, die das Team in letzter Zeit erlebt hatte, lief das Ganze darauf hinaus, dass der Angreifer die Server-Ressourcen nutzte, um die Kryptowährung Monero zu schürfen. Und als wäre das alles noch nicht genug, war der Angriffsvektor ein Bild von Scarlett Johansson. Doch wie lief dieser außergewöhnliche Angriff genau ab?

 

Abb. 1: Die Honeypot-Netzwerk-Umgebung StickyDB

Remotecodeausführung und Umgehung von DAM-Lösungen

Wie andere gängige Datenbanken hat auch PostgreSQL ein Metasploit-Modul, um mithilfe einer Proxy-Programmdatei (in diesem Fall „tmp406001440“ und ihr Github-Quellcode) die Interaktion mit dem Betriebssystem zu erleichtern. Die bei diesem Angriff eingesetzte Methode ist sehr ähnlich: Zur Laufzeit wird eine Payload erzeugt, indem der Binärcode mit der Funktion lo_export auf die Festplatte exportiert wird. Eine kleine Veränderung wurde in diesem Modul vorgenommen: Die Funktion lo_export wurde als Eintrag in den Katalog pg_proc eingefügt, statt einen direkten Aufruf zu verwenden. Auf diese Weise sollen diverse Lösungen für Database Activity Monitoring (DAM) umgangen werden, die Versuche zur Ausführung privilegierter Operationen wie lo_export genau überwachen. Die Verwendung von fun6440002537 ist somit im Grunde ein indirekter Aufruf von lo_export (Abb. 2).

Abb. 2: Verschleierungstechnik mit indirektem Aufruf von lo_export

„OK,  ich habe ihre Datenbank übernommen. Welche GPU haben Sie jetzt noch mal?“

Jetzt ist der Angreifer also in der Lage, mit einer einfachen Funktion – fun6440002537 – lokale Systembefehle auszuführen. Und was wird Schritt 1 des Angriffs sein? Ein paar kleine Erkundungen. Zunächst ermittelte der Angreifer mithilfe von lshw -c video Informationen zur GPU und mit cat /proc/cpuinfo Informationen zur CPU (Abb. 3-4). Das mag auf den ersten Blick seltsam erscheinen, ergibt allerdings absolut Sinn, wenn das Endziel darin besteht, mehr von Ihrer bevorzugten Kryptowährung zu schürfen.

Abb. 3: Ermittlung von Informationen zu GPU

Abb. 4: Ermittlung von Informationen zur CPU

Der Angreifer hat sich also Zugriff auf die Datenbank verschafft, einen Weg zur Remotecodeausführung und Umgehung von DAM-Lösungen gefunden und sich über die Systemdetails informiert. Doch wie kommt das Bild von Scarlett Johansson ins Spiel?

Scarlett Johansson: Ein Bild, das tausend Worte wert ist (oder tausend Zeilen Code)

Bekanntermaßen werden Angreifer, die es auf Cryptowährungen abgesehen haben, immer ausgefeilter. In diesem Fall wollte der Angreifer seinen neuesten Malware-Code herunterladen und stellte ihn zu diesem Zweck als Bild bei imgehousing.com ein, einer legitimen Website, auf der man Bilder speichern und frei teilen kann. In Wirklichkeit hat die Payload jedoch Binärformat und ist gar kein Bild.  Wenn man eine Binärdatei umbenennt und ihr eine Bild-Endung gibt, wird der Upload allerdings bei den meisten Bild-Hosting-Anbietern fehlschlagen, aus dem ganz einfachen Grund, dass es sich um kein gültiges, ansehbares Bild handelt – also keine Vorschau und kein Bild. Statt die Dateiendung zu ändern, hängte der Angreifer deshalb den bösartigen Binärcode an ein echtes Bild der Schauspielerin Scarlett Johansson an (Abb. 5). Auf diese Weise funktioniert der Upload, das Bild kann angesehen werden und scheint harmlos zu sein – die Payload ist aber immer noch da.

Abb. 5: Die Payload. Wird sie geöffnet, scheint es sich um ein harmloses Bild zu handeln. Keine Angst – dieses Bild hier ist auf jeden Fall sauber!

Vom Download eines Bilds zum Krypto-Mining von Monero

Das Foto (art-981754.png) mit der Payload konnte mit wget leicht heruntergeladen werden. Um aus dem Bild die ausführbare Datei zu extrahieren, wurde der Befehl dd (data duplicator) verwendet, und mit chmd 777 wurden der neu erstellten Datei – x4060014400 – Ausführungsrechte (bzw. eigentlich vollständige Rechte) verliehen. Der letzte Schritt dient dazu, die soeben extrahierte Payload auszuführen. Alles in SQL, wie hier zu sehen:

Abb. 6: Verwendung von SQL, um ein Foto herunterzuladen, eine binäre Payload daraus zu extrahieren und sie auszuführen

Die Datei x4060014400 erzeugt eine weitere ausführbare Datei namens s4060014400. Zweck dieser ausführbaren Datei ist es, Monero (XMR) zu schürfen, für den Monero-Pool unter https://monero.crypto-pool.fr/, IP 163.172.226.218 (Abb. 7). Der Angreifer mit dieser Monero-Adresse hat bis jetzt mehr als 312,5 XMR geschürft, was derzeit mehr als 90.000 US-Dollar entspricht. Die Adresse lautet:

4BBgotjSkvBjgx8SG6hmmhEP3RoeHNei9MZ2iqWHWs8WEFvwUVi6KEpLWdfNx6Guiq5451Fv2SoxoD7rHzQhQTVbDtfL8xS

Abb. 7: SQL-Anweisung, um mit dem Monero-Mining zu beginnen

Und wenn alles geschafft ist, wird natürlich aufgeräumt –

Abb. 8: Beseitigung von Datei-Spuren

Aus Sicht des Angreifers: Mission erfüllt!

Erkennen Virenschutzlösungen diese bösartigen Bilder?

Das Team um die Imperva-Sicherheitsforscher hat mit Googles VirusTotal rund 60 Virenschutzlösungen getestet, um herauszufinden, inwieweit sie drei verschiedene Formen des Krypto-Miners erkennen, der bei diesem Angriff verwendet wurde – die URL, unter der das bösartige Bild gehostet wurde, das bösartige Bild für sich genommen und den Krypto-Miner für sich genommen. Die Ergebnisse sahen folgendermaßen aus:

  • Die URL, auf der das bösartige Bild gehostet wurde: Eine Virenschutzlösung schlug Malware-Alarm (Abb. 9)
  • Das bösartige Bild: Drei Virenschutzlösungen warnten vor einem Coin-Miner (Abb. 10)
  • Der extrahierte Krypto-Miner aus dem bösartigen Bild: 18 Virenschutzlösungen erkannten ihn (Abb. 11)

Abb. 9: Eine Virenschutzlösung erkannte die bösartige URL

Abb. 10: Drei Virenschutzlösungen entdeckten das bösartige Bild

Abb. 11: 18 Virenschutzlösungen erkannten den Krypto-Miner

Der Trick, Binärcode an legitime Dateien (Bilder, Dokumente) anzuhängen, um eine mutierte Datei zu erzeugen, ist nun wirklich alles andere als neu. Erschreckenderweise entgeht er aber trotzdem immer noch den meisten Virenschutzlösungen.

Und die Erstellung einer solchen mutierten Datei ist so simpel wie dieser Einzeiler:

Linux: cat myExecutableFile >> myImageFile.png

Windows: type myExecutableFile.exe >> myImageFile.png

Wie kann ein Angreifer PostgreSQL-Datenbanken finden?

Wenn sich ein Angreifer bereits im lokalen Netzwerk befindet, kann er mit Erkennungswerkzeugen wie Nmap versuchen, PostgreSQL-Instanzen in der Domain zu finden. Aber bieten sich Angreifern auch noch leichtere Ziele? Wie steht es mit öffentlich erreichbaren PostgreSQL-Datenbanken? Von diesen gibt es immerhin noch viele, nämlich mindestens 710.000, viele davon auf AWS gehostet (Abb. 12). Das Tückische: diese finden ist mit Online-Diensten wie Shodan nicht schwieriger als Googeln. Ein Angreifer kann diese Datenbanken also leicht aufspüren. Dann kann er versuchen, mit einem Brute-Force-Angriff auf den Standardnutzer postgres in eine Datenbank einzudringen, und anschließend einige der hier beschriebenen Techniken einsetzen.

Abb. 12: 710.000 PostgreSQL-Instanzen mit öffentlichen IP-Adressen. Quelle: shodan.io

Weitere Infos zur Arbeit des Teams rund um die Imperva-Sichercheitsforscher finden Sie auf dem Imperva-Blog.