Nmap è un mappatore di rete open source che consente di scansionare la rete di host, servizi, eseguire valutazioni della sicurezza e auditing. Questo utile comando include un sacco di opzioni e funzionalità, ma devi avere esperienza per usarlo. In questo tutorial, cercherò di introdurre alcuni esempi di comandi che possono aiutarti a identificare possibili punti vulnerabili negli host, intera sottorete, rilevamento della versione del sistema operativo e dei servizi, elenco di servizi, interfacce, percorsi, identificazione del mac ecc...
Quindi, eccoci qui.
Alcuni dei gusti di Linux potrebbero non venire con nmap installato, quindi puoi installarlo usando yum o apt-get a seconda del sistema operativo in uso.
# yum install nmap
o
# apt-get install nmap
Iniziamo con la scansione di un singolo host:
Scansione di un singolo indirizzo IP (senza root)
$ nmap 14.0.0.6
Esempio di output:
Host attivo (latenza 0.00035s).Non mostrato:999 porte chiusePORT STATE SERVICE22/tcp aperto sshNmap eseguito:1 indirizzo IP (1 host attivo) scansionato in 1,50 secondi
Scansione di più indirizzi IP (senza root)
$ nmap 14.0.0.6 14.0.0.5
Scansione di più indirizzi IP utilizzando la virgola come delimitatore
$ nmap 14.0.0.6,5
Il comando sopra eseguirà la scansione degli indirizzi IP 14.0.0.5 e 14.0.0.6
Intervallo di scansione di indirizzi IP (senza root)
$ nmap 14.0.0.1-5
Il comando sopra eseguirà la scansione dell'indirizzo IP a partire da 14.0.0.1 a 14.0.0.5
Scansione dell'indirizzo IP tramite caratteri jolly (senza root)
$ nmap 14.0.0.*
Scansione di tutti gli indirizzi IP in una sottorete
$ nmap 14.0.0.0/24
Scansione di un host utilizzando il nome di dominio
$ nmap www.example.com
Scansione degli host che leggono da un file di testo
$ cat host-list.txt 14.0.0.1 www.example.com 14.0.0.2
$ nmap -iL host-list.txt
Scansione di una sottorete escludendo un particolare indirizzo IP
$ nmap 14.0.0.0/24 --exclude 14.0.0.1
Scansiona una sottorete escludendo l'elenco di indirizzi IP
$ nmap 14.0.0.0/24 --exclude 14.0.0.1,2
Scansiona una sottorete escludendo l'elenco di indirizzi IP da un file
$ cat exclude-ips.txt14.0.0.1,2,3,4,5
$ nmap 14.0.0.0/24 --excludefile exclude-ips.txt
Identifica i nomi host di tutti gli IP in una sottorete (senza root)
$ nmap -sL 14.0.0.0/24
Esegui scansione PING
Il ping sweep viene generalmente utilizzato per scoprire quali host sono attivi nella rete. È possibile utilizzare Ping sweep se si desidera eseguire la scansione di un numero elevato di host in una rete.
# nmap -sP 14.0.0.6
Scansiona una singola porta di un particolare indirizzo IP o host (senza root)
$ nmap -p 22 14.0.0.6
Risultato di esempio:
L'host è attivo (0,00066 di latenza).PORT STATE SERVICE22/tcp aperto sshNmap eseguito:1 indirizzo IP (1 host attivo) scansionato in 0,47 secondi
Scansiona un intervallo di porte (senza root)
$ nmap -p 15-23 14.0.0.6
Risultato di esempio:
PORT STATE SERVICE15/tcp closed netstat16/tcp closed unknown17/tcp closed qotd18/tcp closed unknown19/tcp closed chargen20/tcp closed ftp-data21/tcp closed ftp22/tcp open ssh23/tcp closed telnet
Esegui una scansione veloce delle porte (100 porte più comuni) (senza root)
$ nmap -F 14.0.0.6
Scansiona il primo $numero di porte (senza root)
$ nmap --top-ports 10 14.0.0.6
$ nmap --top-ports 2 14.0.0.6
Scansiona tutte le porte (senza root)
$ nmap -p- 14.0.0.6
Il comando precedente eseguirà la scansione di tutte le 65535 porte di un determinato indirizzo IP.
Rilevamento delle informazioni sul sistema operativo e sul servizio di un host remoto (senza root)
$ nmap -A 14.0.0.6
Risultato di esempio:
Avvio di Nmap 7.01 ( https://nmap.org ) alle 06:34 UTC dell'11-07-2016 L'host è attivo (latenza 0.00029s). Non mostrato:999 porte chiuse PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu1 (Ubuntu Linux; protocollo 2.0) :::::::::::::::::::::
Rilevamento del servizio (nessuna radice)
$ nmap -sV 14.0.0.6
Rilevamento di servizi aggressivi (nessuna radice)
Il comando Nmap si basa su diversi metodi per rilevare il sistema operativo e le informazioni sul servizio. Il rilevamento del servizio aggressivo è utile quando il servizio viene eseguito su una porta non comune (ad esempio, SSH dovrebbe essere in ascolto sulla porta 22, ma l'host remoto potrebbe eseguire il servizio su una porta diversa). Il rilevamento del servizio aggressivo è più lento del normale rilevamento del servizio, poiché quest'ultimo ottiene le informazioni dai banner del servizio.
$ nmap -sV --version-intensity 5 14.0.0.6
Risultato di esempio:
Host attivo (latenza 0.00044s).Non mostrato:999 porte chiusePORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu1 (Ubuntu Linux; protocollo 2.0)Informazioni sul servizio:OS:Linux; CPE:cpe:/o:linux:linux_kernelService rilevamento eseguito. Segnala eventuali risultati errati su https://nmap.org/submit/
Rilevamento del sistema operativo (radice)
L'esempio di rilevamento del servizio di cui sopra rivelerà le informazioni sul sistema operativo. È anche possibile indovinare il sistema operativo e la sua versione utilizzando anche il comando seguente.
Nota:il rilevamento del sistema operativo richiede il privilegio di root.
$ nmap -O 14.0.0.6 Il fingerprinting TCP/IP (per la scansione del sistema operativo) richiede i privilegi di root.CHIUDERE!
# nmap -O 14.0.0.6
# nmap -O --osscan-guess 14.0.0.6Avvio di Nmap 7.01 ( https://nmap.org ) alle 11-07-2016 08:39 UTCHost è attivo (latenza 0.00035s).Non mostrato:999 chiuso portsPORT STATE SERVICE22/tcp open sshAggressive OS supposizioni:Linux 3.1 (93%), Linux 3.2 (93%), AXIS 210A o 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
Rileva se un host è protetto da un firewall (root)
Quando il firewall è disabilitato nell'host remoto, nmap scansiona tutte le porte e dice che non sono filtrate come mostrato di seguito:
# nmap -sA 14.0.0.6Host attivo (latenza 0.00042s).Tutte le 1000 porte scansionate su henry2.cloudsecurity.in (14.0.0.6) non sono filtrate
Quando il firewall è abilitato nell'host remoto, nmap dice che le porte sono filtrate:
# nmap -sA 14.0.0.6Rapporto di scansione Nmap per henry2.cloudsecurity.in (14.0.0.6)L'host è attivo (0.00045 di latenza).Tutte le 1000 porte scansionate su henry2.cloudsecurity.in (14.0.0.6) vengono filtrate
Scansione tramite script NSE
Ci sono circa 400+ NSE (Nmap S scripting E ngine) che possono essere utilizzati con nmap e ogni script viene fornito con una buona documentazione. Per identificare l'elenco degli script installati nella tua macchina, esegui il comando seguente:
# locate 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 per identificare i sottodomini di un determinato dominio (senza root)
nmap consente di identificare l'elenco dei sottodomini per un determinato host. L'identificazione dei sottodomini di un host può rivelare nuovi obiettivi durante l'esecuzione della valutazione della sicurezza. Per farlo, dns-brute.nse è necessario utilizzare lo script.
$ nmap -p 80 --script dns-brute.nse esempio.com
Esempio di output:
PORT STATE SERVICE80/tcp open httpRisultati dello script host:| dns-bruto:| Nomi host DNS Brute-force:| www.example.com - 93.184.216.34|_ www.example.com - 2606:2800:220:1:248:1893:25c8:1946
Identificazione degli host virtuali su un determinato host (senza root)
Il nome di dominio fornito può ospitare più siti Web utilizzando la funzione host virtuale dei server Web. Puoi identificare gli host virtuali utilizzando hostmap-bfk.nse copione.
$ nmap -p 80 --script hostmap-bfk.nse nmap.org Risultati dello script host:| hostmap-bfk:| ospita:| mail.nmap.org | 45.33.49.119 | 119.49.33.45.in-addr.arpa | ack.nmap.org | sectools.org | svn.nmap.org | insicuro.com | mail.seclists.org | seclists.org | mirror.sectools.org | www.insicuro.org | nmap.org | insicuro.org | www.nmap.org |_ www.insecure.com
Identifica la posizione geografica di un determinato host
# nmap --traceroute --script traceroute-geolocation.nse -p 80 esempio.com
Esempio di output:
:::::::::::::::::Risultati dello script host:| traceroute-geolocalizzazione:| Hop rtt indirizzo geolocalizzazione | 1 0.44 14.0.0.1 23.113 Cina (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 India (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 Regno Unito () | 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 Regno Unito () | 15 168.70 SO-1-0-0.0.pjr01.wad001.flagtel.com (85.95.25.193) 51,0 Regno Unito () | 16 168.13 SO-2-2-0.0.pjr01.wad001.flagtel.com (85.95.25.37) 51,0 Regno Unito () | 17 293.97 SO-2-1-0.0.pjr01.lax002.flagtel.com (85.95.25.17) 51,0 Regno Unito () | 18 275.17 Any2ix.coresite.com (206.223.143.232) 38, -97 Stati Uniti () | _ 19 295.32 93.184.216.34 42, -70 Stati Uniti (Massachusetts) :::::::::::::::::::::::::::::::::::::::::::::::. ha :::::::::::::::::::::
Ad esempio, identifica l'elenco di script correlati a HTTP:
# locate 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 :::::::::::::::::::::::
Dall'output sopra, puoi copiare il nome dello script e usarlo con –script opzione.
Ottieni informazioni sul servizio HTTP (senza root)
Esistono molti script per ottenere informazioni sul servizio HTTP come il titolo della pagina Web, le intestazioni HTTP, la ricerca di vari percorsi noti dell'applicazione Web ecc...
$ nmap --script=http-title 14.0.0.5 Host attivo (0.0000070 di latenza).Non mostrato:998 porte chiusePORT STATE SERVICE22/tcp open ssh80/tcp open http|_http-title:Apache2 Ubuntu Pagina predefinita:funziona
Ottieni informazioni sull'intestazione HTTP (nessuna radice)
$ nmap --script=http-headers 14.0.0.5PORT STATE SERVICE22/tcp open ssh80/tcp open http| http-intestazioni:| Data:Mon, 11 Jul 2016 07:08:05 GMT| Server:Apache/2.4.18 (Ubuntu)| Ultima modifica:Mon, 11 Jul 2016 07:04:49 GMT| ETag:"2c39-53756c49f4280"| Accetta-Range:byte| Contenuto-Lunghezza:11321| Varia:Accetta-Codifica| Collegamento:chiudi| Tipo di contenuto:text/html||_ (Tipo di richiesta:HEAD)
Identifica i percorsi noti dell'applicazione Web HTTP (senza root)
$ nmap --script=http-enum 14.0.0.580/tcp aperto http| http-enum:|_ /server-status/:cartella potenzialmente interessante
Rileva la vulnerabilità di Heartbleed SSL (senza root)
Potresti aver sentito parlare della vulnerabilità SSL heartbleed. Il comando Nmap può essere utilizzato per rilevare questa vulnerabilità come mostrato di seguito:
nmap -sV -p 443 --script=ssl-heartbleed 14.0.0.0/24
Identifica il whois di un nome di dominio (senza root)
$ nmap -sV --script=whois-domain.nse www.example.com
Risultato di esempio:
Risultati dello script host:| dominio-whois:|| Record del nome di dominio trovato su whois.iana.org| % server WHOIS IANA| % per ulteriori informazioni su IANA, visitare http://www.iana.org| % Questa query ha restituito 1 oggetto|| dominio: EXAMPLE.COM|| organizzazione:Internet Assigned Numbers Authority|| creato: 1992-01-01| fonte: IANA|_
TCP Syn e Scansione UDP (root)
# nmap -sS -sU -PN 14.0.0.6
Il comando precedente eseguirà la scansione di 2000 porte TCP e UDP comuni. Il –PN richieste di opzioni nmap per saltare la scansione ping e presumere che l'host sia attivo. L'opzione è utile quando la macchina remota ha il firewall abilitato e rilascia tutti i pacchetti ICMP.
Scansione connessione TCP (senza root)
$ nmap -sT 14.0.0.6
Il comando precedente richiede al sistema operativo di stabilire una connessione TCP alle 1000 porte comuni invece di inviare il pacchetto TCP SYN.
Scansiona un indirizzo IPv6 (senza root)
Tutti i comandi di esempio precedenti stavano scansionando un indirizzo IPv4, ma puoi anche scansionare l'indirizzo IPv6. Per farlo, devi utilizzare l'opzione '-6 ' seguito da un indirizzo IPv6.
$ nmap -6 2001:db8:000:3eff:fe52:77
Elenca interfacce e percorsi host (nessuna root)
$ nmap --iflistStarting Nmap 7.01 ( https://nmap.org ) at 2016-07-11 09:53 UTC********************* ***INTERFACCE************************DEV (SHORT) IP/MASK TYPE UP MTU MAClo (lo) 127.0.0.1/8 loopback 65536lo (lo) ::1/128 loopback up 65536ens3 (ens3) 14.0.0.5/24 ethernet up 1450 FA:16:3E:C0:14:5Fens3 (ens3) fe80::f816:16f:fec/fec 1450 FA:16:3E:C0:14:5F****************************** PERCORSI*********** ********************** :1/128 lo 0fe80::f816:3eff:fec0:145f/128 lo 0fe80::/64 ens3 256ff00::/8 6 5Salva gli output di Nmap in un file di testo
$ nmap -oN nmap_text.txt 14.0.0.6Salva l'output di Nmap come XML
$ nmap -oX nmap_xml.xml 14.0.0.6Salva l'output in un formato per grep
$ nmap -oG nmap_grep.txt 14.0.0.6Salva l'output di Nmap in tutti i formati
$ nmap -oA allformats_file 14.0.0.6Nmap con GUI
Scarica Zenmap (o) installalo usando apt-get/yum
$ sudo apt-get install zenmap