Wer ein Rootkit auf seinem Server vermutet, kann sich auf lange Nächte einstellen. Einmal installiert, sind die unsichtbaren Hacker-Werkzeuge nur schwer wieder los zu werden. Sie benutzen jeden Trick, um sich zu tarnen, zu verstecken und im System einzugraben.
Doch nicht immer hat der Hacker Zeit, sofort jeden geknackten Computer auf interessante Informationen zu durchsuchen. Er muss also dafür sorgen, dass er den Zugang offen hält, ohne dass der Besitzer etwas davon merkt. Das Mittel der Wahl ist ein so genanntes "Rootkit". Nach allgemeiner Definition handelt es sich dabei um eine Technik, die hilft, ein anderes Programm oder einen Dienst zu verbergen.
Entstanden sind Rootkits Anfang der 90er im Unix-Bereich. Die ersten Tools waren noch reichlich primitiv und bestanden meist aus modifizierten Systemprogrammen. Die Hacker tauschten die Programme wie die Prozessanzeige ps oder das Directory-Tool ls gegen eigene Versionen aus, die so umgebaut waren, dass sie bestimmte Prozesse oder Dateien einfach versteckten. Die zunehmende Zahl von unterschiedlichen Unix-Varianten setzte diesem Ansatz aber bald ein Ende - es wurde einfach zu aufwändig, für alle Derivate ein passendes Tool zu schreiben und zu kompilieren. Zudem begann sich der Erfolg von Windows auch im Internet zu zeigen. Und mehr und mehr Server liefen unter dem Betriebssystem. Änderungen an Tools wie dem Task-Manager waren viel zu komplex, um sie einfach und schnell durchzuführen.
So verlegte sich die Hackergemeinde auf die Arbeit mit dem Application Programming Interface (API). Diese Schnittstellen sind unter anderem Bestandteil des Betriebssystems und stellen definierte und dokumentierte Funktionen zur Verfügung. So muss ein Programmierer keinen eigenen "Datei öffnen" Dialog entwickeln, sondern er nutzt dazu die Windows API. Das ist praktisch, sorgt für ein einheitliches Erscheinungsbild der Programme und spart Zeit. Leider auch den Hackern, sich nun darauf verlegten, API-Aufrufe abzufangen und deren Ausgabe zu modifizieren.
Rootkits sind je nach Konzept mehr oder weniger mächtig. Ein Rootkit, das im User-Mode arbeitet, kann praktisch alle API-Aufrufe filtern und nach Gutdünken ändern. So bleiben nicht nur Dateien und Verzeichnisse verborgen, sondern auch Registry-Einträge und Prozesse. Noch gefährlicher sind allerdings Rooitkits, die im Kernel-Mode arbeiten. Sie können die Datenstrukturen des Kernels selbst verändern und haben damit praktisch jede Funktion des Computers im Griff.
Das Aufspüren eines solchen Rootkits ist auf dem befallenen System selbst praktisch unmöglich. Fast alle Rootkits setzen sich in irgendeiner Form in der Registry fest (Persistent), damit sie nach einem Neustart wieder aktiviert werden. Andere Rootkits sind nur im Speicher aktiv und nach einem Neustart verschwunden (Memory-based). Durch den Verzicht auf Einträge in Registry und Dateistruktur sind diese schwerer zu finden, als Persistent-Rootkits.
Mittlerweile hat sich eine sehr lebhafte Szene etabliert, die zu einem guten Teil öffentlich ist und ihre Rootkit-Entwicklungen frei zur Verfügung stellt. Doch das sollte nicht über die wahren Absichten der Entwickler hinwegtäuschen: Fast alle Rootkits werden unter der Hand in modifizierten Abarten gehandelt, die nicht öffentlich gemacht und so auch nicht von den diversen Tools aufgespürt werden können. Dass die Bedrohung sehr real ist, steht mittlerweile fest. Eigentlich ist es eher verwunderlich, dass noch nicht mehr Hersteller von Spy- oder Adware-Programmen Rootkits zum Tarnen und Festsetzen ihrer Software nutzen. Doch der Trend geht eindeutig in diese Richtung, und Vorbeugen ist nach wie vor das beste Mittel im Kampf gegen ein Rootkit.
Solange der Angreifer keine Sicherheitslücke findet und der Administrator mit sicheren Passwörtern und einem abgeschotteten System kontert, findet das Rootkit keinen Weg auf den Computer. Doch leider sind die meisten Rechner nur unzureichend gesichert, und das Rootkit gräbt sich trotzdem im System ein. Der erste Schritt ist dann, das Rootkit überhaupt zu bemerken. Viele Antiviren-Programme melden, wenn fremde Software versucht, Module zu installieren oder sich in der Registry einzutragen. Bei Linux-Systemen und einfachen Rootkits kommt es dann oft zu Fehlermeldungen, besonders wenn man System-Utilities mit vielen Parametern aufruft. Oft haben die Hacker beim Kompilieren Fehler gemacht, so dass das modifizierte Tool nicht exakt zu Linux-Distribution und Libraries passt.
C:\Windows\Prefetch
Dort gibt man den Befehl cd HXDEF1~1.PF ein. Wenn Hacker Defender installiert ist, antwortet Windows mit der Mitteilung, dass der Verzeichnisname ungültig ist. Ohne Hacker Defender sagt Windows "Datei oder Dateiname nicht gefunden".
|
Der Hersteller arbeitet aber schon seit längerem an einer weit mächtigeren Software zur Rootkit Bekämpfung. Sie ist unter dem Arbeitstitel "Strider Ghostbuster" bekannt. Informationen dazu gibt es bei Microsoft bereits, das Tool liegt aber noch nicht zum Download vor. Strider GhostBuster arbeitet nach einem differenziellen Verfahren. Dabei zeichnet die Software den Systemzustand im laufenden Betrieb auf und startet den PC dann von einer CD-Version (WinPE) des Betriebssystems. Dort sind die Rootkits natürlich nicht aktiv und können ihre Anwesenheit auf der Festplatte kaum verbergen. Nach einem ähnlichen Prinzip funktioniert das kostenlose Rootkit Revealer vom Systemspezialisten Sysinternals. Rootkit Revealer vergleicht die Ergebnisse eines High-Level System-Scans mit denen eines Low-Level Scans, in den auch Dateisystem- und Partitionsdaten einfließen. Denn auch wenn das Rootkit die Verzeichnislisten manipuliert und Dateien nicht anzeigt, irgendwo sind sie physikalisch gespeichert. Doch auch dagegen gibt es bereits Abwehrmaßnahmen. Hacker Defender stoppt beispielsweise seine API-Manipulationen, solange der RootkitRevealer scannt. Und ohne aktives Rootkit gibt es auch keine Diskrepanzen mit dem Dateisystem.
Ein weiterer Weg, um einem Rootkit auf die Spur zu kommen, läuft über das Netzwerk. Schließlich ist die Grundidee fast immer, eine Backdoor zum Internet offen zu halten, über die der Angreifer später auf das System zugreifen kann. Dazu müssen Ports geöffnet sein, die man über entsprechende Scanner wie nmap überprüfen kann. Natürlich geht das nicht vom betroffenen Computer aus, die Ausgabe des netstat-Befehls würde durch das Rootkit manipuliert werden und natürlich keine verdächtigen Ports aufweisen. Ein zweiter Computer jedoch, der über das Netzwerk einen Scan auf dem verdächtigen System durchführt, würde solche Ports sehr wohl finden.
|
Für Unix und Linux sind natürlich ebenfalls Tools verfügbar. Ein spezialisierter Rootkit-Scanner ist chkrootkit, das mehrere Tools enthält, die in bestimmten Systembereichen nach Eindringlingen suchen. Generell ist es bei Linux und Unix einfacher, Vorsichtsmaßnahmen zu treffen. So könnte man einen zweiten, möglichst gut gesicherten, Linux Rechner als Syslog-Empfänger aufsetzen, der die Syslog-Einträge des eigentlichen Servers aufzeichnet. Das macht es dem Rootkit praktisch unmöglich, nachträglich Einträge in den diversen Log-Dateien zu löschen, was sonst standardmäßig zum Angriff gehört. Prüfsummen sind in der Unix-Welt ein bekanntes und oft eingesetztes Mittel, um die Integrität von Dateien zu gewährleisten. Tools wie Tripwire und AIDE automatisieren die Erstellung und den Vergleich von Prüfsummen und sorgen so für mehr Komfort bei deren Einsatz.
Auch wenn die Liste der Tools zum Aufspüren und Bekämpfen der Rootkits fast so lang ist wie die Liste der Rootkits selbst, sollte man sich nicht täuschen lassen: Der einzige Weg um sicher zu stellen, dass das System wieder Rootkit-frei ist, ist eine Neuinstallation von Originalmedien samt Partitionierung der Festplatte(n). Viele Administratoren winken schon beim Verdacht auf ein Rootkit ab und setzen den Rechner neu auf. Nur wer Analyse und Forensik betreiben will, vielleicht weil man hinter der Attacke einen Konkurrenten vermutet, kann mit einem Honeypot im System oder einem kompletten Honeynet versuchen, dem Angreifer über die Schulter zu sehen.
URLs in diesem Artikel:[1] = http:/
[2] = http:/
[3] = http:/
[4] = http:/
[5] = http:/
[6] = http:/
[7] = http:/
[8] = http:/
[9] = http:/
[10] = http:/
[11] = http:/
[12] = http:/
[13] = http:/
[14] = http:/
[15] = http:/
[16] = http:/
[17] = http:/
[18] = http:/
[19] = http:/
[20] = http:/