Nmap

Aus Foxwiki

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 aktiven Systeme erkennen
  • Details zu Diensten, Konfigurationen und Versionen bestimmen
  • Netzwerk-Inventarisierung
  • Dienste-Aktualisierungen prüfen
  • Überwachung von Betriebszeiten, Hosts oder Diensten

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:
  1. offen,
  2. geschlossen,
  3. gefiltert (offen/geschlossen).

Bedeutung der Ausgabe

  • 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.
  • 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.
  • Um offene, aber auch geschlossene Ports zu schützen, setzen Systemadministratoren einen Portfilter (Firewall) ein.
  • 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.
  • 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.
  • Dann kann für diesen Port weder der Status "offen" oder "geschlossen" gelten.
  • Dafür gibt es den Zustand "gefiltert" oder "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":
    • Für den Port 22 verwendet man die Option "-p22".
    • Für die Ports 22, 25 und 80 verwendet man die Option "-p22,25,80".
    • Für die Ports von 1 bis 100 verwendet man die Option "-p-100".
    • Für die Ports von 80 bis 88 verwendet man die Option "-p80-88".
    • Für alle Ports über 60.000 verwendet man die Option "-p60000-".
    • Alle Ports von 1 bis 65.535 scannen: Option "-p-".

Einzelne Rechner

  • Der Zielbereich ist eine einzelne IP-Adresse
  • Standardmäßig arbeitet Nmap mit IPv4 (es geht aber auch IPv6)
  • Hier wurde ein Linux-PC von einem Windows-7-Rechner aus gescannt:
    • nmap 172.16.24.102
  • Die IP-Adresse gehört also dem Linux-Rechner, den wir mit Nmap auf offene Ports hin überprüfen.
  • Das Ergebnis: Drei Ports sind offen; 21 für FTP, 80 für einen Webserver (in unserem Fall ein Apache) und 110 für POP3.
  • 997 well known Ports erkennt Nmap als geschlossen.

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.
  • Sie können an eine IPv4-Adresse oder einen Hostnamen angefügt werden, und 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[[3]] 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.
  • Möchte man alle IP-Adressen außer denjenigen scannen, um Hosts zu finden, die unautorisierte statische IP-Adressen benutzen.
  • 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 offen sind.
  • 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
  1. Dienstprotokoll zu bestimmen (z.B. FTP, SSH, Telnet, HTTP), aber auch
  2. Anwendungsnamen (z.B. ISC BIND, Apache httpd, Solaris telnetd),
  3. Versionsnummer,
  4. Hostnamen, Gerätetyp (z.B. Drucker, Router),
  5. die Betriebssystemfamilie (z.B. Windows, Linux) und manchmal verschiedene Details:
  6. etwa ob ein X-Server Verbindungen annimmt,
  7. die SSH-Protokollversion
  8. oder der KaZaA-Benutzername.


Zenmap

  • Neben der textbasierten Variante gibt es noch die grafische Benutzeroberfläche NmapFE zur komfortablen Einstellung von Nmap.
  • Wurde mittlerweile durch die Zenmap genannte GUI abgelöst.

Scanergebnisse auslesen

  • In der grafischen Oberfläche Zenmap lassen sich die Ergebnisse am besten auslesen[[4]].
  • Nachdem ein Scanvorgang abgeschlossen ist, sind auf der linken Seite die Endpunkte zu finden, die Nmap gefunden und gescannt hat.
  • Mit den beiden Schaltflächen „Rechner“ und Dienste“ kann zwischen den gefundenen Endgeräten und den gefundenen Netzwerkdiensten gewechselt werden.
  • Im unteren Bereich kann das Ergebnis über die Schaltfläche „Rechner filtern“ noch besser gefiltert werden.
  • In der Mitte des Fensters sind verschiedene Registerkarten zu sehen, mit denen die Scanergebnisse besser untersucht werden können.
  • Auf der Registerkarte „Nmap-Ausgabe“ zeigt Zenmap z.B. das Ergebnis an, das Nmap auch in der Befehlszeile anzeigt.
  • Auf der Registerkarte „Ports/Rechner“ sind die gefundenen Ports zu sehen sowie weitere Informationen zum markierten Gerät.
  • Mit der Registerkarte kann jedes einzelne Gerät im Netzwerk überprüft werden.

Grafische Anzeige des Netzwerks

  • Auf der Registerkarte „Netzstruktur“ kann Zenmap eine grafische Anzeige des Netzwerkes zur Verfügung stellen.
  • Über die verschiedenen Schaltflächen „Rechnerbetrachter“, „Fischauge“ und „Steuerungen“ können verschiedene Einstellungen für die Anzeige der Rechner vorgenommen werden.
  • Die Grafik kann an dieser Stelle auch als PDF, PNG oder SVG gespeichert werden.
  • Auf der Registerkarte „Rechnereinzelheiten“ können Details zu einem Rechner angezeigt werden, die durch das Scannen erkannt wurden.
  • Zu den Informationen gehören Rechnernamen, das Betriebssystem, die geöffneten und geschlossenen Ports, den Zeitpunkt des Rechnerstarts und viele weitere Informationen.

Scanergebnisse miteinander vergleichen

  • Scanergebnisse lassen sich über den Menüpunkt Scan\Scan als Datei speichern.
  • Mehrere solche Ergebnisse können mit Nmap auch verglichen werden, um Unterschiede zu erkennen.
  • Abgespeicherte Scanergebnisse werden mit dem Tool „ndiff“ verglichen.
  • Der Befehl dazu ist ndiff <Datei1> <Datei2>.
  • Ausführlichere Ergebnisse gibt Ndiff mit der Option „-v“ aus.
  • Ein solcher Vergleich lässt sich auch in Zenmap vornehmen.
  • Dazu wird in Zenmap das Menü Werkzeuge\Ergebnisse vergleichen verwendet.

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 die 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

 -oN <filespec>
(normale Ausgabe)
  • Verlangt, dass eine normale Ausgabe in der angegebenen Datei gespeichert wird.
  • Wie oben erwähnt, unterscheidet sich das leicht von der interaktiven Ausgabe.
 -oX <filespec> 

(XML-Ausgabe)

  • 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

 -v
(größere Ausführlichkeit)
  • 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.
 -d [level] 

(erhöhe oder setze Debugging-Stufe)

  • 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.
  --reason 

(Gründe für Host- und Portzustände)

  • 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.
 --stats-every 

(periodische Timing-Statistik ausgeben)

  • Gibt periodisch eine Timing-Statusmeldung nach einem Intervall der Länge
 --packet-trace 

(gesendete und empfangene Pakete und Daten mitverfolgen)

  • Bewirkt, dass Nmap für jedes gesendete oder empfangene Paket eine Zusammenfassung ausgibt.
 --open 

(zeige nur offene (oder möglicherweise offene) Ports an)

  • Manchmal interessieren nur offene Ports, und nicht Ports, die geschlossen, gefiltert und geschlossen|gefiltert sind.
 --iflist 

(liste Schnittstellen und Routen auf)

  • Gibt die Liste der Schnittstellen und Systemrouten aus, die Nmap entdeckt hat. .
 --log-errors 

(protokolliere Fehler/Warnungen in eine Datei im normalen Ausgabeformat)

  • 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.

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)

  • Geben Sie diese Option an, wenn Nmap in seiner XML-Ausgabe auf keinerlei XSL-Stylesheet verweisen soll.
  • Die xml-stylesheet-Anweisung wird dann weggelassen.

Weitere Informationen

Funktionen

Target Enumeration

  • Target Enumeration ("Ziel-Aufzählung") ist keine eigenständige Funktion von NMAP, sondern eine Phase im Vorfeld des NMAP-Scannings.
  • In dieser Phase ermittelt NMAP aus der Zieladresse, die tatsächlich zu scannenden Hosts.
  • Die Zieladresse kann die IP-Adresse eines einzelnen Hosts sein oder ein ganzes Subnetz.
  • Im Fall eines Domain- oder Computernamens wird NMAP eine Adressauflösung durchführen.
  • Diese Phase lässt sich nicht überspringen, da für das Scannen die Zieladresse eindeutig sein muss.
  • Ermittelt NMAP aus der Angabe des Benutzers mehrere Adressen, dann führt NMAP das Scanning auf alle diese Adressen aus.
  • Diesen Vorgang kann man nur dadurch vereinfachen, indem man explizit nur eine IP-Adresse angibt.

Ping-Scanning (Host-Discovery)

  • Klassischer Ping-Scan (Network-Scan)
 nmap -PE -sn -oG - 192.168.0.1/24
  • Der klassische Ping-Scan mit ICMP-Echo-Requests (-PE), aber ohne Port-Scan (-sn).
  • Erweiterter Ping-Scan (Network-Scan)
 nmap -sP -oG - 192.168.0.1/24
  • Dieser TCP-Ping-Scan ist eigentlich kein Ping-Scan, sondern eher eine sinnvolle Erweiterung zu einem klassischen Ping.
  • Der TCP-Ping-Scan kombiniert den klassischen Ping (ICMP-Echo) mit dem TCP-SYN-Scan.
  • Damit funktioniert der TCP-Ping-Scan manchmal besser als ein klassischer Ping bzw. ein einfacher ICMP-Echo-Request.

Port-Scanning

  • Der Port-Scan ist die Hauptfunktion von NMAP.
  • Hierbei testet NMAP die Port-Zustände des entfernten Hosts.
  • Dabei geht es darum festzustellen, ob ein Port offen ist, also Verbindungsversuche annimmt.
  • Da der Port-Zustand "offen" nicht immer eindeutig zu bestimmen ist, stellt NMAP vielfältige Scan-Methoden und Algorithmen zu Verfügung.
  • Es geht darum, die Genauigkeit der Bestimmung von Port-Zuständen zu verbessern.
  • siehe "Anwendungsbeispiele" 11.10.3 bis 11.10.5

Service- und Versionserkennung (Service Identification)

  • 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.
  • Manche Drucker drucken alles aus, was an diesen Port gesendet wird.
  • 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 Ports 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.

Versionsvariantnen

 --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.
  • Dadurch kann man 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).

Betriebssystemerkennung (OS Identification)

Scan-Typen

Ping-Scan

1. ICMP-Echo-Ping (klassischer Ping)

nmap -PE 10.10.0.1 für Subnet  nmap -PE 10.10.0.1/24 oder  nmap -PE 10.10.0.*

2. TCP-Ping-Scan

nmap -sn 10.10.0.1

3. TCP-SYN-Ping

nmap -PS 10.10.0.1

4. TCP-ACK-Ping nmap -PA 10.10.0.1 5. UDP-Ping

nmap -PU 10.10.0.1

6. ICMP-Timestamp-Scan

nmap -PT 10.10.0.1

7. ICMP-Address-Scan

nmap -PM 10.10.0.1

TCP-Full-Connect-Scan

  • Connect-Scan verwendet den gleichnamigen Systemaufruf zum Scannen von Rechnern, anstatt sich auf rohe Pakete zu verlassen, wie es die meisten anderen Methoden tun.
  • Es wird normalerweise von unprivilegierten Unix-Benutzern und gegen IPv6-Ziele verwendet, da der SYN-Scan in diesen Fällen nicht funktioniert.
nmap -sT 10.10.0.1

TCP-SYN-Scan

  • Dies ist bei weitem der populärste Scan-Typ, weil es die schnellste Art ist, Ports des populärsten Protokolls (TCP) zu scannen.
  • Er ist stealthier als der Verbindungs-Scan, und er funktioniert gegen alle funktionierenden TCP-Stapel (im Gegensatz zu einigen Spezial-Scans wie dem FIN-Scan).
nmap -sS 10.10.0.1

3. TCP-FIN-Scan

nmap -sF 10.10.0.1

4. TCP-XMAS-Scan

nmap -sX 10.10.0.1

5. TCP-NULL-Scan

nmap -sN 10.10.0.1

UDP-Scan

UDP-Ports bieten viele Sicherheitslücken

nmap -sU 10.10.0.1

TCP-ACK-Scan

  • Der ACK-Scan wird häufig zur Abbildung von Firewall-Regelsätzen verwendet.
  • Insbesondere hilft er zu verstehen, ob Firewall-Regeln zustandsbehaftet sind oder nicht.
  • Der Nachteil ist, dass er nicht zwischen offenen und geschlossenen Ports unterscheiden kann.
nmap -sA 10.10.0.1

TCP-Window-Scan

Der Window-Scan ist wie der ACK-Scan, außer dass er in der Lage ist, offene gegenüber geschlossenen Ports gegen bestimmte Rechner zu erkennen.

nmap -sW 10.10.0.1

TCP-Maimon-Scan

Dieser obskure Firewall-evading-Scan-Typ ähnelt einem FIN-Scan, enthält aber auch das ACK-Flag. Dadurch kann er durch mehr Paketfilter-Firewalls hindurchkommen, mit dem Nachteil, dass er gegen noch weniger Systeme funktioniert als der FIN-Scan.

nmap -sM 10.10.0.1

TCP-Idle-Scan

  • Der Leerlauf-Scan ist der heimlichste Scan-Typ von allen und kann manchmal vertrauenswürdige IP-Adressenbeziehungen ausnutzen.
  • Leider ist er auch langsam und komplex.
nmap -sI 10.10.0.1

IP-Protokoll-Scan

  • Protokoll-Scan bestimmt, welche IP-Protokolle (TCP, ICMP, IGMP usw.) vom Zielcomputer unterstützt werden.
  • Technisch gesehen handelt es sich hierbei nicht um einen Port-Scan, da die IP-Protokollnummern und nicht die TCP- oder UDP-Portnummern durchlaufen werden.
  • Dennoch verwendet er nach wie vor die Option -p zur Auswahl der gescannten Protokollnummern.
  • Meldet seine Ergebnisse mit dem normalen Port-Tabellenformat.
  • Verwendet sogar dasselbe zugrunde liegende Scan-Modul wie die echten Port-Scan-Methoden.
  • Es ist also nahe genug an einem Port-Scan, dass es hierher gehört.
nmap -sO 10.10.0.1
  • Ohne Angaben werden die 1000 wichtigsten Ports gescannt.
  • -F steht für die 100 wichtigsten Ports
  • -p steht für Port selektiv ( -p25 oder -p25-100 oder -p25,80,100 oder alle Ports über -p6000-)
  • -p- um alle Ports zu scannen.

OS & Service Identication mit NMAP

1. OS-Scan (OS-Detection)

nmap -O 10.10.0.1

2. Service-Scan / Versions-Scan

nmap -sV 10.10.0.1

3. RPC-Scan

nmap -sR 10.10.0.1

4. Kombinierter OS- & Service-Scan

nmap -O -sV 10.10.0.1

Anwendungsbeispiele

1. Klassischer Ping-Scan

nmap -PE -sn -oG – 10.10.0.1/24

2. Erweiterter Ping-Scan

nmap -sP -oG – 10.10.0.1/24

3. SYN-TOP100-Port-Scan

nmap -sS -F 10.10.0.1

4. SYN/Version-All-Port-without-Ping-Scan

nmap -sV -Pn -p0- --reason --stats-every 60s 10.10.0.1

5. Aggressive-All-Host-All-Port-Scan

nmap -sV -Pn -p0- -T4 -A -oG - --reason --stats-every 60s 10.10.0.1/24

6. TCP-ACK-Scan

nmap -sA -F 10.10.0.1

7. TCP-FIN-Scan

nmap -sF -F 10.10.0.1

8. UDP-Port-Scan

nmap -sU -F 10.10.0.1

9. UDP-All-Port-Scan

nmap -sU -p0- --reason --stats-every 60s --max-rtt-timeout 100ms --max-retrie 1 10.10.0.1

10. List­-Scan

nmap -sL 10.10.0.1/24

Links

intern

extern

  1. https://de.wikipedia.org/wiki/Nmap
  2. http://translate.google.com/translate?hl=de&sl=auto&tl=de&u=https%3A%2F%2Fnmap.org%2Fbook%2Finst-windows.html
  3. https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing
  4. https://www.security-insider.de/netzwerke-mit-nmap-und-zenmap-untersuchen-a-633527/
  5. http://mikiwiki.org/wiki/grep
  6. https://svn.nmap.org/nmap/docs/nmap.xsl