Skip to content

Gabs-hub/access-logger-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ Lab de Monitoramento de Acessos Web

📌 Visão Geral

Trata-se de um projeto educacional desenvolvido com Java 25 + Spring 4, focado em estudar segurança ofensiva e defensiva. Esse projeto é capaz realizar:

  • Monitoramento detalhado de acessos
  • Coleta de informações de origem (IP, GeoIP, User-Agent)
  • Detecção de comportamentos suspeitos
  • Implementação de honeypots reais
  • Análise e pontuação de risco automática
  • Registro persistente em arquivos .log

Este projeto foi pensado para funcionar como algo facilmente reutilizável, podendo ser inserido em praticamente qualquer aplicação Spring. (OBS: Ainda está em melhoria 🤓)


🎯 Objetivo do Lab

O objetivo principal é entender e observar o comportamento real de acessos maliciosos na web, como:

  • Bots/Crawlers
  • Tentativas de acesso em rotas sensíveis
  • Exploração de paths conhecidos (/admin, /wp-admin, /.git, etc)
  • Ataques via query string
  • Ferramentas automatizadas e seus user-agents (sqlmap, nikto, curl, wget, etc...)

Tudo isso sem bloquear o acesso, apenas observando, classificando e registrando.


🗂️ Arquitetura Geral

O sistema é dividido em camadas bem definidas:

🔹 1. Filter Global (extende a classe OncePerRequestFilter)

Arquivo:

filter/AccessLogFilter.java

Responsável por:

  • Interceptar todas as requisições
  • Identificar o IP real (X-Forwarded-For, Cloudflare, etc)
  • Consultar o serviço de GeoIP
  • Acionar o motor de análise de risco
  • Acionar a classe que faz o registro .log principal

Basicamente, este é o "coração" deste projeto, pois a classe é inicialidada antes mesmo de controllers, services, etc. Permitindo a inteceptação "crua" do que o cliente enviou.

📌 Vantagem: por conta de inicializar primeiro, pode ser reutilizada em qualquer projeto Spring apenas copiando a classe.


🔹 2. Honeypot Web

Arquivo:

security/HoneypotController.java

Rotas falsas monitoradas:

  • /admin
  • /login
  • /wp-admin
  • /phpmyadmin
  • /api/login
  • /config
  • /.env
  • /.git
  • /teste

Comportamento:

  • Retorna HTML falso e convincente
  • Nunca retorna 404
  • Marca a requisição como HONEYPOT_HIT
  • Chama o service que registra em um arquivo .log separado

🔹 3. Log de Honeypot

Arquivo:

security/HoneypotLogService.java

Salva em:

logs/honeypot.log

Formato:

[2026-01-15T18:32:11Z] IP=1.2.3.4 | PATH=/admin | UA="sqlmap/1.7"

🔹 4. Service Analisador de Risco

Arquivo:

service/RiskAnalyzerService.java

Classe responsável por analisar e calcular o risco das ações dos usuários, com base em critérios simples, mas bem definidos. Ela é chamada após a classe de filtro.

Critérios analisados:

Regra Pontuação
User-Agent de scanner +80
Path suspeito por extensão +50
Payload em query string +100
Método HTTP incomum +20
Honeypot hit +80

O resultado final gera:

  • Score numérico cumulativo
  • Lista de motivos
  • Classificação de risco

📌 Vale ressaltar que as regras estão dentro de blocos de condição com user-agents, payloads, etc. Busquei simplificar para economizar tempo, mas acredito que poderia ser facilmente ser adaptadas para uma consulta numa base de dados grande.


🔹 5. Serviço de GeoIP

Arquivo:

service/GeoIPService.java

Utiliza a api ip-api:

http://ip-api.com/json/{ip}

Retorna:

  • País
  • Estado
  • Cidade
  • ISP

☝️🤓 Serviço gratuito, do jeitinho que todo mundo gosta.


🔹 6. Log Principal de Acessos

Arquivo:

service/AccessLogService.java

Salva em:

logs/access.log

Formato:

[2026-01-15T18:32:11Z] IP=1.2.3.4 | PAIS=Brazil | ESTADO=PE | CIDADE=Recife | ISP=Claro | RISCO=CRITICO (160) | MOTIVO=HONEYPOT:/admin,UA_SCANNER | UA="sqlmap/1.7"

🌐 Teste de Funcionamento em Ambientes Públicos

Este lab foi testado com:

  • GitHub Codespaces (porta pública)
  • Acesso via dados móveis
  • IP's reais
  • User-Agents reais

O sistema identifica corretamente:

  • IP real
  • País/ISP
  • Acessos automatizados e ferramentas reais

🧪 Como Testar

Acesso normal

/

Honeypot

/admin
/wp-admin
/.git

Query string maliciosa

/?=' OR 1=1 -- - (colocar no formulário admin também funciona e gera risco crítico no log)

User-Agent

curl -A sqlmap http://sitezinho/admin

⚠️ Aviso Legal

Este projeto é exclusivamente educacional. Não seja idiota de utilizar para capturar dados, violar privacidade, leis locais ou políticas de uso.

🚧 Projeto Ainda em Construção

Este projeto não está totalmente finalizado, ainda estou pensando em maneiras de torná-lo bem mais fácil de ser reutilizado em outros projetos, a ideia de evoluir uma apliação real que registra logs e com a possibilidade de ser usada em outras aplicações me deixou muito animado para melhorá-lo.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

Generated from github/codespaces-blank