IT-Academy Logo
Sign Up Login Help
Home - Netzwerke - Sicherheit - Kenne Deinen Feind: Passives Fingerabdrucknehmen



Kenne Deinen Feind: Passives Fingerabdrucknehmen

Infos über andere Rechner erlangen, ohne aktive Tools zu benutzen.


Autor: Rolf Viehmann (Rolfhub)
Datum: 23-01-2002, 19:23:21
Referenzen: Das englischsprachige Originaldokument findet sich unter http://project.honeynet.org/papers/finger/
Schwierigkeit: Fortgeschrittene
Ansichten: 9060x
Rating: 9 (2x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Kenne deinen Feind: Passives Fingerabdrucknehmen
Ferne Hosts identifizieren, ohne dass diese es merken

Honeynet Project [mailto:project@honeynet.org?Subject=Passive Fingerprinting]
http://project.honeynet.org/
Zuletzt geändert: 24. Mai 2000
Übersetzt von Rolf Viehmann [mailto:rolfhub@web.de] am 29. Juni 2001

Hinweis 1: Ich habe alle URLs in eckige Klammern eingeschlossen, der Übersichtlichkeit zuliebe.
Hinweis 2: Ich habe die neue deutsche Rechtschreibung benutzt.
Hinweis 3: Das englischsprachige Originaldokument findet sich unter [http://project.honeynet.org/papers/finger/].

Eine der Herausforderungen der Netzwerksicherheit ist es, etwas über die "bösen Buben" zu lernen. Um die Bedrohungen gegen Sie zu verstehen, und sich besser zu schützen, müssen sie den Feind kennen [http://project.honeynet.org/papers/enemy/index.html]. Passives Fingerabdrucknehmen ist eine Methode, etwas über den Feind zu lernen, ohne ihn dies merken zu lassen. Sie können speziell das Betriebssystem und andere Charakteristika des fernen Hosts herausfinden, ohne mehr als Schnüfflerspuren (sniffer traces) zu benutzen. Obwohl dies nicht 100%-ig fehlerfrei ist, können Sie doch überraschend gute Resultate erzielen. Craig Smith hat ein Tool [http://project.honeynet.org/papers/finger/passfing.tar.gz] entwickelt, das auf den Konzepten in diesem Papier fußt. Außerdem hat die subterrain crew ein Tool namens "siphon" [http://www.subterrain.net/projects/siphon] entwickelt, das passiv Ports mappt und Betriebssysteme identifiziert.

Fingerabdrucknehmen

Traditionell werden Betriebssysteme mittels aktiver Tools, wie "queso" oder "nmap" identifiziert. Diese Tools basieren auf dem Prinzip, dass der IP-Stack jedes Betriebssystems seine Besonderheiten hat. Im Speziellen antwortet jedes Betriebssystem unterschiedlich auf fehlgeformte Pakete. Jemand muss also nur eine Datenbank aufbauen, in der verzeichnet ist, wie verschiedene Betriebssysteme auf verschiedene Pakete antworten. Um nun das Betriebssystem eines fernen Hosts herauszufinden, muss man einige fehlgeformte Pakete an diesen senden, und die Antworten mit der Datenbank vergleichen. Fyodors Tool "nmap" [http://www.insecure.org/nmap] ist erste Wahl, wenn diese Methode benutzt werden soll. Er hat auch ein detailliertes Papier [http://www.insecure.org/nmap/nmap-fingerprinting-article.html] darüber geschrieben.

Passives Fingerabdrucknehmen funktioniert nach dem selben Konzept, wird aber unterschiedlich implementiert. Passives Fingerabdrucknehmen basiert auf Schnüfflerspuren von dem fernen System. Anstatt aktiv Anfragen an das ferne System zu senden, müssen Sie nur Pakete, die dieses gesendet hat, erfassen. Sie können das Betriebssystem des fernen Hosts basierend auf diesen Paketen identifizieren. Genau wie das aktive Fingerabdrucknehmen basiert auch das passive auf dem Prinzip, dass der IP-Stack jedes Betriebssystems seine Eigenheiten hat. Indem Sie Schnüfflerspuren analysieren und diese Unterschiede identifizieren, können Sie möglicherweise das Betriebssystem des fernen Hosts identifizieren.

Die Signaturen

Wir werden uns vier Bereiche anschauen, um das Betriebssystem herauszufinden. (Es gibt jedoch noch andere Signaturen, die genutzt werden können.) Diese Signaturen sind:

- TTL - Was das Betriebssystem als Time To Live für das ausgehende Packet festlegt.
- Window Size - Wie groß das Betriebssystem die Fenstergröße festlegt.
- DF - Ob das Betriebssystem das Don't Fragment Bit setzt.
- TOS - Ob das Betriebssystem den Type Of Service festlegt, und wenn ja, wie.

Indem Sie diese Faktoren eines Pakets analysieren, können Sie evt. das Betriebssystem des fernen Rechners herausfinden. Diese Herangehensweise ist nicht 100%-ig akkurat und funktioniert mit einigen Betriebssystemen besser als mit anderen. Keine Signatur kann alleine verlässlich das Betriebssystem feststellen. Jedoch können Sie, indem Sie sich mehrere Signaturen anschauen, die Genauigkeit erhöhen. Ein Beispiel kann dies am besten erklären. Untenstehend sind die Schnüfflerspuren eines Systems, dass ein Packet sendet. Dieses System startete einen "mountd" Angriff gegen mich, ich wollte also mehr darüber erfahren. Ich wollte nicht "finger" oder "nmap" auf den Rechner anwenden, das hätte mich verraten können. Stattdessen will ich die Infos passiv studieren. Diese Signatur wurde mit "snort" [http://www.clark.net/~roesch/security.html] aufgezeichnet, mein Lieblingsschnüffler.

04/20-21:41:48.129662 129.142.224.3:659 -> 172.16.1.107:604
TCP TTL:45 TOS:0x0 ID:56257
***F**A* Seq: 0x9DD90553 Ack: 0xE3C65D7 Win: 0x7D78

Basierend auf unseren 4 Kriterien stellen wir folgendes fest:

- TTL: 45
- Window Size: 0x7D78 (oder 32120 dezimal)
- DF: Das Don't Fragment Bit ist gesetzt
- TOS: 0x0

Wir vergleichen diese Infos mit einer Datenbank mit Signaturen [http://project.honeynet.org/papers/finger/traces.txt]. Zuerst schauen wir und die TTL des fernen Hosts an. Wie Sie sehen können, ist dieser Wert auf 45 gesetzt, was wahrscheinlich bedeutet, dass es über 19 Hops zu uns gelangte und die Original-TTL 64 betrug. Basierend auf dieser TTL, scheint es, als ob das Packet von einer Linux- oder FreeBSD-Kiste gesendet wurde (jedoch müssen noch mehr Signaturen zu der Datenbank hinzugefügt werden). Diese TTL können wir bestätigen, wenn wir eine traceroute zu dem fernen Host machen. Wenn Sie sich sorgen, dass der ferne Host die traceroute bemerken könnte, dann können Sie die TTL ihrer traceroute (Standard 30) auf ein bis zwei Hops kleiner einstellen (mit der "-m" Option), als die TTL, die Sie aufgezeichnet haben. In diesem Fall würden wir eine traceroute mit nur 18 Hops starten ("traceroute -m 18" / unter Windows "tracert -h 18"). Dies gibt Ihnen die Infos über den Pfad (inklusive dem ISP des fernen Rechners), ohne dass dieser berührt wird. Um mehr über TTS herauszufinden, lesen Sie dieses "Research Paper on Default TTL values" [http://www.switch.ch/docs/ttl_default.html].

Im nächsten Schritt vergleichen wir die Fenstergröße. Ich habe festgestellt, dass die Fenstergröße ein effektives Werkzeug ist, um genau zu sein, welche Fenstergröße genutzt wird und wie oft sich diese ändert. In der obenstehenden Signatur ist diese auf 0x7D78 gesetzt, die Standardgröße unter Linux. Außerdem neigen Linux, FreeBSD und Solaris dazu, diese während einer Sitzung gleich zu halten (was hier auch der Fall war). Jedoch ändern sich die Größen bei Cisco Routern (zumindest bei meinem 2514) und Microsoft Windows/NT ständig. Ich habe herausgefunden, dass die Fenstergröße genauer ist, wenn sie nach dem drei-Wege-Handshake gemessen wird, aufgrund des "TCP slow start". Für weitere Infos zu Fenstergrößen lesen Sie Stevens, "TCP/IP Illustrated, Volume 1" Kapitel 20.

Die meisten Systeme setzen das Don't Fragment Bit, dies ist also von eingeschränktem Wert. Jedoch macht es die Identifizierung der Systeme einfacher, die dieses nicht setzen, wie SCO oder OpenBSD. Nach eingehenden Tests bin ich der Meinung, dass TOS ebenfalls von eingeschränktem Wert ist. Dies scheint mehr von der Sitzung, als vom Betriebssystem abzuhängen. Anders ausgedrückt, es ist nicht das Betriebssystem, dass den TOS festlegt, sondern das benutzte Protokoll. TOS benötigt noch einige Tests. Sie können mit den oben genannten Infos, speziell TTL und Fenstergröße, und der Datenbank [http://project.honeynet.org/papers/finger/traces.txt] mit einiger Sicherheit das Betriebssystem feststellen (hier Linux Kernel 2.2.x).

Beachten Sie, dass aktives, genau wie passives Fingerabdrucknehmen einige Einschränkungen hat. Erstens haben Anwendungen, die ihre eigenen Pakete zusammenbauen (wie "nmap", "hunt", "teardrop", etc.) nicht die selben Signaturen wie das Betriebssystem. Zweitens ist es für den fernen Host relativ einfach, die Werte für TTL, Fenstergröße, DF, TOS, etc. zu verändern. Ein Beispiel, das ändern der TTL:

Solaris: ndd -set /dev/ip ip_def_ttl 'number'
Linux: echo 'number' > /proc/sys/net/ipv4/ip_default_ttl
NT: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

Solaris [http://www.rvs.uni-hannover.de/people/voeckler/tune/EN/tune.html]
NT [http://support.microsoft.com/support/kb/articles/Q120/6/42.asp?LN=EN-US&SD=gn&FR=0]

Jedoch kann das ferne System relativ einfach erkannt werden, indem man verschiedene Pakete und Signaturen miteinander verbindet, in diesem Falle TTL und Fenstergröße.

Andere Signaturen und Nutzungsmöglichkeiten

Wir müssen uns nicht auf die vier genannten Signaturen beschränken. Es gibt noch andere Bereiche, wie "initial sequence numbers", "IP Identification numbers", TCP- oder IP-Optionen. Ein Beispiel: Cisco Router beginnen ihre IP Identification numbers bei 0, anstatt diese zufällig zuzuweisen. Außerdem können ICMP-Nutzinhalte benutzt werden. Max Vision [http://dev.whitehats.com/papers/passive/index.html] diskutiert die Benutzung von ICMP-Nutzinhalten oder TCP-Optionen für die Identifikation. Zum Beispiel enthalten Microsoft ICMP REQUEST-Nutzinhalte das Alphabet, während die von Solaris oder Linux eine Nummer und Symbole enthalten. Zu den TCP-Optionen: die Option Selective Acknowledgement SackOK [http://project.honeynet.org/papers/finger/rfc2018.txt] wird von Windows und Linux häufig benutzt, jedoch selten von FreeBSD oder Solaris. Was die Maximum Segment Size (MSS) angeht: die meisten Betriebssysteme benutzen eine MSS von 1460, jedoch benutzt Novell gewöhnlich eine von 1368 und einige FreeBSD-Varianten benutzen 512. Eine weitere Quelle von Signaturen ist die "packet state", welcher Packettyp genutzt wird. Um Fyodor zu zitieren: "Ein Beispiel: der initiale SYN-Request kann eine Goldmiene sein (wie auch die Antwort darauf). RST-Packete haben auch einige interessante Features, die für die Identifikation genutzt werden können." Diese und andere Signaturen können mit den genannten Signaturen kombiniert werden, um Betriebssysteme zu identifizieren.

Passives Fingerabdrucknehmen kann noch für einige andere Zwecke genutzt werden. Es kann von den "bösen Jungs" als "heimliches" Fingerabdrucknehmen benutzt werden. Zu Beispiel kann jemand einfach eine Webseite von einem Server abrufen und die Schnüffler-Spuren auswerten, um das Betriebssystem eines "potentiellen Opfers" herauszufinden. Das vermeidet die Nutzung eines aktiven Tools, das von einigen IDS-Systemen entdeckt werden könnte. Auch könnte Passives Fingerabdrucknehmen benutzt werden, um eine ferne proxy firewall zu identifizieren. Da diese die Verbindungen für die Clients nachbauen, kann es möglich sein, diese Systeme anhand ihrer Signaturen zu erkennen. Organisationen können Passives Fingerabdrucknehmen verwenden, um "Schurkensysteme" in ihrem Netzwerk zu erkennen. Dies wären Systeme, die im Netzwerk nicht autorisiert sind. Zum Beispiel könnte ein Microsoft- oder Sun-Shop schnell Linux- oder FreeBSD-Systeme identifizieren, die mysteriöserweise im Netzwerk aufgetaucht sind. Passives Fingerabdrucknehmen kann auch genutzt werden, um schnell eine Inventarliste über die verwendeten Betriebssysteme zu erstellen, ohne den laufenden Betrieb zu stören. Für die Sicherheitsabteilung kann Passives Fingerabdrucknehmen dazu dienen, kritische Systeme (wie Unisys Mainframes) schnell zu erkennen.

Die Datenbank aufbauen

Die Datenbank [http://project.honeynet.org/papers/finger/traces.txt] wurde aufgebaut, indem eine ganze Reihe Systeme mit den Protokollen Telnet, FTP, HTTP und SSH getestet wurden. Es müssen jedoch noch andere Systeme und andere Protokolle getestet werden. Wenn Sie Signaturen vorliegen haben, die nicht in der Datenbank enthalten sind, senden Sie diese bitte an [mailto:project@honeynet.org?Subject=Passive Fingerprinting]. Ich bin im besonderen an TCP- oder IP-Optionen interessiert, die nicht in der Datenbank enthalten sind.

Schlussfolgerungen

Passives Fingerabdrucknehmen gibt Ihnen die Möglichkeit, den Feind kennen zu lernen, ohne dass dieser etwas bemerkt. Zwar kann keine Information allein ein Betriebssystem eindeutig identifizieren, aber mit der Kombination mehrerer Signaturen kann man recht genaue Ergebnisse bekommen. Ein großes Danke an die folgenden Personen für ihre Hilfe und Ideen:

Fyodor
Max Vision
Marty Roesch
Edward Skoudis
Dragos Ruiu
Craig Smith
Peter Grundl
Subterrain Siphon Project


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04506
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06243
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1142
Comments: 0