Betriebssystem-Erkennung

Eines der bekanntesten Merkmale von Nmap ist dessen Erkennung entfernter Betriebssysteme mit TCP/IP-Stack-Fingerprinting. Nmap sendet eine Reihe von TCP- und UDP-Paketen an den entfernten Host und untersucht praktisch jedes Bit in der Antwort. Nach der Durchführung Dutzender von Tests, wie z.B. einer TCP-ISN-Abtastung, Unterstützung und Reihenfolge von TCP-Optionen, IP-ID-Abtastung und Prüfung der initialen Fenstergröße, vergleicht Nmap die Ergebnisse mit seiner Datenbank in nmap-os-db von über eintausend bekannten Betriebssystem-Fingerprints und gibt die Details zum Betriebssystem aus, wenn es eine Übereinstimmung gefunden hat. Jeder Fingerprint enthält eine formlose Beschreibung des Betriebssystems und eine Klassifikation, aus der der Herstellername (z.B. Sun), das eigentliche Betriebssystem (z.B. Solaris), dessen Generation (z.B. 10) und der Gerätetyp (allgemein, Router, Switch, Spielkonsole usw.) hervorgeht.

Falls Nmap das Betriebssystem eines Rechner nicht erraten kann und die Umstände günstig sind (z.B. wenn mindestens ein offener und ein geschlossener Port gefunden wurde), präsentiert Nmap eine URL, unter der Sie den Fingerprint einsenden können, wenn Sie (ganz sicher) wissen, welches Betriebssystem auf dem Rechner läuft. Dadurch erweitern Sie den Pool der Betriebssysteme, die Nmap kennt, wodurch es für alle Benutzer genauer wird.

Die Betriebssystem-Erkennung verwendet einige weitere Tests, die Informationen benutzen, die während des Vorgangs ohnehin gesammelt werden. Eine davon ist die Klassifikation der Vorhersagbarkeit der TCP-Sequenznummern. Sie gibt ungefähr an, wie schwer es ist, eine gefälschte TCP-Verbindung zum entfernten Host aufzubauen. Sie ist hilfreich zur Ausbeutung von Vertrauensbeziehungen auf Basis von Quell-IPs (rlogin, Firewall-Filter usw.) oder zum Verbergen des Ursprungs eines Angriffs. Diese Art von Täuschung wird kaum noch praktiziert, aber viele Rechner sind nach wie vor anfällig dafür. Die eigentliche Maßzahl basiert auf statistischen Abtastungen und kann schwanken. Im Allgemeinen ist es besser, die englische Bezeichnung wie z.B. worthy challenge oder trivial joke zu benutzen. Das wird nur in der normalen Ausgabe im ausführlichen Modus (-v) ausgegeben. Wenn dieser Modus zusammen mit -O aktiviert ist, wird auch die IP-ID-Sequenzerzeugung berichtet. Die meisten Rechner finden sich in der Klasse incremental, d.h. sie inkrementieren das ID-Feld im IP-Header für jedes von ihnen gesendete Paket. Dadurch werden sie anfällig für diverse avancierte Angriffe mittels Täuschung und Sammlung von Informationen.

Eine weitere zusätzliche Information, die die Betriebssystem-Erkennung aktiviert, ist eine Schätzung der Betriebszeit des Zielhosts. Dabei wird die TCP-Timestamp-Option (RFC 1323) benutzt, um zu raten, wann ein Rechner das letzte Mal neu gestartet wurde. Wenn der Timestamp-Zähler nicht bei null gestartet wurde oder der Zähler überläuft und wieder von vorn zählt, kann diese Schätzung ungenau werden, weshalb sie nur im ausführlichen Modus ausgegeben wird.

A paper documenting the workings, usage, and customization of OS detection is available at https://nmap.org/book/osdetect.html.

Eingeschaltet und gesteuert wird die Betriebssystem-Erkennung mit den folgenden Optionen:

-O (Betriebssystem-Erkennung aktivieren)

Aktiviert die Betriebssystem-Erkennung wie oben beschrieben. Alternativ dazu können Sie -A benutzen, um eine Betriebssystem-Erkennung zusammen mit anderen Dingen einzuschalten.

--osscan-limit (Betriebssystem-Erkennung auf vielversprechende Ziele beschränken)

Die Betriebssystem-Erkennung ist wesentlich effektiver, wenn mindestens ein offener und ein geschlossener TCP-Port gefunden werden. Wenn Sie diese Option angeben, versucht Nmap eine Betriebssystem-Erkennung gar nicht erst bei Hosts, die dieses Kriterium nicht erfüllen. Das kann viel Zeit sparen, besonders bei Scans mit -PN auf vielen Hosts. Diese Option gilt nur, wenn eine Betriebssystem-Erkennung mit -O oder -A verlangt wird.

--osscan-guess; --fuzzy (Ergebnisse der Betriebssystem-Erkennung raten)

Falls Nmap keine perfekte Übereinstimmung mit einem Betriebssystem finden kann, präsentiert es manchmal mögliche Kandidaten, die dem sehr nahe kommen. Damit Nmap das standardmäßig macht, muss die Übereinstimmung sehr hoch sein. Diese beiden (äquivalenten) Optionen lassen Nmap aggressiver schätzen. Dann gibt Nmap auch unvollkommene Übereinstimmungen aus, zusammen mit einem Vertrauensgrad (in Prozent).

--max-os-tries (setzt die maximale Anzahl der Versuche für eine Betriebssystem-Erkennung bei einem Ziel)

Wenn Nmap eine Betriebssystem-Erkennung auf einem Ziel durchführt und dafür keine perfekte Übereinstimmung findet, macht es normalerweise einen weiteren Versuch. Standardmäßig macht Nmap fünf Versuche, wenn die Bedingungen zum Einsenden eines Betriebssystem-Fingerprints günstig sind, und zwei, wenn sie es nicht sind. Die Angabe eines kleineren Wertes für --max-os-tries (z.B. 1) beschleunigt Nmap, auch wenn Sie Versuche auslassen, bei denen das Betriebssystem möglicherweise erkannt werden könnte. Alternativ dazu kann ein hoher Wert gesetzt werden, um bei günstigen Bedinungen noch mehr Versuche zu erlauben. Das macht man aber selten, außer um bessere Fingerprints zu erzeugen, die man einsenden kann, um sie in Nmaps Betriebssystem-Datenbank zu integrieren.