
Dropper C++ à auto-injection basé sur diverses techniques d'évasion EDR.
Ce projet consiste en un dropper auto-injectant en C++ simple, axé sur un POC de contournement d'EDR. Pour l'implémenter, j'ai combiné l'utilisation de Windows Thread Pooling pour masquer la pile d'appels et l'utilisation de indirect syscalls pour éviter le hooking dans la NTDLL.
2023-10-08-23-22-35-Trim
image
image
image
image
Comme on peut le voir sur les images, à partir du code de Cordyceps, un saut est effectué vers ntdll pour utiliser l'une des instructions syscall. Cela devrait être considéré comme une action malveillante ; cependant, lors de l'exécution du retour dans ntdll, on revient au code de tpWorker, qui se trouve dans ntdll. Ainsi, du point de vue de l'antivirus (AV), ntdll semblerait faire un appel vers une autre partie de ntdll, ce qui n'est pas considéré comme malveillant.
nasm -f win64 .\Assembly.asm -o .\Assembly.obj
g++ -o poc.exe main.cpp Assembly.obj
https://0xdarkvortex.dev/hiding-in-plainsight/
https://redops.at/en/blog/direct-syscalls-vs-indirect-syscalls
https://captmeelo.com/redteam/maldev/2022/05/10/ntcreateuserprocess.html
https://klezvirus.github.io/RedTeaming/AV_Evasion/StackSpoofing/
https://medium.com/@sruthk/cracking-assembly-fastcall-calling-convention-in-x64-c6d77b51ea86