Registro Avançado do Windows. Procurando por mimikatz


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 nele


Nota: 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 que

PROCESS_QUERY_LIMITED_INFORMATION (0x1000)
PROCESS_VM_READ (0x0010)
PROCESS_QUERY_INFORMATION (0x0400)

Usando "OR" bit a bit, obtemos nosso Acesso Concedido
Nota: 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 filtro
event_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.

All Articles