OS Fingerprinting

OS Fingerprinting (englisch für „Betriebssystem-Fingerabdruck) versucht das Betriebssystem eines entfernten Computers oder Servers zu erkennen, meist um speziell auf dieses Betriebssystem zugeschnittene Angriffsmethoden nutzen zu können. Man unterscheidet zwischen aktiven und passiven Methoden. Passive Methoden setzen keinerlei aktive Datenübertragung zum Zielhost voraus. Es wird lediglich Datenverkehr beobachtet und danach bewertet. Im Gegensatz dazu werden bei aktiven Methoden gezielt Daten übertragen, um aus der Antwort des Zielhosts Erkenntnisse zu gewinnen.

Eine verbreitete Variante des OS Fingerprinting ist das sogenannte TCP/IP Stack Fingerprinting. Da jedes Betriebssystem eine eigene Implementierung des TCP/IP-Stacks hat, kann man im Header von Netzwerkpaketen die Betriebssysteme voneinander unterscheiden. Folgende Felder variieren je nach OS:

  • 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)

Insbesondere unter Unix/Linux lassen sich viele dieser Parameter zwar verändern, zum Beispiel um sich als anderes Betriebssystem auszugeben. Dies ist jedoch meist mit tiefen Eingriffen in das System verbunden. Weniger verbreitet ist das sogenannte Banner-Grabbing, neben dem TCP/IP Fingerprinting eine andere Option, um Daten eines entfernten Betriebssystems zu erhalten. Bei Bannern handelt es sich um Informationen, mit denen sich HTTP- oder FTP-Dienste beim Verbindungsaufbau zu erkennen geben. So ein Banner kann, muss aber keine Informationen über das verwendete System enthalten. Exemplarisch seien im Folgenden vier Tools aufgelistet, mithilfe derer man OS Fingerprinting durchführen kann:

  • p0f (passives OS Fingerprinting)
  • Ettercap (passives OS Fingerprinting)
  • Nmap (aktives OS Fingerprinting)
  • XProbe2 (aktives OS Fingerprinting)