Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
thematrix — un caricatore di PE e un tracciatore di API di Windows. Utile nell'analisi di malware. | Kitploit
Strumenti/GitHubGitHub/enkomio/thematrix
Analisi Dinamica (Sandboxing)Reverse EngineeringDebuggerAnalisi MalwareSicurezza delle API
GitHubenkomio/thematrix

thematrix

un caricatore di PE e un tracciatore di API di Windows. Utile nell'analisi di malware.

Vedi Repository
143193 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

TheMatrix

Questo progetto è stato creato per facilitare il processo di analisi dei malware. L'obiettivo è creare un binario attivatore il cui scopo è caricare un binario definito dall'utente e monitorare l'esecuzione utilizzando hook delle API Win32. I dati rilevanti vengono quindi salvati su disco. Il codice supporta binari sia x86 che x64.

Documentazione

Ho scritto un post sul blog che spiega come funziona: http://antonioparata.blogspot.com/2022/06/thematrix-process-inspection-tool-aimed.html

Utilizzo

Per monitorare un nuovo binario è necessario creare un attivatore. L'attivatore caricherà e monitorerà un binario inserito dall'utente. Per creare un attivatore utilizzare l'opzione -add. Un esempio di utilizzo è il seguente:

root@kitploit:~
c:\>TheMatrix.exe -add c:\path\to\my\binary.dll
Activator file created
c:\>regsvr32.exe TheMatrix.build.dll

Questo comando creerà un nuovo file PE che rappresenta l'attivatore. L'attivatore avrà lo stesso formato (DLL o EXE) del binario di input.

Una volta creato, puoi semplicemente eseguirlo nel modo che preferisci (per i DLL il modo suggerito è utilizzare l'utility rundll32.exe).

Durante l'esecuzione, i dati generati dalle funzioni monitorate vengono salvati in ./Desktop/thematrix/[ID processo]/ (questo dipende dalla funzione log_data implementata in utility.c).

Limitazioni:

  • Il progetto modifica la struttura PEB.Ldr per permettere a specifiche API di funzionare correttamente (come GetModuleHandle, ...). Se esegui l'attivatore su un sistema WOW64 (binario x86 su un OS x64), solo la PEB.Ldr x86 viene modificata (i processi WOW64 hanno entrambi PEB x86 e x64). Quando la CPU passa a x64, le API native di Windows (ntdll.dll) utilizzeranno la versione x64 di PEB.Ldr. Ciò implica che l'attivatore potrebbe non funzionare correttamente. Per essere sicuri che la versione x86 funzioni, esegui il binario su un sistema operativo x86.

  • Il file appena creato non esporta tutti i metodi e non contiene le risorse del file originale. Questo può causare possibili errori, ad esempio se una DLL chiama GetModuleFileName -> LoadLibrary -> FindResource. Questo percorso di codice caricherà la DLL originale TheMatrix che non contiene la risorsa desiderata.

Personalizzazione

Aggiungere nuove funzioni al monitor è un compito facile, dai un'occhiata al file hooks.c per alcuni esempi di hook di Kernel32.dll e bcrypt.dll. Per aggiungere un nuovo hook è sufficiente chiamare la funzione hook_add. Di seguito è mostrato un esempio di creazione di un hook:

root@kitploit:~
LPVOID __stdcall hook_BCryptEncrypt(BCRYPT_KEY_HANDLE hKey, PUCHAR pbInput, ULONG cbInput, VOID* pPaddingInfo, PUCHAR pbIV, ULONG cbIV, PUCHAR pbOutput, ULONG cbOutput, ULONG* pcbResult, ULONG dwFlags)
{
   // save plain data
   if (cbInput) {
   	char name[MAX_PATH] = { 0 };
   	snprintf(name, sizeof(name), "BCryptEncrypt_%llx_%d", (uint64_t)pbInput, cbInput);
   	log_data(cbInput, pbInput, name);
   }	

   LPVOID ret = call_original(
   	hKey,
   	pbInput,
   	cbInput,
   	pPaddingInfo,
   	pbIV,
   	cbIV,
   	pbOutput,
   	cbOutput,
   	pcbResult,
   	dwFlags
   );
   return ret;
}
 
hook_add("Bcrypt.dll", "BCryptEncrypt", hook_BCryptEncrypt);

La funzione deve avere la stessa firma della funzione hookata. La funzione call_original viene utilizzata per chiamare la funzione originale. È sufficiente chiamare questa funzione con i parametri di input della funzione originale, il framework farà tutto il lavoro pesante per te per chiamare la funzione corretta ;) La chiamata alla funzione call_original deve essere effettuata nello stesso thread che esegue l'hook, altrimenti il processo si bloccherà.

TODO

  • Hook CreateProcessInternalW invece di CreateProcessW
  • Modificare il PEB64 quando il processo viene eseguito in WOW64
Scarica lo strumento