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.