Nmap/Anwendung
Anwendung
nmap -v -A scanme.nmap.org
nmap -v -sP 192.168.0.0/16 10.0.0.0/8
map -v -iR 10000 -PN -p 80
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
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 [1]
- 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-Bit festgelegt sind
Teilbereich auswählen
- Die CIDR-Notation ist kurz, aber nicht immer flexibel genug
- So möchte man beispielsweise 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 beispielsweise exportiert vielleicht eine Liste von 10.000 aktuellen Adresszuweisungen (engl. leases), die Sie scannen möchten
- Man möchte beispielsweise 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 und weitere 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
ANGABE VON ZIELEN
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 /numbits an eine IPv4-Adresse oder einen Hostnamen anfügen, und Nmap wird alle IP-Adressen scannen, bei denen die ersten numbits mit denen der gegebenen IP oder des gegebenen Hostnamens übereinstimmen
- Zum Beispiel würde 192.168.10.0/24 die 256 Hosts zwischen 192.168.10.0 (binär: 11000000 10101000 00001010 00000000) und 192.168.10.255 (binär: 11000000 10101000 00001010 11111111, 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
Die CIDR-Notation ist kurz, aber nicht immer flexibel genug
- Vielleicht möchten Sie beispielsweise 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, können Sie eine mit Kommata getrennte Liste von Zahlen oder Bereichen für jedes Oktett angeben
- Zum Beispiel ü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, aber denken Sie daran, im ersten Oktett 0- zu benutzen, damit die Zielangabe nicht wie eine Kommandozeilenoption aussieht
- Diese Bereiche müssen nicht auf die endgültigen Oktetts beschränkt sein: 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-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
Nmap akzeptiert in der Kommandozeile mehrere Host-Angaben, die auch nicht vom selben Typ sein müssen
- Der Befehl nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.- macht also das, was Sie erwarten würden
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
- Ihr DHCP-Server beispielsweise exportiert vielleicht eine Liste von 10.000 aktuellen Adresszuweisungen (engl. oder vielleicht möchten Sie alle IP-Adressen außer denjenigen scannen, um Hosts zu finden, die unautorisierte statische IP-Adressen benutzen
- Erzeugen Sie einfach die Liste der zu scannenden Hosts und übergeben Sie 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 Sie einen Bindestrich (-) als Dateinamen angeben, liest Nmap die Hosts von der Standardeingabe statt aus einer normalen Datei
-iR num hosts (zufällige Auswahl von Zielen) Für internetweite Umfragen und andere Forschungsaktivitäten möchten Sie 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
- Denken Sie aber daran, dass manche Netzwerkadministratoren sich gegen unautorisierte Scans ihrer Netzwerke sträuben
- Lesen Sie "" sorgfältig, bevor Sie -iR benutzen
- Falls Sie mal an einem regnerischen Tag wirklich Langeweile haben, probieren Sie einmal den Befehl nmap -sS -PS80 -iR 0 -p 80 aus, um zufällig Webserver zu finden, auf denen Sie herumstöbern können
--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 und weitere 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
--excludefile exclude_file (Liste aus Datei ausklammern) Das bietet dieselbe Funktionalität wie die Option --exclude, mit dem Unterschied, dass 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 (beispielsweise FTP, SSH, Telnet, HTTP), aber auch
- Anwendungsnamen (beispielsweise ISC BIND, Apache httpd, Solaris telnetd),
- Versionsnummer,
- Hostnamen, Gerätetyp (beispielsweise Drucker, Router),
- die Betriebssystemfamilie (beispielsweise Windows, Linux) und manchmal verschiedene Details:
- etwa ob ein X-Server Verbindungen annimmt,
- die SSH-Protokollversion
- oder der KaZaA-Benutzername
Ausgabe steuern
BEISPIELE
Hier sind einige Anwendungsbeispiele für Nmap, von einfachen und routinemäßigen bis zu etwas komplexeren und esoterischen
- Um die Sache etwas
konkreter zu machen, werden einige echte IP-Adressen und Domainnamen benutzt
- Diese sollten Sie mit Adressen/Namen aus Ihrem eigenen Netzwerk
ersetzen
- Auch wenn ich nicht der Meinung bin, dass Port-Scans anderer Netzwerke illegal sind oder sein sollten, mögen manche
Netzwerkadministratoren es nicht, wenn ihre Netzwerke unverlangt gescannt werden, und könnten sich beschweren
- Der beste Ansatz ist der, sich zuerst
eine Genehmigung zu verschaffen
Zu Testzwecken haben Sie die Genehmigung, den Host scanme.nmap.org zu scannen
- Diese Genehmigung gilt nur für das Scannen mit Nmap und nicht für das
Testen von Exploits oder Denial-of-Service-Angriffen
- Bitte führen Sie nicht mehr als ein Dutzend Scans pro Tag auf diesem Host durch, um die
Bandbreite nicht zu erschöpfen
- Falls diese freie Dienstleistung missbraucht wird, wird sie abgeschaltet, und Nmap wird dann Failed to resolve given
hostname/IP: scanme.nmap.org ausgeben
- Diese Genehmigung gilt auch für die Hosts scanme2.nmap.org, scanme3.nmap.org und weitere, auch wenn diese Hosts noch
nicht existieren
nmap -v scanme.nmap.org
Diese Option scannt alle reservierten TCP-Ports auf dem Rechner scanme.nmap.org
- Die Option -v schaltet den ausführlichen Modus an
nmap -sS -O scanme.nmap.org/24
Startet einen Stealth-SYN-Scan auf allen aktiven Rechnern unter den 256 IPs im Netzwerk der Größe "Klasse C", in dem Scanme sitzt
- Es versucht auch
herauszufinden, welches Betriebssystem auf jedem aktiven Host läuft
- Wegen des SYN-Scans und der Betriebssystemerkennung sind dazu root-Rechte
notwendig
nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127
Startet eine Host-Auflistung und einen TCP-Scan in der ersten Hälfte von allen 255 möglichen acht-Bit-Unternetzen im Klasse-B-Adressraum 198.116 Dabei wird getestet, ob die Systeme SSH, DNS, POP3 oder IMAP auf ihren Standardports laufen haben oder irgendetwas auf Port 4564
- Falls einer dieser
Ports offen ist, wird eine Versionserkennung benutzt, um festzustellen, welche Anwendung darauf läuft
nmap -v -iR 100000 -PN -p 80
Verlangt von Nmap, 100.000 Hosts zufällig auszuwählen und sie nach Webservern (Port 80) zu scannen
- Eine Host-Auflistung wird mit -PN unterbunden,
weil es Verschwendung ist, zuerst eine Reihe von Testpaketen zu senden, um festzustellen, ob ein Host aktiv ist, wenn Sie auf jedem Zielhost ohnehin nur einen Port testen
nmap -PN -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20
Das scannt 4096 IPs nach Webservern (ohne sie anzupingen) und speichert die Ausgabe im grepbaren und im XML-Format
- DAS NMAP-BUCH
Auch wenn dieser Reference Guide alle wesentlichen Nmap-Optionen genau beschreibt, kann er nicht vollständig zeigen, wie man diese Features anwendet, um Aufgaben der realen Welt zu lösen
- Zu diesem Zweck haben wir das Buch Nmap Network Scanning: The Official Nmap Project Guide to Network
Discovery and Security Scanning
- Es zeigt, wie man Firewalls und Intrusion Detection-Systeme unterwandert, die Performance von Nmap optimiert, und
wie man häufige Netzwerkaufgaben mit der Nmap Scripting Engine automatisiert
- Außerdem enthält es Tipps und Anleitungen für häufige Nmap-Aufgaben
wie die Netzwerkinventarisierung, Penetrationstests, die Erkennung schurkischer Wireless Access Points und das Verhindern von Wurmausbrüchen im Netzwerk
- Dabei zeigt es mit Beispielen und Diagrammen, wie die Kommunikation auf der Leitung aussieht
- Mehr als die Hälfte des Buches ist online
frei verfügbar
- Weitere Informationen finden Sie unter https://nmap.org/book
Die deutsche Übersetzung dieses Buches von Dinu Gherman ist im Mai 2009 unter dem Titel Nmap: Netzwerke scannen, analysieren und absichern[14] im Open Source Press[15]-Verlag erschienen