HowTo Guides

Was ist OS Fingerprinting?

OS Fingerprinting ist eine Technik, die versucht das Betriebssystem eines entfernten Servers anhand des Verhaltens, der Dienste und Banner zu erkennen.

Das Vorgehen ist ähnlich wie bei der Dienst-Erkennung. Hinzu kommt das TCP/IP Stack Fingerprinting: Hier sendet der Angreifer speziell formatierte Pakete, wobei bekannt ist, dass bestimmte Implementierungen des Stacks anders reagieren. Kombinierte Proben geben so wiederum Hinweise auf die Plattform des Zielsystems.

Fingerprinting ist keine exakte Wissenschaft und arbeitet mit Wahrscheinlichkeiten. Falls ein Scanner also das falsche Betriebssystem ausweist, ist dies positiv zu werten.

Es gibt durchaus Möglichkeiten, die Erkennung einer Plattform zu erschweren. Jedoch sind dazu meist tiefe Eingriffe in das Betriebssystem nötig. Um gewisse Eigenschaften des TCP/IP Stacks zu verändern, könnte man zum Beispiel folgende Optionen anpassen:

  • TCP Initial Sequence Number (ISN)
  • TCP initial window size
  • TCP options (their types, values and order in the packet)
  • IP ID numbers

Diese sogenannten Flags der Protokolle lassen sich bei Linux / Unix Systemen über Kernel Parameter oder durch Anpassung des Source Codes verändern.

Unter Linux hat man weiter die Möglichkeit, Pakete mit folgenden Optionen zu verwerfen:

  • Pakete mit SYN und FIN aktiv
  • Pakete mit einem Reserve-Bit aktiv im TCP Header
  • Pakete, welche nicht ein ACK, SYN, RST oder FIN Flag aktiv haben
  • Pakete mit FIN, PUSH und URG

Die aufgelisteten Pakete sind gemäss TCP Standard ungültig. Meist werden aus Performancegründen Pakete nur partiell validiert. Werden diese Pakete verworfen, wird die automatische Plattform-Erkennung erschwert.

Interessante weiterführende Informationen zu OS Fingerprinting finden Sie bei nmap.org.