* 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[http://mikiwiki.org/wiki/grep] 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 <time>
* Gibt periodisch eine Timing-Statusmeldung nach einem Intervall der Länge <time> aus.
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-error'''s ist die Umleitung der interaktiven Ausgabe (inklusive des Standardfehlerstroms) in eine Datei.
Nmap wurde von einem unter dem NicknameFyodor bekannten Hacker ursprünglich für das BetriebssystemLinux entwickelt. Das textbasierte Programm unterlag bis Version 7.90 einer modifizierten Version der GNU General Public License, als diese durch eine auf ihr basierende eigene Lizenz ersetzt wurde. Nmap kann darüber hinaus auch kostenpflichtig unter einer alternativen Lizenz erworben werden (um es zum Beispiel innerhalb von Nicht-GPL-Software zu benutzen). Neben der textbasierten Variante gibt es noch die grafische Benutzeroberfläche NmapFE zur komfortablen Einstellung von Nmap, welche mittlerweile durch die Zenmap genannte GUI abgelöst wurde, die auf UMIT von Adriano Monteiro Marques basiert. Obwohl nmap ursprünglich ein Unix-Werkzeug war, existiert mittlerweile auch eine Portierung auf Windows-Betriebssysteme. Sie bietet annähernd den vollen Funktionsumfang, hat jedoch einige Einschränkungen.[1]
Nmap wird in erster Linie für Portscanning (also das Untersuchen der Ports eines Hosts) eingesetzt. Das Werkzeug wurde ständig erweitert und konnte sich vor allem durch die aktiven Techniken für OS-Fingerprinting (das Erkennen des eingesetzten Betriebssystems auf dem Zielhost) einen Namen machen. Auch das Mapping von Umgebungen (Erkennen aktiver Hosts) ist möglich. Darüber hinaus lassen sich mit Nmap vereinzelt die hinter einem Port stehenden Dienste und deren Version auslesen.
Nmap ist sowohl bei Angreifern als auch bei Administratoren sehr beliebt, da es sehr effizient und zuverlässig arbeitet. Es ist ein wichtiger Bestandteil bei der Netzwerkdiagnose und Auswertung von netzwerkfähigen Systemen. Unter anderem wird es auch vom Vulnerability ScannerNessus zur Erfassung offener Ports eingesetzt.
Installation
Anwendungen
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.
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.
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-Bit 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.
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: