Aus Linux-Magazin 06/2006

Rootkits für den Linux-Kernel 2.6

Sie gelten als höchste Hackertechnik, dennoch sind Rootkits einfach und schnell zu implementieren. Moderne Vertreter unterwandern das angegriffene System auf Kernel-Ebene und entziehen sich den meisten Suchaktionen der Admins. Ein praktisches Beispiel zeigt, wie viel Kontrolle das Kit erlangt.

Nach dem Einbruch in fremde Computer wollen Angreifer ihr neu gewonnenes Terrain sichern. Kein neugieriger Nutzer und schon gar kein Administrator soll bemerken, dass sich sein treuer Rechenknecht fremden Befehlen unterwirft. Für ihre Tarnung vertrauen Eindringlinge gern auf vorgefertigte Tools. Diese so genannten Rootkits [11] verstecken verräterische Prozesse, Netzwerkverbindungen und Dateien vor den Blicken der Admins und sorgen meist dafür, dass der Angreifer jederzeit zurückkehren kann (Backdoor).

Früher war es in Cracker-Kreisen üblich, für ihre Rootkits die bereits installierten Programme zu modifizieren. Ein sabotiertes »netstat« würde die Verbindungen seines Meisters verschweigen oder »ps« seine heimtückischen Prozesse geheim halten. Da es eine ganze Reihe von Programmen auszutauschen gilt, entstanden früh spezielle Userland-Rootkits. Sie bringen eine Menge modifizierter Programme mit und lassen sich schnell vom Angreifer installieren. In den meisten Rootkits finden sich zudem Backdoors und beliebte Hacker-Tools, zum Beispiel IRC-Bouncer.

Grenzen im Userland

Aus Sicht des Angreifers leiden die Userland-Rootkits unter einem gravierenden Nachteil: Ein einfacher Vergleich mit der MD5-Prüfsumme der Originaldatei entlarvt die Sabotage. Auch spezialisierte Suchprogramme (so genannte Rootkit-Hunter) spüren diese einfachen Tools schnell auf. Zudem beschränkt sich der Einfluss auf die veränderten Programme; nachträglich installierte Software (etwa »lsof«) oder Tools, die auf nur lesbaren Medien liegen (CD-ROM), hebelt er nicht aus. Die Tarnung durch diese Art von Rootkits bleibt beschränkt.

Viel mehr Macht über das geknackte System übt ein Rootkit aus, wenn es direkt den Kernel modifiziert. Der Kernel stellt den Prozessen alle Systemdaten bereit, die diese wiederum dem Benutzer oderAdmin präsentieren.

Dynamisch im Kernel

Seit Version 2.2 lädt Linux dynamisch Kernelmodule, um Treiber und anderen Code während der Laufzeit des Betriebssystems einzubinden. Das vorher nötige Neukompilieren des Kernels und der Reboot entfallen. Kernel-Rootkits bedienen sich üblicherweise dieser Schnittstelle, um Code direkt im Kernel auszuführen [2]. Sie entfernen Informationen, die der Angreifer versteckenden will, bevor die Daten den Userspace erreichen. Damit täuschen sie alle Programme, egal ob nachträglich installiert und gegen welche Bibliotheken gelinkt.

Bis heute ist die Tarnung gut programmierter Kernel-Rootkits nahezu perfekt. Weder normale Systemwerkzeuge noch klassische forensische Tools bemerken eine Manipulation. Die Einflussmöglichkeiten und Tarneigenschaften der Kernel-Rootkits sind ihren Userland-Vorläufern weit überlegen.

Variantenreich

Mittlerweile haben sich mehrere Techniken etabliert, um im Kernel ihr Unwesen zu treiben und damit ein Kernel-Rootkit zu implementieren:

  • Beim Syscall Table Patching tauscht das Rootkit einzelne
    Original-Systemcalls gegen modifizierte Varianten.
  • Andere Rootkits setzen gleich eine neue Systemcall-Tabelle
    ein.
  • VFS-Patching (Virtual File System, [3]) verändert Zeiger
    in den Strukturen für das Root- und das Proc-Dateisystem.
  • Ganz verwegene Tools modifizieren direkt
    Kernel-Codestrukturen.

Die Technik der Rootkits taugt nicht nur für dunkle Absichten, auch Admins profitieren davon: Sie analysieren und überwachen ihr System mit Tools wie Kstat [4] oder mit Modulen wie Saint Jude [5]. Andere Module wie Sebek [6] gleichen den Rootkits noch stärker und dienen dennoch gutartigen Zielen der Sicherheitsvorsorge (Honeynet).

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Comments
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben