AA_warning_sxc1135737.jpg

© sxc.hu

Alarmstufe Root

Rootkits effektiv aufspüren

18.02.2009
Trojaner, Viren und Würmer muss der Linux-Anwender kaum fürchten – die weitaus gefährlicheren Rootkits jedoch um so mehr. Schützen Sie Ihre Systeme effektiv gegen die lästigen Eindringlinge.

Im Internet warten auf den ahnungslosen Surfer neben vielen interessanten Webseiten auch unzählige Schadprogramme, die mehr oder weniger destruktive Aktivitäten entfalten, gelangen sie erst einmal auf den Rechner. Während sich andere Betriebssysteme aufgrund ihrer wenig durchdachten Grundkonzeption anfällig für Viren, Würmer und Trojaner zeigen, genießt der Linux-Nutzer gegenüber diesen lästigen Plagegeistern weitgehend Immunität.

Eine besonders hinterhältige und schwer zu lokalisierende Gefahr stellen jedoch so genannte Rootkits dar, die ursprünglich sogar aus der Unix-Welt stammen und die auch Linux attackieren. Sie umfassen in aller Regel eine Programmsammlung, die sie auf dem gekaperten Rechner installieren. Diese Tools dienen dazu, die Kontrolle über den angegriffenen Rechner zu übernehmen und die Aktivitäten des Eindringlings zu verbergen ("stealth").

Die Infektion durch ein Rootkit verläuft grob umschrieben in drei Stufen: Zunächst gelangt ein so genannter Dropper auf das System – und zwar durch dem Anwender selbst. Solche Dropper verstecken sich oft in E-Mail-Anhängen, wie etwa in vermeintlich harmlosen PDF-Dateien. Erhält der Anwender eine solche Mail und klickt auf den entsprechenden Link oder Anhang, so wird der Dropper aktiv, zieht im zweiten Schritt einen Loader nach und entfernt sich dann zur Spurenbeseitigung selbst. Der Loader aktiviert in Stufe Drei schließlich das eigentliche Rootkit, indem er unter Ausnutzen bekannter Schwachstellen im System (beispielsweise Pufferüberläufe) die Schadsoftware installiert.

Anatomie

Die Schadprogramme verschleiern ihre Existenz durch das Verstecken von Prozessen und Dateien. Der Eindringling installiert zudem meist eine Hintertür ("Backdoor"), die es seinem Erzeuger ermöglicht, jederzeit heimlich die Kontrolle über den kompromittierten Rechner zu übernehmen. Das geschieht üblicherweise mithilfe eines modifizierten Login-Prozesses, bei dem der Angreifer das System so manipuliert hat, dass er sich ohne Passwort anwählen kann und keine Spuren in den Log-Dateien hinterlässt.

Vom kontrollierten Rechner aus lassen sich sodann weiter Schadprogramme ausführen, beispielsweise Angriffe auf Server im Internet. Gelingt es einem Eindringling, viele Rechner mit dem Rootkit zu infizieren, ermöglicht das verteilte Angriffe, die durchaus einen schwächeren oder schlecht konfigurierten Webserver in die Knie zwingen können (DDoS – Distributed Denial of Service). Aber auch das gezielte "Abfischen" von Passwörtern und anderen sensiblen Daten sowie deren Übertragung an einen speziell präparierten Server belegen eindrucksvoll die Gefährlichkeit dieser weitgehend unbekannten Schädlinge.

Eine neue, bislang noch nicht aktiv in Erscheinung getretene Form von Rootkits stellen außerdem die Firmware-Rootkits dar. Sie nutzen den Umstand, dass sich bei modernen Rechnersystemen die Firmware vieler Komponenten modifizieren lässt ("flashen"). So ist es gang und gäbe, das BIOS eines Rechners mit Flash-Updates auf dem jeweils aktuellen Stand zu halten. Aber auch WLAN- und Grafikkarten, Festplatten, Embedded Controller oder optische Laufwerke beinhalten solche zu modifizierenden Bausteine. Befällt ein Rootkit das BIOS eines Rechners, kann es sogar den Microcode des Hauptprozessors manipulieren, sodass CPU-Befehle nicht mehr erwartungsgemäß funktionieren.

Rootkits – Was ist zu beachten?

Arbeitet Ihr Rechner plötzlich ohne ersichtlichen Grund extrem langsam? Das kann ein Hinweis auf ein aktives Kernel-Rootkit sein. Wenn Sie zudem bemerken, dass die Durchsatzraten im Internet unmotiviert deutlich nachlassen, bedeutet das möglicherweise, dass ein Rootkit den Rechner gerade als Spam-Relay oder für eine DDoS-Attacke missbraucht. In einem solchen Fall sollten Sie umgehend mithilfe eines Tools wie Wireshark [6] den Datenverkehr überprüfen. Ergeben sich dabei Verdachtsmomente, nehmen Sie außerdem einen Portscan von außen vor und vergleichen diesen mit den Ergebnissen eines lokalen Portscans mittel Unhide.

Durch den Einsatz der hier vorgestellten Rootkit-Scanner lassen sich die unerwünschten Schadprogramme zuverlässig lokalisieren. In einem solchen Fall sollten Sie das System von einer "sauberen" Installationsquelle (beispielsweise einer Backup-DVD) komplett neu aufsetzen.

Besondere Vorsicht ist bei Rechnern geboten, die hardwareseitige Virtualisierung unterstützen: Hier kann sich ein Rootkit sich ähnlich wie der Hypervisor gängiger Virtualisierungssoftware als "virtuelle Maschine" in das System einklinken und die Kontrolle übernehmen. Auch in diesem Fall resultiert daraus eine deutliche Reduzierung der Arbeitsgeschwindigkeit. Vor allem fällt ein solcher Befall mit Schadsoftware durch exorbitant lange Bootzeiten auf und – da meistens Manipulationen des CPU-Microcode stattfinden – durch unerklärliche Systemabstürze. Abhilfe schafft nur eine komplette Neuinstallation von einem Rootkit-freien Medium.

Last but not least sollten Sie im BIOS Ihres Rechners eventuell vorhandene Optionen deaktivieren, die das Flashen des System-BIOS ohne Sicherheitsabfrage erlauben. Auch die alten Regeln, dass man Software nur aus bekannten und sicheren Quellen auf den heimischen Rechner laden und E-Mail-Anhänge von unbekannten Absendern grundsätzlich nicht öffnen sollte, tragen bei konsequenter Anwendung erheblich zur Gesundheit des heimischen Systems bei.

Das Arsenal

Für Microsoft-Betriebssysteme kursieren aufgrund ihrer Popularität und ihrer unsicheren Architektur eine Vielzahl von Rootkits offen im Internet, neue tauchen ständig auf. Unter Linux sind primär die Kernel-Rootkits von Bedeutung: Bei diesen versucht die Schadsoftware, durch das heimliche Nachladen von Kernelmodulen die Funktionen des Betriebssystems zu manipulieren.

Gegen diese perfiden Programme gibt es jedoch unter nachhaltigen Schutz: Mit Rkhunter [1] existiert ein freier Scanner, der Rootkit-Infektionen zuverlässig aufspürt. Dazu bedient er sich verschiedener Methoden, um ein möglichst breites Spektrum an Angriffsvektoren abzudecken: So durchsucht Rkhunter das lokale System nach bekannten, von Rootkits genutzten Dateien und Verzeichnissen. Zusätzlich wird die Festplatte nach versteckten Dateien durchkämmt sowie nach falschen Berechtigungen bei Binärdateien. Um der Kommunikation vorhandener Rootkits mit Servern im Internet auf die Schliche zu kommen, hört der Scanner zudem statische Ports, auf denen üblicherweise auch Rootkits lauschen, nach eingehenden Verbindungen ab. Als weitere Erkennungsmethode nutzt Rkhunter eigene Datenbanken, um durch MD5-Fingerprint-Vergleiche Manipulationen aufzudecken. Durch Dictionary-Scans durchsucht er außerdem Dateien nach verdächtigen Zeichenketten.

Ein weiteres nützliches Helferlein ist das Programm Chkrootkit [2], das ebenfalls unter der GPL steht. Chkrootkit bedient sich einer Tabelle mit bekannten Rootkits, um das lokale System auf diese hin abzuklopfen. Der Vorteil von Chkrootkit gegenüber Rkhunter liegt dabei auf der Hand: Während Rkhunter bei der Installation ein nicht infiziertes System voraussetzt, um die entsprechenden MD5-Fingerprints anlegen zu können, lässt sich Chkrootkit auch auf ein bereits kompromittiertes System ansetzen. Um die Liste der erkannten Rootkits stets aktuell zu halten, kommt man jedoch nicht umhin, stets die neueste Version von Chkrootkit zu installieren.

Als drittes Hilfsprogramm eignet sich das forensische Tool Unhide [3] als Ergänzung zu Rkhunter. Es dient dazu, versteckte Prozesse sichtbar zu machen. Rootkits verschleiern ihre Existenz oft durch das Verstecken von Prozessen, sodass ein einfacher Aufruf der Prozessliste mithilfe des Befehl ps zu keinem Ergebnis führt. Durch den Abgleich des /proc-Verzeichnisses mit der Befehlsausgabe von /bin/ps erhärten sich jedoch unter Umständen bereits Verdachtsmomente. Unhide vergleicht zusätzlich noch die /bin/ps-Ausgabe mit Systemaufrufen: Treten hier Ungereimtheiten auf, lässt sich das als Indiz für das Bestehen eines Rootkits werten.

Zudem kann Unhide – sofern ein Kernel der 2.6er-Reihe das Linux-System antreibt – mithilfe einer Brute-Force-Attacke versteckte Prozesse sichtbar machen. Hierbei belegt es nacheinander alle Prozess-IDs. Treten dabei Probleme auf, weil eine Prozess-ID bereits versteckt vergeben ist, so kann dies ebenfalls als Indiz für die Existenz eines Rootkits angesehen werden. In der Variante Unhide-tcp macht die Software außerdem alle UDP- und TCP-Ports des lokalen Systems sichtbar, auf denen ein Prozess lauscht, die aber nicht vom Linux-internen Befehl netstat aufgelistet werden.

Rkhunter & Co. installieren

Alle drei aufgeführten Programme befinden sich bei Debian-basierten Distributionen bereits in den Repositories und lassen sich bequem unter Auflösung aller Abhängigkeiten über den Paketmanager installieren. Versionen für RPM-basierte Distributionen finden sich unter [4], für Slackware unter [5]. Werden Sie dort nicht fündig, laden Sie den Quellcode der Programme von den jeweiligen Projektseiten ([1],[2],[3]) herunterladen und übersetzen ihn selbst.

Freunde grafischer Oberflächen kommen jedoch nach erfolgreicher Installation bei allen drei Programmen nicht zum Zug: Die Applikationen arbeiten rein textbasiert im Terminal. Somit lassen sich auch die umfangreichen Hilfetexte mit Erläuterung der zahlreichen Programmoptionen ausschließlich auf der Kommandozeile mit dem Befehl man Programm lesen. Starter in den Menüs der verschiedenen Desktops sucht man ebenfalls vergebens.

Scanner in Aktion

Die beiden Rootkit-Scanner Chkrootkit und Rkhunter benötigen für ihre Arbeit zwingend administrative Rechte, ein normaler Benutzer darf sie nicht starten. Chkrootkit aktivieren Sie durch den Aufruf chkrootkit. Die Manpage des Programms verweist auf erfreulich wenige Startparameter, die Software arbeitet beim Start zügig ihre Tabelle bekannter Rootkits, Befehle und Dämonen ab (Abbildung 1).

Abbildung 1: Schnell und effizient durchsucht Chkrootkit das System nach blinden Passagieren.

Im Falle von Alarmmeldungen ziehen Sie am besten zunächst die Datei README.FALSE-POSITIVES im Verzeichnis /usr/share/doc/chkrootkit zu Rat: Aufgrund der komplexen Wirkungsweise von Rootkits kann es nämlich vorkommen, dass der Scanner versehentlich Fehlalarm auslöst. Das passiert besonders gern bei versteckten Dateien, falls sich Überschneidungen in der Nomenklatur mit harmlosen Programmdateien ergeben.

Im Zweifelsfall sollten Sie eine Gegenprobe mit Rkhunter machen. Den einfachsten und zugleich umfassendsten Prüflauf erzielen Sie mit dem Befehl rkhunter -c: Dabei überprüft der Scanner das gesamte System interaktiv, wobei Sie regelmäßig durch Drücken der Eingabetaste die Prüfung fortsetzen müssen (Abbildung 2). Auch hier kann es zu Fehlalarmen kommen. Warnungen prüfen Sie schnell und effizient, indem Sie die Protokolldatei rkhunter.log im Verzeichnis /var/log (Abbildung 3) näher in Augenschein nehmen.

Abbildung 2: Hier besteht laut Rkhunter Erklärungsbedarf.
Abbildung 3: Über die Protokolldatei rkhunter.log lassen sich Warnungen schnell prüfen.

Nach Abschluss der Tests mit Chkrootkit und Rkhunter empfiehlt sich im Bedarfsfall noch der Einsatz von Unhide, um Sicherheit über versteckte Prozesse und verschleierte Netzwerkverbindungen in Gestalt offener Ports zu erhalten. Dazu rufen Sie Unhide im Terminal mit einer der Optionen proc, sys oder brute auf. Findet Unhide dabei Unstimmigkeiten, so empfiehlt sich zunächst ein Blick in das Unterverzeichnis /usr/share/doc/unhide, wo verschiedene Dateien auf problematische Fehlalarme hinweisen. Ansonsten verrichtet Unhide seine Arbeit völlig unspektakulär.

Vollautomatik

Um die auf Dauer lästigen manuellen Tests nicht ständig händisch aufrufen zu müssen, haben die Programmierer der beiden Rootkit-Scanner bereits kleine Shellskripte geschrieben, die Sie als täglich auszuführende Cron-Jobs einbinden können. Dabei kommt Rkhunter in einem nicht interaktiven Modus zum Einsatz, der die Ausgabe auf Warnungen beschränkt, um die Meldungen übersichtlich zu halten. Die entsprechenden Mitteilungen finden sich nach einem Durchlauf in der Datei /var/log/rkhunter.log, Sie können sie sich aber auch per E-Mail zustellen lassen.

Bei Chkrootkit blockiert ein Fehler in der Konfigurationsdatei den automatischer Prüflauf, der erst nach einer kleinen Modifikation gelingt: In der Datei /etc/chkrootkit.conf ändern Sie die erste Zeile RUN_DAILY="false" in RUN_DAILY="true". Nach dieser Anpassung verrichtet auch Chkrootkit seine Arbeit still im Hintergrund, ohne die Systemperformance merklich zu beeinträchtigen.

Fazit

Mit Chkrootkit, Rkhunter und Unhide verfügt Linux über ordentliche Helferlein, um den weithin unbekannten Plagegeistern der Rootkits effektiv beizukommen. Die drei Programme decken – jedes mit einem anderen Schwerpunkt – die vielfältigen Wirkungsweisen der gängigen Rootkits nahezu vollständig ab und minimieren durch die Möglichkeit des Gegentestens auch versehentliche Fehlalarme. Das automatische Einbinden in das System als Cronjob lässt selbst hartgesottenen Terminalhassern keine Ausrede mehr, die Software nicht auf dem lokalen Rechner einzusetzen.

Der Sicherheitsgewinn ist beträchtlich, wenn man sich vor Augen führt, dass Rootkits vor einigen Jahren unter Linux noch eine ernsthafte Bedrohung darstellten. Mittlerweile haben sich die Entwickler dieser perfiden Schadsoftware jedoch – wie auch bereits im Fall von Würmern, Trojanern und Viren – eine andere, wesentlich leichter zu kompromittierende Plattform ausgesucht, so dass neue Rootkits unter Linux zu einer Seltenheit geworden sind.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare