Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
yara-ttd — YARA-Regeln auf Time-Travel-Debugging-Traces anwenden | Kitploit
Tools/GitHubGitHub/airbus-cert/yara-ttd
Dynamische Analyse (Sandboxing)SpeicherforensikReverse EngineeringShellcodeMalware-AnalyseBinäranalyse
GitHubairbus-cert/yara-ttd

yara-ttd

YARA-Regeln auf Time-Travel-Debugging-Traces anwenden

Repository anzeigen
971322vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

yara-ttd - Der ultimative Erzfeind von Packern

Nutze YARA-Regeln auf Time-Travel-Debugging-Traces

  1. Demo
  2. Motivation
  3. Installation
  4. Verwendung
  5. Kommende Funktionen

Demo

Ein mit UPX gepacktes Binary

Ein einfaches Binary, das calc.exe startet und mit UPX gepackt wurde. yara-ttd findet den calc.exe-String im Modulspeicher während einer Thread-Erstellung.

UPX-Demo

Ein einfacher verschleierter Shellcode, der calc.exe ausführt

Das getestete Binary entschlüsselt einen Shellcode und führt ihn in einem neuen Thread aus. yara-ttd findet den calc.exe-String auf dem Heap, wenn die Funktion ntdll!NtCreateThreadEx gehookt wird.

Shellcode-Demo

Motivation

YARA

YARA ist ein leistungsfähiges Werkzeug zum Musterabgleich in Binärdateien.

YARA ist ein Tool, das darauf abzielt (aber nicht darauf beschränkt ist), Malware-Forschern zu helfen, Malware-Proben zu identifizieren und zu klassifizieren. Mit YARA kannst du Beschreibungen von Malware-Familien (oder was auch immer du beschreiben möchtest) auf der Grundlage von textuellen oder binären Mustern erstellen.

-- YARA-Dokumentation

Dank YARA können wir viel Zeit sparen, indem wir Malware-Proben in einer Pipeline automatisch klassifizieren, bevor wir sie analysieren.

Packer

Leider sind die meisten Malware-Proben mit verschiedenen Arten von Packern geschützt. Ein klassisches Runtime-Packer-Schema wie UPX oder VMProtect besteht darin, obfuskierten und manchmal verschlüsselten Code selbst zu entpacken und auszuführen. Daher kann YARA nicht mit gepackten Binärdateien umgehen, weil es im gepackten Code keine Übereinstimmungen findet.

Time Travel Debugging

Time Travel Debugging - oder TTD - ist eine Funktion des nativen Windows-Debuggers WinDbg.

Time Travel Debugging ist ein Tool, mit dem du eine Ablaufverfolgung deines Prozesses aufzeichnen kannst, während er ausgeführt wird, und sie später sowohl vorwärts als auch rückwärts abspielen kannst. Time Travel Debugging (TTD) kann dir helfen, Probleme leichter zu beheben, indem du deine Debugger-Sitzung „zurückspulen“ kannst, anstatt das Problem zu reproduzieren, bis du den Fehler findest.

-- Microsoft-Dokumentation

Für die Malware-Analyse ist TTD ein mächtiges Werkzeug, da es ermöglicht, die Ablaufverfolgung einer Malware in einer Sandbox aufzuzeichnen. Daher können wir die aufgezeichnete Datei außerhalb der Sandbox sicher abspielen und teilen, um die Malware zu analysieren. Außerdem ist TTD kein Debugger und wird daher von klassischen Anti-Debugging-Techniken wie PEB.BeingDebugged nicht erkannt. Für eine tiefere Analyse von TTD aus Sicherheitssicht wirf einen Blick auf diesen Artikel: Tiefer Einblick in das TTD-Ökosystem

Natürlich ist TTD eine proprietäre Software, und diese Arbeit wäre ohne die von commial entwickelten ttd-bindings nicht möglich.

yara-ttd

Die Idee hinter yara-ttd ist es, die von TTD aufgezeichneten Trace-Dateien mit yara selbst zu verwenden, um Packer zu besiegen.

Da yara die gepackte Binärdatei selbst nicht scannen kann, bietet yara-ttd eine Möglichkeit, die Trace-Datei zu analysieren, die alle Laufzeitinformationen einschließlich des Entpackvorgangs enthält.

Mit yara-ttd kannst du eine Reihe von Positionen in der Trace-Datei auswählen, an denen du den Speicher mit deinen YARA-Regeln scannen möchtest. So kannst du die gepackte Binärdatei mit deinen YARA-Regeln an jeder gewünschten Stelle hooken!

yara-ttd bietet verschiedene Speicher-Scan-Strategien, z. B. wenn Module geladen werden oder wenn virtueller Speicher zugewiesen wird – diese werden häufig genutzt, um den Malware-Code zu speichern, sobald er entpackt wurde.

Installation

Derzeit unterstützt yara-ttd nur Windows, da es mit der TTD-API interagieren muss.

Baue zuerst das Projekt:

mkdir build
cd build
cmake ..
cmake --build .

Füge dann die Dateien TTDReplay.dll und TTDReplayCPU.dll im selben Verzeichnis wie die ausführbare Datei hinzu. Diese DLL-Dateien findest du in %LocalAppData%\Microsoft\WindowsApps\Microsoft.WinDbg_X\TTD

Verwendung

Zuerst musst du eine Ablaufverfolgung (.run-Datei) deines Programms aufzeichnen. Eine detaillierte Anleitung zum Aufzeichnen einer TTD-Ablaufverfolgung findest du in diesem Tutorial.

Führe dann einfach Folgendes aus:

.\yara-ttd path\to\rule path\to\trace\file

Speicher-Modi

Es gibt drei Modi, um den Speicher zu scannen:

  • Modus 0 (Standard): Speicher geladener Module
  • Modus 1: Virtuell zugewiesener Speicher + Speicher geladener Module
  • Modus 2: Gesamter Speicher (kann sehr lange dauern)

Du kannst den Modus mit -m auswählen:

.\yara-ttd -m 1 path\to\rule path\to\trace\file

Wie beim offiziellen yara-CLI kannst du mit dem Flag -s die Details der Übereinstimmungen ausgeben, z. B. die Speicheradresse und die genaue Subregel, die übereinstimmte.

Hinweise zum Modus „Virtuell zugewiesener Speicher“:

Da TTD die Speicherstruktur nicht speichert, berechnet yara-ttd vor dem Scan die Struktur der Heap-Adressen für jede Zeitposition. Es wird eine Cache-Datei mit der Erweiterung .tmp im selben Pfad wie die Trace-Datei erstellt, um die Heap-Struktur zu speichern. Wenn du yara-ttd erneut mit einer Trace-Datei ausführen und die Heap-Struktur aus der erzeugten Cache-Datei laden möchtest, kannst du einfach Folgendes tun:

.\yara-ttd -m 1 --cache=path\to\cache\file path\to\rule path\to\trace\file
Hinweis zum Modus „Gesamter Speicher“:

Mit TTD können wir auf den gesamten Speicherbereich eines Prozesses zugreifen, der der minimalen und maximalen Adresse entspricht, die von GetSystemInfo zurückgegeben wird. Dennoch ist dieser Bereich in den meisten Fällen zu groß, um ohne Optimierung gescannt zu werden.

Zeit-Modi

Die standardmäßigen Zeitpositionen, die gescannt werden, sind:

  • Ausnahmeereignisse
  • Ereignisse beim Laden von Modulen
  • Ereignisse beim Erstellen von Threads

Mit den Flags -t und -f kannst du andere Positionen oder Funktionsaufrufe zum Scannen auswählen:

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

Das Flag -t erwartet TTD-Positionen in der Form major:minor (beide hexadezimal, ohne 0x). Das Flag -f erwartet eine Zeichenkette in der Form module_name!function_name.

Du kannst auch alle Funktionen, die du hooken möchtest, in einer Datei angeben:

> cat .\functions.txt
ntdll!FreeVirtualMemory
ntdll!NtCreateThreadEx

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

Mehrere Trace-Dateien scannen

Wenn du mehrere Dateien mit yara-ttd scannen möchtest, kannst du auch ein ganzes Verzeichnis scannen. yara-ttd ignoriert alle folgenden Erweiterungen im Ordner:

  • .tmp (Cache-Dateien, die von yara-ttd erzeugt werden)
  • .idx (Indexdateien, die von ttd erzeugt werden)
  • .err (Fehlerdateien, die von ttd erzeugt werden)
  • .out (Logdateien, die von ttd erzeugt werden)
Tool herunterladen