1.5.4 Rootkits

Als Rootkit wird die Möglichkeit bezeichnet auf einem kompromittierten System unentdeckt zu bleiben und die durch einen Einbruch erlangten Privilegien später nach Belieben nutzen zu können. Das Ziel des Angreifers besteht darin, keine Spuren seiner Aktivitäten oder Modifikationen zu hinterlassen.

Wurden anfänglich veränderte Systemprogramme installiert, um Log-Files zu unterdrücken, werden inzwischen umfangreiche, schwer zu entdeckende Änderungen im Kernel durchgeführt, um dieses Ziel zu erreichen. Rootkits werden verstärkt unter Linux eingesetzt, da der Quellcode frei erhältlich und damit leicht zu modifizieren ist; es gibt aber auch Rootkits für Windows.

Die ersten Rootkits besaßen die Möglichkeit, aus den Log-Dateien bestimmte Einträge zu löschen, so dass es nicht mehr möglich war, durch die Auswertung der Log-Dateien einen Angreifer zu entdecken. Laufende Prozesse oder spezielle Dateien des Angreifers können jedoch während des Angriffes leicht entdeckt werden.

Eine fortgeschrittene Methode besteht aus dem Austausch von Systemprogrammen wie ps, ls oder netstat, die so modifiziert werden, dass sie die Aktivitäten des Angreifers nicht aufzeigen. Darüber hinaus kann noch eine ganze Anzahl anderer Systemprogramme ausgetauscht werden, wie passwd, killall oder syslogd. Dabei haben die ausgetauschten Programme die gleiche Länge wie die Originalprogramme. Werden allerdings Integritätssicherungsverfahren wie SHASecure Hash Algorithm-1 oder MD5 verwendet, um Hashes als Prüfsummen der Programme zu bilden, können die geänderten Programme erkannt werden. Eine solche Überprüfung ermöglicht z.B. das Windows-Programm HashCheck, das eine Erweiterung des Windows Explorers darstellt und die Prüfsummen der Dateien in einem zusätzlichen Reiter bei den Dateieigenschaften anzeigt.

Die wirkungsvolle Kontrolle durch Hash-Prüfsummen kann mit Kernel Rootkits umgangen werden. Dabei werden nicht mehr die Systemprogramme ausgetauscht, sondern es werden die von Systemprogrammen benutzten Systemaufrufe manipuliert. Entdeckt werden können die manipulierten Systemaufrufe z.B. durch Laufzeituntersuchungen, wobei die Anzahl der ausgeführten Befehle gezählt wird. Weicht diese signifikant von der Anzahl im nicht kompromittiertem System ab, ist dies ein deutlicher Hinweis auf einen manulierten Systemaufruf. Ein Programm wie chrootkit ist geeignet diese Manipulationen festzustellen.

Was ein Angreifer mit einem kompromittiertem System vorhat, ist nicht vorhersagbar. Häufig werden die Systeme als FTPFile Transfer Protocol Server (aber nicht auf dem Standard Port 20/21) betrieben, um unerlaubt lizensierte Software zu verteilen. Eine gute Möglichkeit, diese Art von Angriffen zu erkennen, ist eine Veränderung der Netzlast, die regelmäßig vom Administrator überprüft werden sollte.

Die Untersuchung eines fortgeschrittenen Windows 7 Rootkits ("TDL-Familie"), das ein eigenes verschlüsseltes Dateisystem angelegt, ist in der Serie "Tatort Internet" bei Heise.de dargestellt.