demo.mp4
Rede Segura é uma aplicação desenvolvida para identificar e mitigar vulnerabilidades em sistemas críticos. Esta solução foi a grande vencedora do 2º Hackathon do Programa Hackers do Bem, realizado em Natal-RN, no Instituto Metrópole Digital da UFRN, nos dias 17 e 18 de agosto de 2024. O hackathon teve como desafio criar uma solução inovadora para melhorar a eficiência e eficácia na identificação e gerenciamento de vulnerabilidades nas redes dos clientes do Sistema RNP.
A aplicação Rede Segura foi desenvolvida com o objetivo de atender às necessidades da RNP (Rede Nacional de Ensino e Pesquisa), especificamente para identificar e gerenciar vulnerabilidades em sistemas críticos de suas instituições associadas.
O projeto foi desenvolvido por uma equipe composta por Matheus Vidal, Isabela Mendes, Marcos Antônio e Kauê Lustosa, e recebeu o primeiro lugar na competição.
🖥️ Protótipos de tela: clique aqui
📰 Matéria sobre o evento: clique aqui
📌 Apresentação do problema: clique aqui
🧑💻 Apresentação do Hackathon: clique aqui
A Rede Segura oferece as seguintes funcionalidades principais:
-
Detecção de Vulnerabilidades: Realiza testes automáticos para identificar uma vasta gama de vulnerabilidades em redes e sistemas.
-
Gerenciamento de Vulnerabilidades: Permite o acompanhamento do status das vulnerabilidades identificadas, incluindo a resolução e o histórico de alterações.
-
Relatórios Detalhados: Gera relatórios detalhados em formato PDF sobre as vulnerabilidades encontradas, contendo gráficos e insights importantes para a correção das falhas.
-
Ambientes de Teste: Possui ambientes de teste configuráveis utilizando Docker, para simular condições reais de redes vulneráveis e seguras.
A aplicação é capaz de testar uma variedade de vulnerabilidades:
-
DNS Recursion: Vulnerabilidade que permite ataques de DDoS através de recursão DNS.
-
NTP DDOS Amplification: Amplificação DDOS em servidores NTP expostos.
-
NetBIOS Exposure: Exposição de informações sensíveis devido a configurações inadequadas do NetBIOS
-
SNMP Public Community: Exposição de comunidades SNMP públicas, permitindo potencial manipulação e ataques de DDoS.
-
Samba Outdated Version: Vulnerabilidade em versões desatualizadas do Samba, suscetíveis a escaneamento de portas e acessos não autorizados.
-
Exposed MySQL: Exposição do serviço MySQL, permitindo conexões não autenticadas que podem ser exploradas.
-
Redis No Authentication: Exposição do Redis sem autenticação, permitindo acesso não autorizado ao serviço.
-
Exposed SSDP: Exposição indevida do serviço SSDP, que deve operar apenas em ambientes locais.
-
Exposed Memcached: Exposição do serviço Memcached à internet, criando uma vulnerabilidade.
-
Exposed SLP: Exposição do serviço SLP à internet, quando deveria ser utilizado apenas localmente.
Com base nas exigências e desafios apresentados pela RNP, a estrutura de entidades foi cuidadosamente projetada para suportar a complexidade e a diversidade dos sistemas monitorados. Abaixo está uma descrição das principais entidades:
-
Addresses: Armazena endereços físicos das instituições, facilitando o mapeamento geográfico e a gestão física dos recursos de TI.
-
Institutions: Contém informações detalhadas sobre as instituições associadas à RNP, incluindo nome e contato. Essa entidade permite o agrupamento de servidores e serviços sob uma mesma organização, fornecendo uma visão centralizada e hierárquica dos ativos monitorados.
-
Servers: Armazena os servidores associados a cada instituição. Cada servidor inclui detalhes como nome, descrição, e estado de saúde, possibilitando a gestão e monitoramento da infraestrutura digital em diferentes instituições.
-
Services: Contém informações sobre os serviços que estão em execução em cada servidor, incluindo detalhes técnicos como IP, porta, e status. Esses dados são fundamentais para monitorar a exposição e o comportamento dos serviços de rede.
-
Protocols: Lista os protocolos suportados pelos serviços, como HTTP, FTP, SSH, etc. A identificação dos protocolos é crucial para entender as vias de comunicação e possíveis vetores de ataque.
-
Vulnerability Types: Armazena os diferentes tipos de vulnerabilidades que a aplicação pode testar, baseando-se nos cenários mais críticos enfrentados pela RNP. Isso permite uma abordagem específica e eficaz na detecção de ameaças.
-
Vulnerabilities: Contém os registros de vulnerabilidades identificadas, vinculando cada vulnerabilidade a um servidor e serviço específicos. Essa entidade é vital para a gestão de riscos e a priorização de ações corretivas.
-
Vulnerability History: Mantém o histórico de alterações e resoluções das vulnerabilidades, permitindo que a RNP acompanhe a evolução e a mitigação de riscos ao longo do tempo. Isso também suporta auditorias de segurança e compliance.
Um exemplo prático de teste realizado pela aplicação envolve o serviço Redis. Dois ambientes são configurados: um vulnerável, onde o Redis está exposto sem autenticação, e um ambiente seguro, onde o Redis está protegido por uma senha forte.
No painel da aplicação, vá até a seção de Teste de Vulnerabilidades. Selecione as seguintes vulnerabilidades para testar o ambiente Redis configurado com Docker:
- Redis Sem Autenticação - Ambiente Vulnerável: Este teste simula um ambiente Redis vulnerável, sem autenticação.
- Redis Com Autenticação - Ambiente Seguro: Este teste simula um ambiente Redis seguro, com autenticação configurada. Execute os testes e verifique os resultados gerados pela aplicação.
Além disso, se preferir, você pode realizar o teste manualmente inserindo diretamente o IP e a porta do serviço Redis no formulário de teste:
- Para testar o Ambiente Seguro, insira o IP 172.30.1.4 e a porta 6378.
- Para testar o Ambiente Vulnerável, insira o IP 172.30.1.3 e a porta 6379.
- Ambiente Vulnerável: A aplicação detecta a falta de autenticação e classifica o ambiente como VULNERABLE.
- Ambiente Seguro: O Redis está configurado corretamente, e a aplicação classifica o ambiente como NOT VULNERABLE.
O usuário pode baixar os resultados do teste são apresentados em um relatório PDF, incluindo detalhes como o IP, a porta do serviço testado, a data do teste, o status, e uma explicação detalhada da importância de corrigir a vulnerabilidade. Além de gráficos relacionados a vulnerabilidades das instituições e servidores.
📋 Exemplo de relatório: clique aqui
- Java 21
- Maven
- Docker (necessário para simular os ambientes vulneráveis e seguros para teste)
- Clone o repositório da Rede Segura:
git clone https://github.com/seu-usuario/rede-segura.git
cd rede-segura
- Compile e instale as dependências do projeto usando Maven:
mvn clean install
- Construa e inicie os containers Docker:
docker-compose up --build
- Execute a aplicação:
mvn spring-boot:run
- Acesse a aplicação e teste vulnerabilidades:
- Abra o navegador e vá para
http://localhost:8080/rede-segura/
para acessar o painel principal da Rede Segura. - No painel da aplicação, vá até a seção de teste de vulnerabilidades. Selecione as seguintes vulnerabilidades para testar o ambiente Redis configurado com Docker:
- Redis Sem Autenticação - Ambiente Vulnerável:
- Este teste simula um ambiente Redis vulnerável, sem autenticação.
- Serviço: Redis Vulnerable (IP: 172.30.1.3, Porta: 6379).
- Redis Com Autenticação - Ambiente Seguro:
- Este teste simula um ambiente Redis seguro, com autenticação configurada.
- Serviço: Redis Secure (IP: 172.30.1.4, Porta: 6378). Execute os testes e verifique os resultados gerados pela aplicação.