Nmap ist ein Open-Source-Netzwerk-Mapper, der es einem ermöglicht, das Netzwerk von Hosts und Diensten zu scannen, Sicherheitsbewertungen und Audits durchzuführen. Dieser nützliche Befehl bietet viele Optionen und Funktionen, aber Sie müssen über Erfahrung mit seiner Verwendung verfügen. In diesem Tutorial werde ich versuchen, einige Befehlsbeispiele vorzustellen, die Ihnen helfen können, mögliche Schwachstellen in den Hosts, im gesamten Subnetz, bei der Erkennung von Betriebssystem- und Dienstversionen, der Auflistung von Diensten, Schnittstellen, Routen, Mac-Identifikation usw. zu identifizieren. P>
Also los geht's.
Einige der Linux-Varianten werden möglicherweise nicht mit nmap geliefert installiert, sodass Sie es mit yum installieren können oder apt-get je nach verwendetem Betriebssystem.
# yum installiere nmap
oder
# apt-get install nmap
Beginnen wir mit dem Scannen eines einzelnen Hosts:
Scannen einer einzelnen IP-Adresse (kein Root)
$nmap 14.0.0.6
Beispielausgabe:
Host ist aktiv (0,00035 s Latenzzeit). Nicht angezeigt:999 geschlossene PortsPORT STATE SERVICE22/tcp open sshNmap done:1 IP address (1 host up) scanned in 1,50 Sekunden
Mehrere IP-Adressen scannen (kein Root)
$ nmap 14.0.0.6 14.0.0.5
Scannen mehrerer IP-Adressen mit Komma als Trennzeichen
$ nmap 14.0.0.6,5
Der obige Befehl scannt die IP-Adressen 14.0.0.5 und 14.0.0.6
Scanbereich von IP-Adressen (kein Root)
$nmap 14.0.0.1-5
Der obige Befehl scannt IP-Adressen von 14.0.0.1 bis 14.0.0.5
Scannen der IP-Adresse mit Wildcard (kein Root)
$ nmap 14.0.0.*
Alle IP-Adressen in einem Subnetz scannen
$nmap 14.0.0.0/24
Scannen eines Hosts unter Verwendung des Domänennamens
$ nmap www.example.com
Hosts scannen, die aus einer Textdatei lesen
$ cat host-list.txt 14.0.0.1 www.example.com 14.0.0.2
$ nmap -iL host-list.txt
Scannen eines Subnetzes ohne eine bestimmte IP-Adresse
$ nmap 14.0.0.0/24 – 14.0.0.1 ausschließen
Scannen Sie ein Subnetz ohne Liste von IP-Adressen
$ nmap 14.0.0.0/24 – 14.0.0.1,2 ausschließen
Scannen Sie ein Subnetz ohne die Liste der IP-Adressen aus einer Datei
$ cat Exclude-ips.txt14.0.0.1,2,3,4,5
$ nmap 14.0.0.0/24 --excludefile Exclude-ips.txt
Hostnamen aller IPs in einem Subnetz identifizieren (kein Root)
$ nmap -sL 14.0.0.0/24
PING-Sweep durchführen
Ping-Sweep wird im Allgemeinen verwendet, um herauszufinden, welche Hosts im Netzwerk aktiv sind. Ping-Sweep kann verwendet werden, wenn Sie eine große Anzahl von Hosts in einem Netzwerk scannen möchten.
# nmap -sP 14.0.0.6
Scannen Sie einen einzelnen Port einer bestimmten IP-Adresse oder eines bestimmten Hosts (kein Root)
$ nmap -p 22 14.0.0.6
Beispielausgabe:
Host ist aktiv (0,00066 s Latenz).PORT STATE SERVICE22/tcp open sshNmap done:1 IP-Adresse (1 Host aktiv) in 0,47 Sekunden gescannt
Scannen Sie eine Reihe von Ports (kein Root)
$ nmap -p 15-23 14.0.0.6
Beispielausgabe:
PORT STATE SERVICE15/tcp geschlossen netstat16/tcp geschlossen unknown17/tcp geschlossen qotd18/tcp geschlossen unknown19/tcp geschlossen chargen20/tcp geschlossen ftp-data21/tcp geschlossen ftp22/tcp geöffnet ssh23/tcp geschlossen telnet
Führen Sie einen schnellen Scan der Ports durch (100 gebräuchlichste Ports) (kein Root)
$ nmap -F 14.0.0.6
Obere $Anzahl von Ports scannen (kein Root)
$ nmap --top-ports 10 14.0.0.6
$ nmap --top-ports 2 14.0.0.6
Alle Ports scannen (kein Root)
$ nmap -p- 14.0.0.6
Der obige Befehl scannt alle 65535 Ports einer bestimmten IP-Adresse.
Erkennen von Betriebssystem- und Dienstinformationen eines Remote-Hosts (kein Root)
$ nmap -A 14.0.0.6
Beispielausgabe:
Start von Nmap 7.01 ( https://nmap.org ) um 2016-07-11 06:34 UTC Host ist aktiv (0,00029 s Latenz). Nicht gezeigt:999 geschlossene Ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu1 (Ubuntu Linux; Protokoll 2.0) ::::::::::::::::::::
Diensterkennung (kein Root)
$ nmap -sV 14.0.0.6
Erkennung aggressiver Dienste (kein Root)
Der Nmap-Befehl stützt sich auf verschiedene Methoden, um Betriebssystem- und Dienstinformationen zu erkennen. Die aggressive Diensterkennung ist hilfreich, wenn der Dienst auf einem ungewöhnlichen Port ausgeführt wird (z. B. soll SSH auf Port 22 lauschen, aber der Remote-Host könnte den Dienst auf einem anderen Port ausführen). Die aggressive Service-Erkennung ist langsamer als die normale Service-Erkennung, da man später die Informationen aus den Service-Bannern erhält.
$ nmap -sV --version-intensity 5 14.0.0.6
Beispielausgabe:
Host ist aktiv (0,00044 s Latenzzeit). Nicht angezeigt:999 geschlossene PortsPORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu1 (Ubuntu Linux; Protokoll 2.0)Serviceinfo:Betriebssystem:Linux; CPE:cpe:/o:linux:linux_kernelService-Erkennung durchgeführt. Bitte melden Sie falsche Ergebnisse unter https://nmap.org/submit/
Erkennen des Betriebssystems (Root)
Das obige Beispiel zur Diensterkennung zeigt die Betriebssysteminformationen an. Es ist auch möglich, das Betriebssystem und seine Version mit dem folgenden Befehl zu erraten.
Hinweis:Die Betriebssystemerkennung erfordert Root-Rechte.
$ nmap -O 14.0.0.6TCP/IP-Fingerprinting (für OS-Scan) erfordert Root-Rechte. BEENDEN!
# nmap -O 14.0.0.6
# nmap -O --osscan-guess 14.0.0.6Start von Nmap 7.01 ( https://nmap.org ) um 2016-07-11 08:39 UTCHost ist aktiv (0,00035 s Latenzzeit). Nicht angezeigt:999 geschlossen portsPORT STATE SERVICE22/tcp open sshAggressive Betriebssystemschätzungen:Linux 3.1 (93 %), Linux 3.2 (93 %), AXIS 210A oder 211 Network Camera (Linux 2.6.17) (92 %), Android 5.0.2 (92 %), Android 5.1 (92 %), Linux 3.0 (92 %), Linux 3.11 (92 %), Linux 3.12 (92 %), Linux 3.12–3.19 (92 %), Linux 3.13 (92 %)
# nmap -v -O --osscan-guess 14.0.0.6
Erkennen, ob ein Host durch eine Firewall (Root) geschützt ist
Wenn die Firewall auf dem Remote-Host deaktiviert ist, wird die nmap scannt alle Ports und sagt, dass sie ungefiltert sind, wie unten gezeigt:
# nmap -sA 14.0.0.6Host ist aktiv (0,00042s Latenz).Alle 1000 gescannten Ports auf henry2.cloudsecurity.in (14.0.0.6) sind ungefiltert
Wenn die Firewall auf dem Remote-Host aktiviert ist, wird die nmap besagt, dass Ports gefiltert werden:
# nmap -sA 14.0.0.6Nmap-Scanbericht für henry2.cloudsecurity.in (14.0.0.6) Host ist aktiv (0,00045 s Latenzzeit).Alle 1000 gescannten Ports auf henry2.cloudsecurity.in (14.0.0.6) werden gefiltert
Scannen mit NSE-Skripten
Es gibt etwa 400+ NSE (Nmap S E schreiben ngine)-Skripte, die mit nmap verwendet werden können und jedes Skript wird mit einer guten Dokumentation geliefert. Führen Sie den folgenden Befehl aus, um die Liste der auf Ihrem Computer installierten Skripts zu identifizieren:
# lokalisiere nse |grep script ::::::::::::::::::::::/usr/share/nmap/scripts/ssl-enum-ciphers.nse /usr/share /nmap/scripts/ssl-google-cert-catalog.nse /usr/share/nmap/scripts/ssl-heartbleed.nse /usr/share/nmap/scripts/ssl-known-key.nse /usr/share/nmap /scripts/ssl-poodle.nse /usr/share/nmap/scripts/sslv2.nse /usr/share/nmap/scripts/sstp-discover.nse /usr/share/nmap/scripts/stun-info.nse /usr /share/nmap/scripts/stun-version.nse /usr/share/nmap/scripts/stuxnet-detect.nse /usr/share/nmap/scripts/supermicro-ipmi-conf.nse /usr/share/nmap/scripts /svn-brute.nse /usr/share/nmap/scripts/targets-asn.nse /usr/share/nmap/scripts/targets-ipv6-map4to6.nse /usr/share/nmap/scripts/targets-ipv6-multicast -echo.nse /usr/share/nmap/scripts/targets-ipv6-multicast-invalid-dst.nse /usr/share/nmap/scripts/targets-ipv6-multicast-mld.nse /usr/share/nmap/scripts /targets-ipv6-multicast-slaac.nse /usr/share/nmap/scripts/targets-ipv6-wordlist.nse /usr/share/nmap/scripts/targets-sniffer.nse /usr/share/nmap/scripts/tar gets-traceroute.nse /usr/share/nmap/scripts/targets-xml.nse :::::::::::::
DNS Brute Force zum Identifizieren von Unterdomänen einer bestimmten Domäne (kein Root)
nmap ermöglicht es, die Liste der Subdomains für einen bestimmten Host zu identifizieren. Das Identifizieren von Subdomänen eines Hosts kann neue Ziele aufdecken, während eine Sicherheitsbewertung durchgeführt wird. Dazu dns-brute.nse Skript muss verwendet werden.
$ nmap -p 80 --script dns-brute.nse example.com
Beispielausgabe:
PORT STATE SERVICE80/tcp open httpHost script results:| dns-brute:| DNS-Brute-Force-Hostnamen:| www.example.com – 93.184.216.34|_ www.example.com – 2606:2800:220:1:248:1893:25c8:1946
Virtuelle Hosts auf einem bestimmten Host identifizieren (kein Root)
Der angegebene Domain-Name kann mehrere Websites hosten, indem die virtuellen Hosts der Webserver verwendet werden. Sie können virtuelle Hosts mit hostmap-bfk.nse identifizieren Skript.
$ nmap -p 80 --script hostmap-bfk.nse nmap.org Ergebnisse des Host-Skripts:| hostmap-bfk:| Gastgeber:| mail.nmap.org | 45.33.49.119 | 119.49.33.45.in-adr.arpa | ack.nmap.org | sectools.org | svn.nmap.org | unsicher.com | mail.seclists.org | seclists.org | mirror.sectools.org | www.insecure.org | nmap.org | unsicher.org | www.nmap.org |_ www.insecure.com
Identifizieren Sie den geografischen Standort eines bestimmten Hosts
# nmap --traceroute --script traceroute-geolocation.nse -p 80 example.com
Beispielausgabe:
:::::::::::::::::Ergebnisse des Hostskripts:| Traceroute-Geolokalisierung:| HOP RTT -Adresse Geolocation | 1 0,44 14.0.0.1 23.113 China (Guangdong) | 2 0,88 10.180.141.1 -, - | 3 1.58 144.16.192.34 20,77 India () | 4 1.87 14.139.1.30 20,77 India () | 5 1.61 10.118.248.45 -, - | 6 11.62 10.161.18.5 -, - | 7 ...| 8 13.32 10.255.221.34 -, - | 9 14.71 115.249.209.6 18,72 Indien (Mah \ xc4 \ x81r \ xc4 \ x81shtra) | 10 ...| 11 ...| 12 ...| 13 293.92 XE-3-0-6.0.cjr01.sin001.flagtel.com (62.216.129.201) 51,0 Großbritannien () | 14 293.77 GE-2-0-0.0.PJR01.HKG005.FLAGTEL.COM.25.95.85.in-addr.arpa (85.9 5.25.41) 51,0 Großbritannien () | 15 168.70 SO-1-0-0.0.PJR01.WAD001.FLAGTEL.COM (85.95.25.193) 51,0 Großbritannien () | 16 168.13 SO-2-2-0.0.PJR01.WAD001.FLAGTEL.COM (85.95.25.37) 51,0 Großbritannien () | 17 293.97 SO-2-1-0.0.PJR01.LAX002.FLAGTEL.COM (85.95.25.17) 51,0 Großbritannien () | 18 275.17 Any2ix.coresit.com (206.223.143.232) 38, -97 United States () | _ 19 295.32 93.184.216.34 42, -70 Vereinigte Staaten (Massachusetts):::::::::::::::::::::
Identifizieren Sie beispielsweise eine Liste mit HTTP-bezogenen Skripts:
# lokalisiere nse |grep http /usr/share/nmap/nselib/http.lua /usr/share/nmap/nselib/httpspider.lua /usr/share/nmap/nselib /data/http-default-accounts-fingerprints.lua /usr/share/nmap/nselib/data/http-devframework-fingerprints.lua /usr/share/nmap/nselib/data/http-fingerprints.lua /usr/share /nmap/nselib/data/http-folders.txt /usr/share/nmap/nselib/data/http-sql-errors.lst /usr/share/nmap/nselib/data/http-web-files-extensions.lst /usr/share/nmap/scripts/http-adobe-coldfusion-apsa1301.nse /usr/share/nmap/scripts/http-affiliate-id.nse /usr/share/nmap/scripts/http-apache-negotiation.nse /usr/share/nmap/scripts/http-auth-finder.nse /usr/share/nmap/scripts/http-auth.nse /usr/share/nmap/scripts/http-avaya-ipoffice-users.nse /usr /share/nmap/scripts/http-awstatstotals-exec.nse /usr/share/nmap/scripts/http-axis2-dir-traversal.nse /usr/share/nmap/scripts/http-backup-finder.nse /usr /share/nmap/scripts/http-barracuda-dir-traversal.nse /usr/share/nmap/scripts/http-brute.nse /usr/ share/nmap/scripts/http-cakephp-version.nse /usr/share/nmap/scripts/http-chrono.nse /usr/share/nmap/scripts/http-cisco-anyconnect.nse /usr/share/nmap/ scripts/http-coldfusion-subzero.nse /usr/share/nmap/scripts/http-comments-displayer.nse /usr/share/nmap/scripts/http-config-backup.nse /usr/share/nmap/scripts/ http-cors.nse /usr/share/nmap/scripts/http-cross-domain-policy.nse /usr/share/nmap/scripts/http-csrf.nse /usr/share/nmap/scripts/http-date. nse /usr/share/nmap/scripts/http-default-accounts.nse /usr/share/nmap/scripts/http-devframework.nse /usr/share/nmap/scripts/http-dlink-backdoor.nse /usr/ share/nmap/scripts/http-dombased-xss.nse /usr/share/nmap/scripts/http-domino-enum-passwords.nse /usr/share/nmap/scripts/http-drupal-enum-users.nse / usr/share/nmap/scripts/http-drupal-enum.nse /usr/share/nmap/scripts/http-enum.nse /usr/share/nmap/scripts/http-errors.nse /usr/share/nmap/ scripts/http-exif-spider.nse /usr/share/nmap/scripts/http-favicon.nse /usr/share/nmap/scripts/http-feed.nse /usr/ share/nmap/scripts/http-fetch.nse /usr/share/nmap/scripts/http-fileupload-exploiter.nse /usr/share/nmap/scripts/http-form-brute.nse /usr/share/nmap/ scripts/http-form-fuzzer.nse /usr/share/nmap/scripts/http-frontpage-login.nse /usr/share/nmap/scripts/http-generator.nse /usr/share/nmap/scripts/http- git.nse /usr/share/nmap/scripts/http-gitweb-projects-enum.nse ::::::::::::::::::::::
Aus der obigen Ausgabe können Sie den Skriptnamen kopieren und mit –script verwenden Option.
Informationen zum HTTP-Dienst abrufen (kein Root)
Es gibt viele Skripte zum Abrufen von HTTP-Dienstinformationen wie Titel der Webseite, HTTP-Header, Finden verschiedener bekannter Pfade von Webanwendungen usw.
$ nmap --script=http-title 14.0.0.5 Host ist aktiv (0,0000070 s Latenz). Nicht angezeigt:998 geschlossene PortsPORT STATE SERVICE22/tcp open ssh80/tcp open http|_http-title:Apache2 Ubuntu Default Page:It works
HTTP-Header-Informationen abrufen (kein Root)
$ nmap --script=http-header 14.0.0.5PORT STATE SERVICE22/tcp open ssh80/tcp open http| http-header:| Datum:Mo, 11. Juli 2016 07:08:05 GMT| Server:Apache/2.4.18 (Ubuntu)| Zuletzt geändert:Mo, 11. Juli 2016 07:04:49 GMT| ETag:"2c39-53756c49f4280"| Accept-Ranges:bytes| Inhaltslänge:11321| Variieren:Accept-Encoding| Verbindung:schließen| Inhaltstyp:text/html||_ (Anfragetyp:HEAD)
Identifizieren Sie bekannte Pfade der HTTP-Webanwendung (kein Root)
$ nmap --script=http-enum 14.0.0.580/tcp öffnen http| http-enum:|_ /server-status/:Potenziell interessanter Ordner
Heartbleed-SSL-Schwachstelle erkennen (kein Root)
Sie haben vielleicht schon von der SSL-Schwachstelle Heartbleed gehört. Der Nmap-Befehl kann verwendet werden, um diese Schwachstelle wie unten gezeigt zu erkennen:
nmap -sV -p 443 --script=ssl-heartbleed 14.0.0.0/24
Identifizieren Sie Whois eines Domainnamens (kein Root)
$ nmap -sV --script=whois-domain.nse www.example.com
Beispielausgabe:
Ergebnisse des Hostskripts:| Whois-Domain:|| Domänennameneintrag gefunden bei whois.iana.org| % IANA WHOIS-Server| % Weitere Informationen zu IANA finden Sie unter http://www.iana.org| % Diese Abfrage hat 1 Objekt zurückgegeben|| Domäne: BEISPIEL.COM|| Organisation:Internet Assigned Numbers Authority|| erstellt: 1992-01-01| Quelle: IANA|_
TCP Syn und UDP Scan (root)
# nmap -sS -sU -PN 14.0.0.6
Der obige Befehl scannt 2000 gemeinsame TCP- und UDP-Ports. Die –PN Option fordert nmap an den Ping-Scan zu überspringen und davon auszugehen, dass der Host aktiv ist. Die Option ist nützlich, wenn auf dem Remote-Computer eine Firewall aktiviert ist und alle ICMP-Pakete verworfen werden.
TCP-Verbindungsscan (kein Root)
$ nmap -sT 14.0.0.6
Der obige Befehl fordert das Betriebssystem auf, eine TCP-Verbindung zu den 1000 gemeinsamen Ports herzustellen, anstatt TCP-SYN-Pakete zu senden.
IPv6-Adressen scannen (kein Root)
Alle obigen Beispielbefehle scannen eine IPv4-Adresse, aber Sie können auch IPv6-Adressen scannen. Dazu müssen Sie die Option „-6 verwenden ‘ gefolgt von einer IPv6-Adresse.
$ nmap -6 2001:db8:000:3eff:fe52:77
Host-Schnittstellen und -Routen auflisten (kein Root)
$ nmap --iflistStart von Nmap 7.01 ( https://nmap.org ) um 2016-07-11 09:53 UTC ********************* ***SCHNITTSTELLEN************************DEV (KURZ) IP/MASKE TYP AUF MTU MAClo (lo) 127.0.0.1/8 loopback up 65536lo (lo) ::1/128 loopback up 65536ens3 (ens3) 14.0.0.5/24 ethernet up 1450 FA:16:3E:C0:14:5Fens3 (ens3) fe 816:4 etherfec:3:3 1450 FA:16:3E:C0:14:5F****************************ROUTEN************ *************** DST / MASK DEV METRIC GATEWAY169.254.169.254 / 32 ens3 14.0.0.114.0.0.0 0/24 ens3 00.0.0.0/0 ens3 0 14.0.0.1::1/128 lo 0fe80::f816:3eff:fec0:145f/128 lo 0fe80::/64 ens3 256ff00::/8 > 5 ensNmap-Ausgaben in einer Textdatei speichern
$ nmap -oN nmap_text.txt 14.0.0.6Nmap-Ausgabe als XML speichern
$ nmap -oX nmap_xml.xml 14.0.0.6Ausgabe in einem Format für grep speichern
$ nmap -oG nmap_grep.txt 14.0.0.6Nmap-Ausgabe in allen Formaten speichern
$ nmap -oA allformats_file 14.0.0.6Nmap mit GUI
Laden Sie Zenmap herunter (oder) installieren Sie es mit apt-get/yum
$ sudo apt-get install zenmap