Im Moment beobachten ESET Forscher Malware, die eingebettete („embedded“)-Systeme wie Router, Gateways und WLAN Access Points angreift. Vor kurzem erst entdeckten wir einen Bot, der die Fähigkeiten von Tsunami (auch als Kaiten bekannt) und Gafgyt kombiniert. Dieser besitzt neben ein paar Verbesserungen auch Neuerungen. Wir nennen diese neue Bedrohung Linux/Remaiten. Bisher haben wir drei Versionen identifiziert, die sich selbst als Versionen 2.0, 2.1 und 2.2 ausgeben. Anhand im Code wird die Malware „KTN-Remastered” oder „KTN-RM” genannt.
In diesem Blog-Beitrag beschreiben wir den einzigartigen Verbreitungsmechanismus von Linux/Remaiten, seine unterschiedlichen Features und die Unterschiede zwischen den aufgetauchten Varianten.
Ausgeklügelter Verbreitungsmechanismus
Ein besonderes Merkmal von Linux/Gafgyt ist der Telnet-Scan. Wird der Bot angewiesen, diesen Scan auszuführen, sucht er nach verschiedenen IP-Adressen, die über den Port 23 aus dem Internet zu erreichen sind. Ist eine Verbindung erfolgreich, geht die Malware dazu über, den Zugang zu erraten. Dafür benutzt sie eine hinterlegte Liste mit Username/Passwort-Kombinationen. Nach einem erfolgreichen Login werden per shell-Kommando verschiedene Anwendungen für unterschiedliche Prozessorarchitekturen heruntergeladen und auszuführen versucht. Das ist eine einfache, wenngleich nicht geräuschlose Möglichkeit, neue Opfer zu infizieren, da mindestens eine der Binaries auf dem System ausführbar sein wird.
Linux/Remaiten verbessert seinen Verbreitungsmechanismus dadurch, dass er ausführbare Downloader für Prozessorarchitekturen wie ARM oder MIPS beinhaltet, die häufig in eingebetteten Linux-Systemen verwendet werden. Nach der Anmeldung über die Telnet-Maske vom Gerät des Opfers versucht der Bot, die Plattform des neu zu infizierenden Geräts zu bestimmen und nur den passenden Downloader zu übertragen. Dieser fordert die der Prozessorarchitektur entsprechenden Linux/Remaiten Bot-Binärdatei vom „Command & Control“-Server an, welche auf dem neuen infizierten Gerät ausgeführt wird und anschließend einen neuen Bot zur Verbreitung des schädlichen Codes schafft.
Technische Analyse des Downloaders
Die Linux/Remaiten Downloader sind kleine ausführbare ELF Dateien, die im Bot-Binärprogramm eingebunden sind. Werden diese auf dem infizierten Gerät gestartet, verbinden sie sich mit dem C&C-Server und senden einen der folgenden Befehle:
- mips
- mipsel
- armeabi
- armebeabi
Der Server antwortet mit einem ELF Bot-Binärprogramm für die gewünschte Prozessorarchitektur. An dieser Stelle sei angemerkt, dass sich der TCP-Port für die Verbindung zum C&C-Server von dem des IRC-Servers des Bots unterscheidet, auf den später noch eingegangen wird.
Die einzige Aufgabe des Downloaders besteht darin, einen der oben genannten Befehle zum C&C-Server zu senden und die Antwort in stdout zu schreiben. Im vorliegenden Fall lautet der Befehl mips.
Bot Analyse
Bei der Ausführung läuft der Bot normalerweise im Hintergrund. Mit dem Switch „-d” gestartet, bleibt er im Vordergrund. Einmal laufend, ändert der Prozess seinen Namen zu etwas, was legitim erscheint wie „-bash” oder „-sh”. Wir haben „-bash” in den Versionen 2.0 und 2.1, „-sh” in Version 2.2 entdeckt.
Als nächstes erschafft die Funktion create_daemon eine Datei mit dem Suffix „.kpid” in einem der vordefinierten daemon-Verzeichnisse (das erste, das er findet, welches über Schreibrechte verfügt) und schreibt die entsprechende PID in die folgende Datei:
Existiert die „.kpid” Datei schon, wird der laufende Malware Prozess aufgrund der in der Datei enthaltenen PID beendet. Die Datei wird entfernt, bevor eine neue „.kpid” erstellt wird und die Ausführung normal weiter geht.
Verbindung zum C&C-Server
Es gibt eine Liste von C&C-Server IP Adressen, die in den Bot Binärdateien fest hinterlegt ist. Über eine zufällig ausgewählte Adresse stellt der Bot die Verbindung über einen ebenfalls fest hinterlegten Port her. Der Port verändert sich unter den verschiedenen Varianten.
Bei einer erfolgreichen Verbindung zum C&C-Server tritt der Bot dem IRC-Channel bei. Der C&C sollte dann mit einer Willkommensnachricht und weiteren Instruktionen antworten. Diese Anweisungen werden vom Bot geparst und auf dem infizierten Gerät ausgeführt.
IRC Befehlshandling
Der Bot kann auf verschiedene allgemeine IRC-Befehle antworten. Diese stecken gemeinsam mit dem jeweiligen Function Handler in einem Array:
Am interessantesten ist der „PRIVMSG"-Befehl. Er weist den Bot an, verschiedene schädliche Aktionen auszuführen wie Flooding, Datei-Downloads, Telnet-Scanning usw. Diese Kommandos stehen auch in einem statischen festgelegten Array.
Die meisten Fähigkeiten der Malware sind von Linux/Tsunami adaptiert – ein kleiner Rest auch von Linux/Gafgyt. Hier sind einige Beispiele von schädlichen Zeichenketten in der Binärdatei. Sie besitzen ausführliche Beschreibungen, die ganz leicht nachvollziehen lassen, was sie tun.
Eingebauter Downloader
Wie wir eingangs erwähnten, besitzt Linux/Remaiten die Einzigartigkeit, viele verschiedene kleine Downloader zu beinhalten und diese auf das Gerät des Opfers hochzuladen, wenn dessen Architektur zu einem der verfügbaren Downloader passt. Nach erfolgreicher Installation wird das Bot-Binärprogramm vom C&C-Server geladen.
Telnet-Scanner
Remaitens Telnet-Scanner startet, wenn der C&C-Server den Befehl „QTELNET” erteilt. Analysen zeigen, dass die Beschreibung des Befehls durch den Malware-Autor richtig ist: Es ist in der Tat eine verbesserte Version des Gafgyt Telnet- Scanners.
Der Telnet-Scanner arbeitet schrittweise, was sich in folgende Stufen zusammenfassen lässt:
- Wählen einer zufälligen öffentlichen IP-Adresse und Aufbau der Verbindung über Port 23
- Testen der Username/Password Kombinationen
- Ermitteln der Prozessorarchitektur vom Gerät des Opfers
- Senden und Ausführen des passenden Downloaders
Die Architektur wird erkannt, indem „cat $SHELL” auf dem Gerät des Opfers ausgeführt wird und die Ergebnisse geparst werden. Die SHELL Umgebungsvariable enthält den Pfad zu der ausführbaren Datei, die gerade als Command Line Interpreter fungiert. Wenn die Datei eine ausführbare ELF ist, wird der Header analysiert, um die Architektur zu bestimmen.
Der Bot wählt dann die richtige Payload aus und sendet sie zum Gerät des Opfers.
Im ersten Schritt muss ein geeignetes beschreibbares Verzeichnis gefunden werden. Linux/Remaiten enthält eine Liste der gängigsten beschreibbaren Pfade.
Mehrere leere ausführbare Dateien werden erstellt: „.t”, „retrieve” und „binary”. Die „retrieve” Datei beinhaltet den Downloader und die „binary” Datei den gewünschten Bot vom C&C-Server. Die Datei „.t” scheint bei früheren Versionen als 2.2 nicht verwendet worden zu sein.
Linux/Remaiten erzeugt auf seltsame Art und Weise leere ausführbare Dateien: Es kopiert die Busybox Binärdatei (die man auf den meisten Embedded-Geräten findet) und leert sie anschließend mit dem >file-Befehl.
Der Downloader wird über Telnet durch die Verwendung von Echo-Befehlen übertragen, bei denen jedes Byte mit der „\x“ Escape-Sequenz hex-codiert wird. Wir haben diese Technik bereits früher entdeckt, als sie genutzt wurde, um Malware unter Embedded-Linux-Systemen zu verbreiten, wie beispielsweise bei Linux/Moose.
Jetzt, da der Downloader übertragen wurde, kann er gestartet werden und die ganzen Linux/Remaiten Payload nachladen. Er fordert eine Bot Binärdatei vom C&C an und schreibt sie in standard output, welche auf die „binary"-Datei durch einen Bereitstellungsbefehl umgeleitet wird. Letztendlich wird die „binary”-Datei gestartet und der neue IRC-Bot ist aktiviert.
Statusübertragung zum C&C-Server
Bevor der Telnet-Scan fortgesetzt wird, informiert der Bot den C&C-Server über den Verlauf. Er übergibt die IP-Adresse des neu infizierten Geräts, die gültige Benutzername und Passwort-Kombination und ob er weitere Geräte infiziert hat oder nicht. Vielleicht verseuchen die Botnet-Betreiber Geräte auch manuell wenn die automatische Methode nicht funktioniert oder sammeln Statistiken welche nicht unterstützten Architekturen am verbreitetsten sind?
Beenden anderer Bots
Ein weiterer interessanter Befehl ist „KILLBOTS”. Wird dieser erteilt, listet der Bot laufende Prozesse auf und entscheidet, welche er ignoriert und welche er beendet – und das anhand weniger Kriterien, aber hauptsächlich der Namen. Diese Prozessnamen können sich in den unterschiedlichen Bot-Versionen unterscheiden.
Unter Beachtung der TTY-Gerätenummer wird Linux/Remaiten nur jene Prozesse beenden, die aus einer interaktiven Shell gestartet wurden. Darüber hinaus sendet er auch die Namen der beendeten Prozesse an den C&C-Server, vielleicht auch um ihre Whitelist und Blacklist von Prozessnamen zu verbessern.
Linux/Remaiten Change Log
Es gibt meist nur kleine Unterschiede in den Bot-Client-Versionen, wie zum Beispiel zusätzliche Prozessnamen zum Beenden oder Ignorieren, unterschiedliche Downloader-Verzeichnisse und so weiter. Man kann davon ausgehen, dass sich diese und andere mit jedem Build ändern, auch wenn die Versionsnummer in den Strings die gleiche bleibt. Die in den Bot eingebetteten Downloader Binärprogramme sind in allen Versionen, die wir analysiert haben, gleich bis auf die fest hinterlegten IP-Adressen und Ports.
Ein wesentlicher Unterschied in v2.2 ist die Tatsache, dass es auch einen wget/tftp Befehl ausführt, um ein SHELL-Skript herunterzuladen, das wiederum die Bot Binärdateien herunterlädt - was Gafgyt normalerweise ebenfalls tut. Der sich verbreitende Code wird diese Methode vor dem Transfer des Downloaders versuchen.
Das Shell-Skript wird über einen anderen Server verteilt, der auch die bekannten Gafgyt bots zur Verfügung stellt.
Mit Blick auf die al.sh Datei sind wir das erste Mal über Bots für Plattformen wie PowerPC und SuperH gestoßen. Zwar gibt es Werkzeuge wie Cross-Compiler für verschiedene Prozessorarchitekturen, dennoch ist es erstaunlich den Drahtziehern dabei zu zusehen, wie sie ihre Schwierigkeiten beim Kompilieren der Malware für die Architekturen hatten. Sie sind für jede Situation gewappnet. Wir sind nicht sicher, welches Gerät unter PowerPC oder SuperH läuft.
Der C&C-Server der Version 2.0 enthielt eine unerwartete Willkommensnachricht: eine Anspielung zum MalwareMustDie Blog.
Vielleicht ein kleiner Racheakt: MalwareMustDie veröffentlicht jede Menge Details über Gafgyt, Tsunami und so weiter.
Indikatoren für ein kompromittiertes System
Bot Samples
Version 2.0
SHA-1 | Von ESET erkannt als |
---|---|
2ff0b69bc5aaca82edb6a364ee9f6ad3c5fdd71c | Linux/Remaiten.A |
bd8256d469aa42c6c57e8e6f91ef5b4782bd2cb7 | Linux/Remaiten.A |
3b233834ee962adb111a002bb64e594175e7c1e2 | Linux/Remaiten.A |
52210b49c47c6ad6fe34c70d6faf49e2763c0d9d | Linux/Remaiten.A |
11807e5aa5dc1c14f8d509ea410eeb778896830d | Linux/Remaiten.A |
Version 2.1
SHA-1 | Von ESET erkannt als |
---|---|
e097c882eda2bd508dd9a3be72efce6fd2971f11 | Linux/Remaiten.B |
d4d70d0022e06b391b31195c030ac9bc6e716cce | Linux/Remaiten.B |
2e901502263d50c1ab65e7516bb8534c28d41265 | Linux/Remaiten.B |
b9d8b993943872a19a1d4838570d7dcc9f374c20 | Linux/Remaiten.B |
977efab8a7cce22530c3bdeca860a342e232eeb3 | Linux/Remaiten.B |
Version 2.2
SHA-1 | Von ESET erkannt als |
---|---|
0e5b982c8d55b78582da733d31e8b652c9da9f6e | Linux/Remaiten.C |
4e2dfcd4a3e14b05b268b4a6df76479984932675 | Linux/Remaiten.C |
9f5f24bda7af3ed95c72c9b77d5a9c5807ca1be9 | Linux/Remaiten.C |
35b00e2243157171be6a7d7bc9b32f98805dcd35 | Linux/Remaiten.C |
537f8847d786923a9401889e6ee23675d96f2692 | Linux/Remaiten.C |
eefa249de2f7f08bcf4629d3e2055b06f1d74ae3 | Linux/Remaiten.C |
f3c4a7e8785355894482bce4f791d92e1c1da5b2 | Linux/Remaiten.C |
46cd369bce4f6a41d8863c46dd778c1b1c4f8df0 | Linux/Remaiten.C |
efd3a698dda376333c2dd84714f92f25539d4589 | Linux/Remaiten.C |
f8354d8cc946e8b137f9013fc3d44720f321dc48 | Linux/Remaiten.C |
b912a07528e1afabbaa01d99bcbb66498dee0406 | Linux/Remaiten.C |
359dd2f9646eb3fad979f4a658bc2ff74488c457 | Linux/Remaiten.C |
898e2d91d64ebb26cc049d78bdeeda87f2bc4f1a | Linux/Remaiten.C |
17d3c799e7f1c77be5d7b3d03eaa630a2f261449 | Linux/Remaiten.C |
17dcfdcc39b21ad64864a386070cc633e9965c3d | Linux/Remaiten.C |
d1c6511a84ca27e2c08b89a683db9878e83c8637 | Linux/Remaiten.C |
024136cbc562cff6f3ce31d213fc9fe7a78510f9 | Linux/Remaiten.C |
a2432461d56c7beec98e4a15ddf91a1ea6d41c1b | Linux/Remaiten.C |
9f795334a7201b2c6c0ad9ffeb2103ed464f0c5f | Linux/Remaiten.C |
e375ecd544368b77f686fb3f3a000844782a647b | Linux/Remaiten.C |
0ca049baf56a6c4d01c6d183ef1acfa65d2be1e3 | Linux/Remaiten.C |
Downloader Samples
Version 2.0
SHA-1 | Von ESET erkannt als |
---|---|
25a7cf2969ce154aa90891e844a6af84fc89d396 | Linux/Remaiten.A |
1fe1872cf18cd0101f0870ca58f68d6686010326 | Linux/Remaiten.A |
1cc2b57978ba2e611403ba11bf9129fb810fae5c | Linux/Remaiten.A |
c552edd72495514765f6a8f26aee8a6da2a57992 | Linux/Remaiten.A |
Version 2.1
SHA-1 | Von ESET erkannt als |
---|---|
e875f54b7bd967c4f9ae59d85ed60991561b097b | Linux/Remaiten.A |
ebf2bc43b6b5a4b8933f4ed8ed4a4beaceaecff5 | Linux/Remaiten.A |
11a13d2eeb71573178d7686930340c51c8f3ce26 | Linux/Remaiten.A |
8d26cd7d34d84745a897d474aa2ac9b8d1943d68 | Linux/Remaiten.A |
Version 2.2
SHA-1 | Von ESET erkannt als |
---|---|
e80aba63ba30a2048ba780c35eae65e8b95627f7 | Linux/Remaiten.A |
e280b220c2ea2668d1a2ad82bdc64922e8b9ec86 | Linux/Remaiten.A |
8decb1f0e94497ef31f13c6e07ff2a021cf0972f | Linux/Remaiten.A |
17006c899fbce3f86ddfb93539033c363816ad19 | Linux/Remaiten.A |
C&C
Version 2.0
Bot | 185.130.104.131:443 |
---|---|
Downloader | 185.130.104.131:25566 |
Version 2.1
Bot | 185.130.5.201:53 |
---|---|
Downloader | 185.130.5.201:25566 |
Version 2.2
Bot | 185.130.5.202:23 |
---|---|
Downloader | 185.130.5.202:443 |