Threat hunting com YARA – Mimikatz

Yet Another Acronym Recursive/Ridiculous (YARA) é uma ferramenta usada para identificar e classificar amostras de malware. A YARA identifica e classifica Malware com base em regras personalizadas.

As regras YARA são como uma linguagem de programação, elas funcionam definindo uma série de variáveis que contêm padrões encontrados em uma amostra de Malware. Se algumas ou todas as condições forem atendidas, dependendo da regra, ele poderá ser usado para identificar com êxito um Malware.

  • Identificar e classificar malware
  • Encontrar amostras de malware com base em padrões
  • Responder a incidentes
  • Aumentar as defesas de forma proativa

Um exemplo de código YARA

rule regra_yara 
{
    meta:
        description = "Este é apenas um exemplo"
        author = Daniel Donda
        date = "22-02-2022"

    strings:
        $a = {6A 40 68 00 30 00 00 6A 14 8D 91}
        $b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9}
        $c = "UVODFRYSIHLNWPEJXQZAKCBGMT"

    condition:
        $a or $b or $c
}

A regra acima está dizendo à YARA que qualquer arquivo contendo uma das três strings deve ser relatado como silent_banker. Este é apenas um exemplo simples, regras mais complexas e poderosas podem ser criadas usando curingas, strings que não diferenciam maiúsculas de minúsculas, expressões regulares, operadores especiais e muitos outros recursos que você encontrará explicados na documentação da YARA. https://yara.readthedocs.io/en/stable/

Principais elementos YARA

  • Metadata – Informações úteis sobre a regra (Autor, Data, Descrição, Hash)
  • Import – Importa módulos para estender as funções (PE, ELF, HASH, DOTNET)
  • Strings – Strings únicas que identificam o malware e são declaradas como variáveis. (Podem ser hexadecimal , texto, expressão regular)
  • Conditions – condições define os critérios para a regra acionar se bater com a string e as condições são expressões booleanas.

Download

Binários compilados para Windows em versões de 32 e 64 bits podem ser encontrados no link abaixo. Basta baixar a versão desejada, descompactar o arquivo e colocar os binários yara.exe e yarac.exe em qualquer lugar do disco.

https://github.com/virustotal/yara/releases/tag/v4.1.3

No Linux é mais simples ainda:

sudo apt install yara

Escrevendo uma regra YARA

Um dica legal é usar o realce de sintaxe para regras Yara no Notepad++ edite e salve na pasta onde salvou os executáveis baixados do YARA

Atenção – Essa regra é extremamente básica e serve como ponto inicial. Uma boa regra para detecção irá contar com expressões regulares, modificadores de string e condições que permitirão encontrar artefatos ofuscados.

Esse exemplo eu usei o strings básicas como artefatos em modo texto encontrados no “https://adsecurity.org/?page_id=1821” e que indicam a presença de comandos, classes e chamadas usados em comandos maliciosos do PowerShell.

Pode haver falso positivo ? SIM
Podemos contornar isso com condições especificas, mas esse não é o proposito do artigo.

mimikatz.yar

rule mimikatz {
meta:
description = "Detecta indicadores de texto relacionados ao Mimikatz"
author =
“Daniel Donda”
date = "22-02-2022"
referencia="https://adsecurity.org/?page_id=1821"

strings:
$a = "DumpCreds"
$b = "sekurlsa"
$bw = "lsadump"
$c = "GetDelegateForFunctionPointer"
$d = "System.Reflection.AssemblyName"
$e = "System.Reflection.Emit.AssemblyBuilderAcces"
$f = "System.Management.Automation.WindowsErrorReporting"
$g = "MiniDumpWriteDump"
$h = "TOKEN_IMPERSONATE"
$i = "TOKEN_DUPLICATE"
$j = "TOKEN_ADJUST_PRIVILEGES"
$k = "TOKEN_PRIVILEGES"
condition:
any of them
}

Screenshot do notepad++

Analisando arquivos baseados na regra YARA

Acesse a pasta do executável e use o comando: yara64.exe mimikatz.yar -r c:\

-r indica que a pesquisa é recursiva

Neste exemplo existem 553 arquivos nessa minha pasta.

Referências:

Anúncio

Sobre Daniel Donda 538 Artigos
Olá, meu nome é Daniel Donda e sou especialista em cibersegurança, autor de livros, professor e palestrante. Saiba mais

Seja o primeiro a comentar

Faça um comentário

Seu e-mail não será divulgado.


*