O que é o Nmap?
É uma ferramenta de segurança de código aberto para exploração de rede, varredura de segurança e auditoria. No entanto, o nmap vem com muitas opções que podem tornar o utilitário mais robusto e difícil de seguir para novos usuários.
O objetivo deste post é a introdução de um usuário para a ferramenta de linha de comando nmap para escanear um host e/ou rede, de modo a descobrir os possíveis pontos vulneráveis das maquinas. Você também vai aprender a usar o Nmap para fins ofensivos e defensivos.
Configuração de exemplo (LAB)
Varredura de portas pode ser ilegal em algumas países. Assim é mais pratico configurar um laboratório como o exemplo abaixo:
+---------+ +---------+ | Network | +--------+ | server1 |-----------+ swtich +---------|server2 | +---------+ | (sw0) | +--------+ +----+----+ | | +---------+----------+ | wks01 Linux/OSX | +--------------------+
#1: Scan de um host ou um endereço (IPv4)
### Scan em um único endereço ### nmap 192.168.1.1 ## Scan em um host pelo nome ### nmap server1.cyberciti.biz ## Scan em um host pelo nome e obtendo mais informações ### nmap -v server1.cyberciti.biz
Exemplos de saída:
#2: Scan múltiplos endereços ou sub-redes (IPv4)
nmap 192.168.1.1 192.168.1.2 192.168.1.3
## Scan na mesma sub-rede i.e. 192.168.1.0/24
nmap 192.168.1.1,2,3
Scan no range de endereços:
nmap 192.168.1.1-20
Scan usando caracteres coringas:
nmap 192.168.1.*
Scan em uma sub-rede inteira:
nmap 192.168.1.0/24
#3: Lendo uma lista de redes ou hosts em um arquivo (IPv4)
É possível fazer um scan utilizando uma lista com endereços de hosts ou redes, isso é ultil quando precisamos scannear uma rede muito grande ou varios hosts, para isso crie um arquivo de acordo com o padrão abaixo:cat > /tmp/test.txt
Exemplo de saída:
server1.cyberciti.biz 192.168.1.0/24 192.168.1.1/24 10.1.2.3 localhost
Fazendo o scan:
nmap -iL /tmp/test.txt
#4: Excluindo hosts ou sub-redes (IPv4)
Ao fazer um scan em uma grande sub-rede você pode excluir um ou vários hosts.
nmap 192.168.1.0/24 --exclude 192.168.1.5 nmap 192.168.1.0/24 --exclude 192.168.1.5,192.168.1.254
Ou excluir em uma lista /tmp/exclude.txt
nmap -iL /tmp/scanlist.txt --excludefile /tmp/exclude.txt
#5: Detectando o versão do sistema operacional (IPv4)
nmap -A 192.168.1.254 nmap -v -A 192.168.1.1 nmap -A -iL /tmp/scanlist.txt
#6: Descubra se o alvo é protegido por um firewall
nmap -sA 192.168.1.254 nmap -sA server1.cyberciti.biz
#7: Scan quando o host é protegido por um firewall
nmap -PN 192.168.1.1 nmap -PN server1.cyberciti.biz
#8: Scan em rede IPv6
A opção -6 ativa a opção de ipv6 a sua sintaxe é:
nmap -6 IPv6-Address-Here nmap -6 server1.cyberciti.biz nmap -6 2607:f0d0:1002:51::4 nmap -v A -6 2607:f0d0:1002:51::4
#9: Scan para descobrir quais servidores e dispositivos estão funcionando
nmap -sP 192.168.1.0/24
Exemplo de saída:
Host 192.168.1.1 is up (0.00035s latency). MAC Address: BC:AE:C5:C3:16:93 (Unknown) Host 192.168.1.2 is up (0.0038s latency). MAC Address: 74:44:01:40:57:FB (Unknown) Host 192.168.1.5 is up. Host nas03 (192.168.1.12) is up (0.0091s latency). MAC Address: 00:11:32:11:15:FC (Synology Incorporated) Nmap done: 256 IP addresses (4 hosts up) scanned in 2.80 second
#10: Executa uma verificação rápida
nmap -F 192.168.1.1
#11: Mostra a razão da porta estar em determinado estado
nmap --reason 192.168.1.1 nmap --reason server1.cyberciti.biz
#12: Mostra apenas portas abertas (ou possivelmente abertas)
nmap --open 192.168.1.1 nmap --open server1.cyberciti.biz
#13: Mostra todos os pacotes enviados e recebidos
nmap --packet-trace 192.168.1.1 nmap --packet-trace server1.cyberciti.biz
14#: Mostra interface e rotas dos hosts
Isso é útil para detecção de problemas na rede
nmap --iflist
Exemplo de saída:
Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 02:01 IST ************************INTERFACES************************ DEV (SHORT) IP/MASK TYPE UP MAC lo (lo) 127.0.0.1/8 loopback up eth0 (eth0) 192.168.1.5/24 ethernet up B8:AC:6F:65:31:E5 vmnet1 (vmnet1) 192.168.121.1/24 ethernet up 00:50:56:C0:00:01 vmnet8 (vmnet8) 192.168.179.1/24 ethernet up 00:50:56:C0:00:08 ppp0 (ppp0) 10.1.19.69/32 point2point up **************************ROUTES************************** DST/MASK DEV GATEWAY 10.0.31.178/32 ppp0 209.133.67.35/32 eth0 192.168.1.2 192.168.1.0/0 eth0 192.168.121.0/0 vmnet1 192.168.179.0/0 vmnet8 169.254.0.0/0 eth0 10.0.0.0/0 ppp0 0.0.0.0/0 eth0 192.168.1.2
#15: Especificar uma porta
map -p [port] hostName ## Scan na porta 80 nmap -p 80 192.168.1.1 ## Scan TCP na porta 80 nmap -p T:80 192.168.1.1 ## Scan UDP na porta 53 nmap -p U:53 192.168.1.1 ## Scan two nas portas ## nmap -p 80,443 192.168.1.1 ## Scan port ranges ## nmap -p 80-200 192.168.1.1 ## Combinar várias opções ## nmap -p U:53,111,137,T:21-25,80,139,8080 192.168.1.1 nmap -p U:53,111,137,T:21-25,80,139,8080 server1.cyberciti.biz nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 192.168.1.254 ## Scan todas as portas usando coringas ## nmap -p "*" 192.168.1.1 ## Scan de portas mais comuns ## nmap --top-ports 5 192.168.1.1 nmap --top-ports 10 192.168.1.1
Exemplo de saída:
Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:23 IST Interesting ports on 192.168.1.1: PORT STATE SERVICE 21/tcp closed ftp 22/tcp open ssh 23/tcp closed telnet 25/tcp closed smtp 80/tcp open http 110/tcp closed pop3 139/tcp closed netbios-ssn 443/tcp closed https 445/tcp closed microsoft-ds 3389/tcp closed ms-term-serv MAC Address: BC:AE:C5:C3:16:93 (Unknown) Nmap done: 1 IP address (1 host up) scanned in 0.51 seconds
#16: A maneira mais rápida de descobrir todas as portas e computadores em uma rede
nmap -T5 192.168.1.0/24
#17: Detectando um sistema operacional remoto
nmap -O 192.168.1.1 nmap -O --osscan-guess 192.168.1.1 nmap -v -O --osscan-guess 192.168.1.1
Exemplo de saída:
Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:29 IST NSE: Loaded 0 scripts for scanning. Initiating ARP Ping Scan at 01:29 Scanning 192.168.1.1 [1 port] Completed ARP Ping Scan at 01:29, 0.01s elapsed (1 total hosts) Initiating Parallel DNS resolution of 1 host. at 01:29 Completed Parallel DNS resolution of 1 host. at 01:29, 0.22s elapsed Initiating SYN Stealth Scan at 01:29 Scanning 192.168.1.1 [1000 ports] Discovered open port 80/tcp on 192.168.1.1 Discovered open port 22/tcp on 192.168.1.1 Completed SYN Stealth Scan at 01:29, 0.16s elapsed (1000 total ports) Initiating OS detection (try #1) against 192.168.1.1 Retrying OS detection (try #2) against 192.168.1.1 Retrying OS detection (try #3) against 192.168.1.1 Retrying OS detection (try #4) against 192.168.1.1 Retrying OS detection (try #5) against 192.168.1.1 Host 192.168.1.1 is up (0.00049s latency). Interesting ports on 192.168.1.1: Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http MAC Address: BC:AE:C5:C3:16:93 (Unknown) Device type: WAP|general purpose|router|printer|broadband router Running (JUST GUESSING) : Linksys Linux 2.4.X (95%), Linux 2.4.X|2.6.X (94%), MikroTik RouterOS 3.X (92%), Lexmark embedded (90%), Enterasys embedded (89%), D-Link Linux 2.4.X (89%), Netgear Linux 2.4.X (89%) Aggressive OS guesses: OpenWrt White Russian 0.9 (Linux 2.4.30) (95%), OpenWrt 0.9 - 7.09 (Linux 2.4.30 - 2.4.34) (94%), OpenWrt Kamikaze 7.09 (Linux 2.6.22) (94%), Linux 2.4.21 - 2.4.31 (likely embedded) (92%), Linux 2.6.15 - 2.6.23 (embedded) (92%), Linux 2.6.15 - 2.6.24 (92%), MikroTik RouterOS 3.0beta5 (92%), MikroTik RouterOS 3.17 (92%), Linux 2.6.24 (91%), Linux 2.6.22 (90%) No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ). TCP/IP fingerprint: OS:SCAN(V=5.00%D=11/27%OT=22%CT=1%CU=30609%PV=Y%DS=1%G=Y%M=BCAEC5%TM=50B3CA OS:4B%P=x86_64-unknown-linux-gnu)SEQ(SP=C8%GCD=1%ISR=CB%TI=Z%CI=Z%II=I%TS=7 OS:)OPS(O1=M2300ST11NW2%O2=M2300ST11NW2%O3=M2300NNT11NW2%O4=M2300ST11NW2%O5 OS:=M2300ST11NW2%O6=M2300ST11)WIN(W1=45E8%W2=45E8%W3=45E8%W4=45E8%W5=45E8%W OS:6=45E8)ECN(R=Y%DF=Y%T=40%W=4600%O=M2300NNSNW2%CC=N%Q=)T1(R=Y%DF=Y%T=40%S OS:=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%R OS:D=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W= OS:0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=N)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID OS:=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S) Uptime guess: 12.990 days (since Wed Nov 14 01:44:40 2012) Network Distance: 1 hop TCP Sequence Prediction: Difficulty=200 (Good luck!) IP ID Sequence Generation: All zeros Read data files from: /usr/share/nmap OS detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 12.38 seconds Raw packets sent: 1126 (53.832KB) | Rcvd: 1066 (46.100KB)
#18: Detectando serviços remotos e sua versão
nmap -sV 192.168.1.1
Exemplo de saída:
Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:34 IST Interesting ports on 192.168.1.1: Not shown: 998 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh Dropbear sshd 0.52 (protocol 2.0) 80/tcp open http? 1 service unrecognized despite returning data.
#19: Scan de host usando TCP ACK (PA) e TCP Syn (PS) ping
Caso o firewall esteja bloqueando os pings tente os seguintes comandos:
nmap -PS 192.168.1.1 nmap -PS 80,21,443 192.168.1.1 nmap -PA 192.168.1.1 nmap -PA 80,21,200-512 192.168.1.1
#20: Scan em host usando ping
nmap -PO 192.168.1.1
#21: Scan a host usando UDP ping
nmap -PU 192.168.1.1 nmap -PU 2000.2001 192.168.1.1
#22: Descubra as portas mais utilizadas usando TCP SYN
### scan ### nmap -sS 192.168.1.1 ### Portas mais utilizadas utilizando TCP connect nmap -sT 192.168.1.1 ### Portas mais usadas utilizando TCP ACK nmap -sA 192.168.1.1 ### Portas mais usadas utilizando TCP window nmap -sW 192.168.1.1 ### Portas mais usadas utilizando TCP Maimon nmap -sM 192.168.1.1
#23: Scan de host utilizando serviços UDP (UDP scan)
Serviços mais comuns utilizando protocolo UDP
nmap -sU nas03 nmap -sU 192.168.1.1
Exemplo de saída:
Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 00:52 IST Stats: 0:05:29 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan UDP Scan Timing: About 32.49% done; ETC: 01:09 (0:11:26 remaining) Interesting ports on nas03 (192.168.1.12): Not shown: 995 closed ports PORT STATE SERVICE 111/udp open|filtered rpcbind 123/udp open|filtered ntp 161/udp open|filtered snmp 2049/udp open|filtered nfs 5353/udp open|filtered zeroconf MAC Address: 00:11:32:11:15:FC (Synology Incorporated) Nmap done: 1 IP address (1 host up) scanned in 1099.55 seconds
#24: Scan pelo protocolo IP
Este tipo de scan você pode determinar qual o tipo de protocolo ip deseja (TCP, ICMP, IGMP, etc.)
nmap -sO 192.168.1.1
#25: Scan de firewall com falha de segurança
Os seguintes tipos de verificação explorar uma brecha sutil no TCP, é bom para testar a segurança de ataques comuns:
## TCP Null engana o firewall para obter uma resposta ## nmap -sN 192.168.1.254 ## TCP Fin varredura no firewall ## nmap -sF 192.168.1.254 ## TCP Xmas varredura no firewall ##
#26: Scan de firewall com fragmentos de pacotes
nmap -f 192.168.1.1 nmap -f fw2.nixcraft.net.in nmap -f 15 fw2.nixcraft.net.in ## Set your own offset size with the --mtu option ## nmap --mtu 32 192.168.1.1
#27: Scan decoys (camufla o ip)
nmap -n -Ddecoy-ip1,decoy-ip2,your-own-ip,decoy-ip3,decoy-ip4 remote-host-ip nmap -n -D192.168.1.5,10.5.1.2,172.1.2.4,3.4.2.1 192.168.1.5
#28: Scan de firewall com MAC spoofing
### Spoof de MAC address ## nmap --spoof-mac MAC-ADDRESS-HERE 192.168.1.1 ### Adiciona outras opções ### nmap -v -sT -PN --spoof-mac MAC-ADDRESS-HERE 192.168.1.1 ### Use um MAC randômico ### ### O número 0 faz com que o nmap escolha aleatoriamente ### nmap -v -sT -PN --spoof-mac 0 192.168.1.1
#29: Salvando a saída em um arquivo de texto
nmap 192.168.1.1 > output.txt nmap -oN /path/to/filename 192.168.1.1 nmap -oN output.txt 192.168.1.1
#30: Instalando nmap em modo gráfico?
Instalando utilizando o comando apt-get:
$ sudo apt-get install zenmap
Exemplo da saída:
[sudo] password for vivek: Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: zenmap 0 upgraded, 1 newly installed, 0 to remove and 11 not upgraded. Need to get 616 kB of archives. After this operation, 1,827 kB of additional disk space will be used. Get:1 http://debian.osuosl.org/debian/ squeeze/main zenmap amd64 5.00-3 [616 kB] Fetched 616 kB in 3s (199 kB/s) Selecting previously deselected package zenmap. (Reading database ... 281105 files and directories currently installed.) Unpacking zenmap (from .../zenmap_5.00-3_amd64.deb) ... Processing triggers for desktop-file-utils ... Processing triggers for gnome-menus ... Processing triggers for man-db ... Setting up zenmap (5.00-3) ... Processing triggers for python-central ...
Inicializando o nmap em modo gráfico:
$ sudo zenmap
Nmap em modo gráfico:
Artigo original: www.cyberciti.biz