Capítulo 6 — Estruturas discretas
Mapa da aula
Aula 06 publicada. Mapa, exemplo, EX016.
flowchart TD
N0["6.1 Grafos de acesso"]
N1["6.2 Caminhos de ataque mais curtos"]
N2["Laboratório — Caminhos de ataque por busca em largur"]
N3["6.3 Priorizar com grafos"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX016"]
Desenho lógico
flowchart LR
N0["6.1 Grafos de acesso"]
N1["6.2 Caminhos de ataque mais curtos"]
N2["Laboratório — Caminhos de ataque por busca em largur"]
N3["6.3 Priorizar com grafos"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX016"]
[6.1 Grafos de acesso]
|
v
[6.2 Caminhos de ataque mais curtos]
|
v
[Laboratório — Caminhos de ataque por busca em largur]
|
v
[6.3 Priorizar com grafos]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX016]
Objetivos de aprendizagem
Você vai (1) modelar sistemas e acessos como grafos; (2) encontrar caminhos de ataque com busca em grafos; (3) usar medidas de grafos para priorizar controles.
6.1 Grafos de acesso
O Dr. Bellini mostra como os grafos modelam a segurança. Os nós podem ser usuários, máquinas e repositórios de dados; as arestas podem ser logins, conexões de rede ou permissões. Um atacante que controla um nó pode seguir as arestas até outros. Lucas constrói um pequeno grafo sintético da Fernway: um notebook de funcionário vítima de phishing, um servidor de arquivos compartilhado, o sistema de gestão do armazém, uma estação de trabalho de administração e o banco de dados da loja. As arestas representam permissões e alcançabilidade de rede. Desenhar o grafo torna visíveis caminhos difíceis de ver em listas de regras espalhadas por sistemas e equipes diferentes.
6.2 Caminhos de ataque mais curtos
Usando busca em largura, Lucas encontra o caminho mais curto do notebook vítima de phishing até o banco de dados da loja. O laboratório abaixo mostra um caminho de três saltos: do notebook ao servidor de arquivos, do servidor de arquivos à estação de administração por meio de uma credencial de administrador salva, e da estação de administração ao banco de dados. Os caminhos mais curtos importam porque os atacantes preferem rotas fáceis. Remover a credencial salva corta esse caminho; a busca então encontra um caminho mais longo pelo sistema do armazém. Cada mudança pode ser verificada rodando a busca de novo, o que oferece uma maneira precisa de avaliar se um controle realmente bloqueia a rota que pretende bloquear.
Laboratório — Caminhos de ataque por busca em largura
# BFS attack paths on a synthetic Fernway graph.
from collections import deque
def bfs(E, s, t):
prev, q = {s: None}, deque([s])
while q:
u = q.popleft()
if u == t:
p = [];
while u: p.append(u); u = prev[u]
return p[::-1]
for v in E.get(u, []):
if v not in prev: prev[v] = u; q.append(v)
E = {"staff-laptop": ["file-server", "warehouse-wms"], "file-server": ["admin-ws"],
"warehouse-wms": ["integration-svc"], "integration-svc": ["stock-api"], "stock-api": ["shop-db"], "admin-ws": ["shop-db"]}
p = bfs(E, "staff-laptop", "shop-db"); print(f"{len(p)-1} hops:", " -> ".join(p))
E["file-server"] = [] # saved admin credential removed
p = bfs(E, "staff-laptop", "shop-db"); print(f"{len(p)-1} hops:", " -> ".join(p))
Execute com python3 lab_paths.py. Saída verificada:
3 hops: staff-laptop -> file-server -> admin-ws -> shop-db
4 hops: staff-laptop -> warehouse-wms -> integration-svc -> stock-api -> shop-db
6.3 Priorizar com grafos
Alguns nós aparecem em muitos caminhos; protegê-los traz mais benefício. Lucas conta quantos caminhos mais curtos dos notebooks da equipe até os dados sensíveis passam por cada nó. A estação de administração e o servidor de arquivos se destacam. Ele recomenda fazer primeiro o hardening da estação de administração e remover as credenciais armazenadas do servidor de arquivos. O raciocínio com grafos dá uma base objetiva para as prioridades, mas Lucas observa que o grafo só é tão bom quanto suas arestas: conexões desconhecidas, como ferramentas de acesso remoto esquecidas, mudariam a resposta, e é por isso que os inventários importam.
Exemplo resolvido
Lucas modela a Fernway como um grafo, encontra um caminho de três saltos até o banco de dados da loja, mostra que a remoção de uma credencial salva alonga o caminho e prioriza dois nós que são pontos de estrangulamento.
Caso sintético. O grafo e as credenciais são sintéticos.
Erros e limites
Os grafos omitem arestas que ninguém conhece. O comprimento do caminho é um indicador grosseiro do esforço do atacante.
Exercícios
-
EX016 — Significado das arestas. O que as arestas podem representar num grafo de segurança? Rubrica: 3 = logins, conexões de rede ou permissões;; 2 = dois;; 1 = vago;; 0 = nenhuma.
-
EX017 — Mudança de caminho no laboratório. O que aconteceu com o caminho mais curto depois da remoção da credencial salva? Rubrica: 3 = passou de 3 para 4 saltos, pelo sistema do armazém;; 2 = mais longo;; 1 = inalterado;; 0 = nenhuma.
-
EX018 — Pontos de estrangulamento. Que nós Lucas priorizou, e por quê? Rubrica: 3 = a estação de administração e o servidor de arquivos, que estão em muitos caminhos mais curtos;; 2 = os dois;; 1 = aleatórios;; 0 = nenhuma.
Síntese
Modelos de grafos transformam permissões dispersas em caminhos de ataque visíveis e em prioridades objetivas.
Continue estudando — aula 06 (capítulo 06 de 40)
← Capítulo 05 · Índice das aulas · Capítulo 07 →
Continue para a próxima aula já escrita.