
C++ Shellcode-Injektionstechnik unter Verwendung von XOR-Verschlüsselung und UUID-String-Konvertierung, um Windows Defender zu umgehen, mit Funktionsaufruf-Verschleierung und Speicherausführung via VirtualAlloc und EnumChildWindows.
Eine weitere Shellcode-Injektionstechnik mit C++, die versucht, Windows Defender mit XOR-Verschlüsselungszauberei und UUID-Strings Wahnsinn zu umgehen :).
Generieren Sie zunächst einen Payload im Binärformat (entweder mit Havoc, CobaltStrike oder msfvenom); zum Beispiel mit msfvenom so (der von mir verwendete Payload dient illustrativen Zwecken, Sie können jeden beliebigen Payload verwenden):
msfvenom -p windows/messagebox -f raw -o shellcode.bin
Konvertieren Sie dann den Shellcode (im Binär-/Raw-Format) mit dem Python3-Skript bin_to_uuid.py in ein UUID-String-Format:
./bin_to_uuid.py -p shellcode.bin -o uuid.txt
Verschlüsseln Sie die UUID-Strings in der uuid.txt mit dem Python3-Skript xor_encryptor.py mittels XOR:
./xor_encryptor.py uuid.txt > xor_crypted_out.txt
Kopieren Sie das C-Style-Array aus der Datei xor_crypted_out.txt und fügen Sie es in die C++-Datei als Array von unsigned char ein, d.h. unsigned char payload[]{your_output_from_xor_crypted_out.txt}
Diese Shellcode-Injektionstechnik umfasst die folgenden aufeinanderfolgenden Schritte:
VirtualAlloc reserviert.xor-Schlüsselwert.UuidFromStringA, um UUID-Strings in ihre binäre Darstellung zu konvertieren und im zuvor reservierten Speicher zu speichern. Dies dient dazu, die Verwendung verdächtiger APIs wie WriteProcessMemory oder memcpy zu vermeiden.EnumChildWindows, um den zuvor in den Speicher geladenen Payload (in Schritt 1) auszuführen.memcpy oder WriteProcessMemory, die bekanntermaßen bei AVs/EDRs Alarm auslösen. Dieses Programm nutzt die Windows-API-Funktion UuidFromStringA, die sowohl zum Decodieren von Daten als auch zum Schreiben in den Speicher verwendet werden kann ( Ist das nicht großartig, Leute? Und sagt bitte nicht "NEIN!" :) ).xor-Schlüssel (Zeile 85) nach Ihren Wünschen ändern. Dies muss auch im Python3-Skript ./xor_encryptor.py durch Ändern der KEY-Variablen erfolgen. Die Schlüssel müssen übereinstimmen!executable filename (Zeile 90) in Ihren Dateinamen ändern.mingw wurde verwendet, aber Sie können jeden beliebigen Compiler verwenden. :)make


Die Binärdatei wurde am 01.08.2022 mit antiscan.me gescannt.

https://research.nccgroup.com/2021/01/23/rift-analysing-a-lazarus-shellcode-execution-method/