GUUG e.V.
Antonienallee 1
45279 Essen
kontakt@guug.de
Impressum

Autor Wilhelm Dolle
Titel Rootkits - Grundlagen unter Unix/Linux, Erkennung, Entfernung und Schutzmaßnahmen
Paper
PDF: ffg2003-dolle.pdf (201671 Bytes)
Abstract

Einleitung und Motivation

Computersysteme mit einer im Internet erreichbaren IP-Adresse werden häufig täglich nach Sicherheitslücken gescannt beziehungsweise direkt angegriffen. Blickt man auf die Sicherheitswarnungen von Softwareherstellern sowie der Computer Emergency Response Teams (CERTs), so wird schnell klar, dass viele verbreitete Programmpakete von Programmierfehlern betroffen sind beziehungsweise in der Vergangenheit betroffen waren. Sehr beliebt ist bei Einbrüchen in Rechnersysteme das Ausnutzen von Buffer-Overflow und Format-String Schwachstellen. Sobald ein Angreifer Zugriff auf das fremde System erlangt hat, installiert er häufig ein sogenanntes Rootkit. Diese spezielle Software erlaubt es dem Angreifer, seine eigenen Spuren zu verwischen und dauerhaften Zugang zu dem kompromittierten Server zu erhalten. Einmal aktiviert, verhindern Rootkits mehr oder weniger wirkungsvoll ihre Entdeckung und Entfernung. Ein Rootkit ermöglicht es einem Angreifer nicht, den erstmaligen root- Zugang zu erhalten. Es dient vielmehr dazu, einen bereits gehackten root-Zugang für zukünftige Aktivitäten zu sichern. Um den ungehinderten root-Zugang zum betroffenen System zu einem späteren Zeitpunkt sicher zu stellen, ist es notwendig, eigene Dienste zu installieren, die unabhängig von der ursprünglich ausgenutzten Sicherheitslücke einen direkten Zugang zum System erlauben. Dazu installiert der Einbrecher oft eine veränderte (trojanisierte) Versionen eines Standarddienstes.

Verschiedene Typen von Rootkits

Grundsätzlich lassen sich Rootkits in zwei Arten unterteilen, dateibasierte und kernelbasierte. Erstere ersetzen im kompromittierten System Dateien und Programme durch ihre eigenen Versionen, um das System zu manipulieren und ihre Existenz zu verschleiern. Unter Linux sehr verbreitete Rootkits dieser Gattung waren zum Beispiel die Linux-Rootkits lrk3, lrk4, lrk5 beziehungsweise das t0rnkit. Kernelbasierte Rootkits modifizieren den Kernel entweder im Speicher und / oder auf der Platte. Durch den Umstand, dass sie im Kernel und nicht im normalen Benutzermodus laufen, haben sie alle nötigen Privilegien, um ohne Einschränkungen auf das komplette System zuzugreifen. Die ersten kernelbasierten Rootkits modifizierten den Kernel über das Laden eines oder mehrerer Module. Verbreitete Vertreter unter Linux sind zum Beispiel Knark (für Kernel 2.2) und Adore (für Kernel 2.2 und 2.4). Auf der DefCon 9 wurde 2001 mit dem Kernel Intrusion System (KIS) zum ersten Mal ein kernelbasiertes Rootkit vorgestellt, dass den Kernel direkt im Speicher über /dev/kmem verändern kann. 2002 tauchte mit SucKIT ein weiterer Vertreter dieses neuen Typus auf.

Erkennen und Entfernen von Rootkits

Sehr oft lassen sich Rootkits durch einen Vergleich des Ergebnisses eines Portscans von außen mit der lokalen Ausgabe der offenen Ports über netstat erkennen. Normalerweise verschleiert ein Rootkit nach innen seine Anwesenheit dadurch, dass es einen nach außen geöffneten Kommunikationsport nicht anzeigt. Gibt es also Differenzen zwischen den beiden Listen, so kann dies als erster Hinweis auf ein vorhandenes Rootkit dienen. Weitere Schritte zum Aufspüren von Rootkits kann die Liste an in den Kernel geladenen Modulen oder der Vergleich der Systemsprungtabelle mit einer sauberen System.map sein. Falls eine Signatur des Rootkits bekannt ist, kann nach dieser im Speicher gesucht werden. Da viele Rootkits ihre Prozesse, und damit bestimmte PIDs, verstecken, kann mit einem Hilfsprogramm versucht werden, nacheinander alle PIDs zu belegen. Sollten hierbei Fehler auftreten, ist dies ein weiterer Hinweis auf das eventuelle Vorhandensein eines Rootkits. Zur automatisierten Erkennung von Rootkits findet man im Internet unter anderem die Projekte 'chkrootkit' und 'Saint Jude'. Hat man das Rootkit erst mal gefunden und identifiziert, kann man es sehr häufig leicht entfernen oder zumindest deaktivieren. Danach sollte man das System am besten komplett neu aufsetzen. Ist dies nicht möglich, muss man alle trojanisierten Programme durch ihre Originale ersetzen und eventuell vorhandene versteckte Verzeichnisse löschen. Es bleibt dann nur noch herauszufinden, welche Sicherheitslücke sich der Einbrecher zunutze gemacht hat, und diese ebenfalls zu schließen.

Über den Autor

Wilhelm Dolle hat in Bochum studiert und wechselte 1995 zur Promotion nach Marburg. Mit Unix / Linux beschäftigt er sich seit 1994. Hauptsächliche Schwerpunkte seines Interesses lagen und liegen dabei auf Netzwerkfähigkeiten und Netzwerksicherheit. Seit 1999 arbeitet er für die Firma interActive Systems GmbH und leitet dort seit 2000 die Networking Unit und die Abteilung für IT-Sicherheit in Berlin. Wilhelm Dolle hält in regelmäßigen Abständen Vorträge über Sicherheit in vernetzten Systemen, hat einige Fachartikel zu diesen Themen veröffentlicht, arbeitet als Gutachter bei verschiedenen Buch-Verlagen an Projekten auf diesem Gebiet mit und unterrichtet an einer Berufsakademie das Fach Netzwerksicherheit.

Veranstaltungen
FFG2019
Frühjahrsfachgespräch 2019
9.-12. April 2019 am KIT in Karlsruhe
Kalender
10.November 2019
KWMoDiMiDoFrSaSo
44  28 29 30 31 1 2 3
45  4 5 6 7 8 9 10
46  11 12 13 14 15 16 17
47  18 19 20 21 22 23 24
48  25 26 27 28 29 30 1
49  2 3 4 5 6 7 8
GUUG News