Olá a todos. Hoje, veremos um exemplo em que um invasor conseguiu ignorar o Windows Defender, mas falhou - um guarda de segurança. Sim, isso é novamente sobre mimikatz. Como, ao iniciar o mimikatz, para ignorar o Windows Defender, você pode ler aqui. E hoje, como prometi, considere algo para a equipe "azul". Se isso ajuda alguém, pelo menos, não é em vão. Então vamos.Muito foi escrito sobre a pilha do ELK (Elasticsearch, Logstash, Kibana) (inclusive no Habré), e hoje vamos usá-la, ou para ser mais preciso, um ELK dopado às nossas necessidades de caça a ameaças.The Hunting ELK, ou HELK
O diagrama HELK tem a seguinte aparência:
Vamos para a instalação.Como o servidor onde o HELK estará localizado, eu escolhi, como o desenvolvedor aconselha:tomhunter@helk:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
A instalação é simples e realizada em 2 comandos:git clone https://github.com/Cyb3rWard0g/HELK
tomhunter@helk:~/HELK/docker$ sudo ./helk_install.sh
Nota: pode ser solicitado que você aloque mais RAM para instalação. Eu uso 10 GB.
Nas opções de instalação propostas, escolhi o KAFKA + KSQL + ELK + NGNIX + ELASTALERT . E agora apenas esperando. E, se fizermos tudo certo, veremos o valor:
Com o servidor concluído, vamos preparar o cliente. Será uma máquina com Windows 10. Precisamos instalar o Sysmon nela.Também precisamos de um arquivo de configuração: git clone https://github.com/olafhartong/sysmon-modular
Gere a configuração: . .\Merge-SysmonXml.ps1
Merge-AllSysmonXml -Path ( Get-ChildItem '[0-9]*\*.xml') -AsString | Out-File sysmonconfig.xml
Corre: PS C:\Users\Tomhunter\Documents\sysmon-modular> .\Sysmon64.exe -i .\sysmonconfig.xml
Também instalaremos o winlogbeat , excluiremos o arquivo winlogbeat.yml e criaremos um novo, copiando raw.githubusercontent.com/Cyb3rWard0g/HELK/master/configs/winlogbeat/winlogbeat.yml neleNota: aqui também precisamos alterar o endereço IP para o desejado (no meu caso, hosts: ["192.168.31.97:9092"].
Instalar: PS C:\Users\Tomhunter\Desktop\winlogbeat-7.6.2-windows-x86_64> .\install-service-winlogbeat.ps1
Nota: você precisa ativar o serviço manualmente ou reiniciar o sistema.
Tudo está pronto, vamos ver o que temos.Iniciamos o mimikatz no Windows 10.
E, depois de entrar no cybana (no meu caso, é 192.168.31.97 , credenciais padrão: helk: hunting), vemos um alerta. Na sua forma bruta, fica assim: os
alertas podem ser enviados por e-mail, com folga etc.Mas estamos muito mais interessados em como isso funciona, vamos entender.Pouco de teoria
Após iniciar o mimikatz no Windows 10, a seguinte mensagem
é exibida: Qual é a regra que emitiu o alerta que me confundiu? (spoiler: não o nome do arquivo mimikatz.exe). Vamos dar uma olhada na própria regra:sudo docker exec -it helk-elastalert bash
cat /opt/sigma/rules/windows/sysmon/sysmon_mimikatz_detection_lsass.yml
EventID: 10. Este é o nosso ProcessAccess.TargetImage: C: \ windows \ system32 \ lsass.exe. Isso é bom, mas a mimikatz não é a única que se volta para a classe.
Acesso concedido: 0x1410 ou 0x1010.E aqui tudo se encaixa. Eu explico.Vamos dar uma olhada no código fonte da mimikatz, ou seja, estamos interessados no arquivo kuhl_m_sekurlsa.c e na função kuhl_m_sekurlsa_acquireLSA ().
Voltando ao site da Microsoft, vemos quePROCESS_QUERY_LIMITED_INFORMATION (0x1000)
PROCESS_VM_READ (0x0010)
PROCESS_QUERY_INFORMATION (0x0400)
Usando "OR" bit a bit, obtemos nosso Acesso ConcedidoNota: anteriormente na regra sigma havia apenas detecção de 0x1410, isso provavelmente se deve ao fato de que versões mais antigas do mimikatz fizeram as duas solicitações (PROCESS_QUERY_INFORMATION e PROCESS_QUERY_LIMITED_INFORMATION), no entanto, o mimikatz passou com 0x1010, portanto, você deve ajustar a regra. Agora não existe esse problema, e tudo funciona imediatamente.
Portanto, se no kiban colocarmos o filtroevent_id: 10 AND process_target_name: "* lsass.exe" AND process_granted_access: "0x1010", teremos apenas nossa mimikatz.
Do agradável: existem regras para mimikatz_inmemory, mimikatz_trough_winrm e até safetycatz (versão .NET do mimikatz com seus próprios chips).O que mais você pode fazer?
As regras, é claro, não se limitam à mimikatz, existem muitas. Eles são divididos em categorias aplicativo, nuvem, conformidade, linux, rede, proxy, web e windows. As categorias são divididas em subcategorias. Por exemplo, o Windows é dividido em interno, malware, outro, powershell, process_creation, sysmon.E quem sabe, talvez, incluindo o log do PowerShell no GPO, você receberá alertas de acordo com estas regras:
Isso parece ser tudo. Inscreva-se no canal, clique na campainha.