
Packt C#-Assemblies, PE-Dateien oder Shellcode in verschlüsselte Nim-Binärdateien mit erweiterten Verschleierungsfunktionen, einschließlich AMSI/ETW-Bypass, Sandbox-Erkennung und mehreren Injektionstechniken für Red-Team-Operationen.
Dieses Tool wurde nach einem Vortrag auf der x33fcon veröffentlicht. Es war mein privates Hauptprojekt von 2021 - 2024 und gilt nun als veraltet und wird nicht mehr gewartet. Erwarten Sie hier keine Fehlerbehebungen oder Feature-Updates von meiner Seite. Stattdessen wird RustPack nun als kommerzielle und kontrollierte Version für geprüfte Red Teams und Pentester weiterentwickelt, die noch mehr Funktionen bietet und gleichzeitig viel OPSec-sicherer ist.
Dieser Packer kann verwendet werden, um jede C#-Assembly, PE-Datei oder Shellcode in ein Nim-Binary zu packen. Er verschlüsselt die Ziel-Payload, erstellt den entsprechenden Nim-Quellcode gemäß den angegebenen Argumenten und kompiliert ihn zu einem Nim-Binary.
Ein Video – falls gewünscht – finden Sie hier: https://youtu.be/0PwIn3Nxmgo
Git muss installiert sein, damit Nim/Nimble ordnungsgemäß funktioniert.
Getestet mit Nim 2.2.10 und dem MinGW-w64 GCC 11.1.0-Bundle, das auf der Nim-Windows-Downloadseite verlinkt ist. Neuere Nim-Versionen verwenden standardmäßig eine hohe PE-Image-Basis unter Windows, was -static-Links mit relocation truncated to fit: R_X86_64_32S against .bss bricht; der Packer erzwingt jetzt -Wl,--image-base=0x10000, um statische Builds funktionsfähig zu halten, daher sollte jeder MinGW-w64-11.x-Build funktionieren. Nur x64 wird hier unterstützt – x86/--x86/--wow64 wird nicht gewartet.
nim-2.2.10_x64.zipmingw64.7z (verlinkt auf der Nim-Windows-Installationsseite)Expand-Archive – es lässt lib\system.nim aufgrund der Namensgleichheit mit dem Verzeichnis lib\system\ stillschweigend aus). Das Nim-Zip enthält bin\7zG.exe, mit dem Sie MinGW extrahieren können.<nim>\bin und <mingw64>\bin zu Ihrer %PATH%-Umgebungsvariable hinzu. Abmelden/Anmelden (oder Shell neustarten), damit die Änderung wirksam wird.
Bekannte funktionierende Versionen (Stand Nim 2.2.10): nimcrypto 0.6.0, docopt 0.7.1, ptr_math 0.3.0, winim 3.9.4, nim-strenc (HEAD — das Repo hat keine getaggten Releases).
Wenn Sie den LLVM-Obfuscator unter Windows verwenden möchten, verwenden Sie die eingebettete modifizierte Denim-Version von denim. Installieren Sie es via denim\denim.exe setup.
Z. B. auf Kali / Debian. Der Packer erforderte historisch nim 1.6.8 + mingw-64 8.0.0-1; mit der jetzt integrierten statischen Linkumgehung --image-base=0x10000 sollten neuere Toolchains ebenfalls funktionieren. Der Windows-Build wird aktiv getestet – Linux ist auf Best-Effort-Basis.```bash
apt-get install nim mingw-w64
nimble install [email protected] docopt ptr_math winim https://github.com/S3cur3Th1sSh1t/nim-strenc/
Falls `--hellsgate` auf einem neueren mingw-w64 nicht assembliert werden kann, auf `mingw-64=8.0.0-1` downgraden.
Installiere donut via `pip3 install donut-shellcode`. `denim` kann nicht von Unix aus verwendet werden, daher ist eine Obfuskation via LLVM hier nicht möglich. Gleiches gilt für Callobfuscator.
Kompiliere den Packer via `nim c -d:noRES NimSyscallLoader.nim`. Fertig. Wenn du nicht `-d:noRES` verwendest, erhältst du möglicherweise den folgenden Fehler:```
/username/.nimble/pkgs/winim-3.7.1/winim/lib/winim64.res:(.rsrc+0x48): dangerous relocation: collect2: fatal error: ld terminated with signal 11 [Speicherzugriffsfehler]
compilation terminated.
Muss einmal gebaut werden (dauert beim ersten Mal etwas, spätere Builds werden zwischengespeichert).
sudo docker build . -t nimsyscallloader
Dann führen Sie den Packer aus mit:
sudo docker run -v $(pwd):/shared nimsyscallloader <ARGUMENTS> --output=/shared/packed.exe
wobei $(pwd) das Verzeichnis auf dem Host-System ist, das mit dem Container geteilt wird, d.h. das Verzeichnis, in dem die zu verschlüsselnden Dateien liegen sollen und in dem die Ausgabe gespeichert wird.
Wenn Sie Code-Signing-Zertifikate über LimeLighter nutzen möchten, benötigen Sie außerdem die folgenden installierten Dinge in Ihrem %PATH%: openssl - (für Windows) zum Beispiel von hier osslsigncode - zum Beispiel von hier
Ich werde keinen Support für Probleme in den hier verwendeten Drittanbieter-Tools geben. Bitte eröffnen Sie daher ein Issue in den entsprechenden Repositories, wenn Sie Probleme damit haben. Verwendete Drittanbieter-Tools:
Sie können entweder meine vorkompilierten Binärdateien verwenden oder sie natürlich selbst aus den obigen Links kompilieren.
Ein Video - falls Sie das bevorzugen - finden Sie hier: https://youtu.be/UHaIgdzqHDA
Ich habe auch kurze Videos für einige Funktionen hinzugefügt, da dies gewünscht wurde:
Caro-Kann:
ThreadlessInject Feature:
Module Stomping Feature:
shellcodeURL Feature:
stegoFile Feature:
shellcodeFile Feature:
Ruy Lopez für lokale Prozesse
Shellcode Output Format
Assembly Output Feature
Und ich habe ein öffentliches Video erstellt, das zeigt, wie man die ThreadlessInject-Technik an andere Prozesse als den Standard anpassen kann:
https://youtu.be/BYuAUYQcI-E``` NimSyscall_Loader v 2.2