Native WinRM shell client written in Nim
Version 1.0.0 · Author Chokri Hammedi (blue0x1) · License MIT
nimrm is intended for lawful administration, security testing, and research on systems you own or have explicit permission to access. The author is not responsible for misuse or damage caused by this tool.
- Overview
- Features
- Requirements
- Installation
- Build
- Performance
- Usage
- Options
- Interactive Commands
- Examples
- Notes
- License
nimrm provides a compact and fast WinRM shell with practical authentication, command execution, transfer, and reporting helpers. It is built as a native Nim binary with no Nim package dependencies.
| Area | Support |
|---|---|
| Authentication | NTLM password, NTLM hash, Kerberos via KRB5CCNAME |
| WinRM transport | HTTP, HTTPS/TLS, custom port |
| Shell | Interactive PowerShell, CMD prefix, one-shot command mode |
| Transfers | File upload/download, recursive directory transfer |
| In-memory | PowerShell script import, managed .NET assembly execution |
| Reporting | AD/domain context, logging and auditing posture |
| Reliability | Kerberos message wrapping, transport reset/retry handling |
| Component | Requirement |
|---|---|
| Build | Nim >= 1.6.0 |
| Kerberos | libgssapi_krb5.so.2 on Linux or libgssapi_krb5.dylib on macOS |
| TLS build | OpenSSL and -d:ssl |
| Target | WinRM reachable on the selected port |
Download the latest release:
curl -L -o nimrm https://github.com/blue0x1/nimrm/releases/latest/download/nimrm
chmod +x nimrmWindows release binary:
Invoke-WebRequest -Uri https://github.com/blue0x1/nimrm/releases/latest/download/nimrm.exe -OutFile nimrm.exeDebian package:
curl -L -o nimrm_1.0.0_amd64.deb https://github.com/blue0x1/nimrm/releases/latest/download/nimrm_1.0.0_amd64.deb
sudo dpkg -i nimrm_1.0.0_amd64.debBuild from source:
git clone https://github.com/blue0x1/nimrm.git
cd nimrm
make linuxmake linuxmake sslmake windowsManual build:
nim c -d:release --opt:speed -o:nimrm nimrm.nimnimrm is designed to stay fast by using a native Nim binary, persistent WinRM runspace, chunked transfer logic, and compact progress rendering.
| Operation | Implementation |
|---|---|
| Upload | Chunked Base64 writes with adaptive retry on large envelopes |
| Download | Streamed Base64 chunks with progress tracking |
| Directory transfer | Recursive file enumeration using the same chunked transfer path |
| Command execution | Reuses the active WinRM shell/runspace instead of reconnecting per command |
NTLM password:
./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:0123456789abcdef0123456789abcdefKerberos:
KRB5CCNAME=FILE:/tmp/user.ccache ./nimrm -k -T dc01.corp.local -Z CORP.LOCALCustom port:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -p 5985One-shot command:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -c 'whoami'| Option | Description |
|---|---|
-T, --target |
Target IP or hostname |
-A, --account |
Username: user, user@domain, or DOMAIN\user |
-P, --secret |
NTLM password |
-p, --port |
WinRM port |
-N, --nt-proof |
NT hash or LM:NT hash |
-Z, --krb-zone |
Kerberos realm override |
-K, --kerb-spn |
Kerberos SPN override |
-k, --kerb |
Use Kerberos authentication |
-c, --command |
Execute one command and exit |
--tls |
Use HTTPS/TLS |
-h, --help |
Show help |
| Command | Description |
|---|---|
/help |
Show help |
exit, quit |
Close shell |
!<cmd> |
Run through cmd.exe |
upload <local> [remote] |
Upload one file |
download <remote> [local] |
Download one file |
upload-dir <local> [remote] |
Upload a directory |
download-dir <remote> [local] |
Download a directory |
invoke-script <ps1> [args] |
Import local PowerShell from memory |
execute-assembly <exe> [args] |
Run managed .NET from memory |
ad-info |
Show AD/domain context |
opsec-check |
Show logging and auditing posture |
PowerShell and CMD:
PS> hostname
PS> Get-Process
PS> !ipconfig /allTransfers:
PS> upload ./tool.exe C:\Temp\tool.exe
PS> download C:\Temp\out.txt ./out.txt
PS> upload-dir ./payloads C:\Temp\payloads
PS> download-dir C:\Temp\logs ./logsIn-memory helpers:
PS> invoke-script ./AdminTools.ps1
PS> execute-assembly ./tool.exe arg1 arg2Reporting:
PS> ad-info
PS> opsec-checkexecute-assemblysupports managed .NET assemblies only.invoke-scriptimports into the current remote runspace.ad-infoandopsec-checkare read-only reporting commands.- Some reporting data requires sufficient remote privileges.
MIT. See LICENSE.