
Selbstinjizierender C++-Dropper auf Basis verschiedener EDR-Evasion-Techniken.
Dieses Projekt besteht aus einem einfachen, selbstinjizierenden C++-Dropper, der sich auf einen POC zur EDR-Evasion konzentriert. Für die Implementierung habe ich Windows Thread Pooling zum Verbergen des Callstacks und indirect syscalls zur Vermeidung von Hooking in der NTDLL kombiniert.
2023-10-08-23-22-35-Trim
image
image
image
image
Wie in den Bildern zu sehen ist, führt der Cordyceps-Code einen Sprung zu ntdll aus, um eine der Syscall-Anweisungen zu nutzen. Dies sollte als bösartige Aktion betrachtet werden; bei der Ausführung der Rückkehr in ntdll kehren wir jedoch zum Code von tpWorker zurück, der sich innerhalb von ntdll befindet. Somit würde aus Sicht des Antivirus (AV) ntdll scheinbar einen Aufruf an einen anderen Teil von ntdll tätigen, was nicht als bösartig angesehen wird.
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