Ein Rootkit (englisch etwa: „Administratorenbausatz“; root ist bei unixähnlichen Betriebssystemen der Benutzer mit Administratorrechten) ist eine Sammlung von Softwarewerkzeugen, die nach dem Einbruch in ein Softwaresystem auf dem kompromittierten System installiert wird, um zukünftige Anmeldevorgänge (Logins) des Eindringlings zu verbergen und Prozesse und Dateien zu verstecken.
Der Begriff ist heute nicht mehr allein auf unixbasierte Betriebssysteme beschränkt, da es längst auch Rootkits für andere Systeme gibt. Antivirenprogramme versuchen, die Ursache der Kompromittierung zu entdecken. Zweck eines Rootkits ist es, Schadprogramme („malware“) vor den Antivirenprogrammen und dem Benutzer durch Tarnung zu verbergen.
Eine weitere Sammlung von Softwarewerkzeugen oder Bootloadern ist das „Bootkit“.
Die ersten Sammlungen von Unix-Tools zu den oben genannten Zwecken bestanden aus modifizierten Versionen der Programme ps, passwd usw., die dann jede Spur des Angreifers, die sie normalerweise hinterlassen würden, verbergen und es dem Angreifer so ermöglichten, mit den Rechten des Systemadministrators root zu agieren, ohne dass der rechtmäßige Administrator dies bemerken konnte.
Ein Rootkit versteckt normalerweise Anmeldevorgänge, Prozesse und Logdateien und enthält oft Software, um Daten von Terminals, Netzwerkverbindungen und Tastaturanschläge und Mausklicks sowie Passwörter vom kompromittierten System abzugreifen. Hinzu können Backdoors (Hintertüren) kommen, die es dem Angreifer zukünftig vereinfachen, auf das kompromittierte System zuzugreifen, indem beispielsweise eine Shell gestartet wird, wenn an einen bestimmten Netzwerkport eine Verbindungsanfrage gestellt wurde. Die Grenze zwischen Rootkits und Trojanischen Pferden ist fließend, wobei ein Trojaner eine andere Vorgehensweise beim Infizieren eines Computersystems besitzt.
Das Merkmal eines Rootkits ist es, dass es sich ohne Wissen des Administrators installiert und dem Angreifer so ermöglicht, die Computeranlage unerkannt für seine Zwecke zu nutzen. Dies sind u. a.:
Rootkits können neue Hintertüren („backdoors“) öffnen. Zudem versuchen Rootkits, den Weg ihres Einschleusens zu verschleiern, damit sie nicht von anderen entfernt werden.
Application-Rootkits bestehen lediglich aus modifizierten Systemprogrammen. Wegen der trivialen Möglichkeiten zur Erkennung dieser Art von Rootkits finden sie heute kaum noch Verwendung.
Heutzutage finden sich fast ausschließlich Rootkits der folgenden drei Typen:
Kernel-Rootkits ersetzen Teile des Kernels durch eigenen Code, um sich selbst zu tarnen („stealth“) und dem Angreifer zusätzliche Funktionen zur Verfügung zu stellen („remote access“), die nur im Kontext des Kernels („ring-0“) ausgeführt werden können. Dies geschieht am häufigsten durch Nachladen von Kernel-Modulen. Man nennt diese Klasse von Rootkits daher auch LKM-Rootkits (LKM steht für engl. „loadable kernel module“). Einige Kernel-Rootkits kommen auch ohne LKM aus, da sie den Kernelspeicher direkt manipulieren. Unter Windows werden Kernel-Rootkits häufig durch die Einbindung neuer .sys-Treiber realisiert.
Ein solcher Treiber kann Funktionsaufrufe von Programmen abfangen, die beispielsweise Dateien auflisten oder laufende Prozesse anzeigen. Auf diese Weise versteckt das Rootkit seine eigene Anwesenheit auf einem Computer.
„Userland-Rootkits“ sind vor allem unter Windows populär, da sie keinen Zugriff auf der Kernel-Ebene benötigen. Sie stellen jeweils eine DLL bereit, die sich anhand verschiedener API-Methoden (SetWindowsHookEx, CreateRemoteThread) direkt in alle Prozesse einklinkt. Ist diese DLL einmal im System geladen, modifiziert sie ausgewählte API-Funktionen und leitet deren Ausführung auf sich selbst um („redirect“). Dadurch gelangt das Rootkit gezielt an Informationen, welche dann gefiltert oder manipuliert werden können.
Speicher-Rootkits existieren nur im Arbeitsspeicher des laufenden Systems. Nach dem Neustart („reboot“) des Systems sind diese Rootkits nicht mehr vorhanden.
Fast alle gängigen Server-, PC- und Laptop-Prozessoren besitzen heute Hardware-Funktionen, um Programmen einen virtuellen Prozessor vorzugaukeln. Dies wird häufig genutzt, um auf einer physikalischen Computeranlage mehrere auch unter Umständen verschiedene Betriebssysteme parallel betreiben zu können. Virtual Machine Based Rootkit (VMBR)s sind Rootkits, die ein vorhandenes Betriebssystem in eine virtuelle Umgebung verschieben. Dadurch ist das Betriebssystem in der virtuellen Umgebung gefangen. Die virtuelle Umgebung ist somit eine Software-Ebene unter dem Betriebssystem, was ein Erkennen des VMBR stark erschwert.
Machbarkeitsnachweise für diese Technik lieferten Joanna Rutkowska mit dem Programm Bluepill sowie Microsoft Research mit dem Programm SubVirt. Bluepill kann, im Gegensatz zu SubVirt, ohne Neustart des zu infizierenden Computers installiert werden. Der Name Bluepill (englisch für „blaue Pille“) ist eine Analogie zum Film Matrix.
Da eine hundertprozentige Erkennung von Rootkits unmöglich ist, ist die beste Methode zur Entfernung die vollständige Neuinstallation des Betriebssystems.[8] Da sich bestimmte Rootkits im BIOS verstecken, bietet selbst diese Methode keine hundertprozentige Sicherheit über die Entfernung des Rootkits.[9] Um eine Infizierung des BIOS im Voraus zu verhindern, sollte das BIOS hardwareseitig mit einem Schreibschutz versehen werden, z. B. durch einen Jumper auf der Hauptplatine.
Jedoch gibt es für viele Rootkits von offiziellen Herstellern (z. B. das Sony Rootkit) Programme zur Erkennung und Entfernung.