# OS-Fingerprinting

Unter dem Begriff OS-Fingerprinting (englisch für „Betriebssystem-Fingerabdruck“), spezieller auch TCP/IP-Stack-Fingerprinting (englisch für „TCP/IP-Protokollstapel-Fingerabdruck“), versteht man die Erkennung von Betriebssystemen durch die Beobachtung diverser Reaktionsweisen der Systeme im Netzwerk aus der Ferne. Zur Erkennung des Betriebssystems können sowohl aktive als auch passive Methoden Verwendung finden.
Über den TCP/IP-Protokollstapel das Betriebssystem zu ermitteln ist bei beiden Methoden möglich; zusätzlich kann bei der aktiven Variante noch das Banner eines Programmes analysiert werden.

## TCP/IP-Protokollstapel

Eine weitverbreitete Methode der Betriebssystem-Analyse ist jene mittels TCP/IP-Protokollstapel. Dabei wird die Eigenschaft genutzt, dass jedes Betriebssystem seine eigene TCP/IP-Protokollstapel-Implementierung hat, dessen Einstellungen sich im Header von Netzwerkpaketen finden und die sich von denen anderer Betriebssysteme unterscheiden. Folgende Felder variieren innerhalb verschiedener Implementierungen:
* Initial Time to Live (8 Bit)
* Receive Window Size (16 Bit)
* Maximum Segment Size (16 Bit)
* „Don't fragment“ flag (1 Bit)
* sackOK option (1 Bit)
* nop option (1 Bit)
* Window Scale Option (8 Bit)
* Initial packet size (16 Bit)
Zusammen ergeben die Daten eine 67-Bit-Signatur.
Den TCP/IP-Protokollstapel zu analysieren ist aber nicht immer erfolgreich, weil sich bei vielen Betriebssystemen die obigen Felder konfigurieren lassen, wodurch man sich sogar als ein anderes Betriebssystem ausgeben kann, als man eigentlich nutzt.

## Passiv

Passive Methoden zeichnen sich dadurch aus, dass sie absolut latent durchgeführt werden können. Bei diesen Methoden wird ausschließlich der ablaufende Datenverkehr zwischen dem Beobachter und dem Zielsystem bewertet und analysiert. So kann beispielsweise eine einfache Websitzung durch die gleichzeitige Analyse durch ein passives OS-Fingerprinting detaillierte Informationen zu einem Zielsystem offerieren.

## Aktiv

Aktive Methoden zeichnen sich dadurch aus, dass sie die Initiative ergreifen und Daten zum Zielhost übertragen, in der Hoffnung, dass aus der daraus resultierenden Antwort eine Analyse möglich ist. Daher ist diese Methode aggressiver Natur und wird nicht immer gerne gesehen. Ebenfalls ist es für Intrusion Detection Systems (IDS) möglich, laufende aktive Fingerprintings zu identifizieren.

## Banner-Grabbing

Neben der oben erwähnten Methode mittels TCP/IP-Protokollstapel ist es auch möglich, das Betriebssystem mittels des sogenannten Banners herauszufinden. Banner sind Textzeilen, mit denen sich beispielsweise HTTP- oder FTP-Dienste beim Verbindungsaufbau zu erkennen geben. Ein Banner enthält im günstigsten Fall sowohl Informationen über den entsprechenden Dienst als auch über das Betriebssystem. Diese Technik wird auch als Banner Grabbing bezeichnet und steht auch manchen Portscannern zur Verfügung.
Beispiel mit telnet und FTP:
Beispiel mit netcat:
Ein Banner-Grabbing ist aber nicht immer erfolgreich, weil viele Programme entweder die Möglichkeit besitzen, das Banner zu deaktivieren oder zu editieren, wodurch man entweder keine Informationen erhält oder ein anderes Betriebssystem suggeriert wird als tatsächlich benutzt wird.

## OS-Fingerprinting-Werkzeuge

* p0f (passiv)
* Ettercap (aktiv)
* xprobe2 (aktiv)
* nmap (aktiv)
* AutoScan-Network (aktiv)