Technique d'injection de shellcode. Fournie sous forme d'en-tête C++, de programme Rust autonome ou de bibliothèque.
Il s'agit d'une toute nouvelle technique d'injection de shellcode pour contourner les antivirus et les EDR. Cette technique est inspirée du Module Stomping et présente certaines similitudes. À ce jour (23-01-2022), même hollows-hunter ne la détecte pas.
Le plus grand avantage de cette technique est qu'elle n'écrase pas un module ou un exécutable entier, mais juste une seule fonction, et le processus cible peut toujours utiliser toute autre fonction du module cible.
L'inconvénient est que cela ne fonctionnera pas pour toutes les fonctions dans la nature (mais cela fonctionnera pour la plupart d'entre elles). L'explication exacte se trouve dans mon blog : The Good, The Bad And The Stomped Function.
REMARQUE : Il est possible que l'antivirus détecte ceci ; si la signature est celle de msfvenom/metasploit, ce n'est pas grave ! Il vous suffit de changer le shellcode ou de le crypter.
MISE À JOUR : Apparemment, ce n'est pas la première preuve de concept disponible et RastaMouse a écrit un article de blog qui fait quelque chose de similaire en C#.
Vous pouvez soit inclure l'en-tête dans votre programme comme ceci :
#include "functionstomping.hpp"
int main() {
// Just get the pid in any way and pass it to the function.
DWORD pid = 3110;
FunctionStomping(pid);
return 0;
}
Ou utiliser le programme Rust :
cd functionstomping
cargo b
functionstomping.exe <pid>
Après avoir exécuté ce programme, vous DEVEZ appeler la fonction depuis le processus distant ! (Si vous avez utilisé la fonction par défaut CreateFile, vous devez l'appeler depuis le processus distant !).
Actuellement, le shellcode à exécuter est simplement destiné à ouvrir une calculatrice, mais tout ce que vous avez à faire est de remplacer unsigned char shellcode[] par votre shellcode. J'ai utilisé C++ 17 et VS2019 pour compiler le programme avec l'en-tête C++ et la version 2021 de Rust pour compiler le programme Rust (vous pouvez voir les dépendances dans le fichier Cargo.toml).

Je ne suis en aucun cas responsable de tout type de dommage causé à votre ordinateur ou programme suite à l'utilisation de ce projet. J'accepte volontiers les contributions, faites une pull request et je la réviserai !