Home / LinuxUser / 2004 / 07 / Vorbereitungen für den Fall des Falles: Was tun, wenn der Rechner mutmaßlich gehackt wurde?

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Tatort: Linux-Rechner

Vorbereitungen für den Fall des Falles: Was tun, wenn der Rechner mutmaßlich gehackt wurde?

RPM hilft

So bietet der "Red Hat Packet Manager" rpm (der unter anderem auch bei Suse, Mandrake und Fedora zum Einsatz kommt) die Option -V (für englisch "verify"), mit der sich der Zustand installierter Pakete überprüfen lässt. Das RPM-System vergleicht dann den aktuellen Zustand der Dateien mit ihrem Zustand zum Zeitpunkt der Installation. Da viele Dateien (z. B. die für ein System kritischen Konfigurationsdateien) nach der Installation angepasst und modifiziert werden, lässt sich die Methode nur eingeschränkt verwenden. Sie taugt aber zum Beispiel, um sich zu vergewissern, dass wichtige Systemprogramme nicht durch gleichnamige Tools mit Hintertüren ersetzt wurden.

In guter alter Unix-Manier gibt der Befehl rpm -V Paketname nichts aus, wenn alles in Ordnung ist. Hingegen erkennt der Administrator im folgenden Beispiel …

$ rpm -V coreutils
S.5….T   /bin/ls

…, dass der Befehl /bin/ls aus dem coreutils-Paket bezüglich Größe, Inhalt und Datum (S steht für "Size", 5 für MD5-Prüfsumme und T für "Time") manipuliert wurde. rpm -V bemerkt zudem Änderungen am Eigentümer der Datei (U – "User), an der Eigentümergruppe (G), an symbolischen Links (L), an Gerätedateien (D – "Device") und am Dateityp sowie den Dateirechten [6] (M – "Mode").

Alle per Paketmanager installierten Pakete auf einmal überprüft der Befehl rpm -Va. Selbst auf frisch aufgespielten Systemen sorgt er für Unmengen an Meldungen. Entweder ignoriert man die mit einem c (für "configuration file") oder einem d (für "documentation") gekennzeichneten Dateien oder schränkt die Analyse von vornherein auf die Dateien in den für ausführbare Programme und Bibliotheken reservierten Verzeichnissen bin/ und lib/ ein:

rpm -Va | grep 'bin/'
rpm -Va | grep 'lib/'

Rootkit-Erkennung

Während Tripwire und Aide den "guten" Zustand des Betriebssystems in einer Datenbank speichern und regelmäßig mit dem aktuellen Zustand vergleichen, schlägt Chkrootkit [7] den umgekehrten Weg ein. Es kennt die vom Angreifer installierten Werkzeuge, Rootkit genannt, und deren typische Pfade und fahndet auf dem Linux-System spezifisch danach. Zusätzlich sucht und findet Chkrootkit allgemeine Hinweise auf Rootkits, wie zum Beispiel versteckte Prozesse, ungewöhnliche offene Ports und sniffende Netzwerkkarten. Daher erkennt Chkrootkit auch einige Rootkits, die erst nach seinem letzten Update (Dezember 2003) "auf den Markt kamen".

Bei Rootkits (vgl. Kasten 1) handelt es sich meist um eine Sammlung von Tools, die es dem Angreifer vereinfachen, seine Gegenwart zu verbergen und zusätzliche Software zu installieren. Um ihnen mit Chrootkit auf die Spur zu kommen, lädt der Administrator eines Rechners das aktuelle Chkrootkit-Quelltextarchiv von [7] und übersetzt dieses:

tar xzf chkrootkit-0.43.tar.gz
cd chkrootkit-0.43
make

Eine anschließende Installation ist nicht vorgesehen, stattdessen ruft root das Programm aus dem Arbeitsverzeichnis mit dem Befehl ./chkrootkit auf. Dabei analysiert das Tool die wichtigsten Befehle des Linux-Systems und schaut sich typische Installationsorte der bekannten Rootkits an: Bei den Meldungen not infected ("nicht infiziert"), nothing/not found ("nicht/s gefunden"), nothing deleted ("nichts gelöscht") und no suspect files ("keine verdächtigen Dateien") handelt es sich um die guten Nachrichten; Befunde in Großbuchstaben wie in Abbildung 1 entlarven einen kompromittierten Rechner.

Abbildung 1: Chkrootkit hat in "su", "ifconfig" und "inetd" infizierte Dateien gefunden.

Sinnvollerweise übersetzt der Administrator Chkrootkit nicht auf dem zu testenden Rechner selbst, sondern auf einem System, über dessen unversehrten Zustand er sich sicher ist. Da das nicht immer möglich ist, stellt der Autor unter [8] vorkompilierte RPM-Pakete zur Verfügung.

Da verschiedene Rootkits immer intelligentere Methoden verwenden, um sich auf dem System zu verstecken, sollte der chrootkit-Lauf im Single-User-Modus des Betriebssystems oder (noch besser) nach dem Booten einer Live-CD durchgeführt werden. Dafür eignet sich zum Beispiel Knoppix, das Chkrootkit in seiner aktuellsten Version mitbringt. Chkrootkit bemerkt sicherlich nicht alle existierenden Rootkits, hat aber eine hohe Erkennungsrate.

Inzwischen gibt es auch spezielle Boot-CDs, die für die forensische Systemanalyse entwickelt wurden. Knoppix-STD [9] ist die bekannteste Live-CD unter ihnen. Sie enthält weitere wertvolle Werkzeuge fürs weitergehende Durchleuchten eines Rechners, zum Beispiel Sleuthkit ([10--12]).

Startet der Administrator Chkrootkit von einer CD aus, muss er vorher sicherstellen, dass die Festplattendateisysteme gemountet wurden. Zu diesem Zweck sollte er zunächst ein Verzeichnis /tmp/mount (o. ä.) erzeugen und die Dateisysteme so auf Unterverzeichnisse davon mounten, dass es unterhalb von /tmp/mount aussieht wie im Wurzelverzeichnis des laufenden Systems.

Für das System aus Abbildung 2 würde der Administrator im gebooteten Live-System die Verzeichnisse /tmp/mount, /tmp/mount/boot, /tmp/mount/home, /tmp/mount/usr und /tmp/mount/var erzeugen und die Partitionen /dev/hda5, /dev/hda1, /dev/hda6, /dev/hda7 und /dev/hda8 entsprechend einbinden. Listing 1 zeigt die nötigen Befehle.

Abbildung 2: Linux-Systeme verteilen sich häufig über mehrere Partitionen.

Listing 1

Vorbereitungen für die Überprüfung bei gebootetem Live-System

mkdir -p /tmp/mount/boot
mkdir /tmp/mount/home
mkdir /tmp/mount/usr
mkdir /tmp/mount/var
mount /dev/hda5 /tmp/mount
mount /dev/hda1 /tmp/mount/boot
mount /dev/hda6 /tmp/mount/home
mount /dev/hda7 /tmp/mount/usr
mount /dev/hda8 /tmp/mount/var

Anschließend teilt er chkrootkit mit der Option -r den Ort des zu untersuchenden Verzeichnisbaums mit:

chkrootkit -r /tmp/mount

Durch Einsatz einer Live-CD löst er gleichzeitig ein weiteres Problem: Chkrootkit benötigt für die Analyse des Dateisystems weitere Kommandos, darunter awk, cut und find. Der Angreifer kann das Ergebnis der Chkrootkit-Analyse verfälschen, wenn er diese Befehle austauscht. Führt der Administrator die Analyse jedoch von einer Knoppix-CD aus durch, werden die unveränderten Knoppix-Befehle genutzt.

Kasten 1: Rootkits

Die Werkzeugsammlungen [13], die ein Einbrecher nutzt, um Hintertüren zu installieren, Dateien und Prozesse zu verstecken und Kennwörter zu sammeln, heißen deshalb Rootkits, weil sie es dem Einbrecher ermöglichen, als root zu arbeiten, ohne dass der echte Systemadminstrator dies bemerkt (Wikipedia: http://de.wikipedia.org/wiki/Rootkit).

Es gibt im Wesentlichen drei verschiedene Arten: Die ältesten und einfachsten Rootkits, darunter zum Beispiel das Linux-Rootkit-5 [14], tauschen lediglich einige Befehle aus. Die manipulierten Versionen zeigen einige Dateien und Prozesse nicht mehr an und bieten zusätzliche Hintertüren. Hierbei handelt es sich zum Beispiel um einen modifizierten inetd-Superserver, der auf einem zusätzlichen Port ein root-Login erlaubt. Verbindet sich der Angreifer per telnet-Kommando mit diesem Port, so erhält er direkt einen root-Prompt auf dem System.

Solche Rootkits erkennt ein Administrator relativ leicht mit Tripwire, Aide oder manuell. Er muss lediglich die Dateigrößen vergleichen oder mit einem "guten" /bin/ps-Befehl die Prozesse des Rechners analysieren.

Moderne Rootkits kompromittieren nicht mehr einzelne Befehle, sondern den Linux-Kernel. Das erste bekannte Rootkit dieser Art war Knark [15], das in der Lage ist, Aide und Tripwire zu überlisten. Es erkennt, ob eine Datei gelesen oder ausgeführt wird und präsentiert entweder die originale unveränderte Datei oder die vom Angreifer modifizierte Version. Obwohl also die modifizierte Datei bei der Ausführung verwendet wird, sehen der Administrator und auch Tripwire bzw. Aide nur die Originaldatei. Dieses Verfahren wird als Execution-Redirection bezeichnet.

Knark kann aber wie viele andere Kernel-Rootkits nur modulare Kernel angreifen. Daher wurde in der Vergangenheit häufig die Kompilierung eines monolithischen Kernels (ohne Module) für sicherheitssensitive Systeme empfohlen. Silvio Cesare zeigte allerdings bereits 1999, dass es auch möglich ist, diese Kernel anzugreifen.

Das erste Rootkit, das dieses Verfahren verwendete, war das Kernel-Intrusion-System (KIS) von Optyx [16]. Dieses auf der Defcon 9 [17] im Jahr 2001 vorgestellte Rootkit kann einen monolitischen Kernel zur Laufzeit angreifen und modifizieren. Dabei bietet es dem Benutzer sogar eine grafische Oberfläche für die Administration (Abbildung 3). Inzwischen gibt es viele weitere Rootkits mit ähnlichen Fähigkeiten. Das bekannteste und am häufigsten eingesetzte ist Suckit [18].

Abbildung 3: KIS lässt sich mit einer grafischen Oberfläche fernsteuern.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...