Capítulo 3 — Prática autorizada e tratamento de evidências
Mapa da aula
Aula 03 publicada. Mapa, exemplo, EX011.
flowchart TD
N0["3.1 Checklist antes do kickoff"]
N1["3.2 Regras de evidências"]
N2["3.3 Cadeia de custódia"]
N3["3.4 Dispositivos pessoais"]
N4["3.5 Sala de aula versus produção"]
N5["3.6 Quando a checklist falha"]
N6["3.7 O acordo vence o hábito"]
N7["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX011"]
Desenho lógico
flowchart LR
N0["3.1 Checklist antes do kickoff"]
N1["3.2 Regras de evidências"]
N2["3.3 Cadeia de custódia"]
N3["3.4 Dispositivos pessoais"]
N4["3.5 Sala de aula versus produção"]
N5["3.6 Quando a checklist falha"]
N6["3.7 O acordo vence o hábito"]
N7["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX011"]
[3.1 Checklist antes do kickoff]
|
v
[3.2 Regras de evidências]
|
v
[3.3 Cadeia de custódia]
|
v
[3.4 Dispositivos pessoais]
|
v
[3.5 Sala de aula versus produção]
|
v
[3.6 Quando a checklist falha]
|
v
[3.7 O acordo vence o hábito]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX011]
Objetivos de aprendizagem
Você vai (1) preencher uma checklist de regras de engajamento; (2) explicar a retenção e a anonimização de evidências; (3) recusar trabalho que não tenha contato de emergência; (4) descrever a cadeia de custódia dos dados de teste.
3.1 Checklist antes do kickoff
Todo campo obrigatório das regras de engajamento precisa estar preenchido: escopo, exclusões, métodos, janela, contato de emergência, tratamento de dados e público do relatório. Um contato de emergência vazio interrompe o teste.
"""Lab 3: validate a synthetic rules-of-engagement checklist before testing starts."""
required = ["in_scope", "out_of_scope", "allowed_methods", "window", "emergency_contact",
"data_handling", "report_audience"]
draft = {"in_scope": "192.0.2.0/24 web and VPN", "out_of_scope": "core banking AS/400",
"allowed_methods": "config review, authenticated web tests", "window": "Sat 08:00-12:00",
"emergency_contact": "", "data_handling": "delete within 30 days", "report_audience": "CISO"}
missing = [k for k in required if not draft.get(k)]
print("complete" if not missing else "MISSING: " + ", ".join(missing))
for k in required:
print(f" {k}: {draft.get(k) or '(empty)'}")
Execute com python3 lab_roe.py. Saída verificada:
MISSING: emergency_contact
in_scope: 192.0.2.0/24 web and VPN
out_of_scope: core banking AS/400
allowed_methods: config review, authenticated web tests
window: Sat 08:00-12:00
emergency_contact: (empty)
data_handling: delete within 30 days
report_audience: CISO
O laboratório imprime MISSING quando emergency_contact está vazio e lista os demais campos, para que Leo veja o que já está preenchido. No rascunho do exemplo, todos os campos estão preenchidos, exceto emergency_contact, e é por isso que o laboratório imprime uma única linha MISSING. Ele não vai agendar a janela de sábado, das 08:00 às 12:00, até que o CISO nomeie um contato de plantão. Um campo vazio é uma parada, não um convite para improvisar.
3.2 Regras de evidências
Capture apenas o que comprova a constatação. Anonimize os identificadores dos associados. Guarde as evidências no repositório aprovado, com acesso limitado à equipe do engajamento. Apague ou devolva as evidências quando o acordo determinar. Na HCU, isso significa capturas de tela sem nomes de associados nem números de conta, guardadas sob o ticket do engajamento no cofre, e não em chat pessoal; a evidência de que falta um atributo no cookie não precisa do token de sessão de um associado real. O acesso à pasta do ENG-440 é limitado à equipe nomeada no acordo. Quando o acordo diz para apagar em até 30 dias, Leo agenda a exclusão e a confirma, e o registro no cofre mostra a data de exclusão ao lado da pasta, para que um revisor confira que a regra foi cumprida.
3.3 Cadeia de custódia
Anote quem coletou cada item, quando e cada transferência. Nos laboratórios de aula, o registro é curto; em exames reais, ele pode ser examinado a fundo. A linha de custódia de Leo no ENG-440 anota quem exportou cada arquivo, de qual jump host e quando ele entrou no cofre. Um registro de custódia de duas linhas basta para o engajamento de aula ENG-CLASS-11, mas ele registra exatamente os campos que Leo vai usar no ENG-440, para que a prática se transfira. Se uma evidência muda de mãos na troca de turno, a linha de transferência nomeia as duas pessoas e o identificador do ticket; a falta de custódia é a forma como arquivos se perdem antes de um exame.
3.4 Dispositivos pessoais
Não guarde evidências da HCU em notebooks pessoais nem em aplicativos de chat. Use o ambiente fornecido. A HCU fornece um ambiente de jump restrito para os testes. Uma evidência que sai dele — copiada para um celular, colada no WhatsApp ou salva em um drive pessoal — viola o acordo e pode expor dados de associados. Leo trata o ambiente fornecido como o único lugar onde as evidências podem ficar. Se precisar trabalhar remotamente, ele usa a VPN para entrar nesse ambiente, nunca uma pasta sincronizada que copia arquivos para uma máquina de casa. Se uma cópia chegar a sair, Leo informa o CISO no mesmo dia, em vez de apagá-la discretamente.
3.5 Sala de aula versus produção
Estes laboratórios validam checklists em rascunhos sintéticos; eles não substituem a revisão jurídica de ROE reais. Passar no lab_roe com um rascunho sintético prova que Leo consegue identificar um contato de emergência ausente; não significa que ROE reais estejam prontas. ROE reais também precisam da assinatura do CISO, da verificação do contrato pelo jurídico e da aprovação de firewall pela equipe de rede, e nada disso o laboratório simula. Leo declara esse limite entre sala de aula e produção em todo relatório de laboratório, para que ninguém trate uma aprovação em aula como autorização de produção.
3.6 Quando a checklist falha
Se algum campo obrigatório das ROE estiver vazio na manhã do teste, Leo cancela a janela por escrito e informa o CISO e o SOC. Recomeçar depois de uma correria para preencher campos gera erros; um adiamento limpo custa menos do que uma hora não autorizada. Ele publica o cancelamento no canal do engajamento, com o campo ausente nomeado, e o CISO e o líder do SOC recebem o mesmo cancelamento por escrito, para que ninguém mantenha um plano de sábado desatualizado na agenda nem espere tráfego. Uma nova janela só é marcada depois que a checklist imprime complete em ROE completas; o cancelamento por escrito o protege se alguém afirmar mais tarde que os testes ocorreram sem elas.
3.7 O acordo vence o hábito
Mesmo que Leo tenha testado o mesmo site de homologação no trimestre passado, ele não reutiliza as ROE do trimestre passado. Sistemas, responsáveis e exclusões mudam. Cada engajamento começa com um acordo assinado e atual, e a checklist é executada contra esse acordo, não contra a memória. As exclusões do trimestre passado podem ter omitido um novo host de homologação que agora é adjacente à produção; executar a checklist contra o acordo assinado atual detecta isso, e o novo host também precisaria de um responsável nomeado na lista de partes interessadas antes que Leo pudesse incluí-lo no escopo. Ele data cada execução da checklist e guarda a saída com as novas ROE no cofre, para que a verificação possa ser mostrada depois. Hábito não é autorização.
Exemplo resolvido (HCU sintética)
Leo executa a checklist no rascunho das ROE. Ela imprime MISSING: emergency_contact. Ele não vai agendar a janela de sábado até que o CISO nomeie um contato de plantão e o campo seja preenchido.
Caso sintético — Harborline Credit Union (HCU). A cooperativa de crédito, Leo Okonkwo e todos os números foram inventados para fins didáticos.
Erros e limites
Políticas e leis locais variam; siga a autorização da HCU e a sua jurisdição. Este livro nunca autoriza testes em sistemas reais.
Exercícios
- EX011 — Campo ausente. O que o laboratório imprime como linha de status, e o que Leo precisa fazer? Rubrica: 3 = MISSING: emergency_contact; não começar até preencher; 2 = só "ausente"; 1 = começar mesmo assim; 0 = nada.
- EX012 — Contato preenchido. Se
emergency_contactpassar a ser "SOC on-call +1-555-0100", qual é a linha de status? Rubrica: 3 = complete; 2 = ok; 1 = continua ausente; 0 = nada. - EX013 — Anonimização. Uma captura de tela mostra o número completo da conta de um associado. O que fazer antes de arquivá-la? Rubrica: 3 = anonimizar/mascarar; manter só os dígitos necessários para provar o problema; 2 = parcial; 1 = arquivar como está; 0 = nada.
- EX014 — Chat pessoal. Leo pode colar evidências em um chat privado de WhatsApp com um colega? Rubrica: 3 = não; usar apenas o repositório aprovado; 2 = não; 1 = sim, se for privado; 0 = nada.
- EX015 — Nota de custódia. Escreva uma entrada de custódia de uma linha para uma exportação de configuração. Rubrica: 3 = quem, o quê, quando, de onde; 2 = dois campos; 1 = vago; 0 = nada.
Síntese
Sem contato de emergência, não há teste; as evidências são minimizadas, retidas conforme o acordo e nunca deixadas em dispositivos pessoais.
Continue estudando — capítulo 03 de 12
← Capítulo 02 (rascunho) · Índice de capítulos do curso · Capítulo 04 (rascunho) →