Capítulo 19 — Perícia digital e análise de malware: monitoramento
Mapa da aula
Aula 19 publicada. Mapa, exemplo, EX055.
flowchart TD
N0["19.1 Monitorar para a evidência"]
N1["19.2 Ruído"]
N2["Laboratório — agrupando alertas"]
N3["19.3 Lendo o resultado"]
N4["19.4 Preservando os eventos brutos"]
N5["19.5 Entrega"]
N6["19.6 Ajuste fino"]
N7["19.7 Cobertura"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX055"]
Desenho lógico
flowchart LR
N0["19.1 Monitorar para a evidência"]
N1["19.2 Ruído"]
N2["Laboratório — agrupando alertas"]
N3["19.3 Lendo o resultado"]
N4["19.4 Preservando os eventos brutos"]
N5["19.5 Entrega"]
N6["19.6 Ajuste fino"]
N7["19.7 Cobertura"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX055"]
[19.1 Monitorar para a evidência]
|
v
[19.2 Ruído]
|
v
[Laboratório — agrupando alertas]
|
v
[19.3 Lendo o resultado]
|
v
[19.4 Preservando os eventos brutos]
|
v
[19.5 Entrega]
|
v
[19.6 Ajuste fino]
|
v
[19.7 Cobertura]
|
v
[Exemplo resolvido] --> [Exercício EX055]
Objetivos de aprendizagem
Você vai (1) desenhar um monitoramento que apoie as investigações; (2) reduzir o ruído dos alertas por agrupamento; (3) preservar o contexto dos alertas como evidência; (4) entregar os alertas aos investigadores.
19.1 Monitorar para a evidência
Os alertas são pontos de partida para as investigações. Alertas úteis trazem contexto: host, conta, horário, regra e referências aos eventos brutos. Um alerta que diz apenas "atividade suspeita no CLERK-03" manda um analista procurar; um que nomeia o host, a conta admin, a regra, o horário e os identificadores dos eventos brutos permite ao analista abrir na hora os registros originais. Jonah revisa cada regra de alerta da prefeitura e acrescenta os campos de contexto que faltam, para que um alerta sirva como a primeira linha de um arquivo de caso, e não como um aviso vago.
19.2 Ruído
Alertas repetidos para uma única atividade em curso sobrecarregam equipes pequenas. Agrupar por host e regra dentro de uma janela de tempo transforma muitos alertas em menos incidentes a revisar. A adivinhação contra o CLERK-03 produziu vários alertas em poucos minutos, e uma equipe de duas pessoas que os lesse um por um perderia a noção do que era novo. O agrupamento permite a Renata ver um incidente com uma contagem, em vez de uma lista rolando na tela. O risco é o erro oposto: agrupar de modo amplo demais pode enterrar um evento diferente sob um rótulo familiar, e é por isso que as contagens brutas continuam visíveis.
Laboratório — agrupando alertas
"""Group repeated alerts by (host, rule) within a 10-minute window."""
alerts = [("08:01", "CLERK-03", "brute-force"), ("08:02", "CLERK-03", "brute-force"), ("08:05", "CLERK-03", "new-service"),
("08:09", "CLERK-03", "brute-force"), ("08:30", "CLERK-03", "brute-force"), ("08:31", "GIS-01", "brute-force")]
def mins(t): h, m = map(int, t.split(":")); return h * 60 + m
groups, last = [], {}
for t, host, rule in alerts:
k = (host, rule)
if k in last and mins(t) - mins(last[k][-1][0]) <= 10:
last[k].append((t, host, rule))
else:
last[k] = [(t, host, rule)]; groups.append(last[k])
for g in groups: print(g[0][1], g[0][2], "first", g[0][0], "count", len(g))
print(f"{len(alerts)} alerts -> {len(groups)} incidents to review")
Execute com python3 lab_dedupe.py. Saída verificada:
CLERK-03 brute-force first 08:01 count 3
CLERK-03 new-service first 08:05 count 1
CLERK-03 brute-force first 08:30 count 1
GIS-01 brute-force first 08:31 count 1
6 alerts -> 4 incidents to review
19.3 Lendo o resultado
Seis alertas sintéticos viram quatro incidentes: força bruta no CLERK-03 (três alertas a partir das 08:01, com intervalos dentro de dez minutos), serviço novo no CLERK-03 (um), uma força bruta posterior no CLERK-03 às 08:30 (fora da janela, portanto um grupo novo) e força bruta no GIS-01 às 08:31. O grupo das 08:30 pode ser a mesma atividade sendo retomada; os analistas podem juntá-los se a evidência sustentar isso. A saída também mostra que o agrupamento depende da escolha de uma janela; com uma janela mais longa, o alerta das 08:30 teria entrado no primeiro grupo, e o incidente separado do GIS-01 continuaria à parte apenas porque seu host é outro.
19.4 Preservando os eventos brutos
O agrupamento serve apenas à triagem; os alertas brutos e os eventos subjacentes são guardados sem alteração como evidência. No caso do CLERK-03, os alertas brutos traziam os horários exatos e os identificadores de evento que ligavam a adivinhação aos registros de logon no desktop. Se só o resumo agrupado tivesse sido guardado, essa ligação se perderia. Jonah guarda os alertas brutos no repositório de evidências com um hash, e a saída do agrupamento separadamente, como uma visão derivada. As visões derivadas podem ser geradas de novo; os alertas brutos, não.
19.5 Entrega
Cada chamado de incidente aponta para os eventos brutos e inclui a regra de agrupamento usada. Um chamado que nomeia a regra de agrupamento permite ao investigador julgar se dois grupos podem ser uma única atividade, como os alertas do CLERK-03 às 08:01 e às 08:30. Apontar para os eventos brutos, em vez de copiá-los, evita erros e mantém uma única cópia de referência. O modelo de chamado de Jonah inclui campos para as duas coisas, para que ninguém precise lembrar de acrescentá-las. Quando um investigador discorda de um agrupamento, o chamado registra a mudança e o motivo, para que as revisões posteriores vejam com que frequência a regra precisou de correção.
19.6 Ajuste fino
O tamanho da janela é uma troca: curta demais, divide a atividade; longa demais, junta eventos sem relação. A janela de dez minutos do laboratório dividiu a adivinhação contra o CLERK-03 em dois grupos por causa de um intervalo de mais de vinte minutos. Isso pode estar correto, se a atividade de fato parou, ou ser enganoso, se a mesma ferramenta apenas ficou mais lenta. Jonah registra a janela usada e a revisa todo mês, comparando-a com os casos em que os analistas juntaram ou separaram grupos à mão. Nenhuma janela única serve para todas as regras, por isso a janela de cada regra é definida separadamente.
19.7 Cobertura
Jonah lista quais técnicas do ATT&CK os alertas da prefeitura conseguem detectar, com base nas fontes de dados disponíveis, e onde restam lacunas. Para cada técnica vista no caso do CLERK-03, ele anota a fonte de dados que a revelaria e se a prefeitura a coleta: eventos de logon para a adivinhação de senhas, eventos de criação de serviço para a persistência, criação de processos para o helper.exe em execução e registros de conexões de saída para a transferência ao serviço de compartilhamento de arquivos. A lista mostra quais alertas são possíveis hoje e quais dependem do encaminhamento que ainda está sendo implantado.
Rotina de revisão de alertas
Toda manhã, Renata ou Jonah revisa os incidentes agrupados do dia anterior, encerrando os benignos com um motivo e escalonando os demais. Os motivos de encerramento são revisados toda semana para identificar regras que precisam de ajuste. A rotina leva cerca de vinte minutos e impede que a fila cresça sem leitura, e foi isso que permitiu pegar o alerta do GIS-01 na segunda passada.
Exemplo resolvido
A força bruta no GIS-01 às 08:31 tinha passado despercebida na enxurrada de alertas da manhã. O agrupamento a faz aparecer como um incidente separado. Os logs mostram que a origem é de novo o PLAN-07, o que amplia o escopo afetado para o servidor de GIS.
Caso sintético. Os alertas vêm do script do laboratório.
Erros e limites
O agrupamento pode esconder um segundo atacante que use a mesma técnica; mantenha as contagens brutas visíveis.
Exercícios
- EX055 — Agrupamento no laboratório. Em quantos incidentes os seis alertas se transformaram, e quais? Rubrica: 3 = 4: força bruta no CLERK-03 ×3, serviço novo, CLERK-03 às 08:30, GIS-01; 2 = só a contagem; 1 = errado; 0 = nada.
- EX056 — Eventos brutos. Por que guardar os alertas brutos depois do agrupamento? Rubrica: 3 = evidência inalterada; agrupamento só para triagem; 2 = parcial; 1 = não é preciso; 0 = nada.
- EX057 — Achado no GIS-01. O que o agrupamento fez aparecer, e o que isso revelou? Rubrica: 3 = força bruta no GIS-01 a partir do PLAN-07; escopo ampliado; 2 = parcial; 1 = vago; 0 = nada.
Síntese
Agrupe os alertas para a triagem, guarde os eventos brutos como evidência e deixe os incidentes agrupados revelarem o escopo.
Continue estudando — capítulo 19 de 30
← Capítulo 18 (rascunho) · Índice de capítulos do curso · Capítulo 20 (rascunho) →