Mapa da aula
Aula 01 publicada. Mapa, exemplo, EX001.
flowchart TD
N0["1.1 Integridade como método de pesquisa"]
N1["1.2 Autorização, escopo e condições de parada"]
N2["1.3 Medidas que importam"]
N3["1.4 Disciplina de uso dual"]
N4["1.5 Trilha de evidências"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX001"]
Desenho lógico
flowchart LR
N0["1.1 Integridade como método de pesquisa"]
N1["1.2 Autorização, escopo e condições de parada"]
N2["1.3 Medidas que importam"]
N3["1.4 Disciplina de uso dual"]
N4["1.5 Trilha de evidências"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX001"]
[1.1 Integridade como método de pesquisa]
|
v
[1.2 Autorização, escopo e condições de parada]
|
v
[1.3 Medidas que importam]
|
v
[1.4 Disciplina de uso dual]
|
v
[1.5 Trilha de evidências]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX001]
Objetivos de aprendizagem
Você vai (1) enunciar as regras de integridade que regem a pesquisa em segurança ofensiva autorizada; (2) projetar estudos que não possam causar dano a pessoas nem a sistemas fora do escopo; (3) escolher medidas que reflitam efeitos, não teatro; (4) lidar com responsabilidade com conhecimento de uso dual; e (5) manter uma trilha de evidências que outros possam auditar.
1.1 Integridade como método de pesquisa
Nesta área, um controle de integridade que falha não é uma questão de papelada — é uma sondagem fora do escopo, uma credencial vazada ou uma negação de serviço contra um hospital. Integridade significa: autorização por escrito antes de qualquer interação com um alvo; um escopo que um terceiro possa verificar; condições de parada ensaiadas; dados sintéticos ou consentidos; e registros que mostrem o que foi feito e por quê. O NIST SP 800-115 enquadra a avaliação como uma atividade planejada, com regras; o PTES coloca o escopo e a coleta de inteligência antes de qualquer teste. Seu doutorado herda esses hábitos e acrescenta os padrões da pesquisa: pré-registro das medidas, replicação e limites honestos.
1.2 Autorização, escopo e condições de parada
A autorização nomeia o proprietário, os sistemas, as datas, as ações permitidas e as regras sobre dados. O escopo é o conjunto de hosts, portas, identidades e ações que estão incluídos. As condições de parada — por exemplo, qualquer dado pessoal real, qualquer host fora do escopo, qualquer impacto na disponibilidade — interrompem o trabalho e acionam o escalonamento. Um escopo verificável por máquina (listas de CIDR, portas e ações) torna as violações detectáveis em vez de discutíveis.
"""Check proposed engagement targets against a written scope (synthetic)."""
SCOPE_CIDRS = [("10.20.0.0", 16), ("192.168.50.0", 24)] # inclusive synthetic ranges
SCOPE_PORTS = {22, 80, 443, 8080}
DENY_HOSTS = {"10.20.0.1", "192.168.50.1"} # out-of-scope infra
def ip_int(s):
a,b,c,d = map(int, s.split("."))
return (a<<24)|(b<<16)|(c<<8)|d
def in_cidr(ip, net, bits):
mask = (0xFFFFFFFF << (32-bits)) & 0xFFFFFFFF
return (ip_int(ip) & mask) == (ip_int(net) & mask)
def check(host, port):
reasons = []
if host in DENY_HOSTS:
reasons.append("deny-list")
if not any(in_cidr(host, n, b) for n,b in SCOPE_CIDRS):
reasons.append("outside-cidr")
if port not in SCOPE_PORTS:
reasons.append("port-not-in-scope")
return ("ALLOW" if not reasons else "DENY"), reasons
tests = [
("10.20.1.10", 443),
("10.20.0.1", 443),
("192.168.50.20", 22),
("192.168.50.20", 3389),
("8.8.8.8", 80),
("192.168.1.10", 80),
]
for h,p in tests:
v, r = check(h,p)
print(f"target={h}:{p} decision={v} reasons={','.join(r) or '-'}")
Saída esperada:
target=10.20.1.10:443 decision=ALLOW reasons=-
target=10.20.0.1:443 decision=DENY reasons=deny-list
target=192.168.50.20:22 decision=ALLOW reasons=-
target=192.168.50.20:3389 decision=DENY reasons=port-not-in-scope
target=8.8.8.8:80 decision=DENY reasons=outside-cidr
target=192.168.1.10:80 decision=DENY reasons=outside-cidr
O laboratório de Elena usa as faixas e portas do exemplo resolvido: sondagens dirigidas a 8.8.8.8 ou à porta 3389 são negadas antes que qualquer pacote saia. Escreva as condições de parada no runbook e ensaie-as, para que os operadores saibam o que fazer quando uma delas disparar.
1.3 Medidas que importam
Conte efeitos: sondagens fora do escopo, achados confirmados com evidências, tempo até a parada após uma violação, verificação da remediação. Evite contagens de vaidade, como "número de ferramentas executadas". Relate taxas com intervalos. Ao comparar métodos, mude um fator por vez e mantenha o ambiente fixo.
"""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 laboratório de estatística mostra por que as contagens importam: 3 sucessos em 20 e 300 em 2.000 dão ambos uma taxa de 15%, mas os intervalos de Wilson são de cerca de 5–36% e de 13,5–16,6%. Só a amostra maior sustenta uma afirmação precisa. A medida primária de Elena é o número de sondagens fora do escopo por hora de engajamento, com um intervalo.
1.4 Disciplina de uso dual
Sua tese vai discutir técnicas que poderiam ser mal utilizadas. Publique métodos e medição, não procedimentos transformados em arma. Prefira alvos sintéticos e topologias de laboratório abertas. Encaminhe qualquer fraqueza real encontrada durante a pesquisa por divulgação coordenada. O OSSTMM de Herzog foi influente, mas Albrecht e Jensen (arXiv:2010.06377) mostram por que uma única "quantidade de segurança" é uma medida de pesquisa pobre — prefira métricas concretas e contextuais. O protocolo de Elena declara que ela publicará predicados, taxas e código de pontuação, não cadeias de exploração, e que qualquer problema real encontrado em sistemas da instituição passará por divulgação coordenada. Suas medidas são concretas — taxas de sondagem e tempo até a parada —, não uma pontuação única de segurança.
1.5 Trilha de evidências
Guarde: a autorização, as ROE, as versões do escopo, as versões das ferramentas, os logs brutos (com dados ocultados), os achados com hashes das evidências e um registro de mudanças. Um auditor deve conseguir responder "o que foi tentado, contra o quê, quando e sob qual permissão?" A trilha de Elena registra também qual versão do escopo estava ativa quando cada sondagem foi registrada, de modo que uma disputa posterior sobre o que estava incluído possa ser resolvida pelo registro, e não pela memória. Fixe as versões das ferramentas ao lado dos logs. Guarde a trilha onde só a equipe do estudo e os orientadores possam lê-la.
1.6 Exemplo resolvido (caso sintético do NHUSTL)
O primeiro plano de integridade de Elena: todos os estudos rodam nas faixas isoladas 10.20.0.0/16 e 192.168.50.0/24 do NHUSTL; as portas se limitam a 22, 80, 443 e 8080; a lista de negação inclui 10.20.0.1. O laboratório de escopo mostra como uma sondagem proposta para 8.8.8.8:80 ou 192.168.50.20:3389 é negada antes que os pacotes saiam. Ela pré-registra duas medidas: a taxa de sondagens fora do escopo e os minutos entre a anotação da violação e a parada. Essas duas medidas se tornam seus desfechos primário e secundário. As decisões de negação no laboratório de escopo são a primeira evidência de que o verificador funciona antes de qualquer engajamento começar. Ambas aparecem em seu plano de integridade antes do primeiro engajamento.
1.7 Erros e limites
Três erros são comuns: autorização verbal; medidas que contam atividade em vez de efeitos; e publicação de receitas de exploração funcionais. Cada erro prejudica a integridade desde o início. A autorização verbal não pode ser verificada depois e não protege ninguém se uma sondagem causar dano. Contar ferramentas executadas ou pacotes enviados nada diz sobre se o escopo foi respeitado. Publicar receitas de exploração funcionais transforma a pesquisa num recurso de ataque. Verifique os três pontos em seu plano de integridade antes de qualquer engajamento começar. O plano de Elena nomeia a autorização por escrito, as medidas de efeito e os limites de uso dual antes de qualquer engajamento começar.
Exercícios
- EX001 — Autorização. Redija os campos de autorização do estudo de Elena. Rubrica: 3 = proprietário, sistemas, datas, ações, dados, contatos; 2 = quatro; 1 = dois; 0 = nenhum.
- EX002 — Laboratório de escopo. Explique duas decisões DENY do laboratório. Rubrica: 3 = ambas com os motivos correspondentes; 2 = uma; 1 = vago; 0 = errado.
- EX003 — Condição de parada. Escreva três condições de parada com escalonamento. Rubrica: 3 = três com quem/como; 2 = duas; 1 = uma; 0 = nenhuma.
- EX004 — Medida. Proponha uma medida primária para comparar ROE em prosa com escopo verificável por máquina. Rubrica: 3 = medida de efeito, plano de intervalo, fatores de confusão; 2 = só a medida; 1 = contagem de vaidade; 0 = nenhuma.
- EX005 — Laboratório de estatística. Por que 300/2000 é mais informativo que 3/20 com a mesma taxa? Rubrica: 3 = largura do intervalo; 2 = parcial; 1 = vago; 0 = errado.
- EX006 — Uso dual. Como você vai publicar sem possibilitar o mau uso? Rubrica: 3 = métodos/medição, sem payloads, alvos sintéticos, caminho de divulgação coordenada; 2 = três; 1 = um; 0 = nenhum.
- EX007 — Evidências. Liste seis artefatos da trilha de evidências. Rubrica: 3 = seis adequados; 2 = quatro; 1 = dois; 0 = nenhum.
Síntese
A integridade de doutorado em segurança ofensiva autorizada significa permissão, escopo verificável, medidas de efeito, contenção quanto ao uso dual e uma trilha auditável — antes de qualquer alegação de contribuição.
Continue estudando — capítulo 01 de 08
← Página do curso · Índice de capítulos do curso · Capítulo 02 (rascunho) →