
Shell WinRM natif Nim avec NTLM, Kerberos, transfert de fichiers, utilitaires en mémoire et reporting AD/OPSEC
Client shell WinRM natif écrit en Nim
Version 1.2.0 · Auteur Chokri Hammedi (blue0x1) · Licence MIT
nimrm est destiné à l'administration légitime, aux tests de sécurité et à la recherche sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation explicite d'accès. L'auteur n'est pas responsable d'une utilisation abusive ou des dommages causés par cet outil.
nimrm fournit un shell WinRM compact et rapide avec des assistants pratiques pour l'authentification, l'exécution de commandes, le transfert et le reporting. Il est compilé en un binaire Nim natif sans dépendances de paquets Nim.
| Domaine | Prise en charge |
|---|---|
| Authentification | Mot de passe NTLM, hash NTLM, Kerberos via KRB5CCNAME |
| Transport WinRM | HTTP, HTTPS/TLS, port personnalisé |
| Shell | PowerShell interactif, préfixe CMD, mode de commande unique, autocomplétion des commandes et des chemins locaux |
| Transferts | Téléversement/téléchargement de fichiers, transfert récursif de répertoires, relais de fichiers et de répertoires entre sessions distantes |
| En mémoire | Import de scripts PowerShell, exécution d'assemblys .NET managés |
| Reporting | Contexte AD/domaine, posture de journalisation et d'audit |
| Fiabilité | Enveloppement des messages Kerberos, gestion de la réinitialisation/des nouvelles tentatives de transport |
| Composant | Prérequis |
|---|---|
| Compilation | Nim >= 1.6.0 |
| Kerberos | libgssapi_krb5.so.2 sous Linux ou libgssapi_krb5.dylib sous macOS |
| Compilation TLS | OpenSSL et -d:ssl |
| Cible | WinRM accessible sur le port sélectionné |
Nimble :
nimble install nimrm
Télécharger la dernière version :
curl -L -o nimrm https://github.com/blue0x1/nimrm/releases/latest/download/nimrm
chmod +x nimrm
Binaire de la version Windows :
Invoke-WebRequest -Uri https://github.com/blue0x1/nimrm/releases/latest/download/nimrm.exe -OutFile nimrm.exe
Paquet 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
Le PKGBUILD BlackArch suit le dernier commit git en amont, de sorte que les nouvelles versions parviennent aux utilisateurs de BlackArch lors de leur prochaine mise à jour système. Si nimrm est déjà installé, mettez-le à niveau avec :
sudo pacman -Syu nimrm
Compilation depuis les sources :
git clone https://github.com/blue0x1/nimrm.git
cd nimrm
make linux
make linux
make ssl
make windows
Compilation manuelle :
nim c -d:release --opt:speed -o:nimrm nimrm.nim
nimrm est conçu pour rester rapide grâce à un binaire Nim natif, un espace d'exécution WinRM persistant, une logique de transfert par blocs et un rendu compact de la progression.
| Opération | Implémentation |
|---|---|
| Téléversement | Écritures Base64 par blocs avec nouvelle tentative adaptative pour les enveloppes volumineuses |
| Téléchargement | Blocs Base64 diffusés avec suivi de progression et un chemin rapide pour les petits fichiers |
| Relais entre sessions distantes | Lit depuis une session WinRM et écrit vers une autre via la mémoire du contrôleur sans écrire le fichier sur le disque local |
| Transfert de répertoire | Énumération récursive des fichiers en utilisant le même chemin de transfert par blocs |
| Exécution de commandes | Réutilise le shell/espace d'exécution WinRM actif au lieu de se reconnecter à chaque commande |
Mot de passe NTLM :
./nimrm -T 192.168.1.10 -A 'CORP\administrator' -P 'Password123'
Pass-the-hash NTLM :
./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
Forcer le chiffrement des messages NTLM sur HTTP :
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --seal
Port personnalisé :
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -p 5985
Commande unique :
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -c 'whoami'
Ignorer la vérification du certificat TLS (certificats auto-signés) :
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --tls --insecure
| Option | Description |
|---|---|
-T, --target | IP ou nom d'hôte cible |
-A, --account | Nom d'utilisateur : user, user@domain ou DOMAIN\user |
-P, --secret | Mot de passe NTLM |
-p, --port | Port WinRM |
-N, --nt-proof | Hash NT ou hash LM:NT |
-Z, --krb-zone | Remplacement du domaine Kerberos |
-K, --kerb-spn | Remplacement du SPN Kerberos |
-k, --kerb | Utiliser l'authentification Kerberos |
-c, --command | Exécuter une commande puis quitter |
--tls | Utiliser HTTPS/TLS |
--insecure | Ignorer la vérification du certificat TLS |
-h, --help | Afficher l'aide |