Este documento resume as principais funcionalidades e técnicas do programa Nmap, um popular scanner de portas e descobridor de serviços. Em 3 frases ou menos, o documento explica que o Nmap usa vários tipos de varreduras como SYN scan, NULL scan e ping scan para descobrir quais portas estão abertas, fechadas ou filtradas em um alvo, e também tenta detectar o sistema operacional e versões de serviços em uso. O documento também discute algumas defesas contra varreduras de portas e usos práticos do Nmap
1. Por trás da porta verde!
Usando NMAP
Luiz Thiago
lthiagol@gmail.com
@lthiagol
2. Quem sou eu ...
• Graduação
– IFPB – Redes de Computadores
• Especialização
– I2P – Segurança da Informação
• Profissão
– Unimed CG - Analista de Infraestrutura de TIC
6. NMAP Origem
• 1º. de Setembro de 1997
• Edição 51 da Phrack
• Gordon Lyon a.k.a. Fyodor
• Network Mapper - NMAP
• 2.000 linhas de código
• Suportando apenas Linux
7. “Inexperienced users and script kiddies, […], try
to solve every problem with the default SYN
scan. Since Nmap is free, the only barrier to port
scanning mastery is knowledge.”
nmap.org/book/man-port-scanning-techniques.html
“Usuários inexperientes e script kiddies, [...], tentam resolver todos
problemas usando apenas o SYN scan padrão. Como o Nmap é grátis, a única
barreira para dominar o port scanning é o conhecimento.”
Tradução livre
NMAP Motivação
15. NMAP Básico
• $ nmap <alvo>
– Executa uma varredura em mais de 1.000 portas
TCP no computador <alvo>
– Classificando as portas em seis estados:
• open, closed, filtered, unfiltered, open|filtered,
e closed|filtered
16. NMAP Básico
As portas são listadas de acordo com o acesso
do host que está executando o NMAP e do
momento da execução. Varreduras executadas
em outros momentos ou a partir de outros hosts
podem, senão irão, mostrar resultados
diferentes.
17. NMAP Básico
• Estado das portas:
– Open: Uma aplicação está aceitando conexões
TCP, datagramas UDP ou associações SCTP nessa
porta – Objetivo principal do NMAP é achar essas
portas
– Closed: Uma porta nesse estado é acessível,
porém, nenhuma aplicação está escutando na
mesma.
18. NMAP Básico
• Estado das portas:
– Filtered: O NMAP não consegue determinar se a
porta está open, pois, um filtro de pacotes impede
essa ação.
– Unfiltered: A porta está acessível, mas não é
possível determinar se está open ou closed – Esse
estado é retornado apenas pelo ACK scan!
19. NMAP Básico
• Open|Filtered: Estado indicado quando não é
possível determinar com certeza se a porta
está open ou filtered.
• Closed|Filtered: Similar ao estado
Open|Filtered, mas entre os estados closed e
filtered.
20. NMAP Test-drive
# nmap -A -T4 scanme.nmap.org
Starting nmap ( http://insecure.org/nmap/ )
Interesting ports on scanme.nmap.org (205.217.153.62):
(The 1663 ports scanned but not shown below are in state: filtered)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 3.9p1 (protocol 1.99)
53/tcp open domain
70/tcp closed gopher
80/tcp open http Apache httpd 2.0.52 ((Fedora))
113/tcp closed auth
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11
Uptime 33.908 days (since Thu Jul 21 03:38:03 2005)
21. NMAP AVISO
• Port Scanning pode ser encarado como um
ataque, pois, a primeira etapa de um ataque é
justamente o levantamento de informações.
• Use em apenas em ambientes controlados e
com permissão
• Maquinas virtuais são uma boa ideia!
• scanme.nmap.org
23. NMAP -sS
• -sS (TCP SYN scan)
– Método padrão do NMAP
– Rápido, não obstruído por firewalls restritivos e
“silencioso”
– Diferenciação confiável entre open, closed e
filtered
– Inicia conexões TCP, aguarda uma resposta e
analisa.
25. NMAP -sS
• NMAP solicita a conexão (SYN Flag)
– SYN/ACK Flags de resposta – OPEN
– RST Flag de resposta – CLOSED
– Sem resposta ou um ICMP unreachable error – Filtered
• Necessário privilégios de superusuário/admin
26. NMAP -sT
• -sT (TCP connect scan)
– Opção padrão quando o SYN Scan não está
disponível ou o usuário não tem privilégios
– Usando a chamada de sistema CONNECT o NMAP
tenta estabelecer uma conexão TCP com o alvo
– Fácil detecção, pois, gera logs no destino
– É mais demorada que a opção -sS
– Infelizmente o NMAP não tem tanto controle da
chamada CONNECT e isso torna essa opção menos
eficiente!
27. NMAP -sN -sF -sX
• RFC 793
– http://tools.ietf.org/html/rfc793#page-65
– “If the state is CLOSED […] then all data in the
incoming segment is discarded. An incoming
segment containing a RST is discarded. An
incoming segment not containing a RST causes a
RST to be sent in response.”
– Em outras palavras, descarte e retorne uma
mensagem!
28. NMAP -sN -sF -sX
• Flags de um cabeçalho TCP
– URG
– ACK
– PSH
– RST
– SYN
– FIN
29. NMAP -sN -sF -sX
• Quando sistemas seguem essa RFC, pacotes
que não contenham uma flag SYN, RST ou ACK
retornarão um RST se a porta estiver fechada
– Não responderá nada para portas abertas.
• Desde que essas flags estejam desligadas não
importa o estados das flags FIN, PSH e URG
30. NMAP -sN -sF -sX
• Null scan (-sN)
– Todas as flags estão desligadas
• FIN scan (-sF)
– Apenas a flag FIN é ligada.
• Xmas scan (-sX)
– Liga as flags FIN, PSH e URG
– O nome é uma brincadeira com uma árvore de
natal que está toda acessa
31. • O comportamento dos três tipos de SCAN é
parecido, diferenciando apenas as flags que
estão ativadas
• Os estados das portas são:
– CLOSED – Se um RST for recebido como resposta
– OPEN|FILTERED – Se não houver resposta
– FILTERED – Se um ICMP unreachable error for
recebido
NMAP -sN -sF -sX
32. • Vantagens:
– Pode passar por:
• Firewalls non-stateful
• Roteadores com filtros de pacotes
– Mais “silencioso” que o TCP SYN Scan
• Disvantagem:
– Nem todos os SO seguem a RFC 793 a risca
– Difícil diferenciar portas OPEN de FILTERED
NMAP -sN -sF -sX
33. • Apenas uma flag ACK é enviada
• Sistemas sem filtros retornarão um RST para
portas OPEN e CLOSED, marcando ambas
como UNFILTERED
– Sendo acessíveis por “pacotes ACK”
– Não é possível diferenciar OPEN de CLOSED
• Portas sem resposta ou que retornem erros
ICMP são marcadas como FILTERED
NMAP -sA
34. • Não identifica portas abertas!
• Serve para identificar:
– Conjuntos de regras de firewall
– Portas filtradas
– Se os firewalls no caminho são ou não statefull
• Sim ... –sA vem de TCP ACK scan
NMAP -sA
37. NMAP -sW
• Window Scan ...
• Mesma varredura que o ACK scan, porém,
analisa o tamanho da janela do TCP (TCP
Window)
• No lugar de marcar UNFILTERED quando
receber um RST a janela é analisada:
– TCP Window positiva – OPEN
– TCP Windows zero – CLOSED
• Não é muito confiável
38. NMAP -sM
• Uriel Maimon – Phrack #49
• Baseado na mesma técnica dos SCAN NULL,
FIN e XMAS
– Probe FIN/ACK
– Porém, alguns sistemas derivados do BSD
simplesmente não retornam nada se a porta
estiver OPEN
• TCP Maimon scan
40. NMAP -sU
• -sU (UDP scan)
– Geralmente mais lento que os do tipo TCP
– Pode ser usado junto dos outros TCP scan
– Um payload específico ou 0 é enviado dependendo da
porta de destino
• Respostas
• ICMP unreachable errors (Tipo 3, codigo 3) – CLOSED
• ICMP unreachable errors (Tipo 3, codigo 1, 2,9, 10, 13) –
FILTERED
• Pacote UDP – OPEN
• Sem resposta – OPEN|FILTERED
41. NMAP -sU
• Grande desafio ... Efetuar um SCAN rápido!
– Portas OPEN ou FILTERED dificilmente respondem,
aumentando o número de retestes
– Normalmente ICMP tem um número limitado de
respostas
• Linux limita a 1 ICMP por segundo
• Analisar 65,536 portas leva 18 horas
• Boa idéia é analisar apenas portas populares!
43. Detecção de SO
• Razões:
– Determinar vulnerabilidades
• Delimitar o escopo da exploração
– Inventário de redes
– Detecção de dispositivos não autorizados
– Engenharia social
44. Detecção de SO
• Habilitado pela opção
– O
• Pode ser otimizado com a opção
– osscan-limit
• Caso não seja possível ter exatidão na
detecção é possível uma aproximação com
– osscan-guess
45. Detecção de SO
• Como funciona:
– Vários testes são feitos com as respostas do alvo:
• Amostragem de ID de IP
• Ordenação da opções do TCP
• Verificação de TCP Window inicial
• [..]
– O NMAP compara os resultados com uma base de
dados própria
– Exibe o resultado
47. Exame por ping
• Executa apenas o exame por ping para descobrir
se o host (ou lista de hosts) está ativo
• Faz a varredura de forma rápida e confiável
• É possível especificar técnicas de descoberta de
hospedeiros
– TCP SYN (-PS <lista de portas>)
– TCP ACK (-PA <lista de portas>)
– UDP (-PU <lista de portas>)
– ICMP (-PE, -PP, -PM)
– Protocolo IP (-PO <lista de protocolos>)
– ARP (-PR)
48. Detecção de versão
• Encontra as portas abertas e tenta descobrir
qual serviço está sendo executado em cada
uma delas
– Descobrindo inclusive versões
– Falsos positivos são comuns
• Essa é uma ótima solução para serviços
executando em portas não padronizadas
• -sV: Probe open ports to determine
service/version info
52. ou
Aquela porrada de opções que aparece
quando executamos o nmap sem especificar
nenhum parâmetro ...
53. HOST DISCOVERY:
• -sL: List Scan - simply list targets to scan
• -sn: Ping Scan - disable port scan
• -Pn: Treat all hosts as online -- skip host discovery
• -PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to
given ports
• -PE/PP/PM: ICMP echo, timestamp, and netmask request
discovery probes
• -PO[protocol list]: IP Protocol Ping
• -n/-R: Never do DNS resolution/Always resolve [default:
sometimes]
• --dns-servers <serv1[,serv2],...>: Specify custom DNS servers
• --system-dns: Use OS's DNS resolver
• --traceroute: Trace hop path to each host
54. OUTPUT:
• -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
• and Grepable format, respectively, to the given filename.
• -oA <basename>: Output in the three major formats at once
• -v: Increase verbosity level (use -vv or more for greater effect)
• -d: Increase debugging level (use -dd or more for greater effect)
• --reason: Display the reason a port is in a particular state
• --open: Only show open (or possibly open) ports
• --packet-trace: Show all packets sent and received
• --iflist: Print host interfaces and routes (for debugging)
• --log-errors: Log errors/warnings to the normal-format output file
• --append-output: Append to rather than clobber specified output files
• --resume <filename>: Resume an aborted scan
• --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
• --webxml: Reference stylesheet from Nmap.Org for more portable XML
• --no-stylesheet: Prevent associating of XSL stylesheet w/XML output
55. MISC:
• -6: Enable IPv6 scanning
• -A: Enable OS detection, version detection,
script scanning, and traceroute
• --datadir <dirname>: Specify custom Nmap data file
location
• --send-eth/--send-ip: Send using raw ethernet frames or IP
packets
• --privileged: Assume that the user is fully privileged
• --unprivileged: Assume the user lacks raw socket privileges
• -V: Print version number
• -h: Print this help summary page.
57. Defesas conta o NMAP
• Segurança por obscuridade
• Port knocking
– http://www.portknocking.org/
• HoneyPot/HoneyNet
• Simulação de SO
• IDS
• Firewalls