
Shell WinRM nativa in Nim con NTLM, Kerberos, trasferimento file, helper in memoria e reporting AD/OPSEC.
Client shell WinRM nativo scritto in Nim
Versione 1.2.0 · Autore Chokri Hammedi (blue0x1) · Licenza MIT
nimrm è destinato ad amministrazione legittima, test di sicurezza e ricerca su sistemi di tua proprietà o per i quali disponi di esplicita autorizzazione all'accesso. L'autore non è responsabile per uso improprio o danni causati da questo strumento.
nimrm fornisce una shell WinRM compatta e veloce con utili funzioni di autenticazione, esecuzione di comandi, trasferimento e reportistica. È compilato come binario Nim nativo senza dipendenze da pacchetti Nim.
| Area | Supporto |
|---|---|
| Autenticazione | Password NTLM, hash NTLM, Kerberos tramite KRB5CCNAME |
| Trasporto WinRM | HTTP, HTTPS/TLS, porta personalizzata |
| Shell | PowerShell interattivo, prefisso CMD, modalità comando one-shot, autocompletamento di comandi e percorsi locali |
| Trasferimenti | Upload/download di file, trasferimento ricorsivo di directory, relay di file e directory tra sessioni remote |
| In-memory | Import di script PowerShell, esecuzione di assembly .NET gestiti |
| Reportistica | Contesto AD/dominio, postura di logging e auditing |
| Affidabilità | Wrapping dei messaggi Kerberos, gestione di reset/retry del trasporto |
| Componente | Requisito |
|---|---|
| Compilazione | Nim >= 1.6.0 |
| Kerberos | libgssapi_krb5.so.2 su Linux o libgssapi_krb5.dylib su macOS |
| Build TLS | OpenSSL e -d:ssl |
| Target | WinRM raggiungibile sulla porta selezionata |
Nimble:
nimble install nimrm
Scarica l'ultima release:
curl -L -o nimrm https://github.com/blue0x1/nimrm/releases/latest/download/nimrm
chmod +x nimrm
Binario di release per Windows:
Invoke-WebRequest -Uri https://github.com/blue0x1/nimrm/releases/latest/download/nimrm.exe -OutFile nimrm.exe
Pacchetto Debian:
curl -L -o nimrm_1.2.0_amd64.deb https://github.com/blue0x1/nimrm/releases/latest/download/nimrm_1.2.0_amd64.deb
sudo dpkg -i nimrm_1.2.0_amd64.deb
BlackArch:
sudo pacman -S nimrm
Il PKGBUILD di BlackArch segue l'ultimo commit git upstream, quindi le nuove release raggiungono gli utenti BlackArch al successivo aggiornamento di sistema. Se nimrm è già installato, aggiornalo con:
sudo pacman -Syu nimrm
Compilazione dai sorgenti:
git clone https://github.com/blue0x1/nimrm.git
cd nimrm
make linux
make linux
make ssl
make windows
Il target Windows compila un singolo eseguibile autonomo con supporto SSL in dist/windows/nimrm.exe. Il launcher è scritto in Nim e incorpora il core WinRM generato più le DLL runtime richieste da vendor/windows-runtime/, le estrae in una directory runtime temporanea all'esecuzione, quindi esegue il core con gli stessi argomenti. Questo supporta WinRM su HTTP semplice a meno che non venga passato --tls / --ssl, e WinRM su HTTPS quando TLS è abilitato. Il runtime OpenSSL incorporato utilizza:
libssl-3-x64.dll
libcrypto-3-x64.dll
La modalità Kerberos (-k / --kerb) viene caricata in modo lazy su Windows, così l'eseguibile può avviarsi anche quando Kerberos non è utilizzato. La build Windows incorpora il runtime MIT Kerberos/GSSAPI usato dalla modalità Kerberos.
Compilazione manuale:
nim c -d:release --opt:speed -o:nimrm nimrm.nim
nimrm è progettato per rimanere veloce utilizzando un binario Nim nativo, un runspace WinRM persistente, logica di trasferimento a chunk e rendering compatto dell'avanzamento.
| Operazione | Implementazione |
|---|---|
| Upload | Scritture Base64 a chunk con retry adattivo su envelope di grandi dimensioni |
| Download | Chunk Base64 in streaming con tracciamento dell'avanzamento e percorso rapido per file piccoli |
| Relay tra sessioni remote | Legge da una sessione WinRM e scrive in un'altra attraverso la memoria del controller senza scrivere il file su disco locale |
| Trasferimento di directory | Enumerazione ricorsiva dei file usando lo stesso percorso di trasferimento a chunk |
| Esecuzione di comandi | Riutilizza la shell/runspace WinRM attiva invece di riconnettersi per ogni comando |
Password NTLM:
./nimrm -T 192.168.1.10 -A 'CORP\administrator' -P 'Password123'
NTLM pass-the-hash:
./nimrm -T 192.168.1.10 -A 'CORP\user' -N aad3b435b51404eeaad3b435b51404ee:0123456789abcdef0123456789abcdef
Kerberos:
KRB5CCNAME=FILE:/tmp/user.ccache ./nimrm -k -T dc01.corp.local -Z CORP.LOCAL
Forza la cifratura dei messaggi NTLM su HTTP:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --seal
Porta personalizzata:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -p 5985
Comando one-shot:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -c 'whoami'
Salta la verifica del certificato TLS (certificati self-signed):
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --tls --insecure
| Opzione | Descrizione |
|---|---|
-T, --target | IP o hostname di destinazione |
-A, --account | Nome utente: user, user@domain, o DOMAIN\user |
-P, --secret | Password NTLM |
-p, --port | Porta WinRM |
-N, --nt-proof | Hash NT o hash LM:NT |
-Z, --krb-zone | Override del realm Kerberos |
-K, --kerb-spn | Override dell'SPN Kerberos |
-k, --kerb | Usa l'autenticazione Kerberos |
-c, --command | Esegue un comando ed esce |
--tls | Usa HTTPS/TLS |
--insecure | Salta la verifica del certificato TLS |
-h, --help | Mostra l'aiuto |