OpenCyber Academy
Engenharia · Capítulo 24 · Português
Código do curso: OCA-130Capítulo 24: OCA-130-C024

Capítulo 24 — Operações de segurança e blue team: métodos I

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Mapa da aula

Aula 24 publicada. Mapa, exemplo, EX070.

flowchart TD
  N0["24.1 Regras por limiar"]
  N1["24.2 Regras de correlação"]
  N2["Laboratório — comparando variantes de regras"]
  N3["24.3 Lendo o resultado"]
  N4["24.4 O propósito decide"]
  N5["24.5 Rótulos"]
  N6["24.6 Amostras pequenas"]
  N7["Nomes e severidade das regras"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX070"]

Desenho lógico

flowchart LR
  N0["24.1 Regras por limiar"]
  N1["24.2 Regras de correlação"]
  N2["Laboratório — comparando variantes de regras"]
  N3["24.3 Lendo o resultado"]
  N4["24.4 O propósito decide"]
  N5["24.5 Rótulos"]
  N6["24.6 Amostras pequenas"]
  N7["Nomes e severidade das regras"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX070"]
[24.1 Regras por limiar]
    |
    v
[24.2 Regras de correlação]
    |
    v
[Laboratório — comparando variantes de regras]
    |
    v
[24.3 Lendo o resultado]
    |
    v
[24.4 O propósito decide]
    |
    v
[24.5 Rótulos]
    |
    v
[24.6 Amostras pequenas]
    |
    v
[Nomes e severidade das regras]
    |
    v
[Exemplo resolvido] --> [Exercício EX070]

Objetivos de aprendizagem

Você vai (1) projetar detecções por limiar e por correlação; (2) avaliar regras contra janelas rotuladas; (3) comparar variantes de regras por verdadeiros e falsos positivos; (4) escolher variantes pelo propósito operacional.

24.1 Regras por limiar

Uma regra por limiar dispara quando uma contagem numa janela ultrapassa um limite: pelo menos 5 usuários distintos falhando a partir de uma /24 em 10 minutos. Contar usuários distintos, em vez do total de falhas, mira o padrão de stuffing: muitas contas, poucas tentativas cada. Um único cliente falhando dez vezes não acionaria a regra, o que é intencional. A janela e o limite são parâmetros a ajustar, e a documentação da regra registra os valores escolhidos e a evidência que levou a eles. Cinco em dez minutos é o ponto de partida.

24.2 Regras de correlação

Uma regra de correlação exige várias condições, possivelmente de fontes diferentes: falhas seguidas de um sucesso, ou um sucesso seguido de uma alteração de endereço. A correlação acrescenta significado ao juntar passos que são fracos isoladamente. Falhas acontecem o tempo todo; um sucesso isolado é normal; falhas seguidas de um sucesso a partir da mesma rede sugerem uma senha adivinhada. Uma alteração de endereço depois de um login vindo de uma rede nova é mais suspeita do que qualquer dos dois eventos separadamente. Essas regras precisam de fontes com horários alinhados e campos compartilhados. Os desvios de relógio entre as fontes precisam ser pequenos.

Laboratório — comparando variantes de regras

"""Evaluate a Sigma-style burst rule over synthetic 10-minute windows with labels."""
windows = [  # (window, distinct users failed, any success, label)
    ("09:50", 2, True, "benign"), ("10:00", 7, True, "attack"), ("10:10", 6, False, "attack"),
    ("10:20", 1, False, "benign"), ("11:00", 9, False, "benign"),   # load test
    ("13:30", 5, True, "attack"), ("14:00", 3, True, "benign"), ("15:00", 6, False, "benign")]
def rule(users, success, threshold): return users >= threshold and success
for t in (5, 6):
    tp = sum(rule(u, s, t) and l == "attack" for _, u, s, l in windows)
    fp = sum(rule(u, s, t) and l == "benign" for _, u, s, l in windows)
    fn = sum(not rule(u, s, t) and l == "attack" for _, u, s, l in windows)
    print(f"threshold={t} with-success: TP={tp} FP={fp} FN={fn}")
tp = sum(u >= 5 and l == "attack" for _, u, s, l in windows); fp = sum(u >= 5 and l == "benign" for _, u, s, l in windows)
print(f"threshold=5 no success clause: TP={tp} FP={fp} FN={3-tp}")

Execute com python3 lab_rule.py. Saída verificada:

threshold=5 with-success: TP=2 FP=0 FN=1
threshold=6 with-success: TP=1 FP=0 FN=2
threshold=5 no success clause: TP=3 FP=2 FN=0

24.3 Lendo o resultado

Com a cláusula de sucesso e limiar 5, a regra pega 2 de 3 janelas de ataque, sem alertas falsos; com limiar 6, pega apenas 1. Sem a cláusula de sucesso, o limiar 5 pega as 3 janelas de ataque, mas acrescenta 2 alertas falsos — o teste de carga das 11:00 e uma janela das 15:00. Os números mostram a troca com clareza. Exigir um sucesso torna a regra precisa, mas custa uma janela de ataque, uma tentativa que nunca teve sucesso. Retirar a cláusula pega todas as tentativas, mas acrescenta ruído, inclusive um teste de carga que uma exceção para ferramenta assinada poderia remover. Elevar o limiar para seis perde mais uma janela real sem remover nenhum alerta falso, já que não havia nenhum.

24.4 O propósito decide

A variante sem sucesso detecta tentativas; a variante com sucesso detecta comprometimento provável. A Lindqvist usa as duas: as tentativas vão para uma fila diurna de ajuste dos limites de taxa; o comprometimento provável aciona o turno da noite. Nenhuma variante é simplesmente melhor; cada uma responde a uma pergunta diferente. As tentativas importam para ajustar as defesas, como os limites de taxa, e podem esperar o dia. O comprometimento provável exige ação em minutos, então justifica acordar alguém. Dividir a regra por propósito dá a cada uma a urgência certa, em vez de forçar um único limiar de meio-termo para as duas necessidades.

24.5 Rótulos

A avaliação precisa de janelas rotuladas. Os rótulos vêm de incidentes investigados, de testes autorizados e da revisão de amostras pelos analistas. Cada fonte de rótulos tem fraquezas. Os incidentes investigados são confiáveis, mas poucos; os testes autorizados são limpos, mas podem não se parecer com ataques reais; as revisões dos analistas são abundantes, mas podem estar erradas. Registrar de onde veio cada rótulo permite aos avaliadores ponderá-los e verificar se os resultados dependem demais de um tipo de rótulo. Ao lado de cada uma de suas oito janelas, Amara escreve qual fonte forneceu o rótulo e quem o confirmou, para que um revisor possa contestar qualquer rótulo isolado.

24.6 Amostras pequenas

Oito janelas apenas ilustram o método; uma avaliação real usa semanas de dados. Com oito janelas, uma única janela mal rotulada muda os resultados drasticamente. Semanas de dados dão centenas de janelas, o suficiente para estimar taxas com confiança útil e para ver a variação entre dias úteis e fins de semana. O conjunto pequeno continua valioso para o ensino e para testes unitários, em que cada janela pode ser conferida à mão. Amara declara o tamanho da amostra ao lado de cada número que relata, para que ninguém confunda o exemplo didático com um desempenho medido da regra em produção.

Nomes e severidade das regras

Cada variante recebe um nome claro e uma severidade. "Tentativas de stuffing no portal" é baixa e vai para a fila; "Possível tomada de conta no portal" é alta e aciona o plantão. Os nomes dizem aos analistas o que esperar antes de abrirem o alerta, o que acelera a triagem e reduz a confusão entre regras parecidas.

Exemplo resolvido

Amara apresenta os resultados a Paolo como uma tabela de variantes, com uma recomendação: acionar o plantão com "limiar 5 com sucesso" e enviar "limiar 5 sem sucesso" para a revisão diurna. A janela de ataque das 10:10 que foi perdida não teve sucesso, então a regra de acionamento corretamente ficou em silêncio — o atacante ainda não tinha entrado. Isso traz o limiar de acionamento de volta dos 6 em que o laço de ajuste anterior se estabilizou para 5. Aquele laço ajustava a regra só de falhas, em que elevar o limiar era a única forma de cortar alertas falsos. Uma vez acrescentada a cláusula de sucesso, ela remove os alertas falsos por si só: nas janelas do laboratório, o limiar 5 com sucesso não tem alertas falsos e pega duas janelas de ataque, enquanto o 6 pega apenas uma. Manter o 6 perderia detecção sem ganhar nada, então o limiar do R-07 é alterado para 5 por meio do controle de mudanças.

Caso sintético. As janelas e os rótulos vêm do script do laboratório.

Erros e limites

Os próprios rótulos podem estar errados; revise os contestados.

Exercícios

Síntese

Projete variantes de regras para propósitos distintos e escolha-as por resultados medidos em dados rotulados.

Continue estudando — capítulo 24 de 50

← Capítulo 23 (rascunho) · Índice de capítulos do curso · Capítulo 25 (rascunho) →

Respostas comentadas

EX070. Limiar 5 com sucesso: 2, 0, 1; limiar 6 com sucesso: 1, 0, 2; limiar 5 sem sucesso: 3, 2, 0.

EX071. Uma detecta tentativas, para o trabalho diurno de ajuste; a outra detecta comprometimento provável e aciona o turno da noite.

EX072. O ataque das 10:10 não tinha tido sucesso, então não havia comprometimento para acionar o plantão; a regra de tentativas ainda o registra.