Freitag, 10. September 2010 |
| |
Das Computer Emergency Response Team (DFN-CERT) des Deutschen Forschungsnetz (DFN) hat eine Warnung vor aktuellen Angriffen auf Linux-Systeme veröffentlicht, bei denen eine neues Rootkit zum Einsatz kam.
Mithilfe gestohlener SSH-Schlüssel wurde in Linux-Systeme in verschiedenen Netzwerken eingebrochen und auf den so kompromittierten Systemen ein Kernel-Rootkit installiert, das die Prozesse des Angreifers vor den regulären Benutzern verbergen soll.
Vergleichbare Angriffe wurden auch von der University of Chicago gemeldet. Dort gibt es eine ausführliche Beschreibung, wie das Rootkit gefunden wurde und welche Maßnahmen nach dem Erkennen des Einbruchs ergriffen wurden.
Laut DFN-CERT und University of Chicago wurden auf kompromittierten Systemen die folgenden Dateien gefunden:
.p2rc .phalanx2 .sniff sshgrab.py
Die Datei .phalanx2 dürfte ein Hinweis darauf sein, dass es
sich um eine neue Version des bereits seit Längerem bekannten Rootkits
Phalanx
handelt. Laut DFN-CERT kann ein mit der gleichen Konfiguration installiertes Rootkit
an folgenden Anzeichen erkannt werden:
/etc/khubd.p2/ ist nicht über
'ls /etc' sichtbar, kann aber über
'cd /etc/khubd.p2/' betreten werden./dev/shm/ liegen Dateien der Angreifer/tmp angelegtes
Verzeichnis mit dem Namen khubd.p2 wird ebenfalls nicht
angezeigt, kann aber betreten werden.Da die Namen und Pfade des Rootkits geändert werden können, beweist ein Fehlschlag der obigen Tests nur, dass nicht das unveränderte Rootkit installiert ist. Es gibt aber zwei allgemeine Hinweise darauf, dass ein Rootkit installiert wurde:
Versteckte Prozesse
Ein Prozess mit der ID [PID] wurde versteckt, sodass er
beim Aufruf von 'ps' oder 'ls /proc' nicht
angezeigt wird, aber noch Signale entgegennimmt. Auch das nicht sichtbare
Verzeichnis /proc/[PID] kann betreten werden.
Das DFN-CERT hat ein Skript veröffentlicht, das nach Prozessen sucht, die
zwar ein Signal entgegen nehmen, aber nicht in /proc angezeigt
werden:
#!/bin/bash
# Das Skript testet, ob es Prozesse im System gibt, die ein Signal annehmen,
# aber die nicht in /proc aufgelistet werden.
for PID in `seq 1 65535`; do
if kill -0 ${PID} 2>/dev/null
then
if ls /proc/*/task/*/cmdline ¦ grep "task/${PID}/cmdline" >/dev/null
then
true
else
CMD=`cat /proc/${PID}/cmdline`
echo "PID ${PID} versteckt?! cmdline: '${CMD}'"
fi
fi
done
Versteckte Verzeichnisse
Wird in einem Verzeichnis '/pfad' ein Unterverzeichnis
'/pfad/versteckt' versteckt, ist der Link-Count für das
Verzeichnis '/pfad' zu hoch. Ein Beispiel:
user@linux:/tmp$ ls -al ¦ grep "^d"
drwxrwxrwt 7 root root 296 2008-08-01 15:05 .
drwxr-xr-x 32 root root 864 2007-12-23 12:58 ..
drwxrwxrwt 2 root root 72 2008-07-08 08:23 .font-unix
drwx------ 2 user user 80 2008-07-25 23:16 ssh-eToaww5944
drwx------ 2 user user 80 2008-07-08 08:24 ssh-wMQEEV1371
drwxrwxrwt 2 root root 72 2008-07-08 08:23 .X11-unix
user@linux:/tmp$
Der Link-Count sollte 6 sein, nicht 7. Es muss also ein verstecktes Unterverzeichnis existieren.
Für die Tests einschließlich des Skripts übernimmt das DFN-CERT natürlich keine Garantie. Weder dafür, dass ein vorhandenes Rootkit wirklich gefunden wird noch dafür, dass es keinen Fehlalarm gibt. Wird ein Rootkit gefunden, bittet das DFN-CERT um eine Rückmeldung an die Adresse für technische Fragen auf der Kontakt-Seite des DFN-CERT.
Carsten Eilers