3 pontos por GN⁺ 2024-08-26 | 1 comentários | Compartilhar no WhatsApp
  • A defesa de rede começa listando ativos e definindo prioridades, mas a superfície de ataque real é formada por um grafo de dependências de segurança entre os ativos
  • Em vez de atacar de frente o ativo mais forte, o atacante procura um caminho indireto até ativos de alto valor por meio de workstations mal protegidas ou rotas de administração
  • Em redes Windows, elementos como formas de logon, credenciais, TGTs do Kerberos, hashes NTLM, senhas locais de administrador compartilhadas e scripts de logon podem se tornar arestas do grafo
  • Os defensores precisam transformar a lista de ativos em um grafo e reduzir a conectividade com segmentação da infraestrutura, silos de credenciais, privilégio mínimo, autenticação em dois fatores e rotação de credenciais
  • Como os atacantes aprendem a infraestrutura real aos poucos, e não por diagramas antigos, os defensores só terão vantagem se entenderem com mais precisão as relações de conexão da rede atual

O que a defesa em forma de lista deixa passar

  • Muitas defesas de rede já começam desalinhadas antes mesmo de encontrar o atacante, por entenderem mal o campo de batalha
  • Os defensores se concentram em proteger ativos, definir prioridades e organizá-los por carga de trabalho e função de negócio
  • Serviços de administração de sistemas, bancos de dados de inventário de ativos e planilhas de BCDR estão cheios de listas de ativos
  • Mas o que o defensor realmente precisa lidar não é uma lista de ativos individuais, e sim um grafo em que os ativos estão ligados por relações de segurança
  • O atacante pousa em algum ponto desse grafo com técnicas como spearphishing e depois se move pela rede em busca de sistemas vulneráveis
  • Esse grafo não é dado de fora; ele é criado pelos próprios defensores ao projetar e operar a rede

O que significa o grafo dentro da rede

  • O grafo da rede é um conjunto de dependências de segurança que cria classes de equivalência entre ativos
  • Há quatro grandes fatores que influenciam o grafo
    • Projeto da rede
    • Forma de administração da rede
    • Softwares e serviços usados na rede
    • Comportamento dos usuários
  • No exemplo de controladores de domínio, um único caminho fraco de administração reduz o nível de segurança de todo o conjunto de ativos de alto valor
    • Bob administra o controlador de domínio a partir de uma workstation
    • Se essa workstation não for protegida no mesmo nível do controlador de domínio, o controlador também poderá ser comprometido
    • Outras contas com privilégios administrativos na workstation de Bob também podem comprometer Bob e o controlador de domínio
    • Esses administradores fazem logon, por necessidade de trabalho, em uma ou mais outras máquinas
    • Se o atacante comprometer uma delas, passa a existir um caminho até o controlador de domínio

Six Degrees of Mallory: movimento lateral seguindo o grafo

  • O atacante pode ficar à espera na máquina comprometida e usar dumpers de senhas como mimikatz até que uma conta de alto valor faça logon
  • O cluster à esquerda no grafo de exemplo é um único Terminal Server usado por centenas de usuários
    • Se o atacante comprometer essa máquina, com o tempo poderá extrair as credenciais de muitos usuários
  • A busca no grafo revela vários caminhos até o High Value Asset
    • Comprometer o Terminal Server também permite comprometer User46 e User128
    • User46 é administrador de Machine2821, e User128 é administrador de Machine115
    • Ao comprometer essas workstations, é possível comprometer User1 e User34
    • User1 e User34 são ambos administradores do High Value Asset
  • Para proteger o High Value Asset, todos os elementos dos quais ele depende precisam ser protegidos com o mesmo rigor, formando uma única classe de equivalência

Relações que criam dependências de segurança

  • Em redes Windows, quando um usuário faz certos tipos de logon, como Interactive ou Terminal Server, suas credenciais ficam expostas a roubo se o host subjacente for comprometido
    • O que fica exposto inclui não só credenciais, mas também equivalentes de single sign-on como TGTs do Kerberos e hashes NTLM
  • Dependências de segurança também surgem em relações administrativas do dia a dia
    • Contas locais de administrador com senha compartilhada: após extrair a senha local de administrador de um sistema, ela pode ser usada em outros hosts que usam a mesma senha
    • Servidores de arquivos e de atualização de software que contêm scripts de logon executados por muitos usuários
    • Servidores de impressão que entregam drivers de impressora às máquinas clientes durante o uso
    • Autoridades certificadoras que emitem certificados válidos para logon com smart card
    • Administradores de banco de dados capazes de executar código no contexto do servidor de banco de dados que roda como usuário privilegiado
  • Relações indiretas também passam a fazer parte do grafo
    • Se uma máquina vulnerável for comprometida, o atacante pode criar novas arestas no grafo
    • Se um usuário tiver contas com a mesma senha em dois domínios sem relação de confiança, surge uma aresta oculta entre os domínios

Como defender reduzindo o grafo

  • O primeiro passo do defensor é transformar a lista de ativos em um grafo para visualizar a rede
  • Depois disso, é preciso podar o grafo identificando arestas indesejadas que provocam grandes explosões de conectividade
    • Implementar segmentação da infraestrutura e silos de credenciais
    • Reduzir o número de administradores e minimizar privilégios com técnicas Just-In-Time / Just Enough
    • Usar autenticação em dois fatores para mitigar certos movimentos ao longo de arestas específicas
    • Aplicar uma estratégia robusta de rotação de credenciais para se preparar para comprometimento de contas de usuário
    • Revisar relações de trust entre forests

Criar um modelo da realidade melhor que o do atacante

  • Ao visualizar o campo de batalha, o defensor não deve entregar vantagem ao atacante
  • O defensor pode ter informações completas sobre a própria rede, enquanto o atacante precisa aprendê-la aos poucos
  • O atacante não estuda modelos mentais imprecisos, sistemas incompletos de inventário de ativos ou diagramas de rede desatualizados, e sim a infraestrutura que existe agora
  • O defensor também precisa administrar a rede com base na realidade para se aproximar de uma mentalidade de defesa realmente preparada

Leitura adicional

1 comentários

 
GN⁺ 2024-08-26
Opiniões no Hacker News
  • Atacantes geralmente têm uma missão, por exemplo vazar dados importantes, desestabilizar um alvo ou ransomware, e podem explorar tão a fundo quanto for necessário até cumprir a missão.
    Já os defensores precisam acompanhar muitos sinais e vetores de ameaça ao mesmo tempo, então acabam obrigados a pensar em listas, e ainda precisam priorizar até itens que devem ser tratados por causa de regulamentações.
    A menos que defensores sejam distribuídos arbitrariamente por vários pontos do grafo para procurar atividades interessantes, não vejo como um defensor poderia pensar em grafos. O que o autor propõe, no fim, vira apenas mais sinais dentro de uma lista que o defensor precisa comparar.

    • Não concordo com isso. Pela minha experiência, equipes red team usavam repetidamente técnicas de grafos para mapear caminhos até ativos de alto valor, enquanto os defensores nem sequer pensavam nessa abordagem.
      Quando os defensores adotaram esse método, conseguiram identificar ataques potenciais antes que o red team os executasse. Uma equipe inteligente adotaria imediatamente, por exemplo, uma técnica de red team que rastreia a AWS como um grafo para encontrar caminhos de contas de baixo valor até contas de alto valor.
      Não é uma questão de soma zero nem de uma grande virada, mas defensores também podem pensar mais como atacantes e usar ferramentas de atacantes com mais frequência na defesa.
    • Usando a proteção de carros como exemplo, há inúmeros ataques contra software automotivo, mas o objetivo mais comum de um atacante é o roubo do veículo.
      Então é preciso proteger o caminho até esse objetivo, independentemente de como esse caminho se parece ou de ele estar limitado ao software.
      Um atacante poderia explorar uma CVE para deixar o sistema de entretenimento em negação de serviço, mas fico em dúvida sobre quão importante isso seria na prática.
    • “Atacantes geralmente têm uma missão” é um mal-entendido comum.
      A grande maioria dos ataques reais está mais para “vamos olhar em volta para ver o que dá para encontrar, e depois vemos como usar isso”. O mesmo vale para muitas atividades ofensivas, como coleta de informações, operações de influência e propaganda.
  • Defensores usam listas porque precisam gerenciar centenas ou milhares de ativos ao mesmo tempo. Quando é preciso gerenciar muita coisa, você cria listas, percorre essas listas e aplica checklists.
    Claro que defensores também devem criar grafos de dependência, mas primeiro é preciso criar listas e verificar se estão atualizadas, se assumem confiança limitada e se os recursos estão isolados; depois disso, criar o grafo de dependências.
    Defensores precisam pensar tanto em listas quanto em grafos e gerenciar um número enorme de itens, enquanto atacantes só precisam olhar para alguns poucos.

    • Em outras palavras, o mapeamento em grafo dos ativos deveria fazer parte do checklist.
    • Nesse cenário, você está basicamente dizendo que a lista é a base do grafo, e esse é justamente o ponto do autor, além de ser uma diferença sutil, mas importante, na forma como defensores abordam o problema.
      Sem o insight para transformar a lista em grafo, você acaba apenas com uma lista de ativos críticos, tentando bloquear, como num jogo de bater em toupeiras, dezenas de milhares de caminhos de acesso que não considerou.
    • No fim, é a diferença entre amplitude e profundidade.
  • Este texto parece ter ido fundo demais. Ou talvez as razões estejam certas, mas a causa esteja errada. O trabalho do defensor não é a defesa em si.
    Cibersegurança não é uma partida esportiva com objetivos claros e equivalentes e posições alternadas; ela está mais para um evento paralelo e uma distração ao lado do outro negócio que o defensor está tentando tocar como atividade principal.
    Em contraste, todo o trabalho do atacante é atacar sistemas. Não há outros objetivos, donos secundários ou considerações que enfraqueçam o ataque.
    Atacantes vencem pelo mesmo motivo que a Microsoft lança sistemas operacionais melhor que a Cisco. Para a Cisco, o sistema operacional é um meio; para a Microsoft, é o fim.

    • Excelente enquadramento de cibersegurança como um evento paralelo ao lado do evento principal.
      Isso também explica por que empresas quase não são punidas pelo mercado por vazamentos de dados.
    • Vejo como problema central o fato de a maioria das organizações colocar segurança no fim da lista do orçamento.
    • O ponto fica mais claro se você pensar que defensores são um centro de custo e atacantes são um centro de receita.
    • “Todo o trabalho do atacante é atacar sistemas, e não há outros objetivos” me parece um equívoco bem grave.
      Ciberataques têm objetivos claros, como roubo de dados e interrupção de serviços. Isso pode se aplicar a agentes imaturos que só querem quebrar coisas e criar caos, mas, se considerarmos atores estatais ou criminosos motivados por dinheiro, é uma visão completamente equivocada.
    • Exatamente. Há também uma assimetria fundamental. Defensores precisam acertar tudo, enquanto atacantes só precisam encontrar uma vulnerabilidade. Na maioria das vezes, uma vulnerabilidade baseada em comportamento humano.
  • Este texto, na verdade, parece não ter ido fundo o bastante :-)
    “Lista” é uma representação abreviada de componentes, e “grafo” é uma representação abreviada de interoperabilidade. A perspectiva dos componentes é análise; a perspectiva das interações ainda não tem uma boa palavra, mas, como o texto diz, muitas vezes se torna a superfície de ataque.
    Sistemas adaptativos complexos têm componentes e um barramento de mensagens, e o importante é que esse barramento fornece uma forma de os componentes interoperarem. Você pode capturar formigas uma por uma, mas, para realmente impedir o problema, é preciso eliminar a capacidade delas de deixar rastros de feromônio.
    Seria bom haver uma palavra como “análise” também para entender formas de interoperabilidade. Algo como Gestaltysis?

  • Trabalhei por um tempo em uma empresa de cibersegurança, e eu não conseguia colocar em palavras por que odiava aquele produto e por que a abordagem daquela empresa — e de boa parte do setor — no fim me parecia falsa
    Agora entendo. Estávamos criando uma ferramenta para apoiar a prática mais inútil da cibersegurança: checklists em nível organizacional

    • Ainda assim, se você não consegue fazer checklists, também não consegue fazer outras coisas
      No centro de toda atividade há listas e agendas recorrentes. É preciso aparecer regularmente e fazer o que tem de ser feito
      Claro, concordo que, na etapa do “o que tem de ser feito”, é preciso uma abordagem mais profunda e melhor
    • Isso é praticamente todo o setor de cibersegurança. As empresas usam essas ferramentas como uma espécie de porta à prova de explosão para apontar culpados quando algo acontece
      É para poderem dizer: “seguimos todos os checklists, e o software de segurança não detectou, então não é culpa nossa”
      Se uma empresa realmente se importasse com segurança, contrataria uma red team em vez de pagar por scanners inúteis com relação sinal-ruído abaixo de 1%
    • Pode depender de por que o checklist existe, de quão bem ele modela o que precisa ser feito e de quão rigorosamente é seguido
      Olhe para a aviação: pilotos dependem de checklists para sobreviver. Não há garantia de que problemas nunca ocorram durante o voo, mas não seguir o checklist ou tratá-lo levianamente é chamar o desastre. Esses checklists são construídos sobre anos de experiência cara
      Por outro lado, um checklist que existe apenas para dizer que “há um checklist”, ou que não é revisado e atualizado regularmente conforme as condições reais, não significa nada
    • De forma mais precisa, a segurança operacional pode fortalecer a postura de segurança, mas o verdadeiro segredo da cibersegurança não é apenas introduzir medidas, e sim mantê-las ao longo do tempo. É exatamente aí que os checklists se tornam necessários
      Muitas empresas entendem isso errado. Acham que o checklist em si é segurança, mas, na prática, ele é apenas uma ferramenta para lembrar de continuar mantendo aquilo que já foi feito corretamente antes. No momento em que você trata o checklist como o objetivo, sai do caminho
  • Falando como pentester, atacantes também não necessariamente pensam em grafos
    Tirando o BloodHound, não consigo lembrar bem de ferramentas que usem grafos
    Também não me vem à cabeça algo em segurança web em que o “pensamento em grafos” se aplique. Em vez disso, a lista de ataques a testar é enorme: https://portswigger.net/web-security/all-topics
    E o que acaba entrando em um relatório de teste de intrusão não é um grafo, mas uma lista de tarefas. Por exemplo: assinatura SMB, não usar contas de administrador de domínio para administrar todas as máquinas, e assim por diante
    O principal motivo de essa frase ser popular é que ela mexe com o ego da comunidade hacker. É algo como: “nós somos os inteligentes, e os defensores só mexem em planilhas do Excel”
    Ainda assim, há um fragmento de verdade nisso. Defensores podem gastar bastante tempo em coisas que não importam muito. Enquanto aplicam manualmente benchmarks CIS em todos os servidores, acabam deixando passar os frutos mais baixos que criariam uma postura de segurança forte
    Em muitas empresas, os defensores são apenas administradores de sistemas que não sabem em que focar

    • Entendo o ponto, mas acho que pentesters também podem muito bem pensar em grafos, inclusive em segurança web
      Um exemplo que vem logo à mente é a cadeia de bugs. Ao combinar algumas vulnerabilidades de nível CVSS 4 a 7, o resultado pode se transformar em algo de nível 9,8, como execução remota completa de código. Essa conexão entre bugs é, por natureza, uma travessia de grafo por meio de elementos de comprometimento
      O BloodHound é excelente e é uma boa ferramenta visual para conceituar grafos de ataque, mas é apenas parte do processo de entender o domínio-alvo do ponto de vista do atacante
      O motivo de não haver uma ferramenta limpa como o BloodHound para testes de intrusão web é que é difícil reduzir cadeias de comprometimento simplesmente ao formato de ferramenta. Em AD, os limites de segurança são relativamente compreendidos e codificados, mas, em apps web, as cadeias costumam ser mais específicas à aplicação em questão do que ao framework subjacente
      Itens como assinatura SMB ou “não administrar tudo com conta DA” entram em relatórios de pentest porque são nós que brilham muito cedo na cadeia de comprometimento. No mundo real, é comum as invasões acontecerem assim
      Não é tanto que pentesters não entendam pensamento em grafos; é mais que, em alguns casos, o primeiro nó do grafo praticamente significa comprometimento completo, então não há motivo para percorrer mais
  • Isso é basicamente uma forma elegante de dizer que defensores precisam proteger todos os pontos de entrada, enquanto atacantes só precisam encontrar uma fraqueza

    • Como diz o ditado, a melhor defesa é um bom ataque. Microsoft e Google também têm projetos de segurança que atrapalham grupos organizados de hacking, mas talvez seja preciso ir além
      Por exemplo, talvez dê para usar honeypots para devolver exploits zero-day para o equipamento do atacante. Pode até ser algo projetado intencionalmente nos produtos do Google, da Microsoft etc.
      Seria meio que ir totalmente para o lado black-hat, mantendo uma plausível negação, alimentando atacantes de ransomware com ransomware
      Escrevendo isso, parece uma corporação maligna e onipotente de ficção científica, embora essas empresas geralmente cheguem até a assassinar inimigos
    • Em outras palavras, é a assimetria da defesa
  • Já trabalhei com resposta a incidentes e também tenho experiência com testes de intrusão e red team. Embora seja uma expressão resumida, acho que está certa em certa medida, e não precisa ser tão negativa quanto o texto sugere
    A defesa é composta por vários elementos. Por exemplo: desenvolver controles eficazes que reduzam o risco e o impacto de incidentes de segurança, identificar ataques e comprometimentos, e responder a incidentes. Listas de padrões e de respostas funcionam bem
    A defesa também inclui decisões de arquitetura em que é preciso pensar no grafo da rede para projetar esses controles. A área de defesa também é diversa: arquitetura/engenharia, gestão de riscos, resposta a incidentes, segurança de aplicações, treinamento, inteligência de ameaças etc.
    Também é interessante que o autor tenha sugerido que o problema é a defesa pensar em listas e, em seguida, tenha apresentado uma lista de itens a considerar para melhorar a defesa

  • O motivo de atacantes vencerem é que, depois de encontrarem uma fraqueza, só precisam ter sucesso uma vez. Defensores precisam proteger tudo ao mesmo tempo

  • Parece que cada rede precisa de pelo menos um honeypot para capturar invasores. Coisas como credenciais falsas de criptomoedas e cofres falsos de senhas entram nessa categoria