🕸️Elastic Purple Team Lab

Olá, terráqueo! Neste artigo, trago um laboratório para simulação e detecção de ataques conhecidos, baseados em táticas e técnicas do MITRE ATT&CK. Enjoy!

Objetivo

A proposta desse lab é simular um ambiente com a cultura Purple Team: desde a execução do ataque até a regra de detecção que captura rastros referentes a esse mesmo ataque.

Primariamente, eu utilizei o Wazuh como motor principal de detecção. Porém, como ele só nos envia um alerta quando dá match com alguma regra, decidi tentar utilizar o Winlogbeat para enviar todos os logs diretamente ao Elastic SIEM.

Topologia

Imagem 1 - Topologia do laboratório

Hardware

  • Elastic - 8 GB RAM / 4 vCPU / 80 GB HDD

  • WinClient - 8 GB RAM / 4 vCPU / 80 GB HDD

  • WinServer - 8 GB RAM / 4 vCPU / 80 GB HDD

Ferramentas

Monitoramento

Simulação de adversários

Configurações necessárias

1. Instalar Elasticsearch e Kibana no servidor Ubuntu
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
sudo apt-get install apt-transport-https
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/9.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-9.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo apt-get install kibana
2. Configurar arquivos elasticsearch.yml e kibana.yml

O arquivo /etc/elasticsearch/elasticsearch.yml só precisa de uma alteração simples:

  • network.host: <IP_ELASTICSEARCH>

Para o arquivo /etc/kibana/kibana.yml, antes de editá-lo, precisamos gerar as chaves de criptografia para o Kibana. Esse passo é necessário para que as regras de detecção e alertas funcionem. Execute o seguinte binário:

/usr/share/kibana/bin/kibana-encryption-keys generate

Capture as três últimas linhas - após a linha Settings - e cole no final do arquivo kibana.yml. Além disso, altere o campo server.host para o IP do Elasticsearch:

  • server.host: "<IP_ELASTICSEARCH>"

Após isso, podemos iniciar os serviços:

sudo systemctl enable elasticsearch.service
sudo systemctl enable kibana.service
sudo systemctl start elasticsearch
sudo systemctl start kibana
3. Gerar enrollment token para o Kibana

Após instalar e configurar os serviços, precisamos gerar o token para associar as duas instâncias. Para isso, execute o seguinte binário:

/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

Capture o token gerado e cole na tela de enrollment do Kibana.

4. Instalar máquinas Windows e preparar Active Directory

Agora que já instalamos o Elastic Stack, precisamos instalar e configurar o Active Directory em nosso lab. Após realizar a instalação das máquinas, precisamos:

  • Promover o WINSERVER a Controlador de Domínio

  • Ingressar o WINCLIENT no domínio criado

5. Instalação e configuração do Sysmon nos ativos a serem monitorados

Já provisionamos toda a infraestrutura, precisamos agora começar a enxergar os eventos nos ativos. Para isso, precisamos instalar o Sysmon, uma das ferramentas mais utilizadas do mundo (e gratuita!) para monitoramento de endpoints.

Nas máquinas WINCLIENTe WINSERVER, executar os seguintes comandos como Administrador:

Invoke-WebRequest -Uri https://wazuh.com/resources/blog/emulation-of-attack-techniques-and-detection-with-wazuh/sysmonconfig.xml -OutFile sysmonconfig.xml
Invoke-WebRequest -Uri https://download.sysinternals.com/files/Sysmon.zip -OutFile Sysmon.zip
Expand-Archive Sysmon.zip
mv sysmonconfig.xml Sysmon
cd Sysmon
.\Sysmon64.exe -accepteula -i sysmonconfig.xml
6. Configuração do Winlogbeat

Para que o Winlogbeat possa se comunicar com o Elasticsearch, precisamos realizar a seguinte alteração no arquivo winlogbeat.yml:

  • output.elasticsearch.hosts: <IP_ELASTICSEARCH>

Após isso, salvar o arquivo e reiniciar o serviço.

7. Desativação de proteções do Windows

Para conseguirmos instalar corretamente o Atomic Red Team, precisamos desativar as defesas do Windows. Para isso, nas máquinas WINCLIENT e WINSERVER, precisamos executar os seguintes comandos como Administrador:

Set-MpPreference -DisableRealtimeMonitoring $true # Desativar Proteção em Tempo Real
Add-MpPreference -ExclusionPath "C:\Users\lucas.PURPLE\Downloads" # Adicionar pastas em exceção 
Add-MpPreference -ExclusionPath "C:\Users\Administrator\Scripts" # Adicionar pastas em exceção
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f # Desativar UAC
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer /v SmartScreenEnabled /t REG_SZ /d Off /f # Desativar SmartScreen
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer /v SmartScreenUserOverride /t REG_SZ /d Off /f # Desativar SmartScreen
netsh advfirewall set allprofiles state off # Desativar firewall do Windows
Set-ExecutionPolicy Unrestricted # Política de execução de scripts PowerShell
8. Instalação do Atomic Red Team

Por fim, para termos as ferramentas do ofício em mãos, precisamos baixar o Atomic Red Team e seus atomics. Para isso, nas máquinas WINCLIENT e WINSERVER, execute os seguintes comandos como Administrador:

IEX (IWR 'https://raw.githubusercontent.com/redcanaryco/invoke-atomicredteam/master/install-atomicredteam.ps1' -UseBasicParsing);
Install-AtomicRedTeam -F;
Install-AtomicRedTeam -getAtomics -Force

Alright! Agora, podemos partir para a execução dos testes. Todos os que eu realizar serão registrados na seção Simulações :)

Last updated