◇ OpenCyber Academy
Mestrado · Capítulo 3 · Português

Capítulo 3 — Desenho do estudo, ética e reprodutibilidade

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 3 — Desenho do estudo, ética e reprodutibilidade

Mapa da aula

Aula 03 publicada. Mapa, exemplo, EX015.

flowchart TD
  N0["3.1 Desenho da simulação"]
  N1["3.2 O modelo de alcançabilidade"]
  N2["Laboratório — Alcançabilidade sob três políticas"]
  N3["3.3 Ética com uma parceira real"]
  N4["3.4 Plano de reprodutibilidade"]
  N5["3.5 Pré-especificação da análise"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
  N6 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX015"]

Desenho lógico

flowchart LR
  N0["3.1 Desenho da simulação"]
  N1["3.2 O modelo de alcançabilidade"]
  N2["Laboratório — Alcançabilidade sob três políticas"]
  N3["3.3 Ética com uma parceira real"]
  N4["3.4 Plano de reprodutibilidade"]
  N5["3.5 Pré-especificação da análise"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX015"]
[3.1 Desenho da simulação]
    |
    v
[3.2 O modelo de alcançabilidade]
    |
    v
[Laboratório — Alcançabilidade sob três políticas]
    |
    v
[3.3 Ética com uma parceira real]
    |
    v
[3.4 Plano de reprodutibilidade]
    |
    v
[3.5 Pré-especificação da análise]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX015]

Objetivos de aprendizagem

Você vai (1) desenhar um estudo de simulação com comparações controladas; (2) construir um modelo de alcançabilidade sobre redes sintéticas; (3) tratar a ética quando uma organização real molda o modelo; (4) planejar a reprodutibilidade desde o início.

3.1 Desenho da simulação

Kenji desenha seu estudo como uma simulação controlada. Ele gera muitas redes sintéticas cuja estrutura se parece com a da Vantor: departamentos de estações de trabalho, servidores compartilhados, alguns jump hosts administrativos e um controlador de domínio. A cada rede ele aplica três políticas: plana, por zonas com zonas departamentais e microssegmentação baseada em identidade. O desfecho é o número de servidores alcançáveis a partir de uma estação comprometida escolhida ao acaso. Gerar muitas redes em vez de uma protege contra conclusões que dependam de um único layout arbitrário, e comparar as três políticas na mesma rede elimina a variação que nada tem a ver com a política.

3.2 O modelo de alcançabilidade

Uma rede é modelada como um grafo direcionado: uma aresta do host A para o host B significa que a política permite que A se conecte a B. Um atacante numa estação consegue alcançar qualquer coisa ligada por um caminho, supondo que cada salto seja explorável. Essa premissa é deliberadamente pessimista e dá um limite superior para o alcance. O laboratório abaixo constrói uma pequena rede sintética sob as três políticas e conta os servidores alcançáveis com uma busca em largura. Os resultados mostram o padrão que Kenji espera: o acesso plano alcança todos os servidores, as zonas alcançam menos, as regras baseadas em identidade menos ainda, mas os jump hosts reabrem caminhos se suas regras forem amplas.

Laboratório — Alcançabilidade sob três políticas

# Count servers reachable from one compromised workstation under three synthetic policies (BFS).
from collections import deque
ws = ["ws-fin1", "ws-fin2", "ws-ops1", "ws-ops2"]
srv = {"erp": "fin", "payroll": "fin", "wms": "ops", "fleet": "ops", "files": "all", "dc": "all"}
dept = lambda h: h[3:6]
def edges(policy, broad_jump=False):
    E = {h: set() for h in ws + list(srv) + ["jump"]}
    for w in ws:
        for s, d in srv.items():
            if policy == "flat" or (policy == "zone" and d in (dept(w), "all")) \
               or (policy == "identity" and s == {"fin": "erp", "ops": "wms"}[dept(w)]):
                E[w].add(s)
        if policy == "identity": E[w].add("jump")
    if broad_jump: E["jump"] |= set(srv)
    return E
def reach(E, start):
    seen, q = {start}, deque([start])
    while q:
        for n in E[q.popleft()]:
            if n not in seen: seen.add(n); q.append(n)
    return len([n for n in seen if n in srv])
for p in ["flat", "zone", "identity"]:
    print(f"{p:9} servers reachable from ws-fin1: {reach(edges(p), 'ws-fin1')}")
print(f"identity + broad jump-host rule: {reach(edges('identity', True), 'ws-fin1')}")

Execute com python3 lab_reach.py. Saída verificada:

flat      servers reachable from ws-fin1: 6
zone      servers reachable from ws-fin1: 4
identity  servers reachable from ws-fin1: 1
identity + broad jump-host rule: 6

3.3 Ética com uma parceira real

Embora as redes sejam sintéticas, elas são moldadas pela estrutura real da Vantor, que é uma informação sensível. Kenji obtém a permissão por escrito do empregador, combina que nenhum nome de host, endereço ou regra real aparecerá na dissertação e abstrai a estrutura em parâmetros como o número de departamentos e a proporção de servidores. Seu pedido ao comitê de ética declara que não há participantes humanos e que nenhum teste toca os sistemas da Vantor. Ele também considera o uso dual: um mapa detalhado de onde a Vantor é mais fraca ajudaria atacantes, então a dissertação relata apenas padrões agregados entre as redes geradas.

3.4 Plano de reprodutibilidade

Desde o primeiro dia, Kenji mantém o código em controle de versão, fixa as sementes aleatórias de cada experimento e registra os parâmetros de cada execução num arquivo de configuração guardado junto com os resultados. Ele escreve um script curto que roda de novo todos os experimentos do zero e confere se os números resumidos batem com os guardados. Registra as versões do software. A Dra. Aydın pede que ele tente rodar o pipeline inteiro numa máquina limpa na metade do projeto, o que revela uma dependência faltando. Planejar a reprodutibilidade cedo é muito mais barato do que reconstruí-la antes da entrega, quando a memória das decisões passadas já se apagou.

3.5 Pré-especificação da análise

Antes de rodar os experimentos principais, Kenji escreve seu plano de análise: a comparação principal é o alcance médio da segmentação por identidade contra o da segmentação por zonas, com um intervalo de confiança por bootstrap; as medidas secundárias são o número de regras e o efeito da amplitude das regras dos jump hosts. Ele faz commit do plano no repositório com carimbo de tempo. Análises exploratórias são permitidas depois, mas precisam ser rotuladas. Essa disciplina importa mesmo em simulação, porque com muitos parâmetros é fácil procurar até que alguma configuração mostre uma diferença marcante e depois apresentá-la como se tivesse sido o plano desde o começo.

Exemplo resolvido

Kenji desenha uma simulação de três políticas sobre redes geradas, roda o laboratório de alcançabilidade, escreve um plano ético que abstrai a estrutura da Vantor e faz commit de um plano de análise com sementes e configurações.

Caso sintético. Os parâmetros de estrutura da Vantor e a rede do laboratório são sintéticos.

Erros e limites

Supor que todo salto é explorável superestima o alcance; atacantes reais enfrentam patches e detecção. As redes geradas podem não reproduzir topologias reais incomuns.

Exercícios

Síntese

Um estudo de simulação sólido controla as comparações, declara premissas pessimistas, protege as informações dos parceiros e fixa de antemão a sua análise e as suas sementes.

Continue estudando — aula 03 (capítulo 03 de 08)

← Capítulo 02 · Índice das aulas · Capítulo 04 →

Continue para a próxima aula já escrita.