Capítulo 5 — Escopo de segurança e evidências
Mapa da aula
Aula 05 publicada. Mapa, exemplo, EX017.
flowchart TD
N0["5.1 ROE do técnico"]
N1["5.2 Hashes"]
N2["5.3 Minimização"]
N3["5.4 Índice de evidências"]
N4["5.5 Integridade versus verdade"]
N5["5.6 Retenção"]
N6["5.7 Fotografar telas"]
N7["5.8 Regra de evidência por duas pessoas"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX017"]
Desenho lógico
flowchart LR
N0["5.1 ROE do técnico"]
N1["5.2 Hashes"]
N2["5.3 Minimização"]
N3["5.4 Índice de evidências"]
N4["5.5 Integridade versus verdade"]
N5["5.6 Retenção"]
N6["5.7 Fotografar telas"]
N7["5.8 Regra de evidência por duas pessoas"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX017"]
[5.1 ROE do técnico]
|
v
[5.2 Hashes]
|
v
[5.3 Minimização]
|
v
[5.4 Índice de evidências]
|
v
[5.5 Integridade versus verdade]
|
v
[5.6 Retenção]
|
v
[5.7 Fotografar telas]
|
v
[5.8 Regra de evidência por duas pessoas]
|
v
[Exemplo resolvido] --> [Exercício EX017]
Objetivos de aprendizagem
Você vai (1) reformular as verificações das ROE para técnicos; (2) calcular hashes de arquivos de evidência; (3) rejeitar evidências divergentes; (4) minimizar dados pessoais nas capturas.
5.1 ROE do técnico
Antes de qualquer comando, Sam confere o host alvo, o método e a janela contra a folha de ROE apoiada no joelho. As ROE do técnico para o ENG-512 indicam as verificações de web/API de homologação e de VPN, a janela de sábado, o contato de emergência e a rede de tarifas como excluída. Sam não começa se o emergency_contact estiver vazio; a lista de verificação é o mesmo hábito ensinado nos laboratórios do curso profissional. Um emergency_contact vazio cancela o ENG-512 antes de as ferramentas começarem, e Sam publica o cancelamento nomeando o campo ausente, para que o SOC não espere tráfego naquela manhã. A janela só é remarcada depois que o responsável pelas ROE preenche o campo e assina a folha de novo.
5.2 Hashes
Calcular o hash das evidências detecta edições acidentais. Uma divergência significa não anexar o arquivo até que sua origem esteja clara.
"""Lab 5: verify synthetic evidence file hashes before attaching to a finding."""
import hashlib
files = {"shot1.png": b"fake-png-bytes-v1", "shot1-edited.png": b"fake-png-bytes-v2",
"config.txt": b"PermitRootLogin no\n"}
recorded = {k: hashlib.sha256(v).hexdigest() for k, v in files.items() if k != "shot1-edited.png"}
recorded["shot1.png"] = hashlib.sha256(b"fake-png-bytes-v1").hexdigest()
# simulate tampering record for edited shot still labeled shot1
check = {"shot1.png": files["shot1-edited.png"], "config.txt": files["config.txt"]}
for name, data in check.items():
h = hashlib.sha256(data).hexdigest()
print(f"{name:12} {h[:12]} {'MATCH' if h == recorded.get(name) else 'MISMATCH'}")
Execute com python3 lab_hash.py. Saída verificada:
shot1.png b81db4df801a MISMATCH
config.txt 44c91857f34b MATCH
O lab_hash imprime shot1.png b81db4df801a MISMATCH e config.txt 44c91857f34b MATCH. Sam trata o MISMATCH como uma parada para aquele artefato: o shot1.png fica fora do achado até que duas pessoas concordem com uma nova exportação ou com um hash esperado atualizado. O MATCH no config.txt é o padrão que os chamados devem mostrar depois das correções.
5.3 Minimização
Desfoque rostos de passageiros e números de crachá nas capturas de tela; mantenha os pixels que provam o problema. Minimização significa que nomes de passageiros e números de cartão nunca aparecem nas capturas de tela do ENG-512. Uma evidência que prova uma flag de cookie ou uma porta aberta não precisa de um histórico de viagens real, então Sam prova esses problemas apenas com sessões sintéticas e com a moldura recortada da interface, e recorta antes de calcular o hash. Chaves JSON desconhecidas com cara de pagamento são removidas antes que qualquer linha de log saia do jump host para o cofre.
5.4 Índice de evidências
Cada arquivo tem um ID, um hash, um horário, um coletor e o ID do achado relacionado. No ENG-512, as linhas do índice trazem o nome do arquivo, um prefixo SHA-256 de doze caracteres hexadecimais, o ID do chamado do ENG-512 e o responsável. Um artefato que não está no índice não faz parte do ENG-512; links de chats pessoais não contam, e artefatos ausentes do índice são apagados como cópias não verificadas. O índice é o que permite a um revisor ligar cada achado do relatório ao arquivo e ao hash exatos que o sustentam.
5.5 Integridade versus verdade
Um hash que confere prova que o arquivo não mudou desde o cálculo do hash, e não que o achado no sistema continua verdadeiro. Um MATCH numa captura de tela errada ainda reprova na verificação de verdade. Por isso, Sam valida o caminho do achado e seu impacto com o cartão de método antes de dar a evidência por completa e antes de o relatório sair. Integridade e verdade são registradas como duas marcações separadas no pacote do ENG-512, para que o leitor veja que as duas foram verificadas e por quem. Um achado só com a marcação de integridade continua em rascunho.
5.6 Retenção
Siga o calendário de retenção de engajamentos da NMT e apague os caches locais depois de guardar tudo no cofre. A retenção do ENG-512 segue a regra de exclusão em prazo das ROE. Sam agenda a exclusão das evidências do ENG-512 e a confirma; cada registro de exclusão traz a data, o caminho e uma testemunha. PNGs esquecidos no jump host reprovam na verificação de limpeza exigida para o crédito de portfólio. A retenção corta dos dois lados: a evidência é guardada pelo tempo necessário para reteste e contestação, e nem um dia além do que as ROE permitem. A testemunha assina o registro de exclusão, e não apenas Sam.
5.7 Fotografar telas
Quando uma captura de tela é necessária, Sam usa as ferramentas do jump host, nomeia o arquivo com o ID do achado e o horário e calcula o hash antes de editar qualquer coisa; o mascaramento é feito numa cópia. Fotografar telas com o celular é recusado quando o jump host pode capturar um PNG mascarado, porque o celular sai do controle da NMT, enquanto as capturas guardadas no cofre ficam no caminho do engajamento. Fotos de tela feitas com celular são rejeitadas na revisão por pares, e a captura no jump host com mascaramento é o único caminho aceito para capturas de tela.
5.8 Regra de evidência por duas pessoas
Para achados de alto impacto, um segundo técnico confirma o hash e a observação, e a discordância suspende o registro. Por essa regra, um colega acompanha o cálculo dos hashes dos itens de alto impacto. O MISMATCH no shot1.png é revisto pelas duas pessoas antes que alguém atualize o hash esperado, e o colega fica ao teclado durante o novo cálculo. Atualizações de hash do shot1.png feitas por uma pessoa sozinha são recusadas. O nome do colega é escrito ao lado do novo hash no índice de evidências, para que a aprovação possa ser rastreada depois.
5.9 Disciplina de campo
Disputas sobre evidências custam caro. Por isso, Sam calcula o hash logo depois da captura, escreve o hash na linha do registro de atividades e só então mascara uma cópia para o apêndice do relatório. Se o jurídico perguntar mais tarde se uma captura de tela foi alterada, ele pode mostrar o resumo original e o derivado mascarado. O resultado MISMATCH do laboratório é a versão de sala de aula dessa disciplina: bytes editados nunca devem substituir os originais em silêncio, e um MISMATCH é o sinal para chamar uma segunda pessoa, e não para recalcular o hash até que confira. A disciplina de campo para evidências é hash, minimização, índice, retenção e duas pessoas nas divergências; o pacote do ENG-512 de Sam reprova na conferência por pares se faltar qualquer um desses cinco.
Exemplo resolvido (NMT sintética)
Sam calcula os hashes das evidências: config.txt dá MATCH; shot1.png dá MISMATCH porque os bytes foram editados depois do hash registrado. Ele captura a tela de novo e registra um novo hash.
Caso sintético — Northline Municipal Transit (NMT). A operadora de transporte, Sam Park e todos os números foram inventados para fins didáticos.
Erros e limites
Sistemas de transporte reais e equipamentos de tarifa nunca são testados sem uma autorização separada e especializada. Este livro usa apenas dados sintéticos e não concede autorização para testar sistemas reais.
Exercícios
- EX017 — Ação diante da divergência. O que Sam faz com o MISMATCH do shot1.png? Rubrica: 3 = não anexar; capturar de novo; novo hash; 2 = parcial; 1 = anexar mesmo assim; 0 = nada.
- EX018 — Significado do MATCH. O que o MATCH prova sobre o config.txt? Rubrica: 3 = inalterado desde o registro do hash; 2 = parcial; 1 = o sistema está seguro; 0 = nada.
- EX019 — Minimização. Dê um exemplo de minimização na NMT. Rubrica: 3 = desfocar rostos/crachás/números de cartão; 2 = parcial; 1 = guardar tudo; 0 = nada.
- EX020 — Folha do joelho. Quais três fatos estão na folha de ROE que Sam apoia no joelho? Rubrica: 3 = host, método, janela (mais o contato de emergência); 2 = dois; 1 = um; 0 = nada.
Síntese
Escopo na folha do joelho; evidências com hash, minimizadas e indexadas.
Continue estudando — capítulo 05 de 18
← Capítulo 04 (rascunho) · Índice de capítulos do curso · Capítulo 06 (rascunho) →