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:
- Mounten der Partition, in der sich das /usr-Verzeichnis befindet; Schreibrechte sind erforderlich.
- Backup aller Dateien, bevor Änderungen vorgenommen werden.
- Entfernen der Datei /etc/ld.so.<random>.
- Enfernen des Verzeichnisses /usr/lib/libc.so.<random>.
- Wiederherstellen der Attribute der Dateien /usr/share/libc.so.<random>.<arch>.*.so und deren Entfernen
- Patchen der Loader-Bibliothek, um /etc/ld.so.preload wieder zu verwenden.
- Umounten der Partition und normaler Neustart des Systems.
Ein Beispiel aus der Praxis und die Indicators of Compromise gibt es im Originalbeitrag.
Referenzen
- System Management Mode Hacks – http://phrack.org/issues/65/7.html
- A Real SMM Rootkit – http://phrack.org/issues/66/11.html
- Subverting Vista Kernel For Fun and Profit – https://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Rutkowska.pdf
- Introducing ring-3 rootkits – http://invisiblethingslab.com/resources/bh09usa/Ring%20-3%20Rootkits.pdf