Hat ein Angreifer einen Computer erobert, will er sich vor Entdeckung schützen. Rootkits helfen ihm dabei: Sie verbergen Dateien und Prozesse vor den Blicken des Admin und installieren Hintertüren. Die Grundlagen dieser Softwaregattung zu kennen hilft den Admins dabei, Schlupfwinkel auszuleuchten.
Computer und ihre Programme sollen dem Anwender Arbeit abnehmen und beim Lösen von Aufgaben helfen. Allerdings haben sich in den vergangenen zwei Jahrzehnten mehrere Kategorien von Software entwickelt, die das genaue Gegenteil bewirken. Sie spionieren Daten aus, zerstören sie oder missbrauchen den Rechner für ihre eigenen Zwecke, vorbei am Wunsch des Benutzers.
Artenvielfalt
Diese Schadprogramme, auch Malware genannt (aus dem Englischen: malicious = boshaft/arglistig und Software), treten in mehreren Varianten auf. Die üblichen Kategorien nennt Ed Skoudis [1]: Backdoors (Hintertüren), Trojanische Pferde, Rootkits, Spyware, Viren und Würmer. Tabelle 1 erklärt die Unterschiede näher. Oft treten auch Mischformen auf, wenn beispielsweise Rootkits andere Schadsoftware enthalten.
Für viele Cracker gehören Rootkits zu den wichtigsten Werkzeugen und Hilfsmitteln: Sie verschleiern die Anwesenheit des Angreifers auf einem bereits kompromittierten System und geben ihm auch künftig privilegierten Zugriff [3]. Dennoch finden Rootkits zu Unrecht ähnlich wenig Beachtung wie Backdoors oder Trojanische Pferde – nur Spyware, Viren und Würmer sind statistisch genauer erfasst (etwa vom BSI, [2]).
Tarnen und täuschen
Im zeitlichen Ablauf stehen Installation und Nutzung eines Rootkits weit hinten, auf jeden Fall nach dem Einbruch: Reine Rootkits attackieren den Rechner nicht, sie sorgen nur dafür, dass sich der Cracker bequem einrichten kann. Um dessen Anwesenheit und Aktionen nach dem Einbruch zu verbergen, erfüllt ein Rootkit mehrere Aufgaben. Moderne Varianten erlauben es dem Benutzer, Informationen (Dateien, Verzeichnisse, Prozesse, Netzwerkverbindungen, Benutzerkonten) vor dem Administrator zu verbergen und deren Integrität und Authentizität zu unterwandern (siehe den “Rechts-Rat” in diesem Heft).
Zudem hinterlassen Rootkits oft Hintertüren (Backdoors, Abbildung 1). Durch sie gelangt der Cracker jederzeit wieder unbemerkt in den Rechner – selbst wenn die Sicherheitslücke längst geschlossen ist, durch die er das System erfolgreich geknackt hatte. Ebenfalls wichtig: Die meisten Varianten beseitigen die digitalen Angriffsspuren, die der Einbruch hinterlässt. Manche Rootkits attackieren von hier aus weitere IT-Systeme.
Spezialistenteam
Meist bestehen Rootkits aus vielen Einzelprogrammen. Mit ihnen kontrolliert und manipuliert der Angreifer den Rechner, ohne dass sein Opfer es merkt. Trotz aller Vielfalt gibt es einige Standardkomponenten in fast jedem Kit. Etwa einen Sniffer, der den Netzwerkverkehr mitliest und protokolliert. Damit gelangt der Angreifer an sensible Informationen, etwa unverschlüsselt übertragene Benutzernamen und Passwörter, mit deren Hilfe er in weitere Systeme eindringt. Ist eine Hintertür eingerichtet, fällt Authentifizierung als Barriere aus.
Für das Cracker-Werkzeug ist es wichtig, seine Hintertür gut zu verbergen. Eine beliebte Strategie dafür ist es, wichtige Systemkomponenten durch manipulierte Versionen auszutauschen (Trojaner). Sie funktionieren nach außen scheinbar ordnungsgemäß, enthalten jedoch getarnte Schadroutinen, die sich mit einem geheimen Mechanismus aktivieren.

Abbildung 1: Auf diversen Webseiten befinden sich Dutzende von fertig konfigurierten Hintertüren sowie Rootkits für Linux und diverse Unix-Varianten. Die Skript-Kiddies müssen sie nur noch herunterladen und auf den kompromittierten Systemen installieren.
Wie bei einem realen Einbruch entstehen auch bei einem Einbruch in Computer Spuren, beispielsweise Einträge in den Protokolldateien. So genannte Logcleaner entfernen die Einbruchsspuren automatisiert aus einer Vielzahl von Protokolldateien. Sie müssen dazu gründlich vorgehen, um eine Rekonstruktion des Angriffs und die Identifizierung des Täters zu vermeiden.
Beliebte Zugaben sind Installationsprogramme, mit denen ein Angreifer (teils mit einem komfortablen grafischen Interface) in Sekundenschnelle bösartige Software in das System einschleust. Dank der einfachen Anwendung gelingt das sogar unerfahrenen und technisch wenig versierten Angreifern.
Für Jedermann
Zu dieser Entwicklung passt, dass Rootkits oft verblüffend gut verständliche und ausführliche Anleitungen mitbringen. Die Programme in einem Rootkit liegen häufig im Quellcode vor, sodass versierte Angreifer sie im Sinne des Open-Source-Gedankens an ihre eigenen Wünsche und Gegebenheiten anpassen. Jüngst sind sogar Rootkits aufgetaucht (zum Beispiel Sinar [4] und Knark), die eigene Exploits mitbringen. Damit erhöhen die Nutzer ihre Privilegien: Dieser Vorgang nennt sich Privilege Escalation.
Mehr Rechte
Exploits [5] sind kleine bösartige Programme, oft mit reichlich trickreichem Assembler-Code. Sie nutzen gezielt bekannte Schwachstellen eines Programms aus, um zusätzliche Rechte zu ergattern. Nach einem Angriff aus der Ferne muss ein Einbrecher – je nach Systemberechtigung, mit der ein angegriffener Dienst läuft – weitere Schwachstellen ausnutzen, bis er den höchsten Benutzerstatus erreicht. Sein Ziel: Administrator unter Microsoft Windows oder Root-Berechtigung unter Unix/Linux.
Insbesondere vor dem Hintergrund der historischen Entwicklung (siehe Kasten “Historie”) ist die gezielte Kopplung von Exploits mit einem Rootkit eher ungewöhnlich. Normalerweise handelt es sich um zwei strikt getrennte Bestandteile im Arsenal des Bösen. Sie bedingen sich zwar gegenseitig, dennoch hat bis zum Erscheinen des Sinar-Rootkits [4] kein Autor beide Funktionalitäten vollständig kombiniert.
Die explosive Kombination verschlimmert die Bedrohungslage für Systemadministratoren. Selbst unerfahrene Angreifer (so genannte Skript-Kiddies) richten dank der automatisierten Werkzeuge großen Schaden an, ohne die Funktionsweise der Rootkits zu verstehen.
|
Tabelle 1: Arten von |
|---|

Abbildung 2: Das Betriebssystemkonzept teilt die Zugriffsprivilegien in Ringe auf. Kernel-relevante Prozesse laufen im mittleren Ring und erhalten privilegierten Zugriff auf die Hardware. Einige Rootkits benutzen diesen Bereich, um sich zu verstecken.
Admins dürfen sich den Luxus der Unwissenheit nicht leisten. Sie müssen die Techniken der Rootkits kennen und verstehen. Zu unterscheiden sind nach [3]:
- Kernel-basierte Rootkits
- Rootkits auf Anwendungsebene
Erstere untergraben elementare Systemteile und manipulieren die interne Funktionsweise. Ein solches Rootkit erhält unbegrenzten Zugriff auf Speicherverwaltung, Prozessmanagement sowie Geräte- und Dateiverwaltung. Typisch für diese Klasse ist das Adore-Rootkit. Es funktioniert mit den Linux-Kernelversionen 2.2, 2.4 und 2.6 (Adore-NG).
Im Gegensatz dazu agiert ein anwendungsbasiertes Rootkit auf dem äußeren Systemring (Abbildung 2). Es überschreibt wichtige Systemdateien mit trojanisierten Varianten oder manipuliert andere Systemprozesse. Dazu klinkt es sich in deren Prozessraum ein und überschreibt oder ersetzt die vom Prozess genutzten Ressourcen (Bibliotheken oder ausführbare Dateien).
Fallbeispiel
Das Adore-Rootkit stammt von Mitgliedern der Hackergruppe Team Teso [14], die es ursprünglich für den Linux-Kernel 2.2 und 2.4 veröffentlichten. Ein eigenes Kernelmodul nimmt tiefgreifende Systemmanipulationen vor. Die aktuelle Version Adore-NG 0.53 vom 21. April 2005 [15] arbeitet auch mit Kernel 2.6. Ähnlich wie aktuelle Windows-Rootkits versteckt Adore folgende Informationen:
- Systemprozesse
- Dateien und Verzeichnisse
- Netzwerkverbindungen
- Hintertüren
Das folgende Beispiel verwendet Gentoo Linux mit Kernel 2.6.8. Adore lässt sich mit einem simplen »make«-Aufruf aus den Quellen übersetzen. Details zu den im Makefile eventuell nötigen Anpassungen verraten die Dateien »README« und »README.26«.

Abbildung 3: Das Adore-Rootkit arbeitet auf Kernelebene. Das nötige Kernelmodul versteckt sich dabei geschickt vor den Blicken der ahnungslosen Administratoren.
Versteckspiel
Um das Rootkit zu aktivieren, muss ein Anwender mit Root-Rechten das Modul laden: »insmod adore-ng-2.6.ko«. Interessanterweise taucht es danach nicht in der Liste der geladenen Kernelmodule auf, wie die Ausgabe des »lsmod«-Befehls beweist (Abbildung 3).
Dass das Modul trotz unverfänglicher Modulliste im Kernelspace geladen und aktiv ist, zeigt das von Adore mitgelieferte Programm »ava«. Es dient als Userspace-Kontrolleinheit für das Kernelmodul. In bester Unix-Tradition gib es sogar Hinweise zu seiner Benutzung. Wer es per »./ava« ohne jeden Parameter aufruft, erfährt Folgendes:
Usage: ./ava {h,u,r,R,i,v,U} [file or PID]
I print info (secret UID etc)
h hide file
u unhide file
r execute as root
R remove PID forever
U uninstall adore
i make PID invisible
v make PID visible
Um allgemeine Informationen zur lokalen Installation des Adore-Rootkits abzurufen, stellt die Software den Parameter »I« (Print Info) bereit.
Selbstauskunft
Der Aufruf »./ava I« informiert den Benutzer über die Versionsnummer:
Checking for adore 0.12 or higher ... Adore 1.53 installed. Good luck. ELITE_UID: 2618748389, ELITE_GID=U 4063569279, ADORE_KEY=fgjgggfd CURRENT_ADORE=53
Die Ausgabe enthält auch das so genannte magische Passwort (»ADORE_KEY=fgjgggfd«). Das braucht der Benutzer, wenn er das Adore-Rootkit anspricht. Die Benutzer- und Gruppenkennung definiert der Rootkit-Anwender bei der Installation mit Hilfe der beiden Parameter »ELITE_UID« und »ELITE_GID«.

Abbildung 4: Mit Adore-NG verstecken Angreifer ihre Dateien (etwa Logdateien mit Benutzerpasswörtern) vor Anwendern. Dank des Kernelmoduls ist es nicht nötig, den »ls«-Befehl selbst zu manipulieren.
Adore-NG ist in der Lage, Dateien und Verzeichnisse wirksam zu verstecken, wie Abbildung 4 zeigt. Der Angreifer kopiert in diesem Beispiel die Systemshell auf eine neue Datei namens »/tmp/backdoor« und gibt ihr ein S-Bit – dank dieses Tricks läuft sie beim nächsten Aufruf wieder mit Root-Rechten, egal wer sie startet. Solche Hintertüren finden gute Admins sehr schnell. Mit »./ava h Dateiname« versteckt der Angreifer daher seine Hinterlassenschaft.
Nur für Kenner
Das folgende »ls -la /tmp« belegt: Die Datei ist unsichtbar. Nur wer ihren exakten Namen weiß, erkennt, dass die Datei existiert (»ls /tmp/backdoor«). Auch andere Kommandos wie »file« finden die verborgene Datei. Allerdings wissen die Opfer in der Regel den Namen der versteckten Dateien nicht.
Als weiteres Feature schützt Adore Systemprozesse vor der Entdeckung. In Abbildung 5 hat der Angreifer den Prozess mit der ID 6511 vor dem Kommando »ps« verborgen. Mit Hilfe des Programms Ava lässt sich bei genauer Kenntnis der Prozesskennung ein verborgener Prozess wieder sichtbar machen (»./ava v PID«). Ohne diese PID ist eine Entdeckung sehr unwahrscheinlich. Ein gewöhnlicher »pstree«-Aufruf zeigt keine Spuren.
|
Historie |
|---|
|
Es gibt kein dokumentiertes Datum für die Entstehung von Rootkits. Der historische Ursprung lässt sich bis etwa Ende der 80er Jahre zurückverfolgen. Im März 1989 veröffentlichte ein Unbekannter mit dem Pseudonym Black Tie Affair einen Artikel über diese Technologie [6] im IT-Sicherheits- und Hacker-Magazin “Phrack” [7]. Er beschreibt, wie Anwender nach einem erfolgreichen Einbruch in einen Unix-basierten Rechner alle Spuren aus »/etc/utmp« entfernen. Vier Jahre später, im Juli 1993, folgt von einem anderen Unbekannten (Pseudonym: Phrack Accident) ein Beitrag [8] mit weiteren Programmen zur automatisierten Protokollreinigung. Dieser Artikel beschreibt auch, wie man das Schutzprogramm Tripwire umgeht. Schnelle VerbreitungDass die Säuberungsprogramme damals tatsächlich zum Einsatz kamen, belegt eine Vielzahl von Warnmeldungen mehrere Internet-Sicherheitszentren. Das CERT/CC (Computer Emergency Response Team/Coordination Center) veröffentlichte bereits im Februar 1994 zahlreiche Warnmeldungen [9] über lange andauernde und intensive Netzwerkangriffe. Ihnen fielen weltweit mehrere 10000 Computersysteme zum Opfer. Weitere Quellen berichten, dass knapp einen Monat später über 100000 Systeme betroffen waren. Dort kamen Trojanische Pferde zum Einsatz, die unter anderem »ifconfig«, »netstat«, »ls«, »ps«, »find«, »du« und »df« ersetzten. 1994 erschien ein eigenständiges Programmpaket für Sun OS 4, das manipulierte Systemprogramme mit Säuberungssoftware vereinte: Die Idee der Rootkits war geboren. Linux gerät in den FokusMitte der 90er Jahre wurde Linux für Angreifer interessant. Das Linux Root Kit Version 3 (lrk3) erbte die Ideen und Techniken der Sun-OS-Malware. Spätere Varianten waren besser auf Linux optimiert. Alle im Artikel vorgestellten Techniken und Entwicklungen gibt es in ähnlicher Form auch für Sun OS/Solaris und andere Unix-Varianten sowie für MS Windows. Im April 1997 beschrieb jemand unter dem Pseudonym Halflife [10] in einem weitern Phrack-Artikel, wie sich der Linux-Kernel per LMK (nachladbare Module, Loadable Kernel Modules) manipulieren lässt. Alle bis dato bekannten Gegenmaßnahmen und Erkennungsmethoden erwiesen sich als nutzlos. Selbst die vollständige Deaktivierung von nachladbaren Modulen genügt nicht, wie Silvio Cesare 1998 belegte [11]. Zwei Sicherheitsexperten mit den Pseudonymen Sd und Devik entwickelten diese Technik weiter [12] zum Suckit-Rootkit (Super User Control Kit), das zur Laufzeit zahlreiche Schadfunktionen in den Kernel implantiert, ohne ein Modul zu laden. KonserventechnikNach einem Neustart des Systems hatte der Admin aber wieder einen sauberen Kernel. Deshalb ersetzten Angreifer und Rootkits die zur Initialisierung des Systems verwendeten Programme (etwa den Init-Daemon) mit trojanisierten Varianten. Erst Im Dezember 2002 veröffentlichte Jbtzhm eine Methode [13] zur Manipulation des Kernels, die auch den Neustart eines Systems überdauert. Sie sah vor, dass ein Angreifer den als komprimierte Binärdatei gespeicherten Kernel entpackt und gezielt manipuliert. Um diese Manipulationen zu aktivieren, muss der Angreifer einen Reboot abwarten oder ihn selbst herbeiführen. |

Abbildung 5: Neben Dateien bewahrt Adore auch komplette Prozesse vor neugierigen Blicken. Der Angreifer bleibt bei seinen Aktivitäten ungestört.
Gefahr Rootkit
Rootkits sind heute eine ernst zu nehmende Gefahr für moderne Computersysteme. Sie bedrohen die Sicherheit, Vertraulichkeit und Integrität der gespeicherten Daten und Informationen und fallen folglich in den Bereich der Computerkriminalität (siehe “Rechts-Rat” in diesem Heft). Vor allem die Vielzahl, der Funktionsumfang und die Entwicklungsgeschwindigkeit der inzwischen verfügbaren Rootkits (Abbildung 6) liefern Grund zur Sorge. Unternehmen und deren Mitarbeiter befinden sich im Wettlauf mit den Rootkit-Entwicklern.

Abbildung 6: Sicherheitsbewusste Sysadmins sollten sich stets über bekannte Rootkits informieren. Die Werkzeuge ihrer Gegner zu kennen hilft ihnen dabei, die eigenen Systeme vor Angriffen zu schützen.
Der schnelle Releasezyklus neuer Versionen schürt den Wettstreit und ähnelt dem bereits seit Jahren bekannten Kampf der Viren- mit der Antivirenindustrie. Diverse Techniken und Maßnahmen helfen bereits jetzt bei der Erkennung, Analyse und Abwehr von Rootkits – der beste Schutz ist aber, schon den initialen Angriff abzuwehren. (mwe/fjl)
|
Infos |
|---|
|
[1] Ed Skoudis, Lenny Zeltser, “Malware – Fighting Malicious Code”: 1. Auflage 2003, Pearson Education USA [2] Bundesamt für Sicherheit in der Informationstechnik, “Erste Hilfe bei Viren & Co”: [http://www.bsi-fuer-buerger.de/down/F24VirenundCo.pdf] [3] Harlan Carvey, “Windows Forensics and Incident Recovery”, 1. Auflage 2004: Pearson Education USA [4] Archim, “B.D.S.M – The Solaris 10 way”: [http://www.ccc.de/congress/2004/fahrplan/files/66-sun-bloody-daft-solaris-mechanisms-slides.pdf] [5] French Security Incident Response Team, “Exploits & Codes”: [http://www.frsirt.com/exploits/] [6] Black Tie Affair, “Hiding out under Unix”: [http://www.phrack.org/show.php?p=25&a=6] [7] Phrack: [http://www.phrack.org] [8] Phrack Accident, “Playing Hide and Seek – Unix style”: [http://www.phrack.org/show.php?p=43&a=14] [9] CERT Coordination Center, “CERT Advisory CA-1994-01, Ongoing Network Monitoring Attacks”: [http://www.cert.org/advisories/CA-1994-01.html] [10] Halflife, “Abuse of the Linux Kernel for Fun and Profit”: [http://www.phrack.org/show.php?p=50&a=5] [11] Silvio Cesare, “Runtime Kernel kmem Patching”: [http://www.l0t3k.org/biblio/kernel/english/runtime-kernelkmem-patching.txt] [12] Sd, Devik, “Linux on-the-fly kernel patching without LKM”: [http://www.phrack.org/phrack/58/p58-0x07] [13] Jbtzhm, “Static Kernel Patching”: [http://www.phrack.org/show.php?p=60&a=8] [14] Team Teso: [http://www.team-teso.net] [15] Adore-NG-Rootkit: [http://stealth.openwall.net/rootkits/adore-ng-0.53.tgz] |
|
Die Autoren |
|---|
|
Sebastian Wolfgarten studiert Security and Forensic Computing an der Dublin City University (Irland) und arbeitet bei Ernst & Young Dublin im Bereich Technology & Security Risk Services. Sein Bruder Jens befasst sich als Leiter der Software-Entwicklung und Systemadministration bei der Firma Pharmapp Solutions GmbH mit Programmen zur Überwachung von Arzneimittelrisiken. Mit Linux beschäftigt er sich seit zehn Jahren und hat sich zwischenzeitlich zu einem begeisteten Gentoo-Anhänger entwickelt. |






