quinta-feira, 16 de outubro de 2014

Mini guia do Nmap: Parte 1


Não se assuste com o tamanho do post, trata-se de um mini guia mesmo. Bem mini, pois o Nmap é uma das ferramentas que mais têm parâmetros de utilização no mundo Linux, tanto que nem todos foram documentados ainda. O Nmap (Network Map) é uma ferramenta utilizada para auditoria de segurança e exploração de redes, tanto por pentesters quanto por hackers, crackers e script kiddies, mas creio que essa breve descrição, não lhe seja totalmente justa. O Nmap tem muitas outras funcionalidades e, obviamente, é tarefa hercúlea (e sequer é minha intenção), esgotá-lo num único post do blog. O nmap também pode ser uma ferramenta de inventário, pode verificar quais são os hosts ativos da rede, verificar as portas abertas desses hosts, serviços e respectivas versões escutando nessas portas, detectar quais os sistemas operacionais e IPs dos hosts, detectar brechas de segurança e vulnerabilidades (através dos "nmap scripts"), detectar se um firewall está em uso numa determinada estação ou rede, dentre outras funcionalidades.
A página oficial do projeto é http://nmap.org/ e, para você ter uma ideia, o seu criador, Gordon “Fyodor” Lyon (fyodor@insecure.org), levou quase 4 anos para escrever o livro “Nmap Network Scanning”, acessível online em http://nmap.org/book/toc.html (ISBN: 978-0-9799587-1-7 - ISBN-10:s 0-9799587-1-7). 

http://nmap.org/
Gordon "Fyodor" Lion - Criador do Nmap 

http://nmap.org/book/toc.html
 O livro: NMAP Network Scanning

A ferramenta possui inclusive um site, no qual você pode direcionar gratuitamente seus testes com o nmap, acessível em http://scanme.nmap.org (o desenvolvedor só pede que você "pegue leve" com o servidor, fazendo apenas algumas poucas varreduras diárias =)).

http://scanme.nmap.org

O Nmap é multiplataforma. Roda em Linux, BSD, Windows e Mac OS. Para você ter uma ideia da popularidade da ferramenta, o autor mantém a página http://nmap.org/movies/ onde registra as aparições do “PopStar” nmap nos filmes de Hollywood. Acha que é pouca coisa? Entre os filmes listados estão: Matrix Reloaded, O Ultimato Bourne, Elysium, Millenium - Os Homens que Não Amavam as Mulheres, G.I.Joe – Retaliação, Duro de Matar 4 entre diversos outros.

http://nmap.org/movies/
 Cena de Matrix Reloaded, onde Trinity está "mitando" com o nmap =)

 Vale lembrar que o Nmap possui uma versão gráfica chamada Zenmap, mas sempre recomendo a versão em linha de comandos pois você se obriga a pesquisar bem os parâmetros para não cometer erros simplórios. 
 
Porém vamos ao que interessa: verificar algumas das funcionalidades dessa poderosa ferramenta. Veja que, o uso do Nmap pode ser absolutamente básico ou avançado; tudo depende do cenário onde você irá utilizá-lo. É crítico lembrar que, as opções exibidas abaixo, podem ser combinadas para formar a sintaxe desejada.

IMPORTANTEPara entender as respostas do Nmap, é importante informar que ele categoriza as portas de acordo com os seguintes estados (tradução livre da página do nmap):
  • Open: Uma aplicação está ativa nesta porta e aceitando conexões TCP, datagramas UDP ou associações SCTP. Encontrar essas informações geralmente é o objetivo primário do "port scanning". Pessoas cientes da segurança sabem que cada porta aberta é um possível vetor de ataque. Atacantes e pentesters tentam explorar essas portas abertas enquanto os administradores tentam fechá-las ou protegê-las com firewall, sem causar danos a  usuários legítimos. Portas abertas também são interessantes para varreduras não relacionadas a segurança pois elas mostram os serviços disponíveis para uso na rede.  
  • Closed: Uma porta fechada é acessível, mas não existe nenhuma aplicação escutando nela (ela recebe e responde aos "probe packets" do Nmap). Elas podem ajudar a mostrar que um host num determinado IP está no ar (descoberta de host ou varredura de ping),  e fazem parte de uma detecção de sistema operacional. Como as portas fechadas podem ser alcançadas, pode valer a pena scaneá-las posteriormente, para ver se alguma delas abriu. Os administradores devem considerar bloquear tais portas com um firewall. Dessa maneira, elas aparecerão no estado "Filtered", discutido a seguir. 
  • Filtered: O Nmap não consegue determinar se a porta está aberta pois uma filtragem de pacotes impede seus "probes" de atingirem a porta. Essa filtragem pode ser proveniente de um firewall dedicado, regras de roteadores, ou firewalls de desktop baseado em host no computador remoto. Essas portas frustram os atacantes, pois elas fornecem muito pouca informação. As vezes elas respondem com mensagens de erro ICMP do tipo 3, código 13 (destino inalcançável: comunicação proibida administrativamente), porém filtros que dropam o pacote sem dar qualquer tipo de resposta são muito mais comuns. Isto força com que o Nmap tente novamente por diversas vezes, caso o "probe" tenha sido dropado por congestionamento da rede ao invés de filtragem. Isso reduz a drasticamente a velocidade da varredura.
  • Unfiltered: Significa que a porta está acessível, porém o Nmap foi incapaz de determinar se a porta está aberta ou fechada. Somente a varredura "ACK", que é utilizada para mapear regras de firewall, classifica as portas nesse estado. Escaneando portas com o estado "unfiltered" com outros tipos de varredura como a "Window scan", "SYN" ou "FIN", podem ajudar a determinar se a porta está aberta.
  • Open/Filtered: O Nmap define portas com esse estado, quando não consegue determinar se a porta está aberta ou filtrada. Isto ocorre nos tipos de varredura em que portas abertas não dão nenhuma resposta. A falta de resposta também pode significar que um filtro de pacotes descartou o "probe" ou qualquer resposta é suscitada, logo, o Nmap não sabe com certeza quando a porta está aberta ou sendo filtrada. As varreduras "UDP", "protocolo IP", "FIN", "NULL" e "XMAS" classificam as portas dessa maneira.
  • Closed/Filtered: Este estado é utilizado quando o Nmap não consegue determinar se uma porta está fechada ou filtrada. Se é utilizada pela varredura de IP "ID idle".
CENÁRIO: Na rede onde os exemplos estão sendo executados, existem duas máquinas virtuais. Lembrando que, como a ideia é executar esses comandos em ambiente controlado apenas para aprendizagem, recomendo-o também fazer esses exemplos num ambiente virtual. Qualquer uso desses comandos num ambiente real (produção) é por sua conta e risco. Não invada a rede de ninguém e estude bem a ferramenta antes de executar suas funções.
- Backtrack: 192.168.1.10 (máquina onde os comandos são executados)
- Slackware: 192.168.1.120 (única máquina ativa na rede 192.168.1.0/24)
- Note que, quando você ler "alvo" na sintaxe, pode estar se referindo tanto a um IP (ex: 192.168.1.120) quanto a um domínio (ex: scanme.nmap.org).

- Scanear um único host:

nmap [alvo]
ex: nmap  scanme.nmap.org
ex: nmap  192.168.1.120


- Scanear diversos hosts:

nmap [alvo1] [alvo2] [alvo3] [alvo_"n"]
ex: nmap  192.168.1.120   192.168.1.121  192.168.1.200

- Scanear diversos IPs através de um arquivo de hosts:
O nmap permite especificar um arquivo contendo o endereço de diversos hosts. Uma vez que o arquivo foi criado, é possível scaneá-los usando-se os parâmetros "-iL" no nmap.

nmap -iL [arquivo_alvos]
ex: nmap -iL alvos.txt 


- Scanear um intervalo contíguo dentro de uma rede:

nmap [alvo_inicial]-[alvo_final]
ex: nmap  192.168.1.120-200

- Scanear toda uma rede:

nmap [rede/CIDR]
ex: nmap 192.168.1.0/24

- Scanear toda uma rede, excluindo alguns hosts:

Pode acontecer de você precisar scanear toda uma rede mas ter a necessidade de excluir um host da varredura (um sistema que sabidamente possui um IDS, por exemplo). Você pode executar a busca com o parâmetro "--exclude".
nmap [rede/CIDR] --exclude [ip_indesejado]
ex: nmap 192.168.1.0/24 --exclude 192.168.1.120


- Scanear uma rede excluindo determinados hosts de um arquivo:

Assim como o nmap permite definir um arquivo com os hosts que devem ser scaneados, ele também permite usar um arquivo para definir quais hosts não devem ser scaneados. Para isso, usa-se o parâmetro "--excludefile". 

nmap [rede/CIDR] --excludefile  [arquivo_ips_indesejados]
ex:  nmap  192.168.1.0/24  --excludefile  exclusoes.txt


- Scanear portas específicas:

Por padrão, o Nmap scaneia as chamadas portas baixas (de 0 a 1024) e as portas presentes no arquivo "nmap-services". Ou seja, ele não escaneia por padrão todas as portas de um determinado servidor, e sim as mais comuns. Se você precisa especificar portas específicas ou se precisa scanear todas as portas de um alvo, pode utilizar o parâmetro "-p". Abaixo seguem 2 exemplos distintos:

nmap -p [porta1],[porta2],[porta3],[porta_"n"]  [ip_alvo] -> verifica apenas portas específicas de um determinado alvo.
ex: nmap -p80,443,3128,8080 192.168.1.120

nmap -p [porta_inicio]-[porta_final]  [ip_alvo]  -> verifica todo o intervalo de portas especificado no intervalo.
ex:  nmap -p 0-65535 192.168.1.120


O que vimos até agora é a maneira mais básica de utilizar o Nmap. NA parte 2 desse mini guia, vamos explorar algumas das técnicas utilizadas pelo Nmap para encontrar e obter informações dos hosts na rede.

Para saber mais:

t+

Cristiano
"A grandeza não consiste em receber honras, mas em merecê-las." - Aristóteles

Nenhum comentário:

Related Posts Plugin for WordPress, Blogger...