Nmap: Unterschied zwischen den Versionen
K Textersetzung - „Kategorie:Netzwerk“ durch „Kategorie:Netzwerke“ |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
{{DISPLAYTITLE:nmap}} | {{DISPLAYTITLE:nmap}} | ||
= Network Mapper (nmap) = | == Network Mapper (nmap) == | ||
* Nmap ist ein freier Portscanner zum Scannen und Auswerten von Hosts in einem Rechnernetz.[https://de.wikipedia.org/wiki/Nmap] | * Nmap ist ein freier Portscanner zum Scannen und Auswerten von Hosts in einem Rechnernetz.[https://de.wikipedia.org/wiki/Nmap] | ||
* Der Name steht für Network Mapper. | * Der Name steht für Network Mapper. | ||
Zeile 7: | Zeile 7: | ||
* Mit Einschränkungen auch für Windows-Systeme nutzbar (seit 2000).[http://translate.google.com/translate?hl=de&sl=auto&tl=de&u=https%3A%2F%2Fnmap.org%2Fbook%2Finst-windows.html] | * Mit Einschränkungen auch für Windows-Systeme nutzbar (seit 2000).[http://translate.google.com/translate?hl=de&sl=auto&tl=de&u=https%3A%2F%2Fnmap.org%2Fbook%2Finst-windows.html] | ||
=Netzwerke scannen= | ==Netzwerke scannen== | ||
Was ist Network Scanning? | Was ist Network Scanning? | ||
* Netzwerke scannen und analysieren | * Netzwerke scannen und analysieren | ||
Zeile 16: | Zeile 16: | ||
* Überwachung von Betriebszeiten, Hosts oder Diensten | * Überwachung von Betriebszeiten, Hosts oder Diensten | ||
= Zenmap = | == Zenmap == | ||
* Neben der textbasierten Variante gibt es noch die grafische Benutzeroberfläche '''NmapFE''' zur komfortablen Einstellung von Nmap. | * Neben der textbasierten Variante gibt es noch die grafische Benutzeroberfläche '''NmapFE''' zur komfortablen Einstellung von Nmap. | ||
* Wurde mittlerweile durch die '''Zenmap'''[https://wiki.itw-berlin.net/index.php?title=Befehl:zenmap] genannte GUI abgelöst. | * Wurde mittlerweile durch die '''Zenmap'''[https://wiki.itw-berlin.net/index.php?title=Befehl:zenmap] genannte GUI abgelöst. | ||
= Syntax = | == Syntax == | ||
nmap [Scan Type(n)] [Optionen] {Ziel} | nmap [Scan Type(n)] [Optionen] {Ziel} | ||
= Einfacher Portscan = | == Einfacher Portscan == | ||
== nmap ohne Optionen == | === nmap ohne Optionen === | ||
* Es geht darum herauszufinden, ob ein Port offen ist, welche Anwendung dahinter läuft und ob dort Sicherheitslücken und Schwachstellen zu vermuten sind. | * Es geht darum herauszufinden, ob ein Port offen ist, welche Anwendung dahinter läuft und ob dort Sicherheitslücken und Schwachstellen zu vermuten sind. | ||
* Ein einfacher Port-Scanner wird alle Ports pauschal in zwei oder drei Zustände einteilen: | * Ein einfacher Port-Scanner wird alle Ports pauschal in zwei oder drei Zustände einteilen: | ||
# offen, | # offen, | ||
# geschlossen, | # geschlossen, | ||
# gefiltert / geblockt (offen/geschlossen) jeweils mit und ohne Antwort. | # gefiltert / geblockt (offen/geschlossen) jeweils mit und ohne Antwort. | ||
= Port-Zustände = | == Port-Zustände == | ||
==Zustand offen== | ===Zustand offen=== | ||
* Der Zustand "Offen" bedeutet, dass eine Anwendung oder ein Dienst bereit ist TCP-Verbindungen oder UDP-Pakete auf diesem Port anzunehmen. | * Der Zustand "Offen" bedeutet, dass eine Anwendung oder ein Dienst bereit ist TCP-Verbindungen oder UDP-Pakete auf diesem Port anzunehmen. | ||
* Um Kommunikationsverbindungen betreiben zu können, bedarf es offener Ports. | * Um Kommunikationsverbindungen betreiben zu können, bedarf es offener Ports. | ||
* Anzahl offener Ports begrenzen, um die Angriffsfläche so klein wie möglich zu halten. | * Anzahl offener Ports begrenzen, um die Angriffsfläche so klein wie möglich zu halten. | ||
* Offene Ports werden zusätzlich geschützt oder Verbindungsmöglichkeiten eingeschränkt. | * Offene Ports werden zusätzlich geschützt oder Verbindungsmöglichkeiten eingeschränkt. | ||
==Zustand geschlossen== | ===Zustand geschlossen=== | ||
* Der Zustand "Geschlossen" bedeutet, dass keine Anwendung und kein Dienst an diesem Port auf eingehende Datenpakete und Verbindungsversuche lauscht bzw. hört. | * Der Zustand "Geschlossen" bedeutet, dass keine Anwendung und kein Dienst an diesem Port auf eingehende Datenpakete und Verbindungsversuche lauscht bzw. hört. | ||
* Auf ihm sind keine Kommunikationsverbindungen möglich. | * Auf ihm sind keine Kommunikationsverbindungen möglich. | ||
Zeile 44: | Zeile 44: | ||
* Ein Port-Scan soll nur den Zustand eines Ports ermitteln, aber keine echte Verbindung aufbauen. | * Ein Port-Scan soll nur den Zustand eines Ports ermitteln, aber keine echte Verbindung aufbauen. | ||
* Dann kann für diesen Port weder der Status "offen" noch "geschlossen" gelten. | * Dann kann für diesen Port weder der Status "offen" noch "geschlossen" gelten. | ||
==Zustand gefiltert bzw. blockiert== | ===Zustand gefiltert bzw. blockiert=== | ||
* Dafür gibt es den Zustand "gefiltert" oder "blockiert". | * Dafür gibt es den Zustand "gefiltert" oder "blockiert". | ||
* Um offene, aber auch geschlossene Ports zu schützen, setzen Systemadministratoren einen Portfilter (Firewall) ein. | * Um offene, aber auch geschlossene Ports zu schützen, setzen Systemadministratoren einen Portfilter (Firewall) ein. | ||
Zeile 52: | Zeile 52: | ||
* Gefiltert bedeutet, dass eine Firewall, ein Filter oder ein anderes Netzwerkhindernis den Port blockiert. | * Gefiltert bedeutet, dass eine Firewall, ein Filter oder ein anderes Netzwerkhindernis den Port blockiert. | ||
= Ziele festlegen = | == Ziele festlegen == | ||
* NMAP ist bei der Angabe des Scan-Ziels sehr flexibel. | * NMAP ist bei der Angabe des Scan-Ziels sehr flexibel. | ||
* Das kann ein Domain-Name sein, eine IP-Adresse oder ein ganzes Subnetz. | * Das kann ein Domain-Name sein, eine IP-Adresse oder ein ganzes Subnetz. | ||
Zeile 68: | Zeile 68: | ||
|+ | |+ | ||
! Port(s) !! Option | ! Port(s) !! Option | ||
|- | |- | ||
| 22 ||-p22 | | 22 ||-p22 | ||
|- | |- | ||
Zeile 83: | Zeile 83: | ||
== Einzelne Rechner == | === Einzelne Rechner === | ||
* Der Zielbereich ist eine einzelne IP-Adresse | * Der Zielbereich ist eine einzelne IP-Adresse | ||
* Standardmäßig arbeitet Nmap mit IPv4 (es geht aber auch IPv6) | * Standardmäßig arbeitet Nmap mit IPv4 (es geht aber auch IPv6) | ||
* Ein Windows-7-Rechner scannt einen Linux-PC: | * Ein Windows-7-Rechner scannt einen Linux-PC: | ||
Zeile 91: | Zeile 91: | ||
* Das Ergebnis: | * Das Ergebnis: | ||
**997 Ports erkennt Nmap als geschlossen (closed ports) | **997 Ports erkennt Nmap als geschlossen (closed ports) | ||
** Drei Ports sind offen: | ** Drei Ports sind offen: | ||
** Port 21 für FTP (open ftp) | ** Port 21 für FTP (open ftp) | ||
** Port 80 für einen Webserver (open http) und | ** Port 80 für einen Webserver (open http) und | ||
** Port 110 für POP3 (open pop3) | ** Port 110 für POP3 (open pop3) | ||
== Netzwerkbereiche == | === Netzwerkbereiche === | ||
===Bereich auswählen=== | ====Bereich auswählen==== | ||
* Nmap betrachtet alles in der Kommandozeile, was keine Option (oder ein Argument einer Option) ist, als Bezeichnung eines Zielhosts. | * Nmap betrachtet alles in der Kommandozeile, was keine Option (oder ein Argument einer Option) ist, als Bezeichnung eines Zielhosts. | ||
* Der einfachste Fall ist die Beschreibung einer IP-Zieladresse oder eines Zielhostnamens zum Scannen. | * Der einfachste Fall ist die Beschreibung einer IP-Zieladresse oder eines Zielhostnamens zum Scannen. | ||
* Manchmal möchten Sie ein ganzes Netzwerk benachbarter Hosts scannen. | * Manchmal möchten Sie ein ganzes Netzwerk benachbarter Hosts scannen. | ||
* Dafür unterstützt Nmap Adressen im CIDR-Stil [https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing]. | * Dafür unterstützt Nmap Adressen im CIDR-Stil [https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing]. | ||
* Sie können an eine IPv4-Adresse oder einen Hostnamen angefügt werden. | * Sie können an eine IPv4-Adresse oder einen Hostnamen angefügt werden. | ||
* Nmap wird alle IP-Adressen scannen, bei denen die ersten <numbits> mit denen der gegebenen IP oder des gegebenen Hostnamens übereinstimmen. | * Nmap wird alle IP-Adressen scannen, bei denen die ersten <numbits> mit denen der gegebenen IP oder des gegebenen Hostnamens übereinstimmen. | ||
Zeile 109: | Zeile 109: | ||
scanme.nmap.org | scanme.nmap.org | ||
die IP-Adresse 64.13.134.52 hat, würde die Angabe | die IP-Adresse 64.13.134.52 hat, würde die Angabe | ||
scanme.nmap.org/16 | scanme.nmap.org/16 | ||
die 65.536 IP-Adressen zwischen 64.13.0.0 und 64.13.255.255 scannen. | die 65.536 IP-Adressen zwischen 64.13.0.0 und 64.13.255.255 scannen. | ||
* Der kleinste erlaubte Wert ist /0, der das gesamte Internet scannt. | * Der kleinste erlaubte Wert ist /0, der das gesamte Internet scannt. | ||
* Der größte Wert ist /32 und scannt lediglich den Host mit angegebenem Namen oder IP-Adresse, da alle Adressen-Bits festgelegt sind. | * Der größte Wert ist /32 und scannt lediglich den Host mit angegebenem Namen oder IP-Adresse, da alle Adressen-Bits festgelegt sind. | ||
===Teilbereich auswählen=== | ====Teilbereich auswählen==== | ||
* Die CIDR-Notation ist kurz, aber nicht immer flexibel genug. | * Die CIDR-Notation ist kurz, aber nicht immer flexibel genug. | ||
* So möchte man z.B. 192.168.0.0/16 scannen, aber IPs auslassen, die mit .0 oder .255 enden, weil sie als Unternetzwerk und Broadcast-Adressen benutzt werden können. | * So möchte man z.B. 192.168.0.0/16 scannen, aber IPs auslassen, die mit .0 oder .255 enden, weil sie als Unternetzwerk und Broadcast-Adressen benutzt werden können. | ||
Zeile 126: | Zeile 126: | ||
* Diese Art von breiter Abtastung kann bei Internet-Umfragen und -Forschungen hilfreich sein. | * Diese Art von breiter Abtastung kann bei Internet-Umfragen und -Forschungen hilfreich sein. | ||
===IPv6=== | ====IPv6==== | ||
* IPv6-Adressen können nur durch ihre vollständige IPv6-Adresse oder ihren Hostnamen angegeben werden. | * IPv6-Adressen können nur durch ihre vollständige IPv6-Adresse oder ihren Hostnamen angegeben werden. | ||
* CIDR und Oktettbereiche werden für IPv6 nicht unterstützt, weil sie selten nützlich sind. | * CIDR und Oktettbereiche werden für IPv6 nicht unterstützt, weil sie selten nützlich sind. | ||
===Zielauswahl=== | ====Zielauswahl==== | ||
* Auch wenn Ziele normalerweise in der Kommandozeile angegeben werden, gibt es auch die folgenden Optionen, um die Zielauswahl zu steuern: | * Auch wenn Ziele normalerweise in der Kommandozeile angegeben werden, gibt es auch die folgenden Optionen, um die Zielauswahl zu steuern: | ||
-iL <inputfilename> (Eingabe aus einer Liste) | -iL <inputfilename> (Eingabe aus einer Liste) | ||
Zeile 141: | Zeile 141: | ||
-iR <num hosts> (zufällige Auswahl von Zielen) | -iR <num hosts> (zufällige Auswahl von Zielen) | ||
===Internetumfragen=== | ====Internetumfragen==== | ||
* Für internetweite Umfragen und andere Forschungsaktivitäten möchte man Ziele vielleicht zufällig auswählen. | * Für internetweite Umfragen und andere Forschungsaktivitäten möchte man Ziele vielleicht zufällig auswählen. | ||
* Das kann man mit der Option '''-iR''', die als Argument die Anzahl der zu erzeugenden IPs annimmt. | * Das kann man mit der Option '''-iR''', die als Argument die Anzahl der zu erzeugenden IPs annimmt. | ||
* Nmap lässt automatisch bestimmte unerwünschte IPs aus, wie solche in privaten, Multicast- oder unbesetzten Adressbereichen. | * Nmap lässt automatisch bestimmte unerwünschte IPs aus, wie solche in privaten, Multicast- oder unbesetzten Adressbereichen. | ||
* Für einen endlosen Scan kann man das Argument '''0''' angeben. | * Für einen endlosen Scan kann man das Argument '''0''' angeben. | ||
===Beispiele=== | ====Beispiele==== | ||
* Befehl | * Befehl | ||
nmap -sS -PS80 -iR 0 -p 80 | nmap -sS -PS80 -iR 0 -p 80 | ||
sucht Webserver , auf denen man stöbern kann. | sucht Webserver , auf denen man stöbern kann. | ||
Zeile 153: | Zeile 153: | ||
--exclude <host1>[,<host2>[,...]] (Ziele ausklammern) | --exclude <host1>[,<host2>[,...]] (Ziele ausklammern) | ||
gibt eine mit Kommata getrennte Liste von Zielen an, die vom Scan ausgeschlossen sein sollen, selbst wenn sie in den angegebenen Netzwerkbereich fallen. | gibt eine mit Kommata getrennte Liste von Zielen an, die vom Scan ausgeschlossen sein sollen, selbst wenn sie in den angegebenen Netzwerkbereich fallen. | ||
* Die übergebene Liste benutzt die normale Nmap-Syntax und kann folglich Hostnamen, CIDR-Netzblöcke, Oktettbereiche usw. enthalten. | * Die übergebene Liste benutzt die normale Nmap-Syntax und kann folglich Hostnamen, CIDR-Netzblöcke, Oktettbereiche usw. enthalten. | ||
*Das kann nützlich sein, wenn das zu scannende Netzwerk hochkritische Server und Systeme enthält, die man nicht anfassen darf, weil sie bekanntermaßen ungünstig auf Port-Scans reagieren. | *Das kann nützlich sein, wenn das zu scannende Netzwerk hochkritische Server und Systeme enthält, die man nicht anfassen darf, weil sie bekanntermaßen ungünstig auf Port-Scans reagieren. | ||
* Oder Unternetze, die von anderen Leuten administriert werden. | * Oder Unternetze, die von anderen Leuten administriert werden. | ||
Zeile 161: | Zeile 161: | ||
* Unterschied: die ausgeklammerten Ziele in der mit Zeilenumbrüchen, Leerzeichen oder Tabulatoren getrennten Datei <exclude_file> statt auf der Kommandozeile angegeben werden. | * Unterschied: die ausgeklammerten Ziele in der mit Zeilenumbrüchen, Leerzeichen oder Tabulatoren getrennten Datei <exclude_file> statt auf der Kommandozeile angegeben werden. | ||
= Dienste identifizieren = | == Dienste identifizieren == | ||
* Die Ports 25/tcp, 80/tcp und 53/udp sind offen. | * Die Ports 25/tcp, 80/tcp und 53/udp sind offen. | ||
* Dank der Datenbank in '''nmap-services''' gibt Nmap noch aus, dass diese Ports wahrscheinlich jeweils zu einem Mailserver (SMTP), Webserver (HTTP) und Nameserver (DNS) gehören. | * Dank der Datenbank in '''nmap-services''' gibt Nmap noch aus, dass diese Ports wahrscheinlich jeweils zu einem Mailserver (SMTP), Webserver (HTTP) und Nameserver (DNS) gehören. | ||
* 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. | * 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. | ||
* Eine genaue Versionsnummer hilft bei der Bestimmung der Exploits, für die ein Server anfällig ist. | * Eine genaue Versionsnummer hilft bei der Bestimmung der Exploits, für die ein Server anfällig ist. | ||
* Die Versionserkennung hilft Ihnen, an diese Information heranzukommen. | * 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. | * Nachdem TCP- und/oder UDP-Ports mit einer der anderen Scan-Methoden entdeckt wurden, fragt die Versionserkennung diese Ports ab. | ||
* 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. | * 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 | * Nmap versucht, das | ||
#Dienstprotokoll zu bestimmen (z.B. FTP, SSH, Telnet, HTTP), aber auch | #Dienstprotokoll zu bestimmen (z.B. FTP, SSH, Telnet, HTTP), aber auch | ||
#Anwendungsnamen (z.B. ISC BIND, Apache httpd, Solaris telnetd), | #Anwendungsnamen (z.B. ISC BIND, Apache httpd, Solaris telnetd), | ||
#Versionsnummer, | #Versionsnummer, | ||
#Hostnamen, Gerätetyp (z.B. Drucker, Router), | #Hostnamen, Gerätetyp (z.B. Drucker, Router), | ||
#die Betriebssystemfamilie (z.B. Windows, Linux) und manchmal verschiedene Details: | #die Betriebssystemfamilie (z.B. Windows, Linux) und manchmal verschiedene Details: | ||
#etwa ob ein X-Server Verbindungen annimmt, | #etwa ob ein X-Server Verbindungen annimmt, | ||
#die SSH-Protokollversion | #die SSH-Protokollversion | ||
#oder der KaZaA-Benutzername. | #oder der KaZaA-Benutzername. | ||
= Ausgabe steuern = | == Ausgabe steuern == | ||
==Formate== | ===Formate=== | ||
* Nmap erzeugt seine Ausgabe in fünf verschiedenen Formaten. | * Nmap erzeugt seine Ausgabe in fünf verschiedenen Formaten. | ||
* Das Standardformat heißt interaktive Ausgabe und wird an die Standardausgabe '''stdout''' gesendet. | * Das Standardformat heißt interaktive Ausgabe und wird an die Standardausgabe '''stdout''' gesendet. | ||
Zeile 189: | Zeile 189: | ||
* Und '''script KiDDi3 0utput''' für Benutzer, die sich selbst als '''root''' sehen. | * Und '''script KiDDi3 0utput''' für Benutzer, die sich selbst als '''root''' sehen. | ||
==Syntax== | ===Syntax=== | ||
* Die interaktive Ausgabe ist standardmäßig vorgegeben und verfügt über keine eigenen Kommandozeilenoptionen. | * Die interaktive Ausgabe ist standardmäßig vorgegeben und verfügt über keine eigenen Kommandozeilenoptionen. | ||
* Die anderen vier Formate benutzen dieselbe Syntax. | * Die anderen vier Formate benutzen dieselbe Syntax. | ||
Zeile 202: | Zeile 202: | ||
* Nmap bietet auch Optionen zur Steuerung der Scan-Ausführlichkeit und Optionen, um an Ausgabedateien anzuhängen, statt sie zu überschreiben. | * Nmap bietet auch Optionen zur Steuerung der Scan-Ausführlichkeit und Optionen, um an Ausgabedateien anzuhängen, statt sie zu überschreiben. | ||
==Nmap-Ausgabeformate== | ===Nmap-Ausgabeformate=== | ||
Normale Ausgabe | Normale Ausgabe | ||
-oN <filespec> | -oN <filespec> | ||
Zeile 208: | Zeile 208: | ||
* Wie oben erwähnt, unterscheidet sich das leicht von der interaktiven Ausgabe. | * Wie oben erwähnt, unterscheidet sich das leicht von der interaktiven Ausgabe. | ||
XML-Ausgabe | XML-Ausgabe | ||
-oX <filespec> | -oX <filespec> | ||
* Verlangt, dass eine XML-Ausgabe in der angegebenen Datei gespeichert wird. | * Verlangt, dass eine XML-Ausgabe in der angegebenen Datei gespeichert wird. | ||
* Nmap fügt eine DTD (Document Type Definition) hinzu, mit der XML-Parser Nmaps XML-Ausgabe validieren können. | * Nmap fügt eine DTD (Document Type Definition) hinzu, mit der XML-Parser Nmaps XML-Ausgabe validieren können. | ||
Zeile 216: | Zeile 216: | ||
* Solche XML-Parser sind für alle wichtigen Programmiersprachen wie C/C++, Perl, Python und Java verfügbar. | * Solche XML-Parser sind für alle wichtigen Programmiersprachen wie C/C++, Perl, Python und Java verfügbar. | ||
* Beispiele sind Nmap::Scanner und Nmap::Parser für Perl in CPAN. | * Beispiele sind Nmap::Scanner und Nmap::Parser für Perl in CPAN. | ||
===Optionen=== | ====Optionen==== | ||
* Die XML-Ausgabe verweist auf ein XSL-Stylesheet, mit dem man die Ergebnisse als HTML formatieren kann. | * Die XML-Ausgabe verweist auf ein XSL-Stylesheet, mit dem man die Ergebnisse als HTML formatieren kann. | ||
**Nutzung: XML-Ausgabe in einem Webbrowser wie Firefox oder IE laden. | **Nutzung: XML-Ausgabe in einem Webbrowser wie Firefox oder IE laden. | ||
** Funktioniert nur auf dem Rechner, auf dem Sie Nmap ausgeführt haben (oder auf einem, der ähnlich konfiguriert ist). | ** Funktioniert nur auf dem Rechner, auf dem Sie Nmap ausgeführt haben (oder auf einem, der ähnlich konfiguriert ist). | ||
** Der Pfad zu '''nmap.xsl''' ist darin festkodiert. | ** Der Pfad zu '''nmap.xsl''' ist darin festkodiert. | ||
** Um portable XML-Dateien zu erzeugen, die auf allen mit dem Web verbundenen Rechnern als HTML angezeigt werden, nutzt man die Optionen '''--webxml''' oder '''--stylesheet'''. | ** Um portable XML-Dateien zu erzeugen, die auf allen mit dem Web verbundenen Rechnern als HTML angezeigt werden, nutzt man die Optionen '''--webxml''' oder '''--stylesheet'''. | ||
====Optionen für Ausführlichkeit und Debugging==== | =====Optionen für Ausführlichkeit und Debugging===== | ||
Größere Ausführlichkeit | Größere Ausführlichkeit | ||
-v | -v | ||
Zeile 231: | Zeile 231: | ||
* Allerdings gibt es in den anderen Modi einige Änderungen, bei denen die Ausgabegröße durch Weglassen einiger Details erheblich reduziert wird. | * Allerdings gibt es in den anderen Modi einige Änderungen, bei denen die Ausgabegröße durch Weglassen einiger Details erheblich reduziert wird. | ||
Erhöhe oder setze Debugging-Stufe | Erhöhe oder setze Debugging-Stufe | ||
-d [level] | -d [level] | ||
* Beim Debugging noch wesentlich mehr Daten bekommen. | * Beim Debugging noch wesentlich mehr Daten bekommen. | ||
* Die Debug-Stufe auch als Argument an -d übergeben. So setzt z.B. -d9 die Stufe neun. | * Die Debug-Stufe auch als Argument an -d übergeben. So setzt z.B. -d9 die Stufe neun. | ||
* Das ist die höchste verfügbare Stufe. | * Das ist die höchste verfügbare Stufe. | ||
Gründe für Host- und Portzustände | Gründe für Host- und Portzustände | ||
--reason | --reason | ||
* Gibt die Gründe an, warum ein Port auf einen bestimmten Zustand gesetzt wurde und warum ein Host als ein- oder ausgeschaltet betrachtet wird. | * Gibt die Gründe an, warum ein Port auf einen bestimmten Zustand gesetzt wurde und warum ein Host als ein- oder ausgeschaltet betrachtet wird. | ||
* Diese Option zeigt die Paketart an, die einen Port- oder Hostzustand ermittelt hat. | * Diese Option zeigt die Paketart an, die einen Port- oder Hostzustand ermittelt hat. | ||
* Die Information, die Nmap angeben kann, hängt von der Art des Scans oder Pings ab. | * Die Information, die Nmap angeben kann, hängt von der Art des Scans oder Pings ab. | ||
* Der SYN-Scan und der SYN-Ping (-sS und -PS) sind sehr detailliert. | * Der SYN-Scan und der SYN-Ping (-sS und -PS) sind sehr detailliert. | ||
* Der TCP-Connect-Scan (-sT) wird durch die Implementierung des connect-Systemaufrufs beschränkt. | * Der TCP-Connect-Scan (-sT) wird durch die Implementierung des connect-Systemaufrufs beschränkt. | ||
Periodische Timing-Statistik ausgeben | Periodische Timing-Statistik ausgeben | ||
--stats-every <time> | --stats-every <time> | ||
* Gibt periodisch eine Timing-Statusmeldung nach einem Intervall der Länge <time> aus. | * Gibt periodisch eine Timing-Statusmeldung nach einem Intervall der Länge <time> aus. | ||
Gesendete und empfangene Pakete und Daten mitverfolgen | Gesendete und empfangene Pakete und Daten mitverfolgen | ||
--packet-trace | --packet-trace | ||
* Bewirkt, dass Nmap für jedes gesendete oder empfangene Paket eine Zusammenfassung ausgibt. | * Bewirkt, dass Nmap für jedes gesendete oder empfangene Paket eine Zusammenfassung ausgibt. | ||
Zeige nur offene (oder möglicherweise offene) Ports an | Zeige nur offene (oder möglicherweise offene) Ports an | ||
--open | --open | ||
* Manchmal interessieren nur offene Ports, und nicht Ports, die geschlossen, gefiltert und geschlossen|gefiltert sind | * Manchmal interessieren nur offene Ports, und nicht Ports, die geschlossen, gefiltert und geschlossen|gefiltert sind | ||
Liste Schnittstellen und Routen auf | Liste Schnittstellen und Routen auf | ||
--iflist | --iflist | ||
* Gibt die Liste der Schnittstellen und Systemrouten aus, die Nmap entdeckt hat. | * Gibt die Liste der Schnittstellen und Systemrouten aus, die Nmap entdeckt hat. | ||
Protokolliere Fehler/Warnungen in eine Datei im normalen Ausgabeformat . | Protokolliere Fehler/Warnungen in eine Datei im normalen Ausgabeformat . | ||
--log-errors | --log-errors | ||
* Von Nmap ausgegebene Warnungen und Fehlermeldungen gehen nur auf den Bildschirm (interaktive Ausgabe). | * Von Nmap ausgegebene Warnungen und Fehlermeldungen gehen nur auf den Bildschirm (interaktive Ausgabe). | ||
* Eine Alternative zu '''--log-error'''s ist die Umleitung der interaktiven Ausgabe (inklusive des Standardfehlerstroms) in eine Datei. | * Eine Alternative zu '''--log-error'''s ist die Umleitung der interaktiven Ausgabe (inklusive des Standardfehlerstroms) in eine Datei. | ||
==OPTIONSÜBERSICHT== | ===OPTIONSÜBERSICHT=== | ||
nmap [Scan Type(s)] [Options] {target specification} | nmap [Scan Type(s)] [Options] {target specification} | ||
===ZIEL-SPEZIFIKATION=== | ====ZIEL-SPEZIFIKATION==== | ||
*Can pass hostnames, IP addresses, networks, etc. | *Can pass hostnames, IP addresses, networks, etc. | ||
*Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254 | *Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254 | ||
Zeile 268: | Zeile 268: | ||
*--excludefile <exclude_file>: Exclude list from file | *--excludefile <exclude_file>: Exclude list from file | ||
===HOST ENTDECKUNG=== | ====HOST ENTDECKUNG==== | ||
*-sL: List Scan - simply list targets to scan | *-sL: List Scan - simply list targets to scan | ||
*-sP: Ping Scan - go no further than determining if host is online | *-sP: Ping Scan - go no further than determining if host is online | ||
Zeile 280: | Zeile 280: | ||
*--traceroute: Trace hop path to each host | *--traceroute: Trace hop path to each host | ||
===SCAN TECHNIKEN=== | ====SCAN TECHNIKEN==== | ||
*-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans | *-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans | ||
*-sU: UDP Scan | *-sU: UDP Scan | ||
Zeile 289: | Zeile 289: | ||
*-b <FTP relay host>: FTP bounce scan | *-b <FTP relay host>: FTP bounce scan | ||
===PORT SPEZIFIKATION und SCAN BEFEHL=== | ====PORT SPEZIFIKATION und SCAN BEFEHL==== | ||
*-p <port ranges>: Only scan specified ports | *-p <port ranges>: Only scan specified ports | ||
* Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080 | * Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080 | ||
Zeile 297: | Zeile 297: | ||
*--port-ratio <ratio>: Scan ports more common than <ratio> | *--port-ratio <ratio>: Scan ports more common than <ratio> | ||
===SERVICE/VERSIONS ERKENNUNG=== | ====SERVICE/VERSIONS ERKENNUNG==== | ||
*-sV: Probe open ports to determine service/version info | *-sV: Probe open ports to determine service/version info | ||
*--version-intensity <level>: Set from 0 (light) to 9 (try all probes) | *--version-intensity <level>: Set from 0 (light) to 9 (try all probes) | ||
Zeile 304: | Zeile 304: | ||
*--version-trace: Show detailed version scan activity (for debugging) | *--version-trace: Show detailed version scan activity (for debugging) | ||
===SCRIPT SCAN=== | ====SCRIPT SCAN==== | ||
*-sC: equivalent to --script=default | *-sC: equivalent to --script=default | ||
*--script=<Lua scripts>: <Lua scripts> is a comma separated list of directories, script-files or script-categories | *--script=<Lua scripts>: <Lua scripts> is a comma separated list of directories, script-files or script-categories | ||
Zeile 311: | Zeile 311: | ||
*--script-updatedb: Update the script database. | *--script-updatedb: Update the script database. | ||
===OS ERKENNUNG=== | ====OS ERKENNUNG==== | ||
OS-Fingerprinting (engl. für „Betriebssystem-Fingerabdruck“) | OS-Fingerprinting (engl. für „Betriebssystem-Fingerabdruck“) | ||
*-O: Enable OS detection | *-O: Enable OS detection | ||
Zeile 317: | Zeile 317: | ||
*--osscan-guess: Guess OS more aggressively | *--osscan-guess: Guess OS more aggressively | ||
===TIMING und DARSTELLUNG=== | ====TIMING und DARSTELLUNG==== | ||
*Options which take <time> are in milliseconds, unless you append 's'(seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m). | *Options which take <time> are in milliseconds, unless you append 's'(seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m). | ||
*-T<0-5>: Set timing template (higher is faster) | *-T<0-5>: Set timing template (higher is faster) | ||
Zeile 329: | Zeile 329: | ||
*--max-rate <number>: Send packets no faster than <number> per second | *--max-rate <number>: Send packets no faster than <number> per second | ||
===FIREWALL/IDS UMGEHUNG und -TÄUSCHUNG=== | ====FIREWALL/IDS UMGEHUNG und -TÄUSCHUNG==== | ||
*-f; --mtu <val>: fragment packets (optionally w/given MTU) | *-f; --mtu <val>: fragment packets (optionally w/given MTU) | ||
*-D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys | *-D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys | ||
Zeile 341: | Zeile 341: | ||
*--badsum: Send packets with a bogus TCP/UDP checksum | *--badsum: Send packets with a bogus TCP/UDP checksum | ||
===OUTPUT=== | ====OUTPUT==== | ||
*-oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,and Grepable format, respectively, to the given filename. | *-oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,and Grepable format, respectively, to the given filename. | ||
*-oA <basename>: Output in the three major formats at once | *-oA <basename>: Output in the three major formats at once | ||
Zeile 357: | Zeile 357: | ||
*--no-stylesheet: Prevent associating of XSL stylesheet w/XML output | *--no-stylesheet: Prevent associating of XSL stylesheet w/XML output | ||
===MISC=== | ====MISC==== | ||
MISC ("Minimal instruction set computer" engl. für Computer mit minimalem Befehlssatz) | MISC ("Minimal instruction set computer" engl. für Computer mit minimalem Befehlssatz) | ||
*-6: Enable IPv6 scanning | *-6: Enable IPv6 scanning | ||
Zeile 368: | Zeile 368: | ||
*-h: Print this help summary page. | *-h: Print this help summary page. | ||
===BEISPIELE=== | ====BEISPIELE==== | ||
*nmap -v -A scanme.nmap.org | *nmap -v -A scanme.nmap.org | ||
*nmap -v -sP 192.168.0.0/16 10.0.0.0/8 | *nmap -v -sP 192.168.0.0/16 10.0.0.0/8 | ||
*nmap -v -iR 10000 -PN -p 80 | *nmap -v -iR 10000 -PN -p 80 | ||
==Weitere Ausgabeoptionen== | ===Weitere Ausgabeoptionen=== | ||
--append-output | --append-output | ||
(an Ausgabedateien hinzufügen, statt sie zu überschreiben) | (an Ausgabedateien hinzufügen, statt sie zu überschreiben) | ||
*Wenn man einen Dateinamen für ein Ausgabeformat wie z.B. -oX oder -oN angibt, wird diese Datei standardmäßig überschrieben. | *Wenn man einen Dateinamen für ein Ausgabeformat wie z.B. -oX oder -oN angibt, wird diese Datei standardmäßig überschrieben. | ||
* Wenn man deren Inhalt lieber behalten und die neuen Ergebnisse anhängen möchten, benutzen Sie die Option '''--append-output'''. . | * Wenn man deren Inhalt lieber behalten und die neuen Ergebnisse anhängen möchten, benutzen Sie die Option '''--append-output'''. . | ||
--resume <filename> | --resume <filename> | ||
(abgebrochenen Scan fortsetzen) | (abgebrochenen Scan fortsetzen) | ||
*Manche umfangreichen Nmap-Läufe benötigen sehr viel Zeit – in der Größenordnung von Tagen. | *Manche umfangreichen Nmap-Läufe benötigen sehr viel Zeit – in der Größenordnung von Tagen. | ||
*Solche Scans laufen nicht immer bis zum Ende. | *Solche Scans laufen nicht immer bis zum Ende. | ||
*Es gibt Beschränkungen, die verhindern, dass man Nmap während der | *Es gibt Beschränkungen, die verhindern, dass man Nmap während der | ||
**normalen Arbeitszeit ausführen kann, | **normalen Arbeitszeit ausführen kann, | ||
**das Netzwerk könnte abstürzen, | **das Netzwerk könnte abstürzen, | ||
**der Rechner, auf dem Nmap läuft, könnte einen geplanten oder ungeplanten Neustart erleben oder | **der Rechner, auf dem Nmap läuft, könnte einen geplanten oder ungeplanten Neustart erleben oder | ||
**Nmap selbst könnte abstürzen. | **Nmap selbst könnte abstürzen. | ||
--stylesheet <path or URL> | --stylesheet <path or URL> | ||
(setze XSL-Stylesheet, um eine XML-Ausgabe zu transformieren) | (setze XSL-Stylesheet, um eine XML-Ausgabe zu transformieren) | ||
*Die Nmap-Distribution enthält ein XSL-Stylesheet namens '''nmap.xsl''' zum Betrachten oder Übersetzen einer XML-Ausgabe nach HTML. | *Die Nmap-Distribution enthält ein XSL-Stylesheet namens '''nmap.xsl''' zum Betrachten oder Übersetzen einer XML-Ausgabe nach HTML. | ||
--webxml | --webxml | ||
(lade Stylesheet von Nmap.Org) | (lade Stylesheet von Nmap.Org) | ||
*Diese bequeme Option ist nur ein Alias für --stylesheet[https://nmap.org/data/nmap.xsl]. | *Diese bequeme Option ist nur ein Alias für --stylesheet[https://nmap.org/data/nmap.xsl]. | ||
--no-stylesheet | --no-stylesheet | ||
(lasse XSL-Stylesheet-Deklaration im XML weg) | (lasse XSL-Stylesheet-Deklaration im XML weg) | ||
* Gibt man die Option an, dann wird Nmap in seiner XML-Ausgabe auf keinerlei XSL-Stylesheet verweisen. | * Gibt man die Option an, dann wird Nmap in seiner XML-Ausgabe auf keinerlei XSL-Stylesheet verweisen. | ||
* Die xml-stylesheet-Anweisung wird dann weggelassen. | * Die xml-stylesheet-Anweisung wird dann weggelassen. | ||
=Links= | ==Links== | ||
== Siehe auch == | === Siehe auch === | ||
# [[nmap:Portscan-Typen]] | # [[nmap:Portscan-Typen]] | ||
# [[zenmap]] | # [[zenmap]] | ||
== Weblinks == | === Weblinks === | ||
# https://de.wikipedia.org/wiki/Nmap | # https://de.wikipedia.org/wiki/Nmap | ||
# http://translate.google.com/translate?hl=de&sl=auto&tl=de&u=https%3A%2F%2Fnmap.org%2Fbook%2Finst-windows.html | # http://translate.google.com/translate?hl=de&sl=auto&tl=de&u=https%3A%2F%2Fnmap.org%2Fbook%2Finst-windows.html | ||
# https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing | # https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing | ||
# http://mikiwiki.org/wiki/grep | # http://mikiwiki.org/wiki/grep | ||
# https://svn.nmap.org/nmap/docs/nmap.xsl | # https://svn.nmap.org/nmap/docs/nmap.xsl | ||
# https://nmap.org/man/de/man-os-detection.html | # https://nmap.org/man/de/man-os-detection.html | ||
Zeile 417: | Zeile 417: | ||
[[Kategorie:Netzwerke:Befehl]] | [[Kategorie:Netzwerke:Befehl]] | ||
[[Kategorie:Linux:Befehl]] | [[Kategorie:Linux:Befehl]] | ||
[[Kategorie:Netzwerke:Analyse]] | |||
{{DEFAULTSORT:nmap}} | {{DEFAULTSORT:nmap}} | ||
Version vom 11. Dezember 2022, 15:52 Uhr
Network Mapper (nmap)
- Nmap ist ein freier Portscanner zum Scannen und Auswerten von Hosts in einem Rechnernetz.[1]
- Der Name steht für Network Mapper.
- Ursprünglich für Linux entwickelt.
- Mit Einschränkungen auch für Windows-Systeme nutzbar (seit 2000).[2]
Netzwerke scannen
Was ist Network Scanning?
- Netzwerke scannen und analysieren
- Angeschlossene und aktive Systeme erkennen
- Details zu Diensten, Konfigurationen und Versionen bestimmen
- Netzwerk-Inventarisierung
- Dienste-Aktualisierungen prüfen
- Überwachung von Betriebszeiten, Hosts oder Diensten
Zenmap
- Neben der textbasierten Variante gibt es noch die grafische Benutzeroberfläche NmapFE zur komfortablen Einstellung von Nmap.
- Wurde mittlerweile durch die Zenmap[3] genannte GUI abgelöst.
Syntax
nmap [Scan Type(n)] [Optionen] {Ziel}
Einfacher Portscan
nmap ohne Optionen
- Es geht darum herauszufinden, ob ein Port offen ist, welche Anwendung dahinter läuft und ob dort Sicherheitslücken und Schwachstellen zu vermuten sind.
- Ein einfacher Port-Scanner wird alle Ports pauschal in zwei oder drei Zustände einteilen:
- offen,
- geschlossen,
- gefiltert / geblockt (offen/geschlossen) jeweils mit und ohne Antwort.
Port-Zustände
Zustand offen
- Der Zustand "Offen" bedeutet, dass eine Anwendung oder ein Dienst bereit ist TCP-Verbindungen oder UDP-Pakete auf diesem Port anzunehmen.
- Um Kommunikationsverbindungen betreiben zu können, bedarf es offener Ports.
- Anzahl offener Ports begrenzen, um die Angriffsfläche so klein wie möglich zu halten.
- Offene Ports werden zusätzlich geschützt oder Verbindungsmöglichkeiten eingeschränkt.
Zustand geschlossen
- Der Zustand "Geschlossen" bedeutet, dass keine Anwendung und kein Dienst an diesem Port auf eingehende Datenpakete und Verbindungsversuche lauscht bzw. hört.
- Auf ihm sind keine Kommunikationsverbindungen möglich.
- Ein geschlossener Port ist nur so lange geschlossen, wie eine Anwendung auf diesen Port hört und Verbindungen und Pakete annimmt.
- So verhindert man z.B. die Verbindungsversuche durch Port-Scans.
- Ein Port-Scan soll nur den Zustand eines Ports ermitteln, aber keine echte Verbindung aufbauen.
- Dann kann für diesen Port weder der Status "offen" noch "geschlossen" gelten.
Zustand gefiltert bzw. blockiert
- Dafür gibt es den Zustand "gefiltert" oder "blockiert".
- Um offene, aber auch geschlossene Ports zu schützen, setzen Systemadministratoren einen Portfilter (Firewall) ein.
- Weil er die dahinterliegende Anwendung nicht kennt, kann er nur Testpakete an einen Port schicken.
- Der Filter verhindert, dass diese Testpakete durchkommen.
- In der Regel werden diese Pakete verworfen.
- Gefiltert bedeutet, dass eine Firewall, ein Filter oder ein anderes Netzwerkhindernis den Port blockiert.
Ziele festlegen
- NMAP ist bei der Angabe des Scan-Ziels sehr flexibel.
- Das kann ein Domain-Name sein, eine IP-Adresse oder ein ganzes Subnetz.
Domain: www. XXX.XX IP-Adresse: 192.168.1.1 Subnetz: 192.168.1.1/24 Subnetz: 192.168.1.*
- Man sollte einen Port-Scan nicht auf ein ganzes Subnetz anwenden.
- Ein ganzes Subnetz zu scannen, kann sehr lange dauern, wenn die Hosts gefilterte Ports haben.
- Die Anzahl der Ports reicht von 1 bis 65.535.
- NMAP scannt standardmäßig nur etwa 1.000 der meistgenutzten Ports, die in der Datenbank "nmap-services" aufgelistet sind.
- Mit der Option "-F" (für engl. fast, dt. schnell) kann man den Port-Scan sogar auf die 100 meistgenutzten Ports beschränken.
- Interessante Ports scannen mit der Option "-p":
Port(s) | Option |
---|---|
22 | -p22 |
22,25,80 | -p22,25,80 |
1 - 100 | -p-100 |
80 - 88 | -p80-88 |
>60000 | -p60000- |
1 - 65535 | -p- |
Einzelne Rechner
- Der Zielbereich ist eine einzelne IP-Adresse
- Standardmäßig arbeitet Nmap mit IPv4 (es geht aber auch IPv6)
- Ein Windows-7-Rechner scannt einen Linux-PC:
- nmap 172.16.24.102 (Nmap scan report for)
- Die IP-Adresse gehört also dem Linux-Rechner, den wir mit Nmap auf offene Ports hin überprüfen.
- Das Ergebnis:
- 997 Ports erkennt Nmap als geschlossen (closed ports)
- Drei Ports sind offen:
- Port 21 für FTP (open ftp)
- Port 80 für einen Webserver (open http) und
- Port 110 für POP3 (open pop3)
Netzwerkbereiche
Bereich auswählen
- Nmap betrachtet alles in der Kommandozeile, was keine Option (oder ein Argument einer Option) ist, als Bezeichnung eines Zielhosts.
- Der einfachste Fall ist die Beschreibung einer IP-Zieladresse oder eines Zielhostnamens zum Scannen.
- Manchmal möchten Sie ein ganzes Netzwerk benachbarter Hosts scannen.
- Dafür unterstützt Nmap Adressen im CIDR-Stil [4].
- Sie können an eine IPv4-Adresse oder einen Hostnamen angefügt werden.
- Nmap wird alle IP-Adressen scannen, bei denen die ersten <numbits> mit denen der gegebenen IP oder des gegebenen Hostnamens übereinstimmen.
- Z.B.: würde 192.168.10.0/24 die 256 Hosts zwischen 192.168.10.0 (binär: 1100.0000.1010.1000.0000.1010.0000.0000) und 192.168.10.255 (binär: 1100.0000.1010.1000.0000.1010.1111.1111, inklusive) scannen.
- 192.168.10.40/24 würde genau dieselben Ziele scannen.
- Dadurch, dass der Host
scanme.nmap.org
die IP-Adresse 64.13.134.52 hat, würde die Angabe
scanme.nmap.org/16
die 65.536 IP-Adressen zwischen 64.13.0.0 und 64.13.255.255 scannen.
- Der kleinste erlaubte Wert ist /0, der das gesamte Internet scannt.
- Der größte Wert ist /32 und scannt lediglich den Host mit angegebenem Namen oder IP-Adresse, da alle Adressen-Bits festgelegt sind.
Teilbereich auswählen
- Die CIDR-Notation ist kurz, aber nicht immer flexibel genug.
- So möchte man z.B. 192.168.0.0/16 scannen, aber IPs auslassen, die mit .0 oder .255 enden, weil sie als Unternetzwerk und Broadcast-Adressen benutzt werden können.
- Nmap unterstützt das in Form einer Oktett-Bereichsadressierung.
- Statt eine normale IP-Adresse anzugeben, kann man eine mit Kommata getrennte Liste von Zahlen oder Bereichen für jedes Oktett angeben.
- Z.B. überspringt 192.168.0-255.1-254 alle Adressen im Bereich, die mit .0 oder .255 enden, und 192.168.3-5,7.1 scannt die vier Adressen 192.168.3.1, 192.168.4.1, 192.168.5.1 und 192.168.7.1.
- Beide Bereichsgrenzen können weggelassen werden, die Standardwerte sind 0 für die linke und 255 für die rechte Grenze.
- Wenn Sie allein - benutzen, ist das identisch mit 0-255.
- Im ersten Oktett dann 0- benutzen, damit die Zielangabe nicht wie eine Kommandozeilenoption aussieht.
- Die Angabe 0-255.0-255.13.37 führt einen internetweiten Scan über alle IP-Adressen aus, die mit 13.37 enden.
- Diese Art von breiter Abtastung kann bei Internet-Umfragen und -Forschungen hilfreich sein.
IPv6
- IPv6-Adressen können nur durch ihre vollständige IPv6-Adresse oder ihren Hostnamen angegeben werden.
- CIDR und Oktettbereiche werden für IPv6 nicht unterstützt, weil sie selten nützlich sind.
Zielauswahl
- Auch wenn Ziele normalerweise in der Kommandozeile angegeben werden, gibt es auch die folgenden Optionen, um die Zielauswahl zu steuern:
-iL <inputfilename> (Eingabe aus einer Liste)
- Eine sehr lange Liste von Hosts in der Kommandozeile anzugeben ist oft sehr umständlich, kommt aber sehr häufig vor.
- Der DHCP-Server z.B. exportiert vielleicht eine Liste von 10.000 aktuellen Adresszuweisungen (engl. leases), die Sie scannen möchten.
- Man möchte z.B. alle IP-Adressen außer denjenigen scannen, um Hosts , die unautorisierte statische IP-Adressen benutzen zu finden.
- Die Liste der zu scannenden Hosts und übergibt deren Dateinamen als Argument zur Option -iL an Nmap.
- Die Einträge dürfen alle Formate haben, die Nmap auf der Kommandozeile akzeptiert (IP-Adresse, Hostname, CIDR, IPv6 oder Oktettbereiche).
- Alle Einträge müssen durch ein oder mehrere Leerzeichen, Tabulatoren oder Zeilenumbrüche getrennt sein.
- Wenn man einen Bindestrich (-) als Dateinamen angibt, liest Nmap die Hosts von der Standardeingabe statt aus einer normalen Datei.
-iR <num hosts> (zufällige Auswahl von Zielen)
Internetumfragen
- Für internetweite Umfragen und andere Forschungsaktivitäten möchte man Ziele vielleicht zufällig auswählen.
- Das kann man mit der Option -iR, die als Argument die Anzahl der zu erzeugenden IPs annimmt.
- Nmap lässt automatisch bestimmte unerwünschte IPs aus, wie solche in privaten, Multicast- oder unbesetzten Adressbereichen.
- Für einen endlosen Scan kann man das Argument 0 angeben.
Beispiele
- Befehl
nmap -sS -PS80 -iR 0 -p 80
sucht Webserver , auf denen man stöbern kann.
- Befehl
--exclude <host1>[,<host2>[,...]] (Ziele ausklammern)
gibt eine mit Kommata getrennte Liste von Zielen an, die vom Scan ausgeschlossen sein sollen, selbst wenn sie in den angegebenen Netzwerkbereich fallen.
- Die übergebene Liste benutzt die normale Nmap-Syntax und kann folglich Hostnamen, CIDR-Netzblöcke, Oktettbereiche usw. enthalten.
- Das kann nützlich sein, wenn das zu scannende Netzwerk hochkritische Server und Systeme enthält, die man nicht anfassen darf, weil sie bekanntermaßen ungünstig auf Port-Scans reagieren.
- Oder Unternetze, die von anderen Leuten administriert werden.
- Befehl
--excludefile<-exclude_file> (Liste aus Datei ausklammern)
- Das bietet dieselbe Funktionalität wie die Option --exclude.
- Unterschied: die ausgeklammerten Ziele in der mit Zeilenumbrüchen, Leerzeichen oder Tabulatoren getrennten Datei <exclude_file> statt auf der Kommandozeile angegeben werden.
Dienste identifizieren
- Die Ports 25/tcp, 80/tcp und 53/udp sind offen.
- Dank der Datenbank in nmap-services gibt Nmap noch aus, dass diese Ports wahrscheinlich jeweils zu einem Mailserver (SMTP), Webserver (HTTP) und Nameserver (DNS) gehören.
- 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.
- Eine genaue Versionsnummer hilft 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.
- 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.
Ausgabe steuern
Formate
- Nmap erzeugt seine Ausgabe in fünf verschiedenen Formaten.
- Das Standardformat heißt interaktive Ausgabe und wird an die Standardausgabe stdout gesendet.
- Es gibt auch die normale Ausgabe, die ähnlich zur interaktiven Ausgabe ist, außer dass sie weniger Laufzeitinformation und Warnungen ausgibt
- Man geht davon aus, dass sie erst nach Abschluss des Scans analysiert wird und nicht, während sie noch läuft.
- Die XML-Ausgabe ist eines der wichtigsten Ausgabeformate, da sie einfach nach HTML konvertiert, von Programmen wie Nmap-GUIs geparst oder in Datenbanken importiert werden kann.
- Die zwei verbleibenden Ausgabeformate sind einfache grepbare[5] Ausgaben, in der die meiste Information über einen Zielhost in einer einzigen Zeile enthalten ist.
- Und script KiDDi3 0utput für Benutzer, die sich selbst als root sehen.
Syntax
- Die interaktive Ausgabe ist standardmäßig vorgegeben und verfügt über keine eigenen Kommandozeilenoptionen.
- Die anderen vier Formate benutzen dieselbe Syntax.
- Sie erwarten ein Argument, den Namen der Datei, in der die Ergebnisse gespeichert werden sollen.
- Es können mehrere Formate angegeben werden, aber jedes nur einmal.
- Eine normale Ausgabe für eine eigene Untersuchung speichern und eine XML-Ausgabe desselben Scans für eine programmbasierte Analyse.
- Das erreicht man mit den Optionen -oX myscan.xml und -oN myscan.nmap.
- Obwohl myscan.xml benutzt wird, empfehlen sich aussagekräftigere Namen.
- Der Befehl nmap -oX myscan.xml target XML speichert in myscan.xml'.
- Mit einem Minuszeichen als Argument für eines der Formate eingeben. Dann schaltet Nmap die interaktive Ausgabe ab.
- Das heißt, der Befehl nmap -oX - target schreibt nur die XML-Ausgabe auf die Standardausgabe.
- Nmap bietet auch Optionen zur Steuerung der Scan-Ausführlichkeit und Optionen, um an Ausgabedateien anzuhängen, statt sie zu überschreiben.
Nmap-Ausgabeformate
Normale Ausgabe
-oN <filespec>
- Verlangt, dass eine normale Ausgabe in der angegebenen Datei gespeichert wird.
- Wie oben erwähnt, unterscheidet sich das leicht von der interaktiven Ausgabe.
XML-Ausgabe
-oX <filespec>
- Verlangt, dass eine XML-Ausgabe in der angegebenen Datei gespeichert wird.
- Nmap fügt eine DTD (Document Type Definition) hinzu, mit der XML-Parser Nmaps XML-Ausgabe validieren können.
- Diese ist für die Benutzung durch Programme gedacht, kann aber auch bei der Interpretation von Nmaps XML-Ausgabe helfen.
- Die DTD definiert die gültigen Elemente des Formats und zählt an vielen Stellen die dafür erlaubten Attribute und Werte auf.
- XML bietet ein stabiles Format, das man mit Software leicht parsen kann.
- Solche XML-Parser sind für alle wichtigen Programmiersprachen wie C/C++, Perl, Python und Java verfügbar.
- Beispiele sind Nmap::Scanner und Nmap::Parser für Perl in CPAN.
Optionen
- Die XML-Ausgabe verweist auf ein XSL-Stylesheet, mit dem man die Ergebnisse als HTML formatieren kann.
- Nutzung: XML-Ausgabe in einem Webbrowser wie Firefox oder IE laden.
- Funktioniert nur auf dem Rechner, auf dem Sie Nmap ausgeführt haben (oder auf einem, der ähnlich konfiguriert ist).
- Der Pfad zu nmap.xsl ist darin festkodiert.
- Um portable XML-Dateien zu erzeugen, die auf allen mit dem Web verbundenen Rechnern als HTML angezeigt werden, nutzt man die Optionen --webxml oder --stylesheet.
Optionen für Ausführlichkeit und Debugging
Größere Ausführlichkeit
-v
- Erhöht die Ausführlichkeit, d.h. Nmap gibt mehr Informationen über den laufenden Scan aus.
- Offene Ports werden angezeigt, direkt nachdem sie gefunden werden.
- Es werden Schätzungen für die Dauer bis zur Fertigstellung angegeben.
- Noch mehr Information erhält man, wenn man diese Option zweimal oder noch öfter angibt.
- Allerdings gibt es in den anderen Modi einige Änderungen, bei denen die Ausgabegröße durch Weglassen einiger Details erheblich reduziert wird.
Erhöhe oder setze Debugging-Stufe
-d [level]
- Beim Debugging noch wesentlich mehr Daten bekommen.
- Die Debug-Stufe auch als Argument an -d übergeben. So setzt z.B. -d9 die Stufe neun.
- Das ist die höchste verfügbare Stufe.
Gründe für Host- und Portzustände
--reason
- Gibt die Gründe an, warum ein Port auf einen bestimmten Zustand gesetzt wurde und warum ein Host als ein- oder ausgeschaltet betrachtet wird.
- Diese Option zeigt die Paketart an, die einen Port- oder Hostzustand ermittelt hat.
- Die Information, die Nmap angeben kann, hängt von der Art des Scans oder Pings ab.
- Der SYN-Scan und der SYN-Ping (-sS und -PS) sind sehr detailliert.
- Der TCP-Connect-Scan (-sT) wird durch die Implementierung des connect-Systemaufrufs beschränkt.
Periodische Timing-Statistik ausgeben
--stats-every
- Gibt periodisch eine Timing-Statusmeldung nach einem Intervall der Länge
Gesendete und empfangene Pakete und Daten mitverfolgen
--packet-trace
- Bewirkt, dass Nmap für jedes gesendete oder empfangene Paket eine Zusammenfassung ausgibt.
Zeige nur offene (oder möglicherweise offene) Ports an
--open
- Manchmal interessieren nur offene Ports, und nicht Ports, die geschlossen, gefiltert und geschlossen|gefiltert sind
Liste Schnittstellen und Routen auf
--iflist
- Gibt die Liste der Schnittstellen und Systemrouten aus, die Nmap entdeckt hat.
Protokolliere Fehler/Warnungen in eine Datei im normalen Ausgabeformat .
--log-errors
- Von Nmap ausgegebene Warnungen und Fehlermeldungen gehen nur auf den Bildschirm (interaktive Ausgabe).
- Eine Alternative zu --log-errors ist die Umleitung der interaktiven Ausgabe (inklusive des Standardfehlerstroms) in eine Datei.
OPTIONSÜBERSICHT
nmap [Scan Type(s)] [Options] {target specification}
ZIEL-SPEZIFIKATION
- Can pass hostnames, IP addresses, networks, etc.
- Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
- -iL <inputfilename>: Input from list of hosts/networks* -iR <num hosts>: Choose random targets
- --exclude <host1[,host2][,host3],...>: Exclude hosts/networks
- --excludefile <exclude_file>: Exclude list from file
HOST ENTDECKUNG
- -sL: List Scan - simply list targets to scan
- -sP: Ping Scan - go no further than determining if host is online
- -PN: Treat all hosts as online -- skip host discovery
- -PS/PA/PU[portlist]: TCP SYN/ACK or UDP discovery to given ports
- -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
- -PO[protocol list]: IP Protocol Ping
- -n/-R: Never do DNS resolution/Always resolve [default: sometimes]
- --dns-servers <serv1[,serv2],...>: Specify custom DNS servers
- --system-dns: Use OS's DNS resolver
- --traceroute: Trace hop path to each host
SCAN TECHNIKEN
- -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
- -sU: UDP Scan
- -sN/sF/sX: TCP Null, FIN, and Xmas scans
- --scanflags <flags>: Customize TCP scan flags
- -sI <zombie host[:probeport]>: Idle scan
- -sO: IP protocol scan
- -b <FTP relay host>: FTP bounce scan
PORT SPEZIFIKATION und SCAN BEFEHL
- -p <port ranges>: Only scan specified ports
- Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
- -F: Fast mode - Scan fewer ports than the default scan
- -r: Scan ports consecutively - don't randomize
- --top-ports <number>: Scan <number> most common ports
- --port-ratio <ratio>: Scan ports more common than <ratio>
SERVICE/VERSIONS ERKENNUNG
- -sV: Probe open ports to determine service/version info
- --version-intensity <level>: Set from 0 (light) to 9 (try all probes)
- --version-light: Limit to most likely probes (intensity 2)
- --version-all: Try every single probe (intensity 9)
- --version-trace: Show detailed version scan activity (for debugging)
SCRIPT SCAN
- -sC: equivalent to --script=default
- --script=<Lua scripts>: <Lua scripts> is a comma separated list of directories, script-files or script-categories
- --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
- --script-trace: Show all data sent and received
- --script-updatedb: Update the script database.
OS ERKENNUNG
OS-Fingerprinting (engl. für „Betriebssystem-Fingerabdruck“)
- -O: Enable OS detection
- --osscan-limit: Limit OS detection to promising targets
- --osscan-guess: Guess OS more aggressively
TIMING und DARSTELLUNG
- Options which take
- -T<0-5>: Set timing template (higher is faster)
- --min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
- --min-parallelism/max-parallelism <numprobes>: Probe parallelization
- --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout
- --max-retries <tries>: Caps number of port scan probe retransmissions.
- --host-timeout
- --scan-delay/--max-scan-delay
- --min-rate <number>: Send packets no slower than <number> per second
- --max-rate <number>: Send packets no faster than <number> per second
FIREWALL/IDS UMGEHUNG und -TÄUSCHUNG
- -f; --mtu <val>: fragment packets (optionally w/given MTU)
- -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
- -S <IP_Address>: Spoof source address
- -e <iface>: Use specified interface
- -g/--source-port <portnum>: Use given port number
- --data-length <num>: Append random data to sent packets
- --ip-options <options>: Send packets with specified ip options
- --ttl <val>: Set IP time-to-live field
- --spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
- --badsum: Send packets with a bogus TCP/UDP checksum
OUTPUT
- -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,and Grepable format, respectively, to the given filename.
- -oA <basename>: Output in the three major formats at once
- -v: Increase verbosity level (use twice or more for greater effect)
- -d[level]: Set or increase debugging level (Up to 9 is meaningful)
- --reason: Display the reason a port is in a particular state
- --open: Only show open (or possibly open) ports
- --packet-trace: Show all packets sent and received
- --iflist: Print host interfaces and routes (for debugging)
- --log-errors: Log errors/warnings to the normal-format output file
- --append-output: Append to rather than clobber specified output files
- --resume <filename>: Resume an aborted scan
- --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
- --webxml: Reference stylesheet from Nmap.Org for more portable XML
- --no-stylesheet: Prevent associating of XSL stylesheet w/XML output
MISC
MISC ("Minimal instruction set computer" engl. für Computer mit minimalem Befehlssatz)
- -6: Enable IPv6 scanning
- -A: Enables OS detection and Version detection, Script scanning and Traceroute
- --datadir <dirname>: Specify custom Nmap data file location
- --send-eth/--send-ip: Send using raw ethernet frames or IP packets
- --privileged: Assume that the user is fully privileged
- --unprivileged: Assume the user lacks raw socket privileges
- -V: Print version number
- -h: Print this help summary page.
BEISPIELE
- nmap -v -A scanme.nmap.org
- nmap -v -sP 192.168.0.0/16 10.0.0.0/8
- nmap -v -iR 10000 -PN -p 80
Weitere Ausgabeoptionen
--append-output
(an Ausgabedateien hinzufügen, statt sie zu überschreiben)
- Wenn man einen Dateinamen für ein Ausgabeformat wie z.B. -oX oder -oN angibt, wird diese Datei standardmäßig überschrieben.
- Wenn man deren Inhalt lieber behalten und die neuen Ergebnisse anhängen möchten, benutzen Sie die Option --append-output. .
--resume <filename>
(abgebrochenen Scan fortsetzen)
- Manche umfangreichen Nmap-Läufe benötigen sehr viel Zeit – in der Größenordnung von Tagen.
- Solche Scans laufen nicht immer bis zum Ende.
- Es gibt Beschränkungen, die verhindern, dass man Nmap während der
- normalen Arbeitszeit ausführen kann,
- das Netzwerk könnte abstürzen,
- der Rechner, auf dem Nmap läuft, könnte einen geplanten oder ungeplanten Neustart erleben oder
- Nmap selbst könnte abstürzen.
--stylesheet <path or URL>
(setze XSL-Stylesheet, um eine XML-Ausgabe zu transformieren)
- Die Nmap-Distribution enthält ein XSL-Stylesheet namens nmap.xsl zum Betrachten oder Übersetzen einer XML-Ausgabe nach HTML.
--webxml
(lade Stylesheet von Nmap.Org)
- Diese bequeme Option ist nur ein Alias für --stylesheet[6].
--no-stylesheet
(lasse XSL-Stylesheet-Deklaration im XML weg)
- Gibt man die Option an, dann wird Nmap in seiner XML-Ausgabe auf keinerlei XSL-Stylesheet verweisen.
- Die xml-stylesheet-Anweisung wird dann weggelassen.
Links
Siehe auch
Weblinks
- https://de.wikipedia.org/wiki/Nmap
- http://translate.google.com/translate?hl=de&sl=auto&tl=de&u=https%3A%2F%2Fnmap.org%2Fbook%2Finst-windows.html
- https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing
- http://mikiwiki.org/wiki/grep
- https://svn.nmap.org/nmap/docs/nmap.xsl
- https://nmap.org/man/de/man-os-detection.html
- https://www.elektronik-kompendium.de/sites/net/2103061.htm
- https://nmap.org/man/de/man-target-specification.html
- https://nmap.org/man/de/man-output.html
- https://www.elektronik-kompendium.de/sites/net/2103021.htm