Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
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
NimPlant — A light-weight first-stage C2 implant written in Nim (and Rust). | Kitploit
Tools/GitHubGitHub/chvancooten/nimplant
Penetration Testing FrameworksPayload GenerationPost-ExploitationCommand and ControlRed Teaming
GitHubchvancooten/nimplant

NimPlant

A light-weight first-stage C2 implant written in Nim (and Rust).

View Repository
951116101 year agoReviewed by Kitploit

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

NimPlant - A light first-stage C2 implant written in Nim|Rust and Python

GitHub Workflow Status PRs Welcome

By Cas van Cooten (@chvancooten), with special thanks to some awesome folks:

Kadir Yamamoto (@yamakadi), Furkan Göksel (@frkngksl) , Fabian Mosch (@S3cur3Th1sSh1t), Rafael Félix (@b1scoito), Guillaume Caillé (@OffenseTeacher), and many others!

If NimPlant has been useful to you and/or you like my work in general, your support is very welcome:

Sponsor on GitHub

Feature Overview

  • Lightweight and configurable implant written in the Nim and Rust programming languages
  • Pretty web GUI that will make you look cool during all your ops
  • Encryption and compression of all traffic by default, obfuscates static strings in implant artifacts
  • Support for several implant types, including native binaries (exe/dll), shellcode or self-deleting executables
  • Wide selection of commands focused on early-stage operations including local enumeration, file or registry management, and web interactions
  • Easy deployment of more advanced functionality or payloads via inline-execute, shinject (using dynamic invocation), powershell in a custom runspace, or in-thread execute-assembly
  • Support for operations on any platform, implant only targeting x64 Windows for now
  • Comprehensive logging of all interactions and file operations
  • Much, much more, just see below :)

Instructions

Installation

A modern version of Python3 is required to run Nimplant.

Server

  • Install requirements.txt from the server folder (pip3 install -r server/requirements.txt).

Implant (Nim)

  • Install the Nim toolchain for your platform (installation via choosenim is recommended, as apt doesn't always have the latest version).
  • Install required packages using the Nimble package manager (cd client; nimble install -d).
  • If you're on Linux or MacOS, install the mingw toolchain for your platform (brew install mingw-w64 or apt install mingw-w64).
  • If you're on ArchLinux specifically, modify your Mingw config as per this gist (thanks @tothi!).

Implant (Rust)

  • Install the Rust toolchain (installation via rustup is recommended).
  • Install the MinGW windows target: rustup target add x86_64-pc-windows-gnu.
  • Recommended for increased opsec: Modify your ~/.cargo/config.toml file as per Cargo.toml and use the nighly build chain (rustup default nightly).

Note: Even if compiling on Windows, the x86_64-pc-windows-gnu target is recommended. It results in slightly larger binaries, but appears to be more stable when shellcode is generated from the resulting DLL. You may modify rust-toolchain.toml to change the target to x86_64-pc-windows-msvc, but generated shellcode may not work correctly in all cases.

Getting Started

Configuration

Before using NimPlant, create the configuration file config.toml. It is recommended to copy config.toml.example and work from there.

An overview of settings is provided below.

CategorySettingDescription
serveripThe IP that the C2 web server (including API) will listen on. Recommended to use 127.0.0.1, only use 0.0.0.0 when you have setup proper firewall or routing rules to protect the C2.
serverportThe port that the C2 web server (including API) will listen on.
listenertypeThe listener type, either HTTP or HTTPS. HTTPS options configured below.
listenersslCertPathThe local path to a HTTPS certificate file (e.g. requested via LetsEncrypt CertBot or self-signed). Ignored when listener type is 'HTTP'.
listenersslKeyPathThe local path to the corresponding HTTPS certificate private key file. Password will be prompted when running the NimPlant server if set. Ignored when listener type is 'HTTP'.
listenerhostnameThe listener hostname. If not empty (""), NimPlant will use this hostname to connect. Make sure you are properly routing traffic from this host to the NimPlant listener port.
listeneripThe listener IP. Required even if 'hostname' is set, as it is used by the server to register on this IP.
listenerportThe listener port. Required even if 'hostname' is set, as it is used by the server to register on this port.
listenerregisterPathThe URI path that new NimPlants will register with.
listenertaskPathThe URI path that NimPlants will get tasks from.
listenerresultPathThe URI path that NimPlants will submit results to.
nimplantriskyModeCompile NimPlant with support for risky commands. Operator discretion advised. Disabling will remove support for execute-assembly, powershell, shell and shinject.
nimplantsleepMaskWhether or not to use Ekko sleep mask instead of regular sleep calls for Nimplants. Only works with regular executables for now!
nimplantsleepTimeThe default sleep time in seconds for new NimPlants.
nimplantsleepJitterThe default jitter in percent for new NimPlants.
nimplantkillDateThe kill date for Nimplants (format: yyyy-MM-dd). Nimplants will exit if this date has passed.
nimplantuserAgentThe user-agent used by NimPlants. The server also uses this to validate NimPlant traffic, so it is recommended to choose a UA that is inconspicuous, but not too prevalent.
Download Tool