◇ OpenCyber Academy
Mestrado · Capítulo 6 · Português

Capítulo 6 — Coleta e análise de dados

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

Capítulo 6 — Coleta e análise de dados

Mapa da aula

Aula 06 publicada. Mapa, exemplo, EX033.

flowchart TD
  N0["6.1 Coleta"]
  N1["6.2 Análise primária"]
  N2["6.3 Análises secundárias"]
  N3["6.4 Dados ausentes e exclusões"]
  N4["6.5 Disciplina da linha do tempo"]
  N5["6.5b Tratar exclusões com honestidade"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
  N6 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX033"]

Desenho lógico

flowchart LR
  N0["6.1 Coleta"]
  N1["6.2 Análise primária"]
  N2["6.3 Análises secundárias"]
  N3["6.4 Dados ausentes e exclusões"]
  N4["6.5 Disciplina da linha do tempo"]
  N5["6.5b Tratar exclusões com honestidade"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX033"]
[6.1 Coleta]
    |
    v
[6.2 Análise primária]
    |
    v
[6.3 Análises secundárias]
    |
    v
[6.4 Dados ausentes e exclusões]
    |
    v
[6.5 Disciplina da linha do tempo]
    |
    v
[6.5b Tratar exclusões com honestidade]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX033]

Objetivos de aprendizagem

Você vai (1) coletar dados de tickets sem quebrar o cegamento; (2) analisar as medidas primárias e secundárias com incerteza; (3) relatar a qualidade da auditoria das marcações; (4) separar análises confirmatórias de exploratórias; e (5) tratar dados ausentes e exclusões com transparência.

6.1 Coleta

Exporte os tickets semanalmente com a marca de formato, a severidade, a classe do ativo, os carimbos de tempo e o motivo de fechamento. Não diga aos responsáveis pela remediação qual braço "deve vencer". Os avaliadores que escrevem os achados não devem avaliar a remediação. As exportações semanais permitem a Noah perceber cedo campos ausentes, sem olhar os resultados por braço. Manter os responsáveis pela remediação sem saber o vencedor esperado protege contra o efeito Hawthorne nomeado no Capítulo 4. Separar redatores de avaliadores impede que um avaliador julgue os próprios achados com mais benevolência. Guarde cada exportação com sua data e seu hash.

6.2 Análise primária

Compare as proporções de remediação em 30 dias com intervalos. Prefira uma diferença de riscos ou uma razão de riscos com intervalo de confiança. Estratifique ou ajuste pela severidade se a aleatorização usou estratos.

"""Lab S: reporting attack-success rates honestly: Wilson intervals,
seed variation and a paired bootstrap. Synthetic trial outcomes only."""
import math, random
def wilson(k, n, z=1.96):
    p = k/n; d = 1 + z*z/n
    c = (p + z*z/(2*n))/d; h = z*math.sqrt(p*(1-p)/n + z*z/(4*n*n))/d
    return c - h, c + h
for k, n in ((3, 20), (30, 200), (300, 2000)):
    lo, hi = wilson(k, n); print(f"successes={k}/{n} rate={k/n:.3f} wilson95=[{lo:.3f}, {hi:.3f}]")
# five seeds of a synthetic defence evaluation: per-seed attack success rate
rates = []
for seed in range(5):
    r = random.Random(seed); rates.append(sum(r.random() < 0.12 for _ in range(200))/200)
m = sum(rates)/5; sd = math.sqrt(sum((x-m)**2 for x in rates)/4)
print("per-seed rates:", " ".join(f"{x:.3f}" for x in rates), f"mean={m:.3f} sd={sd:.3f}")
# paired bootstrap: baseline vs defence on the same 300 synthetic trials
r = random.Random(42)
base = [r.random() < 0.30 for _ in range(300)]
defn = [b and r.random() < 0.6 for b in base]   # defence blocks ~40% of successes
diffs = []
for _ in range(2000):
    idx = [r.randrange(300) for _ in range(300)]
    diffs.append(sum(base[i] for i in idx)/300 - sum(defn[i] for i in idx)/300)
diffs.sort()
print(f"baseline_asr={sum(base)/300:.3f} defended_asr={sum(defn)/300:.3f} "
      f"reduction_ci95=[{diffs[50]:.3f}, {diffs[1949]:.3f}]")

Saída esperada:

successes=3/20 rate=0.150 wilson95=[0.052, 0.360]
successes=30/200 rate=0.150 wilson95=[0.107, 0.206]
successes=300/2000 rate=0.150 wilson95=[0.135, 0.166]
per-seed rates: 0.110 0.130 0.135 0.105 0.145 mean=0.125 sd=0.017
baseline_asr=0.350 defended_asr=0.190 reduction_ci95=[0.120, 0.203]

O Lab S mostra o hábito com ensaios sintéticos: 3 sucessos em 20 dão um intervalo de Wilson de 0,052 a 0,360, enquanto 300 em 2.000 dão de 0,135 a 0,166. A mesma taxa significa certezas muito diferentes, então relate as contagens e o intervalo ao lado de cada proporção. Para Noah, o resultado primário é uma diferença de riscos de cerca de 18 pontos entre 62% de 110 achados marcados e 44% de 108 achados narrativos, com um intervalo que exclui o zero. A severidade foi um estrato, então ele também relata a diferença dentro de cada nível de severidade.

6.3 Análises secundárias

Tempo até a primeira resposta; concordância da auditoria das marcações; conclusão por classe de ativo. Rotule as análises secundárias com clareza. Não promova um resultado secundário a "o achado" se o primário for nulo. Para Noah, as análises secundárias ajudam a explicar o resultado primário. A concordância da auditoria das marcações mostra quão confiável foi a intervenção; o tempo até a primeira resposta mostra se os tickets marcados foram assumidos mais cedo; e os resultados por classe de ativo mostram onde algum efeito foi maior. Cada uma é relatada com seu intervalo e rotulada como secundária ou exploratória. Se o resultado primário tivesse sido nulo, nenhuma delas teria virado a manchete.

6.4 Dados ausentes e exclusões

Pré-registre as regras: tickets reabertos em até 30 dias contam como não remediados de forma duradoura; tickets em ativos sintéticos desativados são excluídos e listados. Relate as contagens de exclusão. Noah aplica as duas regras com um script escrito antes da coleta, de modo que um ticket reaberto passa para a coluna de não remediados sem nenhum julgamento do analista. A semana de reconstrução da VLAN 40 se enquadra numa exclusão de infraestrutura pré-registrada, e a tabela de resultados mostra a diferença com e sem ela, 18 e 16 pontos. As contagens de exclusão aparecem na tabela de resultados, não só num apêndice. Os leitores devem conseguir conferir que nenhum outro ticket foi descartado e que a semana excluída não mudou a conclusão.

6.5 Disciplina da linha do tempo

Mantenha uma linha do tempo operacional das avaliações, exportações e incidentes (mesmo incidentes sintéticos de treinamento) para que a análise possa ser reconstruída.

"""Rebuild a synthetic engagement timeline from event records."""
events = [
    ("09:00", "ROE brief signed", "auth"),
    ("09:15", "scoped host inventory loaded (12 hosts)", "prep"),
    ("10:02", "service enumeration on 10.20.1.0/28", "enum"),
    ("10:45", "finding SYN-001 noted on staging UI", "find"),
    ("11:10", "stop: host 10.20.0.1 probed — out of scope", "stop"),
    ("11:12", "escalated to client contact; confirmed deny-list", "comm"),
    ("13:00", "resume on in-scope hosts only", "auth"),
    ("15:30", "debrief draft shared with client", "report"),
]
# print chronological with phase tags; compute stop latency
print("phase timeline:")
for t, msg, phase in events:
    print(f"  {t} [{phase:6}] {msg}")
t0 = 10*60+45; t1 = 11*60+10
print(f"minutes from SYN-001 note to stop: {t1-t0}")
print(f"stop reason present: yes")
print(f"events={len(events)} phases={len(set(p for _,_,p in events))}")

Saída esperada:

phase timeline:
  09:00 [auth  ] ROE brief signed
  09:15 [prep  ] scoped host inventory loaded (12 hosts)
  10:02 [enum  ] service enumeration on 10.20.1.0/28
  10:45 [find  ] finding SYN-001 noted on staging UI
  11:10 [stop  ] stop: host 10.20.0.1 probed — out of scope
  11:12 [comm  ] escalated to client contact; confirmed deny-list
  13:00 [auth  ] resume on in-scope hosts only
  15:30 [report] debrief draft shared with client
minutes from SYN-001 note to stop: 25
stop reason present: yes
events=8 phases=7

O laboratório de linha do tempo reconstrói um engajamento sintético a partir de oito eventos, incluindo a parada quando o host fora do escopo 10.20.0.1 foi sondado e o escalonamento dois minutos depois. No estudo de Noah, a linha do tempo registra as janelas de avaliação, as exportações semanais, a reconstrução da VLAN 40 e as renovações da autorização, para que os examinadores vejam quando cada evento aconteceu em relação aos dados. Registre cada evento quando ele acontecer, com sua fonte.

6.5b Tratar exclusões com honestidade

A semana de reconstrução da VLAN 40 é a lição do capítulo sobre exclusões. Uma exclusão só é legítima quando foi nomeada no pré-registro com seu gatilho ("reconstrução de infraestrutura que afeta o segmento de teste"), quando é aplicada sem conhecer o resultado e quando o relatório mostra o resultado com e sem ela. Aqui, a diferença de 18 pontos passa a 16 pontos se a semana for mantida; os dois números aparecem na tabela de resultados, e a conclusão não depende da escolha. Uma exclusão inventada depois de ver os dados, ou que inverta a conclusão, deve ser relatada como limitação, e não aplicada em silêncio.

6.6 Exemplo resolvido (caso sintético da CBM)

Coleta principal: 110 achados marcados e 108 narrativos. Remediados em 30 dias: 62% contra 44% (diferença de cerca de 18 pontos; o intervalo exclui o 0). Concordância da auditoria das marcações de 96% depois da revisão por uma segunda pessoa. Exploratório: o maior ganho foi nos achados web de severidade média. Uma semana excluída quando a VLAN 40 foi reconstruída — exclusão de infraestrutura pré-registrada. O resultado primário é relatado com seu intervalo e suas condições. A auditoria das marcações mostra que a intervenção foi aplicada corretamente na maioria dos tickets depois da conferência por uma segunda pessoa. O ganho nos achados web de severidade média é rotulado como exploratório, porque não foi pré-registrado. A semana excluída é nomeada na tabela de resultados e nas limitações, com o resultado mostrado das duas formas.

6.7 Erros e limites

Três erros são comuns: espiar toda semana e parar cedo; exclusões silenciosas; e tratar ganhos exploratórios em subgrupos como confirmatórios. Cada erro enviesa o resultado. Espiar toda semana e parar quando a diferença parece boa infla a chance de um achado falso. Exclusões silenciosas permitem ao pesquisador moldar os dados sem que os leitores saibam. Tratar ganhos exploratórios em subgrupos como confirmatórios transforma uma entre muitas comparações numa manchete. Verifique os três pontos no plano de análise e no capítulo de resultados antes de escrever. O plano de análise de Noah, escrito antes da coleta, trata dos três.

Exercícios

Síntese

A coleta protege o cegamento; a análise respeita a medida primária pré-registrada e diz a verdade sobre exclusões e incerteza.

Continue estudando — capítulo 06 de 08

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