
Scanner de portas IPv6 projetado para ser rápido, voltado para varredura e descoberta na Internet.
fi6s é um scanner de portas IPv6 projetado para ser rápido, voltado para varredura e descoberta na Internet. Isso é alcançado enviando e processando pacotes brutos de forma assíncrona.
O design e o objetivo são bastante semelhantes ao Masscan, embora não seja tão completo em recursos.
Por favor, observe a licença.
Finalmente: Esta é uma ferramenta de pesquisa de segurança e você (o usuário) é totalmente responsável por seguir as regulamentações locais e obter permissão conforme necessário ao usá-lo.
Compilar o fi6s é bastante fácil em qualquer sistema Linux recente, por exemplo, no Ubuntu:
# apt install gcc make git libpcap-dev
$ git clone https://github.com/sfan5/fi6s.git
$ cd fi6s
$ make BUILD_TYPE=release
O executável estará pronto em ./fi6s.
Observe que o fi6s é desenvolvido e testado apenas no Linux. Outras plataformas do tipo UNIX devem funcionar, o Windows não.
O fi6s detectará automaticamente os detalhes sujos da rede (origem, MACs e IPs do roteador) para você, para que você possa começar a escanear imediatamente:
# ./fi6s -p 80,8000-8100 --max-rate 170 2001:db8::/120
Este exemplo irá:
list" (padrão implícito)Existem diferentes maneiras de especificar um intervalo de endereços para escanear. Se você não tem certeza do que vai acontecer, use --print-summary para obter uma visão geral rápida da varredura ou --print-hosts para imprimir todos os IPs de destino potenciais.
Para recursos mais avançados e explicações adicionais, consulte a saída de fi6s --help.
Os dados que um host remoto envia em resposta a uma nova conexão ou solicitação de sonda são chamados de "banner". O fi6s facilita a coleta deles.
Tudo o que você precisa fazer é passar a opção --banners:
# ./fi6s -p 22 --banners 2001:db8::xx
Adicione o sinalizador --udp à sua linha de comando:
# ./fi6s -p 53 --banners --udp 2001:db8:xx::1
Observe que, diferentemente do TCP, você só obterá resultados úteis (ou qualquer) se escanear uma porta cujo protocolo seja compatível com a sondagem do fi6s. Use fi6s --list-protocols para ver uma lista.
Como o fi6s traz sua própria pilha TCP/IP mínima, o sistema operacional deve ser impedido de tentar falar TCP na mesma porta que o fi6s está usando, caso contrário, isso quebraria o processo de varredura.
Por padrão, o fi6s pedirá ao SO para reservar uma porta efêmera e usá-la durante a varredura. Isso só funciona no Linux.
Se isso falhar ou você estiver em uma plataforma diferente (o fi6s lhe avisará!), você terá que decidir uma porta de origem e configurar seu firewall para descartar todo o tráfego nesta porta, por exemplo:
# ipfw add 1000 deny tcp from any to any 12345 in ip6
or:
# ip6tables -A INPUT -p tcp -m tcp --dport 12345 -j DROP
and then:
# ./fi6s -p 22 --banners --source-port 12345 2001:db8::xx
Como o UDP não tem conexão, não há necessidade de fazer isso, mas ainda é uma boa ideia evitar que respostas ICMPv6 desnecessárias sejam enviadas. O fi6s também fará isso por padrão.
Uma grande vantagem do IPv6 é o grande espaço de endereços, e outra maneira de evitar o problema descrito acima é usar um IP de origem diferente.
Este IP não deve ser atribuído à sua máquina local, mas deve ser roteado estaticamente para sua máquina, porque o fi6s não responderá a consultas NDP.
Para verificar se sua configuração está funcionando corretamente, você pode simplesmente dar ping em um IP público conhecido, por exemplo:
# ./fi6s --icmp --source-ip ${chosen_src_ip} 2001:4860:4860::8888
Use --icmp para fazer uma varredura de ping ICMPv6:
# ./fi6s --icmp 2001:xxx0::1
O tempo de ida e volta não será medido.
Para permitir o design do fi6s, algumas suposições tiveram que ser feitas sobre o ambiente de rede. Elas não afetam o uso típico, mas estão listadas aqui para completude.
Isso significa que o fi6s pode não ter o desempenho esperado ou simplesmente não funcionar se:
Para coleta de banners, observe que o fi6s não vem com nada que se assemelhe a uma pilha TCP real. Ele apenas suporta o envio de uma consulta e a leitura dos dados de resposta que se seguem. Reenvios ou lógica de janela não são implementados.
Embora o fi6s use números de porta e sequência para garantir que os resultados obtidos estejam relacionados à varredura específica em execução, ele não possui uma verificação para comparar o IP para o qual uma sonda foi enviada com o IP que está realmente respondendo.
Isso significa que executar, por exemplo, qualquer tipo de traceroute durante uma varredura não interferirá nos resultados da varredura.
No entanto, é possível que um IP apareça nos resultados da varredura que não fazia parte da lista de entrada, se um alvo escaneado responder em um IP diferente. Essa propriedade pode ser útil na prática, pois alguns roteadores aceitam consultas SNMP ou DNS no endereço de rede zero, mas respondem com seu IPv6 primário.
Exemplo: escanear 3fff:1234:1234:44xx:: -> resposta de 3fff:1234:1234:44a3:e2a:86ff:fe12:3456
A forma como o fi6s randomiza os IPs escaneados (--randomize-hosts 1, que é o padrão) está longe de ser perfeita.
Ele irá:
Por exemplo, se você escanear 3fff::/108, a ordem de 3fff::1, 3fff::20 e 3fff::300 será aleatória. Mas todos os endereços em 3fff::0:* serão escaneados antes de 3fff::1:*, antes de 3fff::2:* e assim por diante.