Rootkits finden

Wurzelbehandlung

Zu den wohl widerlichsten Schadprogrammen zählen die so genannten Rootkits. Diese Abkömmlinge der trojanischen Pferde versuchen sich mit aller Macht vor den Augen der Administratoren zu verstecken. Ihnen den Garaus zu machen ist folglich alles andere als trivial.

Stellen Sie sich vor, jemand würde unbemerkt in Ihr Linux-System eindringen und das »login« -Programm gegen eine eigene Variante austauschen. Diese protokolliert ab sofort jeden Anmeldevorgang und verschickt die gesammelten Daten durch ein selbstgebohrtes Loch in der Firewall an einen Server irgendwo auf der Welt. Als netten Gimmick bietet das neue »login« noch eine kleine Backdoor, die Kriminellen einen Zugang mit Root-Rechten öffnet. Niemand würde »login« verdächtigen, ein aufmerksamer Administrator höchstens über seine angewachsene Dateigröße stolpern.

Aber auch dagegen kennt die Internetkriminalität ein Mittelchen: Zusätzlich zum modifizierten »login« schmuggeln die Angreifer noch ein geändertes »ls« -Programm ein. Dieses lügt beim Aufruf, dass sich die Balken biegen. Und wo man schon gerade dabei ist, tauscht man noch weitere Systemprogramme aus. Damit bleibt der Abgriff, die Lochbohrung in die Brandmauer und der Versand der Daten für immer verschleiert. Selbst Virenprogramme sind machtlos, da auch sie sich von den geänderten Werkzeugen täuschen lassen.

Wurzel-Baukasten

Dies alles ist keine Fiktion, sondern bittere Realität. Immer mehr Trojaner setzten auf derartig fiese Tarnmethoden. Da sie das gesamte System unter ihre Kontrolle bringen, bezeichnet man die entstehenden Programme oder Programmsammlungen als Rootkits. Die Grenze zwischen herkömmlicher Schadsoftware und Rootkits ist dabei fließend. So gelangen sie auf den alt bekannten Wegen über Bugs oder Sicherheitslücken auf das System und bringen dieses in ihre Gewalt. Erst jedoch ihre heimtückische Tarnung erlaubt es Einbrechern unerkannt auf einem Computer zu agieren, ohne dabei von den daran arbeiten Personen gestört oder gar entdeckt zu werden. Um das zu erreichen, untergräbt ein Rootkit die Betriebssystemfunktionen oder weicht diesen sogar aus.

Komponenten eines Rootkits

Ein typisches Rootkit besteht in der Regel aus mehreren Komponenten, die unterschiedliche Aufgaben erfüllen:

  • Ein Trojaner schleust das Rootkit ein und verankert es im System.
  • Ein Sniffer analysiert den Netzwerkverkehr und fischt beispielsweise Zugangsdaten heraus.
  • Teilweise protokollieren Keylogger noch sämtliche Tastenanschläge und greifen auf diese Weise Passwörter oder PINs ab, noch bevor das System sie verschlüsseln könnte.
  • Über eine Backdoor erhält der Angreifer schließlich Zutritt zum System.
  • Die Tarnung aller Tätigkeiten übernehmen zum einen ausgetauschte Systemdateien und in aktuellen Rootkits auch umgeleitete API-Aufrufe.
  • Weitere Komponenten führen dann den Computer seiner eigentlichen Bestimmung zu. Beispielsweise versenden sie Spam-Mails oder führen gemeinsam mit anderen Zombie-Computern eine Denial of Service-Attacke aus.

In den Anfängen ersetzten Rootkits lediglich die bekannten Systemwerkzeuge, wie »ls« , »passwd« oder »ps« . Diese so genannten Application-Rootkits waren noch relativ einfach zu enttarnen. Deshalb gingen die Programmierer recht schnell auf den Kernel los: Gelingt es dort schadhaften Code einzuschleusen, kann dieser jede Anfrage einer Software abfangen und passend umleiten. Damit spart man gleichzeitig noch die umständliche Modifikation vieler kleiner Systemprogramme.

Solche, im Kontext des Kernels laufende Rootkits sind besonders schwer zu entdecken. Unter Linux erreichen sie meist durch ein modifiziertes Kernel-Modul ihren Bestimmungsort, weshalb man sie als LKM-Rootkits (für Loadable Kernel Module) bezeichnet. Da es jedoch relativ schwierig ist, dem Administrator ein solches Modul unterzujubeln, versuchen die Entwickler von Rootkits noch andere Wege, um in den Kernel zu gelangen. Eine Möglichkeit besteht darin, direkt den Speicher über »/dev/kmem« zu ihren Gunsten zu manipulieren.

Einen anderen Ansatz verwenden so genannte Firmware-Rootkits. Sie nisten sich in der Firmware des PCs ein und überleben sogar Neustarts. So existieren mittlerweile Rootkits, die sich in den ACPI-Firmware-Routinen wie zuhause fühlen. Ein vermeintlich sauberes Rettungsmedium nützt in diesem Falle wenig.

In eine ähnliche Kerbe schlägt der neueste Trend in Form von virtualisierten Rootkits. Diese Schadsoftware arbeitet wie eine virtuelle Maschine: Im ersten Schritt verändert das Rootkit den Bootvorgang so, dass es noch vor dem Betriebssystem startet. Letzteres fährt es erst danach in einer virtuellen Maschine hoch. Das Rootkit besitzt damit die vollständige Kontrolle über den Computer, ohne dass das Betriebssystem oder seine Nutzer jemals etwas davon mitbekommen. Bekannt wurde dieses Vorgehen vor allem durch Blue Pill [1] , die Aufspürung solcher Rootkits bezeichnet man deshalb auch als Blue Pill Detection. Mehr darüber verrät der Artikel zu Virtualisierungs-Security in diesem Heft.

Trüffelschweine

Aufgrund der Tarnung ist eine Erkennung von Rootkits extrem schwierig. Solange sie noch nicht installiert wurden, spüren Antiviren-Software und so genannte Rootkit-Scanner (auch Rootkit-Detektoren) die Schadprogramme anhand von Signaturen oder mittels Heuristiken recht zuverlässig auf.

Wurde ein laufendes System infiziert, muss ihm in jeder Hinsicht misstraut werden: Sowohl Systemprogramme, als auch aufgerufene Systemfunktionen liefern falsche oder irreführende Ergebnisse. Ein einmal gestartetes Rootkit unternimmt alles Mögliche, um nicht erkannt zu werden – und sitzt auch noch dank seiner Root-Rechte am längeren Hebel. Vermutlich ist es einfacher, einen gefälschten Rembrandt zu entlarven. Die Hersteller von Rootkit-Scannern können somit nur darauf hoffen, dass die Programmierer des Schadprogramms ihrerseits nicht aufgepasst haben und die Tarnung irgendwo Lücken aufweist.

Zusätzlich kann ein Scanner auf verdächtige und für Rootkits typische Aktionen oder Änderungen im System achten. Darunter fallen beispielsweise geänderte Zugriffsrechte bei Systemdateien, fehlende Logfiles oder Logfile-Einträge, eigentlich nicht notwendige, aber doch geladene Kernel-Module, gelöschte, aber immer noch geöffnete Dateien, offene Ports oder ein aktivierter Promiscous Mode.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023