Como digitalizar toda a Internet



Todo o intervalo de endereços IPv4 é de 4 bilhões de endereços IP. Parece um número enorme, mas toda a Internet IPv4 pode ser completamente analisada em busca de uma porta TCP em 40 minutos , por exemplo, para encontrar todos os servidores Web do mundo ou todas as portas SSH abertas. Nesse caso, um servidor e um canal de gigabit são suficientes. Isso é útil para pesquisas, por exemplo, se você coletar estatísticas sobre as tecnologias usadas no mundo ou estimar a porcentagem de serviços vulneráveis ​​abertos ao exterior.

Programa Zmap(não confunda com o nmap) permite digitalizar enormes faixas de redes muito mais rapidamente do que qualquer scanner, devido à arquitetura especial. Neste artigo, veremos um exemplo de como compilar uma lista de todos os servidores Web no mundo usando o zmap. Tendo uma lista de hosts com uma porta HTTP aberta, você já pode usar um scanner mais inteligente, passando uma lista precisa de destinos.

O que é nmap ruim


Para digitalizar pequenas sub-redes, o Nmap é tradicionalmente usado - uma ferramenta multifuncional popular de código aberto com muitos pães Pentester dentro. É adequado para digitalizar pequenos intervalos e hosts seletivos. O Nmap possui seu próprio mecanismo para escrever scripts personalizados no lua (Nmap Script Engine) e muitos scripts prontos e interessantes. Mas o nmap não é adequado para varrer grandes redes, como milhões ou até bilhões de endereços. Tais tarefas levarão vários dias ou até semanas. O fato é que o nmap usa o subsistema de rede do sistema operacional e um soquete completo é aberto para cada solicitação. Você não pode ficar sem uma conexão TCP completa quando precisar conversar com o serviço, por exemplo, fazer uma solicitação GET para um servidor web. Mas isso reduz bastante o desempenho quando a digitalização SYN rápida é necessária,onde a tarefa é apenas descobrir se a porta está aberta.

Zmap e Masscan


Os scanners assíncronos Zmap e Masscan são mais adequados para nós: ambos trabalham muito mais rápido, usam o driver PF_RING (um soquete que acelera significativamente a captura de pacotes) e endereços aleatórios para evitar um DoS mortal. Diferentemente do Nmap, eles não usam o TCP / IP do sistema: o primeiro gera quadros Ethernet nus, o segundo usa uma pilha TCP auto-escrita.

O Masscan é considerado o scanner de Internet mais rápido que pode percorrer todo o intervalo do IPv4 em seis minutos, mas apenas com alguns adaptadores físicos conectados em paralelo, o tráfego de saída com pacotes SYN é gerado a partir de um e as respostas chegam ao outro. Em condições de uma única conexão, o Zmap modificado era quase uma vez e meia mais rápido. Esses registros, é claro, foram colocados no topo dos canais de 10 Gbit / s, e será difícil e caro repeti-los. Em uma conexão gigabit muito mais acessível, o Zmap também funciona mais rápido que o Masscan devido ao uso mais eficiente dos recursos de canal e CPU e pode ser concluído em cerca de 45 a 50 minutos.


Fluxo de trabalho simplificado do Zmap e Masscan. O gerador de tráfego de saída e o processador de resposta de entrada trabalham separadamente

Sem entrar em detalhes técnicos, o Zmap e o Masscan usam duas entidades: um gerador de tráfego de saída contendo solicitações SYN e um processador de resposta de entrada separado. O desempenho aqui é limitado apenas pela largura do canal e pelo desempenho da interface de rede, ou seja, o limite do PPS (pacotes por segundo). Portanto, o processo de varredura pode ser dividido em várias interfaces ou mesmo em vários hosts físicos, se for possível substituir o IP de origem pelo endereço do manipulador de pacotes de entrada.

Preparação da digitalização


Deve-se ter em mente que o scanner carrega o sistema e, especialmente, as interfaces de rede, utilizando todo o canal disponível. Se você começar a digitalizar sem avisar o host, ele se parecerá com DDoS e você provavelmente será desconectado da rede muito rapidamente. Você também precisa estar preparado para que a varredura de toda a Internet provoque uma resposta - eles começarão a reclamar de você. Ou seja, o host receberá várias cartas automáticas reclamando "você está nos escaneando".

Portanto, antes de iniciar seu projeto, é melhor preparar:

  • — ( - ). , . .
  • PTR- — , . , , . , PTR IP-, , - :
    scanner-for-educational-project.ivan-ivanov.com
  • User-Agent — - HTTP-, User-Agent, . , .
  • — , . .

NAT,


É importante entender que o zmap gera milhões de solicitações de TCP ao mesmo tempo. Se um roteador com NAT, um firewall com rastreamento de conexão, proteção DDoS ou qualquer outro sistema com um firewall com estado tentando rastrear conexões estiver instalado entre a Internet e o servidor de varredura, ele será interrompido porque não pode digerir tantas conexões. Portanto, você não pode executar o zmap enquanto estiver no NAT, por exemplo, atrás de um roteador WiFi doméstico.

Tentando o Zmap


Instale o Zmap ( instrução )

Teste em algo simples, consulte servidores da Web vizinhos em habr.com:

$ zmap -p 80 178.248.237.0/24 -B 100M -o habr.txt

Opções:

  • -p 80 - Porta TCP 80, ou seja, estamos procurando apenas servidores HTTP
  • 178.248.237.0/24 é o intervalo de endereços alvo. Se você não especificar, a Internet inteira será varrida.
  • -B 100M - a largura máxima do canal usada pelo zmap. Se essa opção não for especificada, todo o canal disponível será descartado.
  • -o habr.txt - grava os resultados em um arquivo de texto. Ele obterá os endereços que responderam à solicitação, ou seja, nos quais há um servidor HTTP


A digitalização de 254 endereços com o zmap levou alguns segundos

Formatos de saída Zmap


Por padrão, o zmap simplesmente adiciona os endereços encontrados a um arquivo de texto, separando-os com quebras de linha. Mas também pode gravar resultados nos formatos json e xml. A opção --output-fields permite especificar campos adicionais que serão adicionados à saída.

Vamos tentar, por exemplo, um formato de saída mais avançado em json, indicando a porta na qual a solicitação de resposta e o TTL do pacote vieram:

$ zmap -p80  --output-module=json --output-fields=ttl,sport,dport,saddr 178.248.237.68 -o habr.com.json

#  
$ cat habr.com.json
{ "ttl": 58, "sport": 80, "dport": 51309, "saddr": "178.248.237.68" }

Digitalize toda a Internet!


Tentei executar uma verificação no VPS e, depois de alguns minutos, fui banido com o requisito de verificar o servidor em busca de vírus. Isso é bastante lógico, porque essa verificação se parece com DDoS do host. Mas, depois de discutir minha tarefa com suporte, fui convidado a pegar um servidor dedicado e digitalizá-lo.

É assim que a digitalização na interface de 200Mbit / s se aproxima, o tempo previsto é de aproximadamente seis horas:


Mesmo com um canal de 100 Mbit / s, toda a Internet pode ser digitalizada durante a noite.

O que fazer a seguir


Agora podemos dizer quantos endereços mundiais estão escutando na porta 80 e coletar uma lista deles. Ele pode ser enviado ao scanner L7 para analisar a camada de aplicação quanto a vulnerabilidades.

Por exemplo, obtenha o título HTML de todos os servidores da web no mundo usando o nmap. Para a entrada nmap, transferimos o arquivo recebido do zmap no formato usual:


$ nmap -sV -p 80 -v -n  --script http-title  -iL habr.txt




All Articles