Rootkit-Detection

17.02.2006
Hacker hinterlassen, einmal im System eingebrochen, häufig ein Hintertürchen, damit sie später umso leichter wieder reinkommen. Wie Sie solche „Rootkits“ auf Ihren Systemen entdecken, zeigt dieser Artikel.

Immer wieder kursieren im Internet Horrorgeschichten über Webseiten, die Hackern zum Opfer fielen. Und zum Großteil entsprechen diese Geschichten der Wahrheit. Für kriminelle Machenschaften sind inzwischen jedoch nicht mehr nur große Firmen interessant, sondern auch kleine Server und Heimanwender.

Besonders häufig erfolgen Angriffe, um so genannte Botnets zu kreieren. Unseriöse Menschen nutzen diese aus, um zum Beispiel massenhaft Spam-Mails über fremde Server zu verschicken. Oftmals merken die Anwender nicht einmal, dass sich der eigene Rechner in der Gewalt eines anderen befindet, weil die Angreifer Ihre Spuren verwischen. In diesem Artikel zeigen wir Ihnen, wie Sie Ihr System überprüfen.

In vielen Linux-Distributionen finden sich die in diesem Artikel beschriebenen Tools wieder. Falls Sie die Tools in Ihrer Distribution nicht finden oder nicht auf Ihrem Produktivsystem nachinstallieren wollen, empfehlen wir Ihnen die WHAX Live-CD - beziehungsweise die aus dem Zusammenschluss von WHAX und Auditor entstandene BackTrack Live-CD. Informationen zu diesen auf Security spezialisierten Distributionen finden Sie unter http://iwhax.net/. Zum Download des CDROM-Boot-Images gelangen Sie beispielsweise hier http://iso.linuxquestions.org/version.php?version=247.

Überprüfen der offenen Ports

Installierter Schadcode öffnet sehr häufig eine eigene Verbindung ins Internet. Dafür macht die Malware in der Regel eine eigene Tür ins Netz auf. Zunächst einmal sollte jeder Administrator selbstverständlich wissen, was auf seinen Servern läuft und welche Ports er dafür benötigt. Alle anderen Ports sollten aus Sicherheitsgründen geschlossen sein. Linux macht es einem sehr einfach, zu überprüfen, ob andere Türchen ins Internet geöffnet sind. Das Tool dafür heißt nmap und ist normalerweise in jeder Standarddistribution enthalten. Eine sehr einfache Überprüfung lässt sich mit dem Aufruf

nmap –p 1-65535 <IP-Adresse>

durchführen. Das Programm scannt nun den Server mit <IP-Adresse> auf geöffnete Ports und gibt das Ergebnis auf dem Bildschirm aus.

Ist hier nun ein nicht gewünschter Port offen, sollte der Administrator dies genauer untersuchen. Diesen Aufruf können Sie zum Beispiel in einem Cronjob verwenden und sich eine Warnung schicken lassen, sobald sich etwas an dem Status der offenen Ports ändert.

nmap kann aber viel mehr und stellt eine große Anzahl an verschiedenen Schaltern zur Auswahl. Kommandozeilenliebhaber lesen diese wie unter Linux üblich in der Manual Page des Programms nach – man nmap .

Grafisches Frontend zu nmap

Einfacher gestaltet es sich allerdings, wenn man die grafische Variante von nmap verwendet. Diese ist in WHAX bereits enthalten. Es handelt sich bei diesem Programm nicht um ein eigenes Tool, sondern im Prinzip nur um ein GUI für das Kommandozeilen-nmap. Sie finden es unter WHAX Tools – Scanners - Port Scanners – NmapFE. In diesem Interface können Sie die optionalen Schalter, wie zum Beispiel RPC Scan oder OS-Detection, per Mausklick hinzufügen. Die Betriebssystemidentifizierung ist eine nette Dreingabe. Das Tool gibt Ihnen Auskunft über das laufende Betriebssystem. Bei Linux erhalten Sie Informationen über den Kernel und bei Windows, um welche Version es sich handelt. Weiterhin verrät Ihnen die Software die Netzwerkadresse und den Hersteller der Netzwerkkarte. Durch eine Unterteilung der IP-Adressen mittels Leerzeichen können Sie sogar mehrere Rechner gleichzeitig überprüfen.

Das grafische Interface ist in fünf logische Karteikarten unterteilt. Es erleichtert das Finden der gewünschten Switches enorm. Weiterhin haben Sie die Möglichkeit, das Output-File zu speichern, bei Bedarf wieder zu öffnen und eventuell eine weitere Log-Datei an das alte anzuhängen.

In der untersten Zeile zeigt Ihnen das Tool, wie der Aufruf in einer Kommandozeile auszusehen hätte. Dies ist überaus hilfreich, wenn Sie nmap in einem Script verwenden wollen.

Der Portscanner amap

Mit amap liefert WHAX einen weiteren Portscanner. Es handelt sich dabei um ein reines Kommandozeilen-Tool. Mit diesem Tool lassen sich jedoch auf die Schnelle Services an bestimmten Ports identifizieren. Normalerweise laufen zum Beispiel http- oder smtp-Dienste auf den Ports 80 beziehungsweise 25. Das muss aber nicht immer der Fall sein. Gerade ssh wird aus Sicherheitsgründen gerne vom Standardport 22 auf einen alternativen Port gelegt. Das Programm sendet einen so genannten Protokoll-Handshake an den angegebenen Port und wartet auf eine Antwort, die es dann als Output auf dem Bildschirm anzeigt. Dabei können Sie durch Trennung mittels Leerzeichen auch mehrere Ports hintereinander angeben. Ein Aufruf sieht dann zum Beispiel so aus:

amap <IP-Adresse> 21 22 80 443 25

Dieser scannt nun die hinter der IP-Adresse angegebenen Ports und verrät Ihnen, welche Services dort laufen.

Diese Vorgehensweise ist wichtig bei der Erkennung von Rootkits oder anderem Schadcode. Sie dürfen nicht immer gleich Böses vermuten, wenn etwas vom Standard abweicht. Vernünftiger ist es, zuerst einmal nachzusehen, was sich hinter dem offenen Port befindet, um dann entsprechend zu reagieren. Weitere Funktionen und Switches zu amap erhalten Sie durch Aufruf der Manual Page des Programms – man amap.

Das Programm netstat

Haben Sie bereits einen laufenden Linux-Server und den Verdacht, dass dieser kompromittiert wurde, hilft Ihnen unter anderem das Programm netstat weiter. Dieses Tool ist in der Regel in jeder Linux-Distribution enthalten und verrät einiges über die derzeitigen Netzwerkverbindungen. Dazu gehören zum Beispiel Routing Tables, Interfaces und Listenports. Speziell letztere Ports, auf denen der Rechner horcht, sind interessant, um herauszufinden, ob der Rechner etwas macht, was er nicht soll. Mit dem Aufruf

netstat -anp | grep LISTEN

zeigt Ihnen das Programm sowohl die externen als auch die internen Socket-Verbindungen an.

netstat -r

gibt Aukunft über die Routing-Tabellen und

netstat -i

gibt Informationen über die installierten Netzwerkkarten wieder. netstat eignet sich nicht nur für die Schadcodesuche. Das Programm ist übrigens standardmäßig auch in Windows enthalten. Allerdings ist diese Windows-Version bei weitem nicht so mächtig wie ihr Linux-Pendant. Welche Schalter Sie mit dem Tool kombinieren können, zeigt Ihnen unter Linux die Manual Page man netstat und unter Windows der Aufruf netstat /?.

Rootkit-Hunter chkrootkit

Dieses Programm ist sehr einfach zu bedienen. Es reicht ein schlichter Aufruf des Befehls

chkrootkit

Das Tool scannt dann das System nach Viren und Rootkits. Die Software weist nur wenige Schalter auf, deren wichtigste wir in nachfolgender Tabelle erklären.

Schalter

Funktion

-x

Experten-Modus. Wirft sehr viele, aber unübersichtliche Informationen aus.

-r <Verzeichnis>

Das Programm scannt von diesem Verzeichnis an rekursiv. Standardmäßig prüft es vom Root-Directory aus.

-l

Listet die vorhandenen Tests auf.

-n

Überprüft keine gemounteten NFS-Verzeichnisse.

Fazit

Richtig eingesetzt, eignen sich die Linux-Tools hervorragend, um Rootkits oder kompromittierte Systeme zu erkennen. Die meisten dieser Tools befinden sich bei den Standarddistributionen bereits mit an Bord. In diese Tools hat man sich normalerweise schnell eingearbeitet und die für die Umgebung relevanten Schalter gefunden. Mit wenigen Handgriffen lassen sich diese Tools auch in automatisierten Routinen wie Scripts oder Cronjobs verwenden. Dennoch bietet dies keine hundertprozentige Sicherheit für Ihre Systeme. Am besten schützen Sie sich durch Kombinationen verschiedener Anwendungen. Machen Sie es den Hackern so schwer wie möglich und verwenden Firewall, Virenscanner, Portscanner und Rootkit-Hunter gleichzeitig. Sinnvoll ist es auch, bestimmte Binaries und Passwortdateien auf Veränderungen zu untersuchen. Wie dies funktioniert, können Sie im Artikel „Komplette Server- und Client-Überwachung mit Zabbix“ online nachlesen. (jdo/mha)