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 {
“Daniel Donda”
meta:
description = "Detecta indicadores de texto relacionados ao Mimikatz"
author =
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
}
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.
Seja o primeiro a comentar