
Patchare shellcode codificati con ROP nei PE
Uno strumento scritto in C (Win32) per convertire qualsiasi shellcode in ROP e patcharlo in un dato eseguibile portatile (PE). Supporta solo PE target a 32 bit e il set di istruzioni x86.
Pubblicato a Blackhat USA 2015, "ROPInjector: Using Return Oriented Programming for Polymorphism and Antivirus Evasion" Maggiori informazioni:
ropinjector <file-da-infettare> <file-shellcode> <file-output>* [opzioni]*
(* indica argomenti opzionali)
e.g.
ropinjector.exe firefox.exe revshell.txt
file-da-infettare : qualsiasi PE a 32 bit, non compresso
file-shellcode : il file shellcode da patchare nel file PE
file-output (opzionale) : Il nome del file di output. Se non specificato, ROPInjector sceglierà un nome di file adatto che indica il tipo di iniezione eseguita.
opzioni :
text Forza la lettura del file shellcode come file di testo. Lo shellcode in forma testuale deve essere nel formato \xHH\xHH\xHH.
norop Non trasformare lo shellcode in ROP.
nounroll Non srotolare i SIBs.
noinj Non iniettare gadget mancanti.
getpc Non sostituire i costrutti getPC nello shellcode.
entry Fai eseguire lo shellcode prima del codice PE originale. Senza questa opzione, ROPInjector proverà a hookare le chiamate a ExitProcess(), exit() e simili, in modo che lo shellcode venga eseguito per ultimo, subito prima dell'uscita dal processo.
-d<secs> Numero di secondi per Sleep() prima di eseguire lo shellcode. Quando questa opzione è specificata, anche 'entry' viene utilizzata implicitamente.
ROPInjector produrrà alcune statistiche delimitate da virgole alla fine. Queste sono (in ordine di apparizione):