Capítulo 37 — Segurança ofensiva autorizada e red team: operações
Mapa da aula
Aula 37 publicada. Mapa, exemplo, EX109.
flowchart TD
N0["37.1 Conteúdo do runbook"]
N1["37.2 Passagem de turno"]
N2["37.3 Encerramento"]
N3["37.2b Higiene do plantão"]
N4["37.3b Integração com o calendário"]
N5["37.1b Itens de reserva"]
N6["Nota de prática"]
N7["37.4b Medir o runbook"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX109"]
Desenho lógico
flowchart LR
N0["37.1 Conteúdo do runbook"]
N1["37.2 Passagem de turno"]
N2["37.3 Encerramento"]
N3["37.2b Higiene do plantão"]
N4["37.3b Integração com o calendário"]
N5["37.1b Itens de reserva"]
N6["Nota de prática"]
N7["37.4b Medir o runbook"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX109"]
[37.1 Conteúdo do runbook]
|
v
[37.2 Passagem de turno]
|
v
[37.3 Encerramento]
|
v
[37.2b Higiene do plantão]
|
v
[37.3b Integração com o calendário]
|
v
[37.1b Itens de reserva]
|
v
[Nota de prática]
|
v
[37.4b Medir o runbook]
|
v
[Exemplo resolvido] --> [Exercício EX109]
Objetivos de aprendizagem
Você vai (1) escrever um runbook de engajamento; (2) fazer a passagem de turno; (3) gerenciar a rotação de segredos no encerramento.
37.1 Conteúdo do runbook
Contatos, ponteiro para a ROE, versões das ferramentas, condições de parada, árvore de escalonamento, caminhos das evidências. Mantenha-o curto o bastante para usar sob estresse. Sob estresse, as pessoas abrem uma página curta ou nenhuma. Contatos, ponteiro para a ROE, versões das ferramentas, paradas, escalonamento e caminhos das evidências são o mínimo que ainda funciona quando o SSO está lento. Sam imprime essa página para o fichário do jump host e a compara com o wiki sempre que um dos dois muda. A página do fichário traz o hash da revisão do wiki, para que uma impressão desatualizada fique óbvia no kickoff.
37.2 Passagem de turno
Registro do turno: achados abertos, últimos ids de eventos, aprovações pendentes, estado do interruptor de emergência. Passagem verbal mais o registro. A passagem verbal sem o registro perde ids de eventos e o estado do interruptor de emergência na troca de turno. A linha de aprovações pendentes do registro é o que impede um engenheiro cansado de ampliar um escopo que já foi recusado. Sam exige o resumo falado e o registro colado antes que o líder que sai deixe o canal. Um turno que uma vez pulou o registro colado deixou uma aprovação de ampliação pendente invisível até que o cliente perguntasse por que os testes tinham parado.
37.3 Encerramento
Desative contas, faça a rotação de segredos, sele as evidências, exporte as métricas, agende a retrospectiva. Uma lista de verificação vence a memória.
"""Age synthetic findings against remediation SLAs by priority."""
SLA = {"critical": 7, "high": 30, "medium": 90, "low": 180}
findings = [
("SYN-001", "critical", 3, False),
("SYN-005", "critical", 12, False),
("SYN-003", "high", 25, False),
("SYN-004", "medium", 95, False),
("SYN-002", "medium", 40, True),
("SYN-006", "low", 200, False),
]
breaches = 0
for fid, pr, age, closed in findings:
status = "closed" if closed else ("BREACH" if age > SLA[pr] else "open")
breaches += status == "BREACH"
print(f"{fid} priority={pr:8} age_days={age:3} sla={SLA[pr]:3} status={status}")
open_n = sum(1 for f in findings if not f[3])
print(f"open={open_n} sla_breaches={breaches}")
Saída esperada:
SYN-001 priority=critical age_days= 3 sla= 7 status=open
SYN-005 priority=critical age_days= 12 sla= 7 status=BREACH
SYN-003 priority=high age_days= 25 sla= 30 status=open
SYN-004 priority=medium age_days= 95 sla= 90 status=BREACH
SYN-002 priority=medium age_days= 40 sla= 90 status=closed
SYN-006 priority=low age_days=200 sla=180 status=BREACH
open=5 sla_breaches=3
Caso sintético — Riverstone Transit. O encerramento pegou o SYN-005 ainda em BREACH depois do SLA — escalonado antes da retrospectiva.
A memória deixa passar contas abertas e segredos sem rotação. A lista de verificação que pegou o SYN-005 ainda em BREACH depois do SLA é o argumento para nunca pular o encerramento para "chegar à retrospectiva". Sam não marca o engajamento como selado até que cada caixa tenha um horário UTC e um responsável. O escalonamento do SYN-005 antes da retrospectiva fica arquivado sob o id da lista de verificação de encerramento, não sob uma conversa de corredor.
37.4 Erros e limites
Runbooks em wikis que ninguém consegue acessar a partir do jump host falham; mantenha uma cópia offline. Um wiki que o jump host não alcança é um runbook que não existe durante uma parada. A cópia offline no kit de operações é exercitada no exercício de mesa quando o SSO é simulado como fora do ar. O encerramento de Sam inclui verificar se a página do fichário bate com a revisão do wiki com hash. Uma divergência reprova o kickoff da mesma forma que um SHA errado do TrackScope. Sam uma vez encontrou uma página do fichário duas revisões atrás, depois de uma edição do wiki num fim de semana; o kickoff parou até que a impressão fosse substituída.
37.2b Higiene do plantão
O plantão das ferramentas de avaliação não é licença para ampliar o escopo. Os alertas tratam da segurança das ferramentas e da imposição da ROE; incidentes nos ativos do cliente seguem o caminho de resposta a incidentes do cliente. Mantenha os escalonamentos separados no runbook, para que engenheiros cansados não os misturem. Misturar alertas das ferramentas com alertas de resposta a incidentes do cliente é como uma dúvida de escopo vira uma ponte de incidente não planejada. O plantão de avaliação corrige o TrackScope e a imposição da ROE; incidentes em ativos vão para o caminho próprio da Riverstone. O runbook de Sam põe as duas árvores em páginas separadas, com números de telefone diferentes.
37.3b Integração com o calendário
As janelas de engajamento ficam num calendário compartilhado, com a versão da ROE na descrição. A sobreposição acidental de dois métodos barulhentos no mesmo CIDR é uma falha de operações, não uma paralelização esperta. Dois métodos barulhentos num mesmo CIDR sem uma entrada no calendário parecem espertos até que o enlace da garagem sature. O calendário compartilhado traz a versão da ROE na descrição, para que a revisão de sobreposição seja mecânica. O agendador de Sam se recusa a iniciar um método barulhento que não tenha um bloco no calendário para a sua janela. A revisão de sobreposição roda automaticamente quando dois blocos compartilham um CIDR e um deles está marcado como barulhento.
37.1b Itens de reserva
Os kits de operações incluem imagens reserva do jump host, cartões de contato impressos e cópias offline da ROE. Quando o SSO morre, o engajamento ainda precisa de um caminho de parada que não dependa do provedor de identidade. Sam confere o kit na manhã da janela, não depois do primeiro login que falhou. A lista de verificação do kit também é um item de encerramento, para que as imagens emprestadas sejam restauradas antes do próximo cliente. Os cartões de contato impressos listam o contato de parada do cliente e o líder do engajamento, com telefones que não dependem do diretório corporativo. As cópias offline da ROE trazem o mesmo número de versão do PDF assinado, para que ninguém trabalhe com um escopo antigo. As imagens reserva são reconstruídas a partir da imagem de referência no início de cada período.
Nota de prática
As métricas de operações incluem alertas por janela, tempo médio para confirmar paradas e conclusão da lista de verificação de encerramento. Métricas de vaidade, como hosts tocados, ficam fora do painel de operações. O que você mede toda semana é o que engenheiros cansados vão otimizar quando o cliente estiver olhando.
Guarde o hash do resultado da lista de verificação de encerramento no FindingsDesk, para que encerramentos incompletos não possam ser marcados como concluídos em silêncio.
A passagem de turno inclui ler em voz alta para o líder que entra as últimas dez negações do TrackScope.
37.4b Medir o runbook
Depois de cada engajamento, o líder anota quais passos do runbook foram pulados, ficaram confusos ou estavam desatualizados. Sam soma essas anotações ao longo de um trimestre; os passos pulados com mais frequência são reescritos ou removidos, e o histórico de revisões do runbook mostra cada mudança com o seu motivo. Os passos pulados com mais frequência estão errados ou são difíceis demais sob estresse. A última reescrita de Sam removeu um passo que pedia uma captura de tela de uma página que o jump host não conseguia abrir, e que tinha sido pulado em quatro engajamentos seguidos.
Exercícios
- EX109 — Lista de verificação. Liste seis passos de encerramento. Rubrica: 3 = seis sensatos; 2 = quatro; 1 = dois; 0 = nada.
- EX110 — Passagem de turno. Que três campos o registro do turno precisa incluir? Rubrica: 3 = achados/eventos/aprovações (ou equivalentes); 2 = dois; 1 = um; 0 = nada.
- EX111 — Laboratório de SLA. Quantas violações de SLA há no laboratório? Rubrica: 3 = 3; 2 = lista sem contagem; 1 = errado; 0 = nada.
Síntese
Opere com runbooks, passagens de turno e um encerramento implacável.
Continue estudando — capítulo 37 de 50
← Capítulo 36 (rascunho) · Índice de capítulos do curso · Capítulo 38 (rascunho) →