Linux/Remaiten – Bot attackiert Router und andere IoT-Systeme

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.

network_mips_payload

Abbildung 1: Downloader fordert Bot Binary vom C&C-Server

Figure 2 – Downloader connecting to C&C

Abbildung 2: Downloader verbindet zum C&C-Server

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.

Figure 3 - Downloader requesting a mips architecture bot from the C&C

Abbildung 3: Downloader fordert einen mips Bot vom C&C-Server an

Bot Analyse

Bei der Ausführung läuft der Bot normalerweise im Hintergrund. Mit dem Switch -dgestartet, 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.

Figure 4 - Bot startup

Abbildung 4: Bot Start

Als nächstes erschafft die Funktion create_daemon eine Datei mit dem Suffix .kpidin einem der vordefinierten daemon-Verzeichnisse (das erste, das er findet, welches über Schreibrechte verfügt) und schreibt die entsprechende PID in die folgende Datei:

daemon_directories

Abbildung 5: Daemon Datei-Verzeichnisse

Existiert die .kpidDatei 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.

Figure 6 – strace of the daemon pid file creation

Abbildung 6: Strace-Ausgabe von der daemon PID Dateierstellung

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.

Figure 7 - Bot connecting to a C&C server

Abbildung 7: Bot-Verbindung zu einem C&C-Server

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.

Figure 8 - C&C bot welcome message

Abbildung 8: C&C Bot Willkommensnachricht

IRC Befehlshandling

Der Bot kann auf verschiedene allgemeine IRC-Befehle antworten. Diese stecken gemeinsam mit dem jeweiligen Function Handler in einem Array:

Figure 9 - IRC commands

Abbildung 9: IRC-Befehle

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.

Figure 10 – Available bot commands

Abbildung 10: Mögliche Bot Befehle

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.

Figure 11 - Flooding capabilities

Abbildung 11: Flooding Möglichkeiten

Figure 12 - Telnet scanning, downloading a file, killing other bots

Abbildung 12: Telnet Scanning, Datei-Download, Beenden anderer Bots

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.

Figure 13 - Embedded payloads

Abbildung 13: Eingebettete Payloads

Figure 14 - Payload structure

Abbildung 14: Payload-Struktur

Telnet-Scanner

network_telnet_1

Abbildung 15: Erraten der Telnet Login-Daten

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:

  1. Wählen einer zufälligen öffentlichen IP-Adresse und Aufbau der Verbindung über Port 23
  2. Testen der Username/Password Kombinationen
  3. Ermitteln der Prozessorarchitektur vom Gerät des Opfers
  4. 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.

Figure 16 - Discover victim's platform & check if downloader for the platform is available

Abbildung 16: Entdeckung der Plattform des Opfers & Check ob Downloader für Plattform bereitsteht

Figure 17 - Part of the function that parses the ELF header

Abbildung 17: Part der Funktion, die den ELF Header parst

Der Bot wählt dann die richtige Payload aus und sendet sie zum Gerät des Opfers.

Figure 18 – The function that chooses a payload based on the victim device’s architecture

Abbildung 18: Funktion, die eine Payload, basierend auf der Architektur des Opfersystems, auswählt

Im ersten Schritt muss ein geeignetes beschreibbares Verzeichnis gefunden werden. Linux/Remaiten enthält eine Liste der gängigsten beschreibbaren Pfade.

Figure 19 – List of directories where the downloader might be saved

Abbildung 19: Liste der Verzeichnisse, in denen der Downloader gespeichert werden kann

Mehrere leere ausführbare Dateien werden erstellt:.t”, „retrieveund „binary. Die „retrieve Datei beinhaltet den Downloader und die „binaryDatei den gewünschten Bot vom C&C-Server. Die Datei „.t scheint bei früheren Versionen als 2.2 nicht verwendet worden zu sein.

Figure 20 - Prepare for payload transfer and its execution

Abbildung 20: Vorbereitung auf Payload Transfer und Ausführung

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.

Figure 21 - Transfer the payload hexstring with echo

Abbildung 21: Transfer des Payload-Hexstrings mit Echo-Befehl

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.

Figure 22 – Execute the downloader and the bot

Abbildung 22: Ausführen von Downloader und Bot

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?

Figure 23 – Inform the C&C about the bot deployment status

Abbildung 23: Informieren des C&C-Servers über den Bot-Status

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.

Figure 24 - A list of process names to kill

Abbildung 24: Eine Liste von zu beendenden Prozessnamen

Figure 25 - A list of process names to ignore

Abbildung 25: Eine Liste von zu ignorierenden Prozessnamen

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.

Figure 26 - The bot-killing process

Abbildung 26: Der Bot-beendende Prozess

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.

Figure 27 - Inform the C&C that the bot was deployed via wget/tftp

Abbildung 27: Information an den C&C, dass der Bot via wget/tftp eingesetzt wurde

Das Shell-Skript wird über einen anderen Server verteilt, der auch die bekannten Gafgyt bots zur Verfügung stellt.

Figure 28 - Shell script distributed via another server

Abbildung 28: Shell-Skript wird über anderen Server verteilt.

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.

Figure 29 - Bots downloaded by the shell script

Abbildung 29: Durch das Shell-Skript heruntergeladene Bots.

Figure 30 - Beginning of the shell script

Abbildung 30: Beginn des Shell-Skripts

Der C&C-Server der Version 2.0 enthielt eine unerwartete Willkommensnachricht: eine Anspielung zum MalwareMustDie Blog.

Figure 31 - Version 2.0 C&C MalwareMustDie reference

Abbildung 31: Version 2.0 C&C MalwareMustDie Anspielung

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-1Von ESET erkannt als
2ff0b69bc5aaca82edb6a364ee9f6ad3c5fdd71cLinux/Remaiten.A
bd8256d469aa42c6c57e8e6f91ef5b4782bd2cb7Linux/Remaiten.A
3b233834ee962adb111a002bb64e594175e7c1e2Linux/Remaiten.A
52210b49c47c6ad6fe34c70d6faf49e2763c0d9dLinux/Remaiten.A
11807e5aa5dc1c14f8d509ea410eeb778896830dLinux/Remaiten.A

Version 2.1

SHA-1Von ESET erkannt als
e097c882eda2bd508dd9a3be72efce6fd2971f11Linux/Remaiten.B
d4d70d0022e06b391b31195c030ac9bc6e716cceLinux/Remaiten.B
2e901502263d50c1ab65e7516bb8534c28d41265Linux/Remaiten.B
b9d8b993943872a19a1d4838570d7dcc9f374c20Linux/Remaiten.B
977efab8a7cce22530c3bdeca860a342e232eeb3Linux/Remaiten.B

Version 2.2

SHA-1Von ESET erkannt als
0e5b982c8d55b78582da733d31e8b652c9da9f6eLinux/Remaiten.C
4e2dfcd4a3e14b05b268b4a6df76479984932675Linux/Remaiten.C
9f5f24bda7af3ed95c72c9b77d5a9c5807ca1be9Linux/Remaiten.C
35b00e2243157171be6a7d7bc9b32f98805dcd35Linux/Remaiten.C
537f8847d786923a9401889e6ee23675d96f2692Linux/Remaiten.C
eefa249de2f7f08bcf4629d3e2055b06f1d74ae3Linux/Remaiten.C
f3c4a7e8785355894482bce4f791d92e1c1da5b2Linux/Remaiten.C
46cd369bce4f6a41d8863c46dd778c1b1c4f8df0Linux/Remaiten.C
efd3a698dda376333c2dd84714f92f25539d4589Linux/Remaiten.C
f8354d8cc946e8b137f9013fc3d44720f321dc48Linux/Remaiten.C
b912a07528e1afabbaa01d99bcbb66498dee0406Linux/Remaiten.C
359dd2f9646eb3fad979f4a658bc2ff74488c457Linux/Remaiten.C
898e2d91d64ebb26cc049d78bdeeda87f2bc4f1aLinux/Remaiten.C
17d3c799e7f1c77be5d7b3d03eaa630a2f261449Linux/Remaiten.C
17dcfdcc39b21ad64864a386070cc633e9965c3dLinux/Remaiten.C
d1c6511a84ca27e2c08b89a683db9878e83c8637Linux/Remaiten.C
024136cbc562cff6f3ce31d213fc9fe7a78510f9Linux/Remaiten.C
a2432461d56c7beec98e4a15ddf91a1ea6d41c1bLinux/Remaiten.C
9f795334a7201b2c6c0ad9ffeb2103ed464f0c5fLinux/Remaiten.C
e375ecd544368b77f686fb3f3a000844782a647bLinux/Remaiten.C
0ca049baf56a6c4d01c6d183ef1acfa65d2be1e3Linux/Remaiten.C

Downloader Samples

Version 2.0

SHA-1Von ESET erkannt als
25a7cf2969ce154aa90891e844a6af84fc89d396Linux/Remaiten.A
1fe1872cf18cd0101f0870ca58f68d6686010326Linux/Remaiten.A
1cc2b57978ba2e611403ba11bf9129fb810fae5cLinux/Remaiten.A
c552edd72495514765f6a8f26aee8a6da2a57992Linux/Remaiten.A

Version 2.1

SHA-1Von ESET erkannt als
e875f54b7bd967c4f9ae59d85ed60991561b097bLinux/Remaiten.A
ebf2bc43b6b5a4b8933f4ed8ed4a4beaceaecff5Linux/Remaiten.A
11a13d2eeb71573178d7686930340c51c8f3ce26Linux/Remaiten.A
8d26cd7d34d84745a897d474aa2ac9b8d1943d68Linux/Remaiten.A

Version 2.2

SHA-1Von ESET erkannt als
e80aba63ba30a2048ba780c35eae65e8b95627f7Linux/Remaiten.A
e280b220c2ea2668d1a2ad82bdc64922e8b9ec86Linux/Remaiten.A
8decb1f0e94497ef31f13c6e07ff2a021cf0972fLinux/Remaiten.A
17006c899fbce3f86ddfb93539033c363816ad19Linux/Remaiten.A

C&C

Version 2.0

Bot185.130.104.131:443
Downloader185.130.104.131:25566

Version 2.1

Bot185.130.5.201:53
Downloader185.130.5.201:25566

Version 2.2

Bot185.130.5.202:23
Downloader185.130.5.202:443

Autor und, ESET