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
Packer-payload-EntropyReducer — Riduci l'entropia e offusca il tuo payload con liste collegate serializzate | Kitploit
Strumenti/GitHubGitHub/gmh5225/packer-payload-entropyreducer
Strumenti di Crittografia/DecrittografiaGenerazione di PayloadShellcodeAnalisi MalwareRed TeamingSviluppo Payload
GitHubgmh5225/packer-payload-entropyreducer

Packer-payload-EntropyReducer

Riduci l'entropia e offusca il tuo payload con liste collegate serializzate

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
Vedi Repository
55813 anni faNon ancora revisionato

EntropyReducer: Riduci L'Entropia Del Tuo Payload E Offuscalo Con Liste Collegate Serializzate


Come Funziona

L'algoritmo EntropyReducer è determinato dai valori di BUFF_SIZE e NULL_BYTES. Di seguito è riportato come EntropyReducer organizzerebbe il tuo payload se BUFF_SIZE fosse impostato a 4 e NULL_BYTES a 2.

image


Algoritmo di Offuscamento

  • EntropyReducer verifica innanzitutto se il payload grezzo di input ha una dimensione che sia multipla di BUFF_SIZE; in caso contrario, lo riempie affinché lo sia.
  • Successivamente prende ogni blocco di BUFF_SIZE dal payload e ne crea un nodo di lista collegata, utilizzando la funzione InitializePayloadList, inizializzando il payload come lista collegata.
  • Il nodo creato avrà un buffer vuoto di dimensione NULL_BYTES, che verrà utilizzato per ridurre l'entropia
  • A questo punto, sebbene EntropyReducer abbia completato il suo compito riducendo l'entropia del payload, non si ferma qui. Continua poi a randomizzare l'ordine di ciascun nodo nella lista collegata, scomponendo l'ordine del payload grezzo. Questo passaggio viene eseguito tramite un Algoritmo Merge Sort implementato attraverso la funzione MergeSort.
  • La lista collegata ordinata è in ordine casuale perché il valore in base al quale la lista collegata viene ordinata è il valore XOR dei primi tre byte del payload grezzo; questo valore determina la sua posizione nella lista collegata riorganizzata, questo passaggio può essere visto qui
  • Poiché salvare una lista collegata su file è impossibile a causa del fatto che è collegata tramite puntatori, siamo costretti a serializzarla.
  • La serializzazione della lista collegata generata viene eseguita tramite la funzione Obfuscate qui.
  • Successivamente, i dati serializzati sono pronti per essere scritti nel file di output.

Algoritmo di Deoffuscamento

  • Poiché l'ultimo passaggio nell'Algoritmo di Offuscamento era la serializzazione della lista collegata, la prima cosa da fare qui è deserializzare il payload offuscato, generando da esso una lista collegata; questo passaggio viene eseguito qui nella funzione Deobfuscate.
  • Il passaggio successivo è ordinare la lista collegata utilizzando l'Id del nodo, cosa che viene fatta usando lo stesso Algoritmo Merge Sort utilizzato in precedenza.
  • Ora la lista collegata è nell'ordine corretto per ricostruire i byte del payload come dovrebbero essere. Quindi rimuoviamo semplicemente i byte originali del payload da ciascun nodo, come fatto qui.
  • L'ultimo passaggio è liberare i nodi allocati, cosa che viene fatta qui.

Utilizzo

  • EntropyReducer legge semplicemente il file del payload grezzo dalla riga di comando e scrive la versione offuscata con lo stesso nome del file prefissato da ".ER".
  • La dimensione del payload offuscato finale varia in base ai valori di BUFF_SIZE e NULL_BYTES. Tuttavia, può essere determinata utilizzando la seguente equazione
FinalSize = ((OriginalSize + BUFF_SIZE - OriginalSize % BUFF_SIZE ) / BUFF_SIZE) * (BUFF_SIZE + NULL_BYTES + sizeof(INT))

Il progetto PoC in questo repository viene utilizzato per eseguire il file ".ER" generato come esempio di deserializzazione e deoffuscamento.


Includi nei tuoi progetti

Tutto ciò che devi fare è aggiungere i file EntropyReducer.c e EntropyReducer.h al tuo progetto e chiamare la funzione Deobfuscate. Puoi consultare PoC/main.c come riferimento.


Esempio di output

In questo esempio, BUFF_SIZE è stato impostato a 3 e NULL_BYTES a 1.

  • Il payload grezzo, primo chunk del payload (FC 48 83)

image

  • Lo stesso chunk del payload, ma a un offset diverso

image


Risultato

  • Lo shellcode x64 calc generato da metasploit ha un'entropia di 5.883, visualizzata tramite pestudio.

image

  • Lo stesso file, cifrato con AES, ottiene un punteggio di entropia di 7.110.

image

  • Risultato quasi identico anche con l'algoritmo RC4; 7.210

image

  • Utilizzando EntropyReducer invece, si ottiene un punteggio di entropia persino inferiore a quello del payload grezzo originale; 4.093

image


L'algoritmo Merge Sort è tratto da c-linked-list.

Scarica lo strumento