Windows Rootkits 2005, Teil 1
Schadsoftware wurde 2005 deutlich raffinierter. Das zeigt vor allem der Einsatz von Windows-Rootkit-Techniken in Viren, WĂĽrmern, Spy- und Adware. Deshalb wird es immer wichtiger, diese Gefahr zu verstehen und zu wissen, wie man ihr begegnen kann.
- James Butler
- Sherri Sparks
Dieser Artikel erschien ursprünglich auf SecurityFocus in Englisch. Wir veröffentlichen die deutsche Übersetzung mit freundlicher Genehmigung der Redaktion und der Autoren.
Der erste Artikel dieses Dreiteilers erklärt, was Rootkits sind und was sie so gefährlich macht. Wir betrachten verschiedene Arten, den Code zur Ausführung zu bringen und wie dieser dann mit dem Kernel interagiert: indem man Tabelleneinträge verbiegt (Table Hooking), Filter-Treiber installiert oder direkt Kernel-Objekte manipuliert. Der zweite Teil wird sich mit der neuesten Windows-Rootkit-Technik beschäftigen, die Zugriffe auf virtuellen Speicher kontrolliert und damit sehr verdeckt arbeitet. Der dritte und letzte Artikel diskutiert dann verschiedene Methoden, Rootkits aufzuspüren und sich davor zu schützen.
Definition
Ein Rootkit ist ein Programm oder ein Paket von Programmen, das ein Einbrecher benutzt, um seine Anwesenheit auf einem Computer zu verbergen, und das ihm auch zukünftig Zugriff auf das System gewährt. Dazu ändert das Rootkit interne Abläufe des Betriebssystems oder es manipuliert Datenstrukturen, auf die sich das Betriebssystem beim Verwalten und Überprüfen verlässt.
Ein Rootkit ist kein Exploit sondern das, was ein Angreifer einsetzt, nachdem er eine Schwachstelle mit einem Exploit ausgenutzt hat. Es ist daher in vieler Hinsicht interessanter als ein Exploit, selbst als ein sogenannter Zero-Day-Exploit, der erscheint, bevor ein Patch verfügbar ist. Die meisten Anwender haben widerstrebend die Tatsache akzeptiert, dass kontinuierlich weitere Sicherheitslücken in Computersystemen entdeckt werden. Während ein Zero-Day-Exploit nur eine Kugel ist, kann ein Rootkit viel über den Angreifer verraten – zum Beispiel warum er damit geschossen hat. Indem wir analysieren, was ein Rootkit macht, können wir erforschen, was der Angreifer stehlen will, mit wem er kommuniziert und wie raffiniert er dabei vorgeht. Doch bevor wir uns mit dem "warum" beschäftigen, ist das "wie" an der Reihe.
Privilegien
Beim Design von Windows wurden Aspekte wie Sicherheit und Stabilität berücksichtigt. Der Kern muss vor Anwenderprogrammen geschützt sein, aber diese Anwenderprogramme benötigen bestimmte Funktionen des Kernels. Um das zu gewährleisten, implementiert Windows zwei Modi, in denen Code ausgeführt werden kann: den User-Mode und den Kernel-Mode. Windows kennt nur diese zwei, obwohl Intel- und AMD-CPUs eigentlich vier Privilegienstufen oder Ringe unterstützen, um Systemcode und -daten davor zu schützen, dass Code einer niedrigeren Stufe sie absichtlich oder versehentlich überschreibt.
Applikationen laufen im User-Mode und User-Mode-Prozesse sind unprivilegiert. Der Kernel-Mode bezeichnet einen Ausführungsmodus, in dem der Prozessor Zugriff auf den gesamten Systemspeicher und alle Prozessorbefehle gewährt. Systemdienste aus der System Service Descriptor Table (SSDT) laufen beispielsweise im Kernel-Mode. Auch Gerätetreiber von Drittherstellern laufen im Kernel-Mode, weil sie auf Low-Level-Kernel-Funktionen und -Strukturen zugreifen und in vielen Fällen direkt mit Hardware kommunizieren müssen.
Windows legt zwar fest, welche Privilegien erforderlich sind, um auf Speicherseiten zuzugreifen, aber es schĂĽtzt Kernel-Speicher nicht vor anderen Threads, die im Kernel-Mode laufen.
Bei der Betrachtung von Windows-Rootkits fällt schnell auf, dass sie sich entsprechend den Privileg-Stufen in zwei Kategorien einteilen lassen: User-Mode und Kernel-Mode. User-Mode-Rootkits laufen als separate Applikation oder innerhalb einer existierenden Applikation. Ein Kernel-Mode-Rootkit hat alle Befugnisse des Betriebssystems und korrumpiert damit das gesamte System.