Dienst- und Versionserkennung
Lassen Sie Nmap auf einen entfernten Rechner los, und Sie
erfahren z.B. dass die Ports 25/tcp
,
80/tcp
und 53/udp
offen sind.
Dank der über 2200 bekannten Dienste in seiner Datenbank in
nmap-services
würde Nmap noch ausgeben, dass diese Ports
wahrscheinlich jeweils zu einem Mailserver (SMTP), Webserver (HTTP) und
Nameserver (DNS) gehören. Normalerweise sind diese Angaben genau —
die überwiegende Mehrheit an Daemons, die den TCP-Port 25 abhören, sind
tatsächlich Mailserver. Allerdings sollten Sie nicht Ihre Sicherheit darauf
verwetten! Manche Leute können nicht nur Dienste auf seltsamen Ports
betreiben, sondern tun es
auch.
Selbst wenn Nmap recht hat und auf dem Server im obigen Beispiel SMTP-, HTTP- und DNS-Server laufen, ist das nicht besonders viel an Information. Bei der Beurteilung der Angreifbarkeit (oder auch nur beim Erstellen einfacher Netzwerkinventare) Ihrer Firmen oder Kunden möchten Sie auch wissen, welche Mail- und DNS-Server und welche Versionen davon laufen. Eine genaue Versionsnummer hilft enorm bei der Bestimmung der Exploits, für die ein Server anfällig ist. Die Versionserkennung hilft Ihnen, an diese Information heranzukommen.
Nachdem TCP- und/oder UDP-Ports mit einer der anderen Scan-Methoden
entdeckt wurden, fragt die Versionserkennung diese Ports ab, um mehr
darüber zu erfahren, was tatsächlich darauf läuft. Die Datenbank in
nmap-service-probes
enthält Testpakete für die Abfrage verschiedenster Dienste und Ausdrücke
für den Vergleich und das Parsen der Antworten. Nmap versucht, das
Dienstprotokoll zu bestimmen (z.B. FTP, SSH, Telnet, HTTP), aber auch
Anwendungsnamen (z.B. ISC BIND, Apache httpd, Solaris telnetd),
Versionsnummer, Hostnamen, Gerätetyp (z.B. Drucker, Router), die
Betriebssystemfamilie (z.B. Windows, Linux) und manchmal verschiedene
Details: etwa ob ein X-Server Verbindungen annimmt, die SSH-Protokollversion
oder der KaZaA-Benutzername. Natürlich bieten die meisten Dienste
nicht all diese Information. Falls Nmap mit OpenSSL-Unterstützung
kompiliert wurde, verbindet es sich mit SSL-Servern, um den hinter dieser
Verschlüsselungsebene
lauschenden Dienst zu ermitteln.
Wenn RPC-Dienste erkannt werden, wird automatisch Nmaps
RPC-Holzhammer
(-sR
)
benutzt, um die RPC-Programm- und Versionsnummern zu bestimmen. Manche
UDP-Ports bleiben im Zustand offen|gefiltert
, nachdem
ein UDP-Port-Scan nicht bestimmen konnte, ob der Port offen oder gefiltert
ist. Die Versionserkennung versucht, diesen Ports eine Antwort zu entlocken
(genauso wie bei offenen Ports) und den Zustand auf offen zu ändern,
wenn das gelingt. Offene|gefilterte
TCP-Ports werden
genauso behandelt. Beachten Sie, dass die Nmap-Option -A
unter anderem auch die Versionserkennung einschaltet.
A paper documenting the workings, usage, and customization of version
detection is available at
https://nmap.org/book/vscan.html
.
Wenn Nmap Antworten von einem Dienst erhält, aber keine Übereinstimmungen dafür in seiner Datenbank finden kann, gibt es einen speziellen Fingerprint und eine URL aus, damit Sie diese Antwort einsenden können, falls Sie genau wissen, was auf diesem Port läuft. Bitte nehmen Sie sich ein paar Minuten Zeit, um sie einzusenden, damit Ihr Fund für alle ein Gewinn sein kann. Dank dieser Beiträge hat Nmap über 3000 Musterübereinstimmungen für über 350 Protokolle wie SMTP, FTP, HTTP usw.
Die Versionserkennung wird mit den folgenden Optionen aktiviert und gesteuert:
-
-sV
(Versionserkennung) Aktiviert die Versionserkennung wie oben beschrieben. Alternativ dazu können Sie
-A
benutzen, was unter anderem auch die Versionserkennung aktiviert.-
--allports
(keine Ports von der Versionserkennung ausschließen) Standardmäßig schließt Nmaps Versionserkennung den TCP-Port 9100 aus, weil manche Drucker einfach alles ausdrucken, was an diesen Port gesendet wird, was zu Dutzenden von Seiten mit HTTP-GET-Requests, binären SSL-Session-Requests usw. führen würde. Dieses Verhalten kann man ändern, indem man die
Exclude
-Anweisung innmap-service-probes
verändert oder entfernt, oder Sie geben--allports
an, um alle Port zu scannen, unabhängig von einerExclude
-Anweisung.-
--version-intensity
(Intensität des Versions-Scans setzen)<intensity>
Bei einem Versions-Scan (
-sV
) sendet Nmap eine Reihe von Testpaketen, die alle über einen zugeordneten Seltenheitswert zwischen eins und neun verfügen. Die Testpakete mit kleineren Werten sind bei einer großen Zahl verbreiteter Dienste wirkungsvoll, während die mit höheren Werten seltener nützlich sind. Die Intensitätsstufe gibt an, welche Testpakete angewendet werden sollten. Je höher die Zahl, desto wahrscheinlicher wird der Dienst richtig identifiziert. Allerdings brauchen Scans mit hoher Intensität mehr Zeit. Diese Intensität muss zwischen 0 und 9 liegen. Die Standardeinstellung ist 7. Wenn ein Testpaket mit derports
-Anweisung innmap-service-probes
für den Zielport registriert ist, wird dieses Testpaket ausprobiert, unabhängig von der Intensitätsstufe. Das garantiert, dass die DNS-Testpakete bei jedem offenen Port 53 immer benutzt werden, das SSL-Testpaket bei Port 443 usw.-
--version-light
(leichten Modus setzen) Das ist ein Alias für
--version-intensity 2
aus Bequemlichkeitsgründen. Dieser leichte Modus macht die Versionserkennung wesentlich schneller, identifiziert die Dienste aber mit geringerer Wahrscheinlichkeit.-
--version-all
(benutze alle Testpakete) Das ist ein Alias für
--version-intensity 9
, der garantiert, dass jedes einzelne Testpaket bei jedem Port ausprobiert wird.-
--version-trace
(verfolge Aktivität des Versions-Scans) Das bewirkt, dass Nmap umfangreiche Debugging-Information darüber ausgibt, was die Versionserkennung gerade macht. Das ist eine Untermenge dessen, was Sie mit
--packet-trace
erhalten.-
-sR
(RPC-Scan) Diese Methode funktioniert zusammen mit den verschiedenen Port-Scan-Methoden von Nmap. Sie nimmt alle offenen TCP-/UDP-Ports und überflutet sie mit NULL-Befehlen für das SunRPC-Programm, in dem Versuch, festzustellen, ob es RPC-Ports sind, und wenn ja, welches Programm und welche Versionsnummer darauf läuft. Dadurch können Sie quasi dieselbe Information herausfinden wie mit rpcinfo -p, selbst wenn der Portmapper des Ziels hinter einer Firewall liegt (oder von TCP-Wrappern geschützt wird). Köder funktionieren im Moment nicht mit dem RPC-Scan. Das wird automatisch als Teil einer Versionserkennung aktiviert (
-sV
), wenn Sie diese verlangen. Da die Versionserkennung das enthält und wesentlich umfangreicher ist, wird-sR
selten benötigt.