Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
yara-ttd — Usa le regole YARA sulle tracce di Time Travel Debugging | Kitploit
Strumenti/GitHubGitHub/airbus-cert/yara-ttd
Analisi Dinamica (Sandboxing)Memory ForensicsReverse EngineeringShellcodeAnalisi MalwareAnalisi di Binari
GitHubairbus-cert/yara-ttd

yara-ttd

Usa le regole YARA sulle tracce di Time Travel Debugging

Vedi Repository
9713293 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

yara-ttd - Il nemico definitivo dei packer

Usa le regole YARA sulle tracce di Time Travel Debugging

  1. Demo
  2. Motivazioni
  3. Installazione
  4. Utilizzo
  5. Funzionalità in arrivo

Demo

Un binario impacchettato con UPX

Un semplice binario che avvia calc.exe, impacchettato con UPX. yara-ttd trova la stringa calc.exe nella memoria del modulo, durante la creazione di un thread.

Demo Upx

Uno shellcode offuscato che esegue calc.exe

Il binario testato decripta uno shellcode e lo esegue in un nuovo thread. yara-ttd riesce a trovare la stringa calc.exe nell'heap agganciandosi alla funzione ntdll!NtCreateThreadEx.

Demo Shellcode

Motivazioni

YARA

YARA è un potente strumento di pattern matching per binari.

YARA è uno strumento pensato (ma non solo) per aiutare i ricercatori di malware a identificare e classificare i campioni di malware. Con YARA puoi creare descrizioni di famiglie di malware (o di qualunque cosa tu voglia descrivere) basate su pattern testuali o binari.

-- Documentazione YARA

Grazie a YARA, possiamo risparmiare molto tempo classificando automaticamente i campioni di malware in una pipeline prima di analizzarli.

Packer

Purtroppo, la maggior parte dei campioni di malware è protetta con diversi tipi di packer. Uno schema classico di runtime-packer come UPX o VMProtect consiste nell'auto-estrarre ed eseguire codice offuscato e talvolta cifrato. Di conseguenza, YARA non può gestire i binari impacchettati perché non troverà alcuna corrispondenza nel codice impacchettato.

Time Travel Debugging

Time Travel Debugging - o TTD - è una funzionalità del debugger nativo di Windows, WinDbg.

Time Travel Debugging è uno strumento che ti permette di catturare una traccia del tuo processo mentre viene eseguito e di riprodurla in seguito sia in avanti che all'indietro. Time Travel Debugging (TTD) può aiutarti a risolvere i problemi più facilmente permettendoti di "riavvolgere" la sessione del debugger, invece di dover riprodurre il problema fino a trovare il bug.

-- Documentazione Microsoft

Per l'analisi del malware, TTD è uno strumento potente perché consente di registrare la traccia di un malware in una sandbox. In questo modo, possiamo riprodurre e condividere in sicurezza il file registrato al di fuori della sandbox per analizzare il malware. Inoltre, TTD non è un debugger, quindi non verrà rilevato dalle classiche tecniche anti-debug come PEB.BeingDebugged. Per un'analisi più approfondita di TTD dal punto di vista della sicurezza, consulta questo articolo: Approfondimento sull'ecosistema TTD

Ovviamente, TTD è un software proprietario, e questo lavoro non potrebbe esistere senza i ttd-bindings sviluppati da commial.

yara-ttd

L'idea alla base di yara-ttd è usare i file di traccia registrati da TTD con yara stesso per sconfiggere i packer.

Poiché yara non può scansionare il binario impacchettato di per sé, yara-ttd fornisce un modo per analizzare il file di traccia che contiene tutte le informazioni di runtime, incluso il processo di unpacking.

Con yara-ttd, puoi selezionare un insieme di posizioni nel file di traccia in cui vuoi scansionare la memoria con le tue regole yara. Quindi, puoi agganciare il binario impacchettato dove vuoi con le tue regole yara!

yara-ttd fornisce diverse strategie di scansione della memoria, come quando i moduli vengono caricati o quando viene allocata memoria virtuale, che sono spesso usate per memorizzare il codice del malware una volta spacchettato.

Installazione

Per ora, yara-ttd supporta solo Windows, perché deve interagire con l'API TTD.

Prima compila il progetto:

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

Quindi, aggiungi i file TTDReplay.dll e TTDReplayCPU.dll nella stessa directory dell'eseguibile. Troverai questi file DLL in %LocalAppData%\Microsoft\WindowsApps\Microsoft.WinDbg_X\TTD

Utilizzo

Prima devi registrare una traccia (file .run) del tuo programma. Per un aiuto dettagliato su come registrare una traccia TTD, consulta questo tutorial.

Quindi esegui semplicemente:

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

Modalità di memoria

Ci sono tre modalità per scansionare la memoria:

  • Modalità 0 (predefinita): Memoria dei moduli caricati
  • Modalità 1: Memoria allocata virtualmente + Memoria dei moduli caricati
  • Modalità 2: Memoria completa (può essere molto lunga)

Puoi selezionare la modalità con -m:

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

Come la CLI ufficiale di yara, puoi usare il flag -s per stampare i dettagli delle corrispondenze, come l'indirizzo di memoria e la sottoregola esatta che ha trovato una corrispondenza.

Note sulla modalità Virtual Allocated:

Poiché TTD non memorizza la struttura della memoria, yara-ttd calcola prima della scansione la struttura degli indirizzi dell'heap per ogni posizione temporale. Creerà un file di cache con estensione .tmp nello stesso percorso del file di traccia per memorizzare la struttura dell'heap. Se vuoi rieseguire yara-ttd su una traccia e caricare la struttura dell'heap dal file di cache generato, puoi semplicemente fare:

.\yara-ttd -m 1 --cache=path\to\cache\file path\to\rule path\to\trace\file
Nota sulla modalità Full Memory:

Possiamo accedere all'intero intervallo di memoria di un processo con TTD, che corrisponde all'indirizzo minimo e massimo restituito da GetSystemInfo. Tuttavia, nella maggior parte dei casi, questo intervallo è troppo ampio per essere scansionato senza alcuna ottimizzazione.

Modalità temporali

Le posizioni temporali predefinite che verranno scansionate sono:

  • Eventi di eccezione
  • Eventi di caricamento moduli
  • Eventi di creazione thread

Con i flag -t e -f, puoi selezionare altre posizioni o chiamate di funzione da scansionare:

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

Il flag -t si aspetta posizioni TTD nella forma major:minor (entrambe in esadecimale, senza 0x). Il flag -f si aspetta una stringa nella forma module_name!function_name.

Puoi anche aggiungere tutte le funzioni che vuoi agganciare in un file:

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

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

Scansione di più file di traccia

Se hai più file da scansionare con yara-ttd, puoi anche scansionare un'intera directory. yara-ttd ignorerà tutte le seguenti estensioni nella cartella:

  • .tmp (file di cache generati da yara-ttd)
  • .idx (file di indice generati da ttd)
  • .err (file di errore generati da ttd)
  • .out (file di log generati da ttd)

Nell'esempio seguente, yara-ttd scansionerà solo i file trace01.run e trace02.run.

> dir .\traces
trace01.run
trace01.out
trace01.idx
trace02.run
trace01.run.err
trace01.tmp

> .\yara-ttd path\to\rule .\traces
Scarica lo strumento