Equipe: Andrey Vinicius Santos Souza e Théo Corvello Soares
Disciplina: Métodos de Autenticação e Segurança em Redes — EaD, Turma U
Docente: Prof. Dr. Bruno L. Dalmazo
Instituição: Universidade Federal do Rio Grande (FURG)
Detector offline para tráfego da segunda semana (8 a 12 de março de 1999) do DARPA 1999, usando somente os cinco arquivos inside tcpdump. A granularidade é 60 segundos e os gráficos mostram pacotes por segundo (PPS). Dados: https://archive.ll.mit.edu/ideval/data/1999/training/week2/index.html
sudo apt-get update && sudo apt-get install -y tshark gzip python3-venv
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e .darpa-anomaly download --data-dir data/raw
darpa-anomaly preprocess --data-dir data/raw --series data/processed/traffic_60s.csv
darpa-anomaly detect --series data/processed/traffic_60s.csv --out-dir results
darpa-anomaly plot --detections results/detections.csv --out-dir results/figuresAlternativamente, após baixar os arquivos:
darpa-anomaly run --data-dir data/raw --out-dir resultsTambém pode ser invocado via python -m anomaly_detection.
- Baixar cerca de 800 MB de arquivos compactados diretamente do MIT.
- Descompactar em streaming para o TShark e extrair timestamp/comprimento.
- Concatenar cronologicamente, agregando pacotes e bytes por 60 segundos.
- Salvar data/processed/traffic_60s.csv, incluindo PPS=packets/60.
- Aplicar previsão EWMA causal e detecção por MAD robusto.
- Exportar results/detections.csv, anomalies.csv, metrics.json e figures/traffic_pps.png (eixo Y em PPS).
Os dados são lidos individualmente, sem gerar um PCAP mesclado gigante. Arquivos brutos e resultados não são versionados.
python -m unittest discover -s tests -vA metodologia e limitações estão em docs/METHODOLOGY.md.
Status: pipeline e Etapa 2 executados com o dataset real. Os ataques oficiais ainda não estão integrados como ground truth e a avaliação no dataset completo ainda precisa ser executada. Nenhuma métrica real do DARPA foi inventada.
O workflow DARPA 1999 Week 2 - full offline analysis usa uma VM temporária Ubuntu 24.04 sem depender do computador local. Ele inicia automaticamente no primeiro push da configuração na branch feat/mvp-60s-ewma. Depois de integrado à main, novas execuções poderão ser iniciadas em Actions > DARPA 1999 Week 2 > Run workflow.
Etapas automatizadas:
- Instalar TShark e dependências Python e executar testes unitários.
- Baixar cinco arquivos inside.tcpdump.gz de segunda a sexta.
- Verificar integridade de cada gzip e registrar SHA-256.
- Processar os PCAPs em streaming, em buckets UTC de 60 segundos.
- Auditar source_day, timestamps, cronologia e PPS = pacotes/60.
- Calcular EWMA/MAD, estatísticas e gráfico com eixo Y em PPS.
- Publicar o Artifact darpa-week2-60s-<run_id> com:
- data/processed/traffic_60s.csv
- results/capture_validation.json
- results/sha256sums.txt
- results/detections.csv e results/anomalies.csv
- results/metrics.json e results/figures/traffic_pps.png
Os arquivos PCAP compactados NÃO são incluídos no Artifact nem em commits. Artefatos expiram após 14 dias. A fonte do MIT precisa aceitar downloads no ambiente GitHub-hosted; caso contrário o job mostrará o erro no log. A comparação com o ground truth oficial dos ataques continua pendente.
A execução real no GitHub Actions foi concluída com sucesso: 7.275.137 pacotes, 6.424 janelas de 60 segundos e 115 anomalias sinalizadas em 6.274 janelas avaliadas. MAE = 6,1314 PPS e RMSE = 12,3259 PPS. Os oito testes unitários foram aprovados.
Documentação científica com tabelas, gráficos e ressalvas: Etapa 2 — relatório e dados (índice).
Os CSVs, gráficos PNG, estatísticas JSON, checagens de integridade e auditoria temporal são versionados em reports/week2-1999/ pela automação Publish Week 2 results. O arquivo traffic_pps_gap_aware.png evita linhas artificiais atravessando períodos sem captura. Os dados brutos compactados não são versionados.
Interpretação importante: 115 alertas não equivalem a 115 ataques. A correspondência com o ground truth documentado pelo MIT permanece pendente e será tratada na etapa seguinte.
O conjunto de 43 inícios de ataques documentados pelo MIT foi integrado, alinhado ao horário UTC e comparado com os 115 alertas da Etapa 2. A execução do GitHub Actions reproduziu a configuração original e avaliou 27 combinações de alpha, limiar MAD e warmup.
Na configuração original, 43/43 inícios ocorreram com captura ativa, 38/43 estavam fora do warmup e 4/38 inícios pontuáveis tinham algum alerta na janela de ±5 minutos. Nove dos 115 alertas estavam dentro dessas proximidades e 106 fora. A proximidade não comprova detecção do ataque; os 106 alertas não são falsos positivos confirmados.
- Relatório e gráficos reais das Etapas 3/4
- Metodologia e ressalvas sobre ground truth
- Lista dos 43 inícios oficiais
- Grid experimental (27 configurações)
- Workflow reprodutível
A lista oficial não traz durações exaustivas; precisão, recall, F1 e verdadeiros/falsos positivos definitivos exigiriam rótulos por intervalo e confirmação de tráfego malicioso por destino.
O código em src/anomaly_detection/packet_evidence.py complementa a avaliação de PPS com metadados de pacotes reais das cinco capturas INSIDE. Examina os quatro eventos temporalmente próximos (IDs MIT 17, 24, 26, 36) e os 115 alertas, inclusive aqueles sem início de ataque em ±5 minutos.
A checagem inclui TCP SYN/ACK/RST/FIN, TCP/UDP/ICMP, top IPs de destino, portas e taxas de SYN em pacotes por segundo. Também reconcilia os totais com o CSV da Etapa 2, sem enviar PCAPs/payloads ao Git.
- Metodologia, critérios e limites
- Resultados e gráficos de metadados de pacotes
- Pipeline GitHub Actions
Os fenótipos são categorias de triagem, não ground truth. Mesmo que um alerta coincida com um pico de SYN para o destino de um ataque, isto não comprova por si só que a sessão era maliciosa ou que o modelo a identificou corretamente.
O comando darpa-anomaly ground-truth-week2 gera fila de 43 eventos e rotulos por minuto com tres estados: 1 ataque validado, 0 benigno validado, ou indeterminado. Sem duracoes oficiais, nao inventa matriz de confusao.
Use darpa-anomaly evaluate-confusion-week2 para analisar os 149 alarmes
SMA(10) por minuto, alinhar com rótulos verificados e auditar a proximidade
aos inicios oficiais. A matriz de confusao completa so e exportada com
cobertura de 100% das janelas elegiveis; desconhecidos nao sao negativos.