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-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