Umbreon Linux-Rootkit zielt auf x86- und ARM-Systeme

Originalbeitrag von Fernando Mercês, Senior Threat Researcher

Trend Micros Sicherheitsforscher erhielten kürzlich von einem Partner des Vertrauens Samples einer neuen Rootkit-Familie. Um dieser Gefahr entgegen zu wirken, liefert der Blog eine Analyse des Rootkits, und Trend Micro stellt auch die Samples der Industrie zur Verfügung.

Die Rootkit-Familie Umbreon (ELF_UMBREON, gleicher Name wie Pokémon) zielt auf Linux-Systeme mit Intel- und ARM-Prozessoren, sodass die Reichweite der Bedrohung auch Embedded Devices mit einschließt.

Die Entwicklung von Umbreon begann Anfang 2015, doch waren die Entwickler im cyberkriminellen Untergrund mindestens seit 2013 aktiv. In Untergrund-Foren und IRC-Kanälen wird behauptet, dass Umbreon schwer zu entdecken ist.

Umbreon wird vom Angreifer per Hand auf betroffene Geräte oder Server installiert. Danach kann dieser das Gerät kontrollieren.

Was ist ein „ring 3“-Rootkit?

Rootkits sind persistente Bedrohungen, die darauf ausgelegt sind, ihre Erkennung zu erschweren. Ihr Hauptziel ist es, sich (und andere Bedrohungen) im „Dunkeln“ zu halten und vor Administratoren, Analysten, Nutzern, Scanning, Forensics und System-Tools zu verbergen. Sie können auch eine Hintertür öffnen und/oder einen C&C-Server nutzen, sowie einem Angreifer Wege zur Kontrolle und Beobachtung betroffener Maschinen öffnen.

Es gibt verschiedene Ausführungsmodi, in denen Code mit entsprechenden Zugangsebenen ablaufen kann. Die sind:

  • User mode (ring 3)
  • Kernel mode (ring 0)
  • Hypervisor (ring 1)
  • System Management Mode – SMM (ring 2)

Die Sicherheitsforscher beschäftigten sich mit Rookits in bestimmten Chips auf Motherboards oder anderen Geräten, so etwa ein Rootkit, das in „ring 3“ abläuft. Je niedriger die Ebene, in der der Code läuft, desto schwieriger ist es, ihn zu entdecken. Das heißt aber nicht, dass im Umkehrschluss ein „ring 3“-Rootkit einfach zu beseitigen ist. Technische Einzelheiten zu „ring 3“-Rootkit (oder Usermode-Rootkit) liefert der Originalbeitrag.

Plattformübergreifende Fähigkeiten

Die Sicherheitsforscher konnten Umbreon auf drei unterschiedlichen Plattformen erfolgreich zum Laufen bringen: x86, x86-64 und ARM (Raspberry Pi). Das Rootkit ist sehr portable, weil es nicht auf plattformspezifischem Code beruht. Es in reinem C geschrieben, mit Ausnahme einiger Zusatz-Tools, die in Python und Bash Scripting programmiert sind.

Die Analyse zeigt, dass dies ein Design-Prinzip darstellt: Umbreon soll damit einfach die drei obigen Plattformen unterstützen können.

Backdoor-Authentifizierung

Während der Installation erzeugt Umbreon einen validen Linux-Nutzer, den der Angreifer mit einer Hintertür verwenden kann, um ins System einzudringen. Auf dieses Hintertürkonto kann über jede von Linux unterstützte Authentifizierungsmethode (über Plugin-Authentifizierungsmodule, einschließlich SSH) zugegriffen werden.

Dieser Nutzer hat eine bestimmte Gruppen-ID (GID), die das Rootkit prüft, um festzustellen, ob der Angreifer versucht, auf das System zuzugreifen. Es ist nicht möglich, diesen Nutzer in Dateien wie /etc/passwd zu sehen, weil die libcfunctions von Umbreon gehookt werden. Die Abbildung zeigt den Willkommensbildschirm, wenn auf ein Hintertürenkonto über SSH zugegriffen wird.

Bild 1. SSH login-Bildschirm

Espeon Backdoor-Komponente

Es handelt sich um eine libpcap-basierte Hintertür in C, die eine Shell aufmacht, wenn ein authentifizierter Nutzer sich damit verbindet. Sie kann eine Verbindung zu einer Angreifermaschine herstellen und den gesamten TCP-Verkehr kapern. Technische Einzelheiten liefert der Originalbeitrag.

Umbreons Implementierung

Umbreon fungiert als Bibliothek, die glibc (GNU C Library) imitiert und erzeugt eine Datei namens /etc/ld.so.<random>. Technische Einzelheiten liefert der Originalbeitrag.

Entdecken von Umbreon

Die meisten Tools im Linux-Bereich sind in C verfasst. Aber auch die Programme in Perl, Python, Ruby, PHP oder anderen Scripting-Sprachen rufen GNU C Library Wrappers auf, denn ihre Interpreter sind ebenfalls in C programmiert. Weil die Umbreon-Bibliothek libc-Funktionen hookt, muss ein Tool, das Umbreon erkennt, so aufgesetzt sein, dass es libc nicht nutzt (weitere Einzelheiten im Originalbeitrag).

Die Sicherheitsforscher erstellten auch YARA-Regeln, die Umbreon erkennen. Sie können hier heruntergeladen werden.

Anleitungen zum Entfernen

Umbreon lässt sich als „ring 3“-Rootkit entfernen, doch mag es für einen unerfahrenen Nutzer schwierig sein. Doch wer den Mut aufbringt, es zu versuchen, sollte die betroffene Maschine mit Linux LiveCD starten und die folgenden Schritte beachten:

  1. Mounten der Partition, in der sich das /usr-Verzeichnis befindet; Schreibrechte sind erforderlich.
  2. Backup aller Dateien, bevor Änderungen vorgenommen werden.
  3. Entfernen der Datei /etc/ld.so.<random>.
  4. Enfernen des Verzeichnisses /usr/lib/libc.so.<random>.
  5. Wiederherstellen der Attribute der Dateien /usr/share/libc.so.<random>.<arch>.*.so und deren Entfernen
  6. Patchen der Loader-Bibliothek, um /etc/ld.so.preload wieder zu verwenden.
  7. Umounten der Partition und normaler Neustart des Systems.

Ein Beispiel aus der Praxis und die Indicators of Compromise gibt es im Originalbeitrag.

Referenzen

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*