quarta-feira, 29 de maio de 2013

Vamos seguir em frente com essa série, hoje vamos falar apenas sobre scans. Que tipos de varreduras podemos fazer, para que serve cada uma delas, e o que podemos obter com cada uma delas.

Scan ICMP

De acordo com a Wikipedia temos:

ICMP, sigla para o inglês Internet Control Message Protocol, é um protocolo integrante do Protocolo IP, definido pelo RFC 792, e utilizado para fornecer relatórios de erros à fonte original. Qualquer computador que utilize IP precisa aceitar as mensagens ICMP e alterar o seu comportamento de acordo com o erro relatado. Os gateways devem estar programados para enviar mensagens ICMP quando receberem datagramas que provoquem algum erro.

Basicamente, para quem ainda não pegou, o protocolo ICMP é um "sistema de mensagens" entre computadores, para facilitar ainda mais, um exemplo bem prático é o comando ping, que tem seu funcionamento pelo protocolo ICMP. O ping é uma dessas mensagens, existem muitas outras.

Bom, mas de quê adianta saber isso? No nosso caso aqui para quê serviria saber uma coisa dessas? Simples, provavelmente quando alguma coisa da errado na sua rede o mais comum a fazer é disparar um ping para seu roteador e um para a internet para ver se está acessível e descobrir em que ponto que está o problema. Podemos usar o ping para descobrir os computadores ligados na rede (nem sempre, veremos isso depois), e partindo disso, disparar outros scans ou até mesmo ataques. Mas e ai, sabemos que na estrutura de IP atual podem haver centenas ou milhares de computadores na rede, vou ter que mandar um ping manualmente para cada? A resposta é não!

Neste post vou me focar na ferramenta nmap, mas existem milhares de outras ferramentas na sua distro de pentest e na internet. Uma dica, procure conhecer mais de uma ferramenta, em alguns casos, duas ferramentas diferentes podem retornar resultados completamente diferentes, cada uma lida com a informação obtida de uma maneira.

O nmap é um dos mais conhecidos scanners de rede, é um de seus scans é o próprio Ping Scan (-sP), que vai disparar um ping para cada IP possível da rede e assim saber quais estão ligados no momento. No nmap você pode informar o alcance de seu scan de diversas maneiras, veja abaixo alguns exemplos:

Escaneando um único IP
nmap -sP 192.168.1.3

Escaneando um range de IP's
nmap -sP 10.0.0.10-30

Escaneando toda a rede
nmap -sP 192.168.0.1/24

 Scan TCP

Vamos falar um pouco do scan mais conhecido e mais usado provavelmente, conhecido como port scan. Nesse scan vamos procurar por portas abertas e o máximo de informação que podemos tirar delas. Mas antes de começar vamos ver um pouco de teoria.

Se você está lendo isso, provavelmente você já tem (ou deveria ter) um conhecimento básico de TCP/IP, se não, não vai adiantar muito você acompanhar esse guia. Saber como funciona é um ponto essencial para saber qual usar.

Só para alinhar aqui, uma conexão TCP é composta de 3 passos, conhecidos como o 3 way handshake.  Estes 3 passos são os responsáveis por estabelecer uma conexão entre computadores.


Rapidamente e superficialmente explicando isso, para que exista uma conexão, um computador envia um pacote de uma determinada porta para uma determinada porta em outro computador. Este pacote vai com uma "etiqueta" SYN, marcando o início da transmissão. O computador que recebeu esse sinal vai devolver um SYN/ACK para a primeira máquina avisando que está tudo certo e que pode iniciar a transferência, caso ele esteja esperando esse sinal, caso contrário ele envia um RST.

Assim que o primeiro computador receber o SYN/ACK ele envia de volta um ACK e inicia a transmissão. Este são, então, os 3 passos para uma conexão. Com base nisso temos vários scans que podem nos dizer quais máquinas estão conectadas, com que portas abertas, quais serviços nessas portas e muito mais.

Agora voltando um pouco lá em cima, quando eu comentei que nem sempre o Ping Scan vai funcionar, esses métodos também vão ter situações onde não vão responder como esperado, por ter a descoberta de rede, ou resposta a ping desativada como no exemplo do Ping Scan, ou estar protegido atras de um firewall. Por isso que é importante conhecer o máximo possível de ferramentas para scan de redes e conhecer as possibilidades dessas ferramentas, para saber como agir em cada situação.

Então vamos lá! Separei aqui algumas opções interessantes do nmap para que você dê uma olhada com mais calma. Para mais informações sobre estas e outras opções consulte a documentação da ferramenta, no Linux com o comando man nmap, por exemplo.

Dica: Você pode usar quantas opções quiser ao mesmo tempo com o nmap mas não é recomendável essa prática. Quanto mais opções você colocar, mais tempo vai demorar para o scan terminar, mais fácil vai ser detectado por gerar ruído e menos performance e precisão vai ter. O melhor a se fazer é usar apenas o necessário e realizar os scans o mais segmentado possível.

- Version Scan (-sV): Esse scan serve para, como o nome já diz, descobrir a versão dos serviços que estão rodando na máquina, a diferença básica entre usar e não usar essa flag é o nível de detalhe. Quando se usa o comando sem essa flag, o nmap vai pegar o número da porta e deduzir o serviço, como por exemplo na porta 80 temos HTTP. Com a flag, além de corrigir possíveis erros do scan, pegamos informações valiosas do serviço e da versão que está sendo executada.

- SYN Scan (-sS): Este tipo de scan, voltando lá para o 3 way handshake, manda um pacote SYN para o alvo e aguarda a resposta. Se a máquina responder SYN/ACK quer dizer que esta porta está aberta. Esse scan também é conhecido como "half-open".

- TCP Connect() (-sT): Este é um dos scans mais rápidos e básicos que temos, e também o de detecção mais fácil. Basicamente é enviado um sinal connect() e se a porta estiver aberta vai receber de volta um sinal connect().

- UDP Scan (-sU): O UDP Scan normalmente é bem demorado, e diferente do TCP, não necessita do 3 way handshake, alguns serviços como streaming funcionam em UDP. O scan consiste em mandar pacotes UDP para todas as portas, e as que responderem com "port unreachable" estão fechadas.

- FIN Scan (-sF): Em alguns casos, como citado anteriormente, pode existir um firewall ou filtro bloqueando os scans vistos até agora, para burlar isso temos o FIN Scan. Quando um pacote é enviado com o FIN setado, o alvo deve responder com RST, e portas abertas ignoram esse pacote. Este scan não funciona em Windows.

- Xmas Tree (-sX): Caso o scan acima não funcione temos outra tentativa, podemos mandar este pacote com as flags FIN, URG e PUSH ativas (vários acesos, como uma arvore de natal, daí o nome :D) para ver se conseguimos o resultado esperado.Este scan não funciona em Windows.

- Null Scan (-sN): Uma outra tentativa que não podemos deixar passar é o Null Scan, mandar um pacote sem nenhuma flag. Este scan não funciona em Windows.

- Prioridade de Varredura (-T0/-T1/-T2/-T3/-T4/-T5): Contando com 6 estados, cada um com suas características, do 0 que é o menos ruidoso até o 5 que é o mais ruidoso. Obviamente que quanto menos ruído gerado, mais lenta é a varredura, e quanto mais ruído mais rápida. Isso vai variar de como é o ambiente e os testes que você está realizando. Leia com atenção no manual o funcionamento de cada um e escolha a opção mais adequada para a situação em questão. O padrão do nmap é usar o -T3.

- Especificar Portas (-p): O nmap se rodado no modo default vai escanear apenas as 1000 portas mais comuns. Uma boa prática é retirar todos os serviços mais comuns das suas portas defaults para evitar esse tipo de scan, então o segredo é sempre utilizar um range de portas ou escanear todas as portas.

- Detecção de Sistema Operacional (-O): Com este scan, o nmap vai avaliar as respostas e comparar com seu banco de dados para ver se consegue descobrir qual SO e versão está sendo usado na máquina. Muito cuidado com isso, sempre rode outra ferramenta para ter certeza, em muitos casos o nmap erra ou não encontra a versão do sistema.

- Desativar Ping (-P0): Com esta opção ativa, o nmap não vai mandar um ping para o alvo nem um TCP ACK na porta 80, escapando assim de alguns firewalls e filtros.

E era isso por hoje!

Eu recomendo fortemente que você use, conheça e pratique esses scans, pois domina-los pode fazer toda a diferença em uma situação de testes real. O legal é que você pode praticar em qualquer ambiente, teoricamente, esses scans, desde que usados com moderação, são inofensivos.

Eu fico por aqui, bons estudos!

0 comentários:

Postar um comentário

Subscribe to RSS Feed Follow me on Twitter!