1.4.2 Betriebssystem-Erkennung

Ein wesentlicher Punkt zur Nutzung von Sicherheitslücken ist die Betriebssystem-Erkennung beim Opfer. Die Implementierung des TCPTransmission Control Protocol/IPInternet Protocol Stacks weicht in den verschiedenen Betriebssystemen leicht voneinander ab. Das hat damit zu tun, dass bei der Spezifikation der Protokolle nicht für jeden Fehlerfall ein exaktes Verhalten festgelegt ist. Jedes System reagiert mit einem bestimmten Muster, das auch als „Fingerprint“ bezeichnet wird. An welchen Merkmalen lässt sich nun ein Betriebssystem erkennen?

Beispiel
Einige Beispiele sind:
  • Wenn nur ein FIN-Paket an einen aktiven Port gesendet wird, sollte es keine Antwort geben. Windows NT antwortete aber mit einem FIN/ACK-Paket.
  • Die Initial Sequence Number wird durch eine einfach gehaltene Zufallsprozedur ausgewählt. Windows NT variierte die ISN um einen Wert von 16.
  • Apple OS Version 7 setzte standardmäßig das Don’t Fragment Flag im IP-Header.
  • Die Reaktion bei sich überlappenden Fragmenten ist verschieden: Manchmal überschreiben Fragmente mit höherem Offset Pakete mit kleinerem Offset, manchmal ist es andersherum.
  • Viele Dienste senden nach dem Verbindungsaufbau einen Banner, der direkt die Anwendung benennt und auch auf das Betriebssystem schliessen lässt. FTP, Telnet, HTTP, SMTP und POP3 reagieren so. Aus diesem Gund wird die Übermittlung von Bannern häufig modifiziert oder ganz deaktiviert.
  • Als weitere Merkmale können die Behandlung von ICMP-Nachrichten oder Standard-Einstellungen für das Identifikations-Feld und das TTL-Feld im IP-Header überprüft werden.
  • Weitere Merkmale der Implementierung von TCP können benutzt werden, wie die Behandlung von RST-Paketen, die Unterstützung von ECN und Optionen oder die Größe des benutzten Fensters.

Eine Betriebssystemerkennung kann insbesondere mit nmap durchgeführt werden (siehe nmap Book, was diese Funktion noch genauer erklärt).