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.