Capítulo 5 — Comunicação de engenharia
Mapa da aula
Aula 05 publicada. Mapa, exemplo, EX013.
flowchart TD
N0["5.1 Quem lê decide"]
N1["5.2 Escreva a alegação na força certa"]
N2["5.3 Estrutura do relatório"]
N3["Síntese"]
N0 --> N1 --> N2 --> N3
N3 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX013"]
Desenho lógico
flowchart LR
N0["5.1 Quem lê decide"]
N1["5.2 Escreva a alegação na força certa"]
N2["5.3 Estrutura do relatório"]
N3["Síntese"]
N0 --> N1 --> N2 --> N3 --> Q["EX013"]
[5.1 Quem lê decide]
|
v
[5.2 Escreva a alegação na força certa]
|
v
[5.3 Estrutura do relatório]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX013]
Objetivos de aprendizagem
Você vai (1) escrever um achado com o qual um não especialista consiga agir, sem detalhes de exploração; (2) estruturar um relatório curto de engenharia; (3) declarar a incerteza com clareza.
5.1 Quem lê decide
Um relatório de red team é lido por um engenheiro que precisa corrigir algo e por um gestor que precisa financiar a correção. Nenhum dos dois precisa de uma receita. Um achado precisa de: um título que declare a fraqueza e o ativo; o escopo afetado; a evidência (o que foi observado, com horário e referência de ticket); o impacto em termos de negócio; a correção recomendada; e como a correção será verificada. O NIST SP 800-115 trata o relatório como parte da avaliação, não como um detalhe posterior.
Colocar a correção e sua verificação ao lado da evidência significa que o engenheiro que precisa agir tem tudo numa única página. O impacto de negócio responde à pergunta de financiamento do gestor sem jargão técnico: trens atrasados, dados de passageiros expostos ou um risco de falsificação de bilhetes pesam de maneiras diferentes. Deixar de fora uma receita funcional não é imprecisão; é uma escolha deliberada para que o relatório possa ser repassado dentro do cliente sem virar um manual. O lugar que o NIST SP 800-115 dá ao relatório lembra às equipes que um achado não relatado não ajuda ninguém.
5.2 Escreva a alegação na força certa
"Comprometemos o domínio" é uma manchete. "Dentro da janela autorizada, uma conta de serviço no diretório do laboratório tinha direitos de administrador de domínio; confirmamos a participação no grupo apenas com leitura e não a usamos" é um achado. A segunda frase diz o que foi feito, o que não foi feito e em qual escopo, e o leitor pode verificá-la. A alegação mais fraca e cuidadosa é mais forte como engenharia, porque outra equipe pode conferi-la de novo. Declarar o que não foi feito fecha a brecha em que o leitor imagina um cenário pior do que o ocorrido. Nomear o escopo, como o diretório do laboratório e não a produção, impede que um achado seja aplicado ao sistema errado. Sam lê cada rascunho em voz alta e pergunta se cada substantivo aponta para algo no repositório de evidências.
5.3 Estrutura do relatório
Um relatório curto de engenharia tem: um sumário executivo (três frases: o que foi testado, o resultado mais importante e a única decisão necessária); escopo e método, com a versão da ROE; achados ordenados por prioridade; limitações (o que ficou fora do escopo ou não foi alcançado); e um apêndice com os hashes das evidências. Use tabelas para os achados e prosa para o raciocínio.
"""Score synthetic findings for report priority (no exploit details)."""
# impact 0-3, exploitability 0-3, exposure 0-3 -> priority
findings = [
("SYN-001", "default admin password on staging web UI", 3, 3, 2),
("SYN-002", "missing security headers on public site", 1, 1, 3),
("SYN-003", "outdated TLS on internal admin port", 2, 2, 1),
("SYN-004", "verbose error messages disclose paths", 1, 2, 2),
("SYN-005", "service account with domain admin in lab AD", 3, 2, 1),
]
def priority(impact, exploitability, exposure):
score = impact*4 + exploitability*2 + exposure
if score >= 16: return "critical", score
if score >= 11: return "high", score
if score >= 7: return "medium", score
return "low", score
for fid, title, i, e, x in findings:
p, s = priority(i, e, x)
print(f"{fid} priority={p:8} score={s:2} impact={i} exploitability={e} exposure={x} :: {title}")
Saída esperada:
SYN-001 priority=critical score=20 impact=3 exploitability=3 exposure=2 :: default admin password on staging web UI
SYN-002 priority=medium score= 9 impact=1 exploitability=1 exposure=3 :: missing security headers on public site
SYN-003 priority=high score=13 impact=2 exploitability=2 exposure=1 :: outdated TLS on internal admin port
SYN-004 priority=medium score=10 impact=1 exploitability=2 exposure=2 :: verbose error messages disclose paths
SYN-005 priority=critical score=17 impact=3 exploitability=2 exposure=1 :: service account with domain admin in lab AD
Caso sintético — Riverstone Transit. O primeiro rascunho de Sam para o SYN-001 dizia "a UI de staging está totalmente dominada". O achado revisado diz: "A UI de administração de staging (10.20.1.10:443) aceita a senha padrão do fornecedor; observado às 10:45, ticket FD-118; um atacante na rede corporativa poderia alterar as tabelas de tarifas em staging; correção: trocar e exigir credenciais únicas; verificar por uma falha de login num reteste."
5.4 Erros e limites
Evite adjetivos que não possam ser verificados ("trivial", "catastrófico"). Não inclua payloads funcionais, credenciais ou instruções passo a passo nos relatórios; faça referência ao repositório de evidências. Adjetivos não verificáveis convidam à discussão e escondem a evidência real. Payloads funcionais e credenciais pertencem a um repositório controlado com logs de acesso, não a um PDF que vai circular por e-mail. Quando um leitor precisa de mais detalhes para verificar uma correção, Sam o direciona para o ticket e o hash da evidência, em vez de colar segredos no corpo do relatório.
Exercícios
- EX013 — Reescrita. Reescreva "A VPN está escancarada kkk" como título de achado e uma linha de evidência de uma frase. Rubrica: 3 = ativo, fraqueza, horário/referência da observação, sem detalhes de exploração; 2 = falta um elemento; 1 = ainda vago; 0 = inalterado.
- EX014 — Sumário executivo. Escreva um sumário de três frases para os cinco achados do laboratório. Rubrica: 3 = escopo, os dois itens críticos, uma decisão solicitada; 2 = falta a decisão; 1 = só uma lista; 0 = nada.
- EX015 — Limitações. Cite duas limitações que um relatório deste engajamento precisa declarar. Rubrica: 3 = dois limites específicos (por exemplo, hosts não alcançados, janela de tempo, sem engenharia social) com efeito nas conclusões; 2 = dois sem efeito; 1 = um; 0 = nenhum.
Síntese
Um bom achado é específico, verificável e seguro para circular. Escrevê-lo assim faz parte da engenharia, não é decoração.
Continue estudando — capítulo 05 de 50
← Capítulo 04 (rascunho) · Índice de capítulos do curso · Capítulo 06 (rascunho) →