
Dienst- und VersionserkennungLassen 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
http://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 in
nmap-service-probes verändert oder entfernt, oder
Sie geben --allports an, um alle Port zu scannen,
unabhängig von einer Exclude-Anweisung.
-
--version-intensity <intensity> (Intensität des Versions-Scans setzen)
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 der ports-Anweisung in
nmap-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.
|
|