image

Acesse bootcamps ilimitados e +750 cursos pra sempre

70
%OFF
Adiel Fontes
Adiel Fontes20/07/2026 14:54
Compartilhe

Desenvolvendo um Scanner de Portas TCP Multithread de Alta Performance em Ruby

    image

    Autor: Adiel Santos Fontes

    Introdução

    Scanners de portas são ferramentas fundamentais na fase de reconhecimento em segurança cibernética: eles mapeiam a superfície de uma rede ou sistema, revelando serviços ativos e portas abertas. Com essas informações, o profissional de teste de penetração consegue identificar versões de softwares que possuem vulnerabilidades e possíveis pontos de entrada antes de avançar para etapas mais profundas de exploração.

    Neste projeto, apresento o Fydelis Security Scanner: uma ferramenta de varredura de portas TCP desenvolvida em Ruby, com foco em velocidade, leveza e eficiência. Contando com suporte a multithreading e perfis de performance configuráveis, ela se torna uma opção ideal para atividades de reconhecimento em testes de penetração e auditorias de rede.

    Principais Funcionalidades

    • Multithreaded: Varredura rápida, utilizando filas de trabalho para processamento paralelo das portas.
    • Perfis de Velocidade: Modos de execução que variam de polite a insane, permitindo ajustar o ritmo da varredura conforme a necessidade.
    • Banner Grabbing: Tenta identificar qual serviço está sendo executado em cada porta detectada como aberta.
    • Versatilidade: Aceita diferentes formatos de seleção de portas: intervalos (ex: 1-1000), lista de portas específicas (ex: 22,80,443) ou perfis pré-definidos.
    • Exportação de Resultados: Salva o relatório da varredura diretamente em um arquivo de texto.
    • Modo Verbose: Opção para exibir também as portas fechadas, útil para auditorias mais detalhadas.

    Fundamentos Técnicos: A Engenharia por Trás da Ferramenta

    Por que escolhi Ruby?

    A linguagem se destaca pela facilidade de leitura e escrita, além de contar com uma biblioteca de sockets nativa e bem estruturada, fatores que agilizam o desenvolvimento e a manutenção do código, sem perder desempenho.

    Conceitos de Rede Aplicados

    A varredura funciona com base no processo de Three-Way Handshake (apertamento de mão em três etapas) do protocolo TCP: quando a função Socket.tcp tenta estabelecer uma conexão, ela envia um pacote SYN; se a porta estiver aberta, o alvo responde com SYN-ACK; e por fim a ferramenta envia ACK concluindo a conexão ou interrompe-a imediatamente após a confirmação para não gerar tráfego desnecessário. Se a porta estiver fechada, o alvo responde com um pacote RST, indicando que a conexão não é possível.

    Multithreading

    Para evitar que o programa fique parado esperando respostas de cada porta individualmente, utilizei as classes Thread e Queue nativas da linguagem. Dessa forma, várias conexões são iniciadas simultaneamente, otimizando drasticamente o tempo total de varredura sem perder o controle do processo.

    O Diferencial: Arquitetura e Garantia de Performance

    Modularidade

    O código é organizado em uma estrutura de pastas clara, com diretórios bin/ (para o executável principal) e lib/ (para as funções e módulos reutilizáveis), facilitando atualizações e a adição de novas funcionalidades.

    Segurança e Estabilidade

    Implementei tratamento de sinais (com trap "INT") para encerrar as conexões de forma organizada quando o usuário interromper a execução, evitando processos "zumbis" no sistema. Além disso, o uso da classe Mutex garante que não ocorram conflitos de escrita ou resultados duplicados ao salvar os dados no arquivo de log.

    Perfis de Velocidade

    • Os perfis permitem adaptar o comportamento da ferramenta ao cenário:
    • Modos mais lentos (como o polite) evitam acionar sistemas de detecção ou bloqueios de firewalls;
    • Modos mais rápidos (como o insane) são indicados para redes internas confiáveis, onde a velocidade é prioridade.

    Demonstração Prática

    Para consultar todas as opções de uso, basta executar a ferramenta com o parâmetro de ajuda:

    ruby -Ilib bin/fydelis.rb --help

    image

    Ao final da varredura, você pode definir um caminho para que os resultados sejam salvos automaticamente em um arquivo de texto, facilitando o armazenamento e a análise posterior.

    image

    Observação: as imagens de demonstração não puderam ser carregadas no momento, mas estão disponíveis nos endereços informados acima.

    Conclusão

    Durante o desenvolvimento deste projeto, pude aplicar e aprofundar conhecimentos sobre funcionamento do protocolo TCP, programação concorrente e boas práticas de desenvolvimento de ferramentas de segurança, equilibrando desempenho e estabilidade.

    Para as próximas versões, pretendo adicionar funcionalidades como:

    Detecção automática de sistema operacional do alvo;

    Integração com bancos de vulnerabilidades;

    Suporte a varredura UDP;

    Relatórios em formatos adicionais (como CSV e JSON).

    Convido você a acessar o repositório oficial do projeto, testar a ferramenta e contribuir com sugestões, correções ou novas funcionalidades:

    https://github.com/fydelis2025/Fydelis_Scanner

    #Ruby, #CyberSecurity, #Pentest, #OpenSource, #Networking #adielfontes #fydelis #fydelistech

    Compartilhe
    Recomendados para você
    Nublify - Primeiros passos em IA e Cloud
    AWS - Agentes de IA em Campo
    Riachuelo - Criando produtos com IA
    Comentários (0)