Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
yara-ttd — Use regras YARA em rastros (traces) de Time Travel Debugging | Kitploit
Ferramentas/GitHubGitHub/airbus-cert/yara-ttd
Análise Dinâmica (Sandboxing)Forensia de MemóriaEngenharia ReversaShellcodeAnálise de MalwareAnálise de Binários
GitHubairbus-cert/yara-ttd

yara-ttd

Use regras YARA em rastros (traces) de Time Travel Debugging

Ver Repositório
9713há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

yara-ttd - O nêmesis definitivo dos packers

Use regras YARA em rastros de Time Travel Debugging

  1. Demo
  2. Motivações
  3. Instalação
  4. Uso
  5. Recursos futuros

Demo

Um binário empacotado com UPX

Um binário simples que executa calc.exe, empacotado com UPX. o yara-ttd encontra a string calc.exe na memória do módulo, durante a criação de uma thread.

Upx demo

Um simples shellcode ofuscado que executa calc.exe

O binário testado descriptografa um shellcode e o executa em uma nova thread. o yara-ttd consegue encontrar a string calc.exe no heap ao fazer hook na função ntdll!NtCreateThreadEx.

Shellcode demo

Motivações

YARA

YARA é uma poderosa ferramenta de correspondência de padrões para binários.

YARA é uma ferramenta voltada a (mas não limitada a) ajudar pesquisadores de malware a identificar e classificar amostras de malware. Com YARA, você pode criar descrições de famílias de malware (ou o que você quiser descrever) com base em padrões textuais ou binários.

-- Documentação do YARA

Graças ao YARA, podemos economizar muito tempo ao classificar automaticamente amostras de malware em um pipeline antes de analisá-las.

Packers

Infelizmente, a maioria das amostras de malware é protegida por diferentes tipos de packers. Um esquema clássico de runtime-packer, como UPX ou VMProtect, consiste em autoextrair e executar código ofuscado e às vezes criptografado. Portanto, o YARA não consegue lidar com binários empacotados, pois não encontrará correspondências no código empacotado.

Time Travel Debugging

Time Travel Debugging - ou TTD - é um recurso do depurador nativo do Windows, o WinDbg.

Time Travel Debugging é uma ferramenta que permite capturar um rastro do seu processo enquanto ele executa e, depois, reproduzi-lo tanto para frente quanto para trás. O Time Travel Debugging (TTD) pode ajudar você a depurar problemas com mais facilidade, permitindo "rebobinar" a sessão do depurador, em vez de ter que reproduzir o problema até encontrar o bug.

-- Documentação da Microsoft

Para a análise de malware, o TTD é uma ferramenta poderosa, pois permite gravar o rastro de um malware em uma sandbox. Assim, podemos reproduzir e compartilhar com segurança o arquivo gravado fora da sandbox para analisar o malware. Além disso, o TTD não é um depurador, portanto não será detectado por técnicas clássicas de anti-debug, como PEB.BeingDebugged. Para uma análise mais aprofundada do TTD sob o ponto de vista da segurança, confira este artigo: Deep dive no ecossistema TTD

É claro que o TTD é um software proprietário, e este trabalho não poderia existir sem os ttd-bindings desenvolvidos por commial.

yara-ttd

A ideia por trás do yara-ttd é usar os arquivos de rastro gravados pelo TTD com o próprio yara para derrotar os packers.

Como o yara não consegue escanear o binário empacotado em si, o yara-ttd oferece uma maneira de analisar o arquivo de rastro que contém todas as informações de tempo de execução, incluindo o processo de desempacotamento.

Com o yara-ttd, você pode selecionar um conjunto de posições no arquivo de rastro onde deseja escanear a memória com suas regras yara. Assim, você pode fazer hook no binário empacotado onde quiser com suas regras yara!

O yara-ttd fornece várias estratégias de escaneamento de memória, como quando módulos são carregados ou quando memória virtual é alocada, que costumam ser usadas para armazenar o código do malware depois de desempacotado.

Instalação

Por enquanto, o yara-ttd só oferece suporte ao Windows, pois precisa interagir com a API do TTD.

Primeiro, compile o projeto:

root@kitploit:~
mkdir build
cd build
cmake ..
cmake --build .

Em seguida, adicione os arquivos TTDReplay.dll e TTDReplayCPU.dll no mesmo diretório do executável. Você encontrará esses arquivos DLL em %LocalAppData%\Microsoft\WindowsApps\Microsoft.WinDbg_X\TTD

Uso

Primeiro, você precisa gravar um rastro (arquivo .run) do seu programa. Para obter ajuda detalhada sobre como gravar um rastro TTD, consulte este tutorial.

Em seguida, basta executar:

root@kitploit:~
.\yara-ttd path\to\rule path\to\trace\file

Modos de memória

Há três modos para escanear memória:

  • Modo 0 (padrão): Memória de Módulos Carregados
  • Modo 1: Memória Alocada Virtualmente + Memória de Módulos Carregados
  • Modo 2: Memória completa (pode ser muito longa)

Você pode selecionar o modo com -m:

root@kitploit:~
.\yara-ttd -m 1 path\to\rule path\to\trace\file

Como na CLI oficial do yara, você pode usar a flag -s para imprimir os detalhes das correspondências, como o endereço de memória e a sub-regra exata que correspondeu.

Notas sobre o modo de Memória Virtual Alocada:

Como o TTD não armazena a estrutura da memória, o yara-ttd calcula antes do escaneamento a estrutura dos endereços do heap para cada posição de tempo. Ele criará um arquivo de cache com a extensão .tmp no mesmo caminho do arquivo de rastro para armazenar a estrutura do heap. Se você quiser executar o yara-ttd novamente em um rastro e carregar a estrutura do heap do arquivo de cache gerado, basta fazer:

root@kitploit:~
.\yara-ttd -m 1 --cache=path\to\cache\file path\to\rule path\to\trace\file
Nota sobre o modo de memória completa:

Com o TTD, podemos acessar toda a faixa de memória de um processo, que corresponde aos endereços mínimo e máximo retornados por GetSystemInfo. No entanto, na maioria das vezes, essa faixa é extensa demais para ser escaneada sem qualquer otimização.

Modos de tempo

As posições de tempo padrão que serão escaneadas são:

  • Eventos de exceção
  • Eventos de módulo carregado
  • Eventos de thread criada

Com as flags -t e -f, você pode selecionar outras posições ou chamadas de função para escanear:

root@kitploit:~
.\yara-ttd -m 1 -t 3C1:A -t 5FF:22 -f ntdll!FreeVirtualMemory -f ntdll!NtCreateThreadEx path\to\rule path\to\trace\file

A flag -t espera posições TTD no formato major:minor (ambas em hexadecimal, sem 0x). A flag -f espera uma string no formato module_name!function_name.

Você também pode adicionar todas as funções que deseja interceptar em um arquivo:

root@kitploit:~
> cat .\functions.txt
ntdll!FreeVirtualMemory
ntdll!NtCreateThreadEx

> .\yara-ttd -m 1 -F functions.txt path\to\rule path\to\trace\file

Escanear vários arquivos de rastro

Se você tiver vários arquivos para escanear com yara-ttd, também pode escanear um diretório inteiro. O yara-ttd ignorará todas as seguintes extensões na pasta:

  • .tmp (arquivos de cache gerados por yara-ttd)
  • .idx (arquivos de índice gerados por ttd)
  • .err (arquivos de erro gerados por ttd)
  • .out (arquivos de log gerados por ttd)

No exemplo a seguir, o yara-ttd escaneará apenas os arquivos trace01.run e trace02.run.

root@kitploit:~
> dir .\traces
trace01.run
trace01.out
trace01.idx
trace02.run
trace01.run.err
trace01.tmp

> .\yara-ttd path\to\rule .\traces

Alternativamente, você pode especificar todos os rastros que deseja escanear em um arquivo e usar a flag --scan-list ou -l. Ele escaneará os arquivos listados, um por linha:

root@kitploit:~
> cat .\scan_me.txt
.\traces\trace01.run
.\traces\trace02.run

> .\yara-ttd -l path\to\rule .\scan_me.txt

Ao escanear vários arquivos, o yara-ttd executa os escaneamentos um após o outro, e não simultaneamente com threading como a CLI original do yara.

Recursos futuros

  • libyarattd com bindings para Python
  • Integração com ttddbg e IDA: recurso que carrega o IDA no final do escaneamento na posição da correspondência no tempo e na memória
  • TTD: seguir o processo filho ao dar fork no processo
Baixar ferramenta