Heimliche Hintertüren

Seite 3: Der Ring der Macht

Inhaltsverzeichnis

Unter Windows kommen als Hintertüren oft Backdoor-Programme wie NetBus, SubSeven und Back Orifice 2000 als Rootkit zum Einsatz. Sie arbeiten nach dem Prinzip von Fernwartungsprogrammen wie PCAnywhere und erlauben die vollständige Kontrolle eines Windows-Rechners über das Netz. Mit einem Viren-Scanner lassen sich solche Backdoors vergleichsweise einfach aufspüren.

Ein Kernel-Rootkit für Windows NT und dessen Nachfolger ist nicht ganz einfach zu realisieren. Denn ein normaler User-Prozess -- auch wenn er mit Administratorrechten läuft -- kann nicht einfach Modifikationen am Kernel vornehmen. Intels x86-CPUs unterstützen vier verschiedene Betriebsmodi -- meist als Ring 0 bis 3 bezeichnet. Windows benutzt davon nur Ring 0, den Kernel-Modus mit vollem Zugriff auf den Speicher, und Ring 3, den User-Modus mit den geringsten Zugriffsrechten. Insbesondere haben Prozesse im Ring-3-Modus keinen Zugriff auf Speicherbereiche des Kernels, die mit Ring 0 markiert sind. Allerdings gibt es eine Reihe dokumentierter und undokumentierter Methoden, diese Einschränkung zu umgehen.

So hat Greg Hoglund als Machbarkeitsstudie das NT-Rootkit entwickelt [3]. Es enthält einen Gerätetreiber namens "_root_.sys" und eine ausführbare Datei namens "deploy.exe", die die Installation des Treibers erledigt. Hoglund umgeht dabei die Ring-0-Schutzmechanismen, indem er den so genannten Security Reference Monitor (SRM) außer Gefecht setzt, der für die Überwachung der Zugriffsrechte zuständig ist.

Die Befehle "net start _root_" und "net stop _root_" schalten das Rootkit ein und aus. Im aktiven Zustand versteckt es Objekte wie Dateien und Verzeichnisse, die mit der Zeichenfolge "_root_" beginnen, vor allen Programmen im User-Modus. Auch Prozesse und Registry-Einträge, die mit dieser speziellen Zeichenfolge beginnen, zeigt das System nicht mehr an. Das gilt auch für Benutzer mit Administratorrechten.

Die Dateien im roten Kasten würde das aktive Rootkit einfach ausblenden.

Als Hintertür installiert das Rootkit einen eigenen TCP/IP-Stack, der allerdings fest auf die IP-Adresse 10.0.0.166 konfiguriert ist. Sie ist weder lokal mittels netstat noch im Netzwerk über ping oder andere Befehle zu entdecken. Ein Angreifer erreicht auf allen Ports dieser Adresse einen einfachen Telnet-Server, dessen Netzwerkaktivitäten das Rootkit vor lokalen Prozessen vollständig verbirgt. Erst ein externer Port-Scan auf 10.0.0.166 zeigt alle Ports als offen an.

Schließlich demonstriert Hoglund, wie ein Kernel-Rootkit auch Viren-Scanner und Sicherheitsprogramme wie Tripwire täuschen kann, die kryptographische Hash-Werte der Programme speichern, um spätere Veränderungen aufzudecken. Dazu lädt das NT-Rootkit beim Ausführen eine andere Datei, als beim Lesen des Programmcodes. Hoglund hat dies exemplarisch für die Windows-Shell cmd.exe implementiert.

Um es auszuprobieren, kopiert man calc.exe auf C:\ und cmd.exe nach C:\_root_cmd.exe. Nach dem Start von _root_cmd.exe erscheint dann statt eines Kommandozeilenprompts der Taschenrechner auf dem Bildschirm. NT-Rootkit leitet den Aufruf einfach auf das Programm calc.exe um. Öffnet man allerdings _root_cmd.exe in einem Hex-Editor, so zeigt dieser das Original an -- also die unveränderte Datei _root_cmd.exe, die auch jeder Scanner als das Original identifizieren würde.

Da es sich bei dem NT-Rootkit nur um eine Machbarkeitsstudie handelt, hat Hoglund die Funktionen absichtlich eingeschränkt, und auf viele bösartige Features typischer Rootkits verzichtete er ganz. Allerdings tauchen mittlerweile erste wirklich gefährliche Exemplare in freier Wildbahn auf.

Im Januar und Februar des Jahres 2003 breitete sich ein "Mini-Rootkit" aus, das inzwischen von Antivirenherstellern als "Slanret" und "Krei", beziehungsweise zusammen als "Backdoor-ALI" bezeichnet wird. Das Rootkit wurde hauptsächlich von Einbrechern auf Systemen installiert, in die sie durch eine Schwachstelle im Microsoft-SQL-Server eindringen konnten.

Die Slanret-Komponente ist eine 7 KByte große Datei namens "ierk8243.sys", die als Treiber zum Betriebssystemkern hinzugeladen wird. Über eine spezielle Schnittstelle können dann Programme privilegierten Zugriff auf das System erlangen. Sie können über diese Schnittstelle Dateien anlegen, Prozesse starten oder Registry-Einträge erstellen, die das System nicht anzeigt. Erst wenn man Slanret aus dem System entfernt, tauchen diese Objekt wieder auf.

Die 27-KByte-große Krei-Komponente besteht ebenfalls nur aus einer Datei. Sie heißt "ipsechlp.dll" und startet einen Dienst namens "IPSEC Helper Service" der auf Port 449 lauscht. Dieser Zugang fungiert als Backdoor, über die der Angreifer einen vollständigen Zugriff auf das System erlangen kann. Da Krei die von Slanret bereitgestellte Schnittstelle benutzt, ist es solange nicht zu entdecken, wie Slanret aktiv ist.