AA_detekt.jpg

© Andrey Frolov, 123RF

Zwei Detektive

Chkrootkit und Rkhunter

Am besten bekämpfen Sie Schädlinge, indem Sie diese vom System fernhalten. Aber auch wenn Sie umfassende Sicherheitsmaßnahmen ergreifen, ergibt es Sinn, das System gelegentlich nach Rootkits zu durchforsten.

Auch wenn Linux – verglichen mit anderen Systemen – recht wenige Sicherheitsprobleme aufweist, ist es nicht komplett frei von Bedrohungen. Der einzige Vorteil, den es genießt, besteht darin, dass die Chancen, das System zu kompromittieren, ziemlich niedrig stehen – vorausgesetzt der Anwender ignoriert die Bedrohungen nicht komplett.

Von allen Bedrohungen sind Rootkits vermutlich die gefährlichsten. Ein Rootkit versammelt verschiedene Programme, die es einem Angreifer erlauben, einen administrativen Zugang zum System zu erlangen. Zugleich verschleiert er das Eindringen vor dem Blick des Administrators.

Ist das System erst einmal kompromittiert, kann der Angreifer eine DDoS-Attacke starten und oder den Angriff auf andere Rechner im Netzwerk wiederholen. Mit einem administrativen Zugang erhält der Angreifer zugleich Zugriff auf sämtliche Daten und alle Geräte, die am System hängen. Da Rootkits ihre Existenz verschleiern, sind sie zudem ohne spezialisierte Tools nur schwer zu entdecken.

Wie Rootkits ticken

Die meisten Rootkits ersetzen reguläre Werkzeuge zur Systemverwaltung mit veränderten Versionen, um ihre Anwesenheit zu verschleiern. Beispielsweise ersetzt ein Rootkit den netstat-Befehl (der Netzwerkverbindungen anzeigt) durch eine veränderte Variante, die bewusst alle Verbindungen des Eindringlings nicht anzeigt. Schaut der legitime Nutzer also mit netstat nach ungewöhnlichen Verbindungen, erscheint der Einbruch nicht in der Ausgabe (Abbildung 1) . Gefälschte find-Versionen machen es zugleich unmöglich, Dateien zu finden, die mit dem Angriff zusammenhängen. Rootkits, die ihre Spuren mithilfe veränderter Anwendungen und Verwaltungstools verwischen, heißen Userland-Rootkits.

Obwohl Userland-Rootkits verbreiteter sind, gelten Kernel-Rootkits als gefährlicher. Sie modifizieren den Code des Linux-Kernels, indem sie Kernel-Module ergänzen, die dann zum Teil des Betriebssystems werden. Ein Hauptgrund, warum sich Kernel-Rootkits so schwer aufspüren lassen, besteht darin, dass jede falsche Bewegung einen Systemcrash verursachen kann. Es gibt daneben noch verschiedene andere Arten von Rootkits: Firmware-Rootkits, Rootkits für virtuelle Maschinen sowie Hybrid-Rootkits, die Eigenschaften von Kernel- und Userspace-Rootkits vereinen. Diese Varianten agieren ähnlich, der Hauptunterschied besteht in der Form ihrer Verschleierungstaktiken.

Rootkits vermeiden

Der einfachste Weg, um Schaden abzuwenden, besteht darin, Rootkits daran zu hindern, auf Ihr System zu gelangen. Das beginnt damit, sicherheitsbewusst zu handeln, was z.B. bedeutet, Software-Patches sofort zu installieren, VPNs zu benutzen und eine Firewall einzusetzen. Diese Maßnahmen schaffen ein ziemlich sicheres System, das Ihnen dabei hilft, Rootkits, aber auch andere Formen von Sicherheitsbedrohungen abzuwehren. Die folgenden Schritte gelten als gute Sicherheitsmaßnahmen:

  • Installieren und aktivieren Sie auf jedem System eine Firewall (Abbildung 2).
  • Halten Sie Ihr System aktuell.
  • Untersuchen Sie jedes System regelmäßig auf ungewöhnliche Dienste .
  • Behalten Sie die Log-Dateien für Systemzugriffe im Auge.
  • Schränken Sie den Zugriff auf systemkritische Dateien ein und machen Sie diese unlöschbar (siehe Kasten Dateiattribute und Immutable-Flags).

Auch wenn Sie all diese Sicherheitsmaßnahmen beachten, kann Ihr System kompromittiert werden, wenn Sie nicht sorgfältig darauf achten, nur vertrauenswürdigen Links zu folgen.

Sicherheitssysteme, wie sie SELinux und AppArmor zur Verfügung stellen, bieten ein zusätzliches Maß an Sicherheit, indem sie die Zugriffsprivilegien feiner streuen. Dank dieser Werkzeuge haben Eindringlinge, die eine administrative Kontrolle über bestimmte Dienste oder Verzeichnisse erlangen, dennoch keine unbegrenzte Kontrolle über das System.

Dateiattribute und Immutable-Flags

Es ist die Aufgabe des Administrators, wichtige Systemdateien vor Veränderungen zu schützen. Die Datei /etc/passwd enthält zum Beispiel Passwörter für sämtliche Benutzer eines Systems. Standardmäßig darf nur der administrative Benutzer diese Datei verändern. Es gibt viele solcher Dateien, meist liegen sie im Verzeichnis /etc. Sie sollten sicherstellen, dass alle diese Dateien über die korrekten Attribute zum Lesen, Schreiben und Ausführen verfügen. Um den Zugang zu einer Datei mit Hilfe ihrer Attribute einzuschränken, geben Sie mit administrativen Rechten folgende Befehle in ein Terminal ein:

sudo chown $(id -un):$(id -gn) /pfad/zur/datei
sudo chmod 700 /pfad/zur/datei

Angenommen, Sie sind der Benutzer mit administrativen Rechten und momentan angemeldet, macht der erste Befehl Sie zum Besitzer der Datei. Das zweite Kommando sorgt dafür, dass nur der Eigentümer Zugriff auf die Datei hat. Über die Eingaben von man chmod, man chown und man id erfahren Sie mehr über die verwendeten Befehle (Abbildung 3). Bevorzugen Sie die Man-Pages auf deutsch, installieren Sie das Paket manpages-de.

Im nächsten Schritt machen Sie wichtige Dateien unlöschbar, was bedeutet, dass niemand sie aus Versehen oder mutwillig löschen oder bearbeiten kann.

sudo chattr +i /pfad/zur/datei
# Immutable-Flag setzen
sudo chattr -i /pfad/zur/datei
# Immutable-Flag entfernen

Um zu sehen, welche Flags eine Datei verwendet, benutzen Sie das folgende Kommando (Abbildung 4):

lsattr /pfad/zur/datei

Ganz offensichtlich kann ein Angreifer mit administrativen Rechten das Immutable-Flag entfernen und lässt sich auch durch geänderte Dateirechte nicht beeindrucken. Allerdings finden die meisten Angriffe zunächst über einen Benutzerzugang statt, der über weniger Privilegien verfügt. Indem Sie Dateien mit kritischen Systeminformationen absperren, verhindern Sie ernstere Folgen.

Es sollte klar werden, dass diese Sicherheitsmaßnahmen nur der erste Schritt zum Absichern Ihres Systems sind und in keiner Weise vollständig. Netzwerkadministratoren müssen Systeme einrichten, um Einbrüche zu entdecken und zu verhindern, Cron-Jobs aufsetzen, um regelmäßig die Systemsicherheit zu testen und auszuwerten sowie Backups vornehmen.

Rootkits entdecken und beobachten

Trotz aller notwendigen Vorsichtsmaßnahmen können Sie sich dennoch ein Rootkit einfangen. Aber wie entdecken Sie etwas, dass sich als harmloser und unschuldiger Prozess tarnt? Die meisten Suchwerkzeuge benutzen die folgenden Methoden:

  • Signature-basierte Erkennung: Jedes Rootkit – versteckt oder nicht – bringt eine einmalige Signatur mit. Erkennungswerkzeuge spüren Rootkits auf, indem sie nach der Signatur suchen. Das Problem mit der Methode besteht darin, das sie nur bekannte Rootkits findet, weil die Signaturen neuer Rootkits unbekannt sind.
  • Heuristische Erkennung: Das System prüft Anomalien. Merkwürdige Netzwerkgeschwindigkeiten, fehlerhafte Versuche beim Lesen von Dateien, ungewöhnliche Nutzungen des Festplattenplatzes gehören zu den vielen Faktoren, welche die heuristische Erkennung untersucht.
  • Schnappschuss-basierte Erkennung: Die beste Erkennung mit der niedrigsten Fehlerrate. Das komplette System (ganz oder in Teilen) wird überprüft und ein Schnappschuss aufgenommen – häufig in verschlüsselter Form. Später wird der Zustand dieses Schnappschusses mit dem aktuellen Zustand verglichen, um Veränderungen zu finden, die auf ein Rootkit hinweisen. Tripwire [1] ist ein bekanntes Tools, das diese Methode verwendet.

Setzen Sie auf eine Schnappschuss-basierte Erkennung, müssen Sie regelmäßig Schnappschüsse des Systems aufnehmen. Heuristische und Signatur-basierte Erkennungen übersehen unbekannte Rootkits jedoch womöglich. All das zeigt nur, dass Prävention die beste Verteidigung ist. Wie bei jeder Erkennungsmethode besteht ein weiteres Problem dieser Werkzeuge darin, dass sie falsche Positive erzeugen. Sie sehen Rootkits, wo gar keine sind. Die zunehmende Komplexität von Angriffen auf Netzwerke bedeutet auch, dass sich falsche Positive häufen und Sie diese mit besonderer Aufmerksamkeit behandeln sollten.

Die beiden populärsten Signatur-basierten Werkzeuge zum Erkennen von Rootkits sind Chkrootkit [2] und Rootkit Hunter (Rkhunter) [3]. Auch wenn diese Tools vorwiegend eine Signatur-basierte Erkennung nutzen, beherrschen sie auch einige heuristische Methoden. Der folgende Abschnitt hilft Ihnen dabei, mit Chkrootkit und Rootkit Hunter nach Rootkits zu suchen.

Einem Freund empfehlen