Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
nimrm — Native Nim WinRM shell with NTLM, Kerberos, file transfer, in-memory helpers, and AD/OPSEC reporting | Kitploit
Tools/GitHubGitHub/blue0x1/nimrm
Payload GenerationLateral MovementInformation GatheringPost-ExploitationPenetration TestingCommand and ControlAuthenticationRed TeamingRemote Access Tool
GitHubblue0x1/nimrm

nimrm

Native Nim WinRM shell with NTLM, Kerberos, file transfer, in-memory helpers, and AD/OPSEC reporting

551 month agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
View RepositoryWebsite
Share

nimrm

Release Downloads

Native WinRM shell client written in Nim

Version 1.2.0 · Author Chokri Hammedi (blue0x1) · License MIT

NTLM Kerberos PowerShell File Transfer In-Memory Helpers Multi-Session

Documentation

WinRM Library

image

Legal Notice

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.

Table of Contents

  • Overview
  • Features
  • Requirements
  • Installation
  • Build
  • Performance
  • Usage
  • Options
  • Interactive Commands
  • Session Management
  • Examples
  • Notes
  • License

Overview

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.

Features

AreaSupport
AuthenticationNTLM password, NTLM hash, Kerberos via KRB5CCNAME
WinRM transportHTTP, HTTPS/TLS, custom port
ShellInteractive PowerShell, CMD prefix, one-shot command mode, command and local path autocomplete
TransfersFile upload/download, recursive directory transfer, remote session-to-session file and directory relay
In-memoryPowerShell script import, managed .NET assembly execution
ReportingAD/domain context, logging and auditing posture
ReliabilityKerberos message wrapping, transport reset/retry handling

Requirements

ComponentRequirement
BuildNim >= 1.6.0
Kerberoslibgssapi_krb5.so.2 on Linux or libgssapi_krb5.dylib on macOS
TLS buildOpenSSL and -d:ssl
TargetWinRM reachable on the selected port

Installation

Nimble:

root@kitploit:~
nimble install nimrm

Download the latest release:

root@kitploit:~
curl -L -o nimrm https://github.com/blue0x1/nimrm/releases/latest/download/nimrm
chmod +x nimrm

Windows release binary:

root@kitploit:~
Invoke-WebRequest -Uri https://github.com/blue0x1/nimrm/releases/latest/download/nimrm.exe -OutFile nimrm.exe

Debian package:

root@kitploit:~
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:

root@kitploit:~
sudo pacman -S nimrm

The BlackArch PKGBUILD tracks the latest upstream git commit, so new releases reach BlackArch users on their next system update. If nimrm is already installed, upgrade it with:

root@kitploit:~
sudo pacman -Syu nimrm

Build from source:

root@kitploit:~
git clone https://github.com/blue0x1/nimrm.git
cd nimrm
make linux

Build

root@kitploit:~
make linux
root@kitploit:~
make ssl
root@kitploit:~
make windows

Manual build:

root@kitploit:~
nim c -d:release --opt:speed -o:nimrm nimrm.nim

Performance

nimrm is designed to stay fast by using a native Nim binary, persistent WinRM runspace, chunked transfer logic, and compact progress rendering.

OperationImplementation
UploadChunked Base64 writes with adaptive retry on large envelopes
DownloadStreamed Base64 chunks with progress tracking and a fast path for small files
Remote session relayReads from one WinRM session and writes to another through controller memory without writing the file to local disk
Directory transferRecursive file enumeration using the same chunked transfer path
Command executionReuses the active WinRM shell/runspace instead of reconnecting per command

Usage

NTLM password:

root@kitploit:~
./nimrm -T 192.168.1.10 -A 'CORP\administrator' -P 'Password123'

NTLM pass-the-hash:

root@kitploit:~
./nimrm -T 192.168.1.10 -A 'CORP\user' -N aad3b435b51404eeaad3b435b51404ee:0123456789abcdef0123456789abcdef

Kerberos:

root@kitploit:~
KRB5CCNAME=FILE:/tmp/user.ccache ./nimrm -k -T dc01.corp.local -Z CORP.LOCAL

Force NTLM message encryption over HTTP:

root@kitploit:~
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --seal

Custom port:

root@kitploit:~
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -p 5985

One-shot command:

root@kitploit:~
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -c 'whoami'

Skip TLS certificate verification (self-signed certs):

root@kitploit:~
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --tls --insecure

Options

OptionDescription
-T, --targetTarget IP or hostname
-A, --accountUsername: user, user@domain, or DOMAIN\user
-P, --secretNTLM password
-p, --portWinRM port
-N, --nt-proofNT hash or LM:NT hash
-Z, --krb-zoneKerberos realm override
-K, --kerb-spnKerberos SPN override
-k, --kerbUse Kerberos authentication
-c, --commandExecute one command and exit
--tlsUse HTTPS/TLS
--insecureSkip TLS certificate verification
-h, --helpShow help

Interactive Commands

CommandDescription
/helpShow help
exit, quitClose shell
!<cmd>Run through cmd.exe
upload <local> [remote]Upload one file
download <remote> [local]Download one file
rupload <remote> <session> [dest]Copy a remote file from the active session to another session through memory
rdownload <session> <remote> [dest]Copy a remote file from another session to the active session through memory
rupload-dir <remote> <session> [dest]Copy a remote directory from the active session to another session through memory
rdownload-dir <session> <remote> [dest]Copy a remote directory from another session to the active session through memory
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-infoShow AD/domain context
opsec-checkShow logging and auditing posture
sessionsList all active sessions
session <opts>Create a new session
use <name|id>Switch to a session
kill <name|id>Close and remove a session

Session Management

nimrm supports multiple concurrent WinRM sessions. You can pivot between different hosts and users without leaving the shell.

Create a new session from inside an existing one:

root@kitploit:~
PS C:\Users\Administrator> session -T 10.0.0.5 -A 'CORP\user2' -P 'Pass123'
PS C:\Users\Administrator> session -T dc02.corp.local -A [email protected] -N aad3b435:0123456789abcdef -n dc02
PS C:\Users\Administrator> session -T dc03.corp.local -k -Z CORP.LOCAL -n dc03

List active sessions:

root@kitploit:~
PS C:\Users\Administrator> sessions

  ID  Name              Target                    User              Auth
  --  ----              ------                    ----              ----
 * 1  session-1         dc01.corp.local:5985      administrator     Kerberos
   2  session-2         10.0.0.5:5985             user2             NTLM
   3  dc02              dc02.corp.local:5985      user              NTLM

Switch between sessions:

root@kitploit:~
[session-2] PS C:\Users\user2> use 1
[*] Switched to session: session-1 (dc01.corp.local:5985)
[session-1] PS C:\Users\Administrator> use dc02
[*] Switched to session: dc02 (dc02.corp.local:5985)

Close a session:

root@kitploit:~
[dc02] PS C:\Users\user> kill 2
[*] Killed session: session-2

Copy files between active sessions:

root@kitploit:~
[session-1] PS C:\Users\user1> rupload C:\Users\user1\tool.exe session-2 C:\Users\user2\Desktop\tool.exe
[*] Download mode: WinRS binary stream
✔  rupload-read  [━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━]  100%  442.0 KB/442.0 KB  done in 0.7s
[*] Upload mode: WinRS stream
✔  rupload-write  [━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━]  100%  442.0 KB/442.0 KB  done in 0.4s
[+] Remote uploaded 452608 bytes from session-1:C:\Users\user1\tool.exe to session-2:C:\Users\user2\Desktop\tool.exe

[session-1] PS C:\Users\user1> rdownload session-2 C:\Users\user2\Desktop\out.txt C:\Users\user1\out.txt
[+] Remote downloaded 1024 bytes from session-2:C:\Users\user2\Desktop\out.txt to session-1:C:\Users\user1\out.txt

rupload and rupload-dir use the active session as the source and the named session as the destination. rdownload and rdownload-dir use the named session as the source and the active session as the destination. These commands relay bytes through nimrm memory, so the controller host does not write a temporary copy to disk.

Session options:

OptionDescription
-TTarget host
-AUsername
-PPassword
-NNT hash
-kKerberos auth
-ZKerberos realm
-KSPN override
-pPort
--tlsUse HTTPS
-nCustom session name

Examples

PowerShell and CMD:

root@kitploit:~
PS> hostname
PS> Get-Process
PS> !ipconfig /all

Transfers:

root@kitploit:~
PS> upload ./tool.exe C:\Temp\tool.exe
PS> download C:\Temp\out.txt ./out.txt
PS> rupload C:\Temp\tool.exe session-2 C:\Temp\tool.exe
PS> rdownload session-2 C:\Temp\out.txt C:\Temp\out.txt
PS> rupload-dir C:\Temp\logs session-2 C:\Temp\logs
PS> rdownload-dir session-2 C:\Temp\loot C:\Temp\loot
PS> upload-dir ./payloads C:\Temp\payloads
PS> download-dir C:\Temp\logs ./logs

Remote session relay direction:

root@kitploit:~
# Active session -> another session
PS> rupload C:\Temp\payload.exe session-2 C:\Users\Public\payload.exe

# Another session -> active session
PS> rdownload session-2 C:\Users\Public\loot.zip C:\Temp\loot.zip

Autocomplete:

root@kitploit:~
PS> upl<Tab>
PS> upload ./pay<Tab>

The interactive prompt completes command names and local filesystem paths for local-source commands such as upload, upload-dir, invoke-script, and execute-assembly.

In-memory helpers:

root@kitploit:~
PS> invoke-script ./AdminTools.ps1
PS> execute-assembly ./tool.exe arg1 arg2

Reporting:

root@kitploit:~
PS> ad-info
PS> opsec-check

Notes

  • execute-assembly supports managed .NET assemblies only.
  • invoke-script imports into the current remote runspace.
  • rupload, rdownload, rupload-dir, and rdownload-dir do not write temporary files on the controller host, but the bytes still pass through controller memory and use two WinRM transfer legs.
  • ad-info and opsec-check are read-only reporting commands.
  • Some reporting data requires sufficient remote privileges.

Buy Me A Coffee

License

MIT. See LICENSE.

Download Tool