Este repositório contém o projeto SIEM do Cientista de Dados, desenvolvido para demonstrar de forma prática como técnicas de Ciência de Dados e Machine Learning podem ser aplicadas na detecção de anomalias e incidentes de cibersegurança em logs corporativos.
Sistemas de cibersegurança geram gigabytes de dados diariamente. Para um analista humano, inspecionar cada registro é inviável. Este projeto constrói um painel interativo em Python que analisa logs simulados de rede e autenticação para automatizar a identificação de comportamentos suspeitos.
O projeto é estruturado em três etapas: Simulação de Dados, Análise de logs com Pandas e Machine Learning, e uma Interface Interativa para acompanhamento de incidentes.
graph TD
A[generate_data.py] -->|Gera CSVs| B[auth_logs.csv / network_logs.csv]
B --> C[analyzer.py]
C -->|Detecção Estatística| D[Alertas de Login]
C -->|K-Means Clustering| E[Outliers de Rede]
D & E --> F[app.py Streamlit Dashboard]
G[modules/security_helper.py] -->|Proteções CSP, CORS e Cookies| F
Análise focada em comportamento de usuários (estabelecimento de baseline) para identificar desvios de padrão:
- Detecção de Força Bruta: O sistema calcula uma janela móvel de 5 minutos. Se um usuário registrar mais tentativas falhas seguidas do que o limite definido no período, um alerta é gerado.
- Acesso em Horário Atípico e Localidade Incomum: Com base no histórico padrão do usuário, o algoritmo sinaliza logins bem-sucedidos em horários suspeitos (madrugada) ou vindos de países diferentes de sua baseline habitual.
Para logs de conexões de rede sem assinaturas estáticas conhecidas, foi aplicado um modelo de aprendizado não supervisionado:
- Preparação de Dados: Padronização das variáveis de tráfego (bytes enviados, bytes recebidos e duração da conexão).
- Agrupamento: O algoritmo K-Means (com k=3) agrupa os tráfegos normais e repetitivos.
- Distância Euclidiana aos Centroides: A distância de cada ponto para o centro de seu respectivo grupo é medida. Pontos muito distantes são rotulados como outliers.
- Classificação de Outliers: Detecta com precisão comportamentos suspeitos como tráfego de Command and Control (C2) (baixo tráfego, padrão de duração fixo e incomum) e Exfiltração de Dados (alto volume de bytes enviados para destinos externos).
Para demonstrar as defesas de forma prática, o frontend conta com ferramentas interativas:
- Ajuste de Sensibilidade: Sliders no menu lateral permitem ajustar o limite de força bruta e a taxa de contaminação do K-Means em tempo real, recalculando as anomalias instantaneamente.
- Simulador SOC em Tempo Real: Botões na interface injetam eventos legítimos ou ataques ativos na memória (utilizando st.session_state) para que o analista veja a reação imediata dos alertas e gráficos.
- Exportação de Relatórios: Permite baixar a lista filtrada de anomalias em formato CSV.
Para garantir que a aplicação possa ser hospedada em nuvem com segurança, integrei as seguintes defesas inspiradas no guia OWASP Top 10:
- Higienização e Validação de Entradas (A03:2021-Injection):
- Filtro de Lista Branca (Allowlist): Validação rígida com expressões regulares no arquivo modules/validation.py para nomes de usuários e IPs digitados na busca.
- Prevenção de XSS: Escapes de HTML aplicados nas entradas dos usuários para impedir ataques de Cross-Site Scripting.
- Criptografia e Controle de Acesso (A01:2021-Broken Access Control e A02:2021-Cryptographic Failures):
- Hashing com Bcrypt: Armazenamento de credenciais protegido por bcrypt com fator de trabalho 12, evitando algoritmos legados e vulneráveis.
- Princípio do Privilégio Mínimo (RBAC): Estrutura para controle de acesso baseada em perfis com política padrão de negação (Default Deny).
- Monitoramento e Logs Seguros (A09:2021-Security Logging and Monitoring Failures):
- Auditoria Centralizada: Geração automática do arquivo de log de auditoria no servidor (server_audit.log).
- Mascaramento de Dados (Data Masking): Filtro ativo no logger que intercepta e mascara chaves de API, senhas e tokens confidenciais antes de gravá-los no disco.
- Hardening de Infraestrutura e Front-End:
- Ocultação de Stack Traces: Tratamento de exceções com exibição de erros genéricos ao usuário. Streamlit configurado com showErrorDetails = false para evitar vazamento de caminhos e infraestrutura interna.
- Segurança de Cabeçalhos e Cookies: Políticas de CSP (Content Security Policy) e CORS estritas em modules/security_helper.py, cookies emitidos com HttpOnly e SameSite=Strict, além de script JavaScript para limpar automaticamente o sessionStorage quando a aba do navegador for fechada.
- Python 3.8+
- Pandas e NumPy: Manipulação, limpeza e tratamento dos datasets de log.
- Scikit-Learn: Padronização com StandardScaler e aplicação de clusterização com KMeans.
- Streamlit: Frontend dinâmico para a construção do painel web.
- Plotly: Gráficos de dispersão interativos.
- Python-Dotenv: Isolamento de variáveis de ambiente.
-
Clone o repositório:
git clone https://github.com/MatheusLeo26/SIEM-Data-Scientist.git cd SIEM-Data-Scientist -
Crie e ative um ambiente virtual (Recomendado):
python -m venv venv # No Windows: venv\Scripts\activate # No Linux/Mac: source venv/bin/activate
-
Configure as variáveis de ambiente:
cp .env.example .env
(Ajuste os valores dentro de .env se necessário)
-
Instale as dependências:
pip install -r requirements.txt
-
Gere os dados de teste (opcional, o aplicativo fará isso automaticamente na primeira execução caso não existam):
python generate_data.py
-
Inicie o painel interativo:
streamlit run app.py
generate_data.py: Script gerador de eventos normais e simulador de ataques.analyzer.py: A inteligência de análise do SIEM (processamento estatístico e modelo K-Means).app.py: O frontend do dashboard interativo.requirements.txt: Dependências do projeto..env.example: Modelo de variáveis de ambiente..streamlit/config.toml: Parâmetros de hardening do Streamlit.modules/security_helper.py: Implementação de CSP, CORS e limpeza de storage.modules/validation.py: Higienização de campos e prevenção contra ataques de injeção e XSS.modules/auth.py: Hashing criptográfico de senhas e estrutura de RBAC.modules/secure_logger.py: Logger auditável com filtro ativo de mascaramento de dados.