Esse ferramental costuma vir instalado em distribuições voltadas para segurança da informação, como o Kali
Linux. Estou pressupondo que o leitor desse material utiliza uma voltada para o cotidiano, como o Debian ou o Ubuntu.
Para instalar o Nmap no Debian/Ubuntu, execute o seguinte comando como usuário root:
# apt -y install nmap
Estado das portas no escaneamento do Nmap:
- O Nmap pode ser usado através de linha de comando ou em uma interface gráfica, embora nesse material nos concentremos no console.
- Sua saída será uma lista contendo alvos, e/ou dispositivos rastreados, com informações adicionais de cada um. Uma das informações obtidas pelo rastreamento é uma tabela de portas, que exibe o número de porta, protocolo, nome do serviço e estado que pode ser aberto, filtrado, não filtrado ou fechado.
- Se o estado for aberto, indica que o serviço, ou a aplicação, no servidor escaneado está em execução.
- Quando o estado é filtrado, indica que o Firewall está bloqueando a porta e não permite que o Nmap diga se ela está aberta ou fechada.
- Já no estado fechado, indica que a aplicação não está escutando na porta.
- As portas classificadas como não filtradas, indicam que elas respondem o Nmap, mas ele por sua vez, não consegue determinar se determinada porta se encontra no estado aberto ou fechado.
Exemplos de escaneamento e exploração de redes
Irei expor alguns exemplos de utilização do Nmap, para que o leitor entenda melhor seu funcionamento, utilizando a linha de comandos.
1. Escaneamento básico do Nmap:
nmap 1.1.1.1
Caso você queira utilizar o hostname, basta trocar o IP pelo hostname.
nmap cloudflare.com
O resultado será algo como:
Starting Nmap 7.40 ( https://nmap.org ) at 2019-04-24 12:43 -03
Nmap scan report for one.one.one.one (1.1.1.1)
Host is up (0.019s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp filtered ssh
25/tcp filtered smtp
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
Nmap done: 1 IP address (1 host up) scanned in 8.55 seconds
~$
2. Escanear portas específicas:
Para escanear todas as portas entre 1 e 65535, na máquina local, utilize:
nmap -p 1-65535 localhost
Para escanear as portas 80 (http) e 443 (https) em um IP:
nmap -p 80,443 8.8.8.8
Starting Nmap 7.40 ( https://nmap.org ) at 2019-04-24 12:44 -03
Nmap scan report for google-public-dns-a.google.com (8.8.8.8)
Host is up (0.021s latency).
PORT STATE SERVICE
80/tcp filtered http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 7.96 seconds
3. Escanear vários IPs, ou vários hostnames:
Para realizar o escaneamento nos IPs 1.1.1.1 e 8.8.8.8, utilize:
nmap 1.1.1.1 8.8.8.8
Já para realizar a verificação em uma sequência de IPs (1.1.1.1, 1.1.1.2, 1.1.1.3 e 1.1.1.4):
nmap -p 1.1.1.1,2,3,4
4. Escanear faixas de IPs:
Realizar o escaneamento em 14 IPs consecutivos (8.8.8.1 até o 8.8.8.14):
nmap -p 8.8.8.0/28
Ou:
nmap 8.8.8.1-14
Escanear todo a classe C de um IP (256 IPs - 8.8.8.1 até 8.8.8.256):
nmap 8.8.8.*
Caso queira excluir um IP da lista que será analisada, utilize --exclude:
nmap -p 8.8.8.* --exclude 8.8.8.1
5. Escanear as portas populares na WEB:
Usando o parâmetro "top-ports" junto com o número de portas, como 20, viabiliza que sejam escaneadas as 20 portas mais populares.
nmap --top-ports 20 192.168.15.209
Starting Nmap 7.40 ( https://nmap.org ) at 2019-04-24 12:46 -03
Nmap scan report for 192.168.15.209
Host is up (0.00022s latency).
PORT STATE SERVICE
21/tcp closed ftp
22/tcp open ssh
23/tcp closed telnet
25/tcp closed smtp
53/tcp closed domain
80/tcp closed http
110/tcp closed pop3
111/tcp closed rpcbind
135/tcp closed msrpc
139/tcp closed netbios-ssn
143/tcp closed imap
443/tcp closed https
445/tcp closed microsoft-ds
993/tcp closed imaps
995/tcp closed pop3s
1723/tcp closed pptp
3306/tcp closed mysql
3389/tcp closed ms-wbt-server
5900/tcp closed vnc
8080/tcp open http-proxy
nmap --top-ports 20 google.com
Starting Nmap 7.40 ( https://nmap.org ) at 2019-04-24 12:47 -03
Nmap scan report for google.com (64.233.185.139)
Host is up (0.25s latency).
Other addresses for google.com (not scanned): 64.233.185.102 64.233.185.101 64.2 33.185.100 64.233.185.113 64.233.185.138 2800:3f0:4001:810::200e
rDNS record for 64.233.185.139: yb-in-f139.1e100.net
PORT STATE SERVICE
21/tcp filtered ftp
22/tcp filtered ssh
23/tcp filtered telnet
25/tcp filtered smtp
53/tcp filtered domain
80/tcp open http
110/tcp filtered pop3
111/tcp filtered rpcbind
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
143/tcp filtered imap
443/tcp open https
445/tcp filtered microsoft-ds
993/tcp filtered imaps
995/tcp filtered pop3s
1723/tcp filtered pptp
3306/tcp filtered mysql
3389/tcp filtered ms-wbt-server
5900/tcp filtered vnc
8080/tcp filtered http-proxy
Nmap done: 1 IP address (1 host up) scanned in 12.18 seconds
6. Salve o resultado do escaneamento em um arquivo:
Em muitos casos, será interessante salvar o resultado em um arquivo de texto, para análise no momento ou posterior, além da viabilidade de enviar por e-mail. Para isso, podemos utilizar o parâmetro "-oN" ou "-oX". Para gerar um arquivo de texto, utilize o "-oN".
nmap -oN resultados.txt google.com
Caso seja necessário, os resultados podem ser armazenados em um arquivo XML, será necessário o "-oX".
nmap -oX resultados.xml google.com
7. Desabilitar a resolução de nomes via DNS:
Para que o escaneamento seja mais rápido e mais discreto, a resolução de nomes via DNS pode ser desabilitada com a opção "-n":
nmap -p 80 -n 8.8.8.8
8. Escaneamento que detecta o S.O. (Sistema Operacional) de um servidor:
O uso do parâmetro "-A" permite a detecção do S.O. no servidor destino, ficando ainda mais rápido junto com o "-T4". Veja esse exemplo:
nmap -A -T4 drsolutions.com.br
Starting Nmap 7.40 ( https://nmap.org ) at 2019-04-24 13:03 -03
Nmap scan report for drsolutions.com.br (45.34.14.127)
Host is up (0.16s latency).
rDNS record for 45.34.14.127: playadelsol18.com
Not shown: 994 filtered ports
PORT STATE SERVICE VERSION
53/tcp closed domain
80/tcp open http Apache httpd 2.4.25 ((Debian))
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Did not follow redirect to https://drsolutions.com.br/
443/tcp open ssl/http Apache httpd 2.4.25 ((Debian))
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: drSolutions - Ag\xC3\xAAncia Digital - Sites, Marketing A drSolution...
| ssl-cert: Subject: commonName=drsolutions.com.br
| Subject Alternative Name: DNS:drsolutions.com.br, DNS:hospedagem.drsolutions.com.br, DNS:suporte.drsolutions.com.br, DNS:tarefas.drsolutions.com.br, DNS:treinamentos.drsolutions.com.br, DNS:www.drsolutions.com.br
| Not valid before: 2019-04-15T22:37:25
|_Not valid after: 2019-07-14T22:37:25
|_ssl-date: TLS randomness does not represent time
993/tcp closed imaps
995/tcp closed pop3s
8080/tcp open ssl/ssl Apache httpd (SSL-only mode)
| http-robots.txt: 1 disallowed entry
|_/
|_http-server-header: Apache/2.4.25 (Debian)
| http-title: 400 Bad Request
|_Requested resource was /login/
| ssl-cert: Subject: commonName=server.zhap.com.br/organizationName=drSolutions/stateOrProvinceName=SP/countryName=BR
| Not valid before: 2019-04-08T13:02:13
|_Not valid after: 2029-04-05T13:02:13
|_ssl-date: TLS randomness does not represent time
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 67.57 seconds
9. Detectar serviços e suas versões:
Essa detecção pode ser realizada com os parâmetros "-sV".
nmap -sV vivaolinux.com.br
Starting Nmap 7.40 ( https://nmap.org ) at 2019-04-24 13:08 -03
Nmap scan report for vivaolinux.com.br (54.233.68.155)
Host is up (0.017s latency).
rDNS record for 54.233.68.155: ec2-54-233-68-155.sa-east-1.compute.amazonaws.com
Not shown: 994 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
80/tcp open http nginx 1.14.0
443/tcp open https?
3000/tcp closed ppp
8000/tcp closed http-alt
8443/tcp open https-alt?
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 30.27 seconds
10. Escaneamento em protocolos TCP ou UDP:
Escaner básico utilizando o protocolo TCP, utilizando "-sT":
nmap -sT 1.1.1.1
Escaner básico utilizando o protocolo UDP, utilizando "-sU":
# nmap -sU 1.1.1.1
Starting Nmap 7.40 ( https://nmap.org ) at 2019-04-24 13:12 -03
Nmap scan report for one.one.one.one (1.1.1.1)
Host is up (0.017s latency).
Not shown: 981 closed ports
PORT STATE SERVICE
7/udp open|filtered echo
13/udp open|filtered daytime
19/udp open|filtered chargen
67/udp open|filtered dhcps
123/udp open|filtered ntp
135/udp open|filtered msrpc
136/udp open|filtered profile
137/udp open|filtered netbios-ns
138/udp filtered netbios-dgm
139/udp open|filtered netbios-ssn
161/udp open snmp
445/udp open|filtered microsoft-ds
520/udp open|filtered route
1645/udp open|filtered radius
1646/udp open|filtered radacct
1812/udp open|filtered radius
1813/udp open|filtered radacct
2000/udp open|filtered cisco-sccp
49152/udp open|filtered unknown
11. Utilizar o spoofing do IP:
Ao realizar um escaneamento, pode ser necessário realizar o spoofing do IP, ou seja, esconder o IP de origem do escaneamento. Isso pode ser feito com a opção "-S":
nmap -S 10.10.10.5 192.168.15.210
Nesse escaneamento, caso alguém esteja monitorando os pacotes, o IP de origem será 10.10.10.5, ao invés do IP real de minha máquina.