Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
yara-ttd — Usa reglas YARA en trazas de Time Travel Debugging | Kitploit
Herramientas/GitHubGitHub/airbus-cert/yara-ttd
Análisis Dinámico (Sandboxing)Forensia de MemoriaIngeniería InversaShellcodeAnálisis de MalwareAnálisis de Binarios
GitHubairbus-cert/yara-ttd

yara-ttd

Usa reglas YARA en trazas de Time Travel Debugging

Ver Repositorio
9713hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

yara-ttd - La némesis definitiva de los empaquetadores

Usa reglas YARA en trazas de Time Travel Debugging

  1. Demo
  2. Motivaciones
  3. Instalación
  4. Uso
  5. Próximas funciones

Demo

Un binario empaquetado con UPX

Un binario simple que lanza calc.exe, empaquetado con UPX. yara-ttd encuentra la cadena calc.exe en la memoria del módulo durante la creación de un hilo.

Demo de UPX

Un shellcode ofuscado simple que ejecuta calc.exe

El binario probado descifra un shellcode y lo ejecuta en un nuevo hilo. yara-ttd logra encontrar la cadena calc.exe en el heap al enganchar la función ntdll!NtCreateThreadEx.

Demo de shellcode

Motivaciones

YARA

YARA es una potente herramienta de coincidencia de patrones para binarios.

YARA es una herramienta destinada (aunque no limitada) a ayudar a los investigadores de malware a identificar y clasificar muestras de malware. Con YARA puedes crear descripciones de familias de malware (o lo que quieras describir) basadas en patrones textuales o binarios.

-- Documentación de YARA

Gracias a YARA, podemos ahorrar mucho tiempo clasificando automáticamente muestras de malware en un pipeline antes de analizarlas.

Empaquetadores

Desafortunadamente, la mayoría de las muestras de malware están protegidas con diferentes tipos de empaquetadores. Un esquema clásico de empaquetado en tiempo de ejecución como UPX o VMProtect consiste en extraerse a sí mismo y ejecutar código ofuscado y a veces cifrado. Por lo tanto, YARA no puede tratar con binarios empaquetados porque no encontrará ninguna coincidencia en el código empaquetado.

Time Travel Debugging

Time Travel Debugging - o TTD - es una característica del depurador nativo de Windows, WinDbg.

Time Travel Debugging es una herramienta que te permite capturar una traza de tu proceso mientras se ejecuta y luego reproducirla más tarde tanto hacia adelante como hacia atrás. Time Travel Debugging (TTD) puede ayudarte a depurar problemas más fácilmente al permitirte "rebobinar" la sesión de tu depurador, en lugar de tener que reproducir el problema hasta encontrar el error.

-- Documentación de Microsoft

Para el análisis de malware, TTD es una herramienta poderosa porque permite grabar la traza de un malware en una sandbox. Por lo tanto, podemos reproducir y compartir de forma segura el archivo grabado fuera de la sandbox para analizar el malware. Además, TTD no es un depurador, por lo que no será detectado por técnicas clásicas anti-depuración como PEB.BeingDebugged. Para un análisis más profundo de TTD desde el punto de vista de la seguridad, consulta este artículo: Inmersión profunda en el ecosistema TTD

Por supuesto, TTD es un software propietario, y este trabajo no podría existir sin ttd-bindings desarrollado por commial.

yara-ttd

La idea detrás de yara-ttd es usar los archivos de traza grabados por TTD con el propio yara para derrotar a los empaquetadores.

Dado que yara no puede escanear el binario empaquetado por sí mismo, yara-ttd proporciona una forma de analizar el archivo de traza que contiene toda la información de tiempo de ejecución, incluido el proceso de desempaquetado.

Con yara-ttd, puedes seleccionar un conjunto de posiciones en el archivo de traza donde quieras escanear la memoria con tus reglas de yara. Por lo tanto, ¡puedes enganchar el binario empaquetado donde quieras con tus reglas de yara!

yara-ttd ofrece varias estrategias de escaneo de memoria, como cuando se cargan módulos o cuando se asigna memoria virtual, que suelen usarse para almacenar el código del malware una vez desempaquetado.

Instalación

Por ahora, yara-ttd solo es compatible con Windows, porque necesita interactuar con la API de TTD.

Primero, compila el proyecto:

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

Luego, añade los archivos TTDReplay.dll y TTDReplayCPU.dll en el mismo directorio que el ejecutable. Encontrarás estos archivos DLL en %LocalAppData%\Microsoft\WindowsApps\Microsoft.WinDbg_X\TTD

Uso

Primero necesitas grabar una traza (archivo .run) de tu programa. Para obtener ayuda detallada sobre cómo grabar una traza TTD, consulta este tutorial.

Luego simplemente ejecuta:

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

Modos de memoria

Hay tres modos para escanear memoria:

  • Modo 0 (predeterminado): Memoria de módulos cargados
  • Modo 1: Memoria asignada virtualmente + Memoria de módulos cargados
  • Modo 2: Memoria completa (puede ser muy largo)

Puedes seleccionar el modo con -m:

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

Al igual que la CLI oficial de yara, puedes usar la opción -s para imprimir los detalles de las coincidencias, como la dirección de memoria y la subregla exacta que coincidió.

Notas sobre el modo de Memoria Asignada Virtualmente:

Debido a que TTD no almacena la estructura de la memoria, yara-ttd calcula antes del escaneo la estructura de las direcciones del heap para cada posición temporal. Creará un archivo de caché con la extensión .tmp en la misma ruta que el archivo de traza para almacenar la estructura del heap. Si quieres volver a ejecutar yara-ttd sobre una traza y cargar la estructura del heap desde el archivo de caché generado, puedes hacer simplemente:

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

Podemos acceder al rango completo de memoria de un proceso con TTD, que corresponde a las direcciones mínima y máxima devueltas por GetSystemInfo. Sin embargo, la mayoría de las veces, este rango es demasiado grande para ser escaneado sin ninguna optimización.

Modos de tiempo

Las posiciones temporales predeterminadas que se escanearán son:

  • Eventos de excepción
  • Eventos de carga de módulos
  • Eventos de creación de hilos

Con las opciones -t y -f, puedes seleccionar otras posiciones o llamadas a funciones 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

La opción -t espera posiciones TTD en el formato major:minor (ambas en hexadecimal, sin 0x). La opción -f espera una cadena en el formato module_name!function_name.

También puedes añadir todas las funciones que quieras enganchar en un archivo:

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

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

Escanear múltiples archivos de traza

Si tienes varios archivos para escanear con yara-ttd, también puedes escanear un directorio completo. yara-ttd ignorará todas las siguientes extensiones en la carpeta:

  • .tmp (archivos de caché generados por yara-ttd)
  • .idx (archivos de índice generados por ttd)
  • .err (archivos de error generados por ttd)
  • .out (archivos de registro generados por ttd)

En el siguiente ejemplo, yara-ttd escaneará únicamente los archivos trace01.run y 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, puedes especificar todas las trazas que quieras escanear en un archivo y usar la opción --scan-list o -l. Escaneará los archivos listados, uno por línea:

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

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

Cuando se escanean múltiples archivos, yara-ttd ejecuta los escaneos uno tras otro, y no simultáneamente con hilos como la CLI original de yara.

Próximas funciones

  • libyarattd con bindings de Python
  • Integración con ttddbg e IDA: funcionalidad que carga IDA al final del escaneo en la posición de la coincidencia en tiempo y memoria
  • TTD: Seguir al hijo al bifurcar el proceso
Descargar herramienta