Nimplant : A Cross-Platform Implant Written In Nim

Nimplant is a cross-platform (Linux & Windows) implant written in Nim as a fun project to learn about Nim and see what it can bring to the table for red team tool development. Currently, Nimplant lacks extensive evasive tradecraft; however, overtime Nimplant will become much more sophisticated.

Installation

To install Nimplant, you’ll need Mythic installed on a remote computer. You can find installation instructions for Mythic at the Mythic project page.

From the Mythic install root, run the command:

./install_agent_from_github.sh https://github.com/MythicAgents/Nimplant

Once installed, restart Mythic to build a new agent.

Highlighted Agent Features

  • Cross-platform
  • Fully asynchronous
  • Can generate agents compiled from both C and C++ source code

Commands Manual Quick Reference

CommandSyntaxDescription
catcat [file]Retrieve the output of a file.
cdcd [dir]Change working directory.
cpcp [source] [destination]Copy a file from source to destination. Modal popup.
curlcurl [url] [method] [headers] [body]Execute a single web request.
downloaddownload [path]Download a file off the target system.
exitexitExit a callback.
getenvgetenvGet all of the current environment variables.
jobsjobsList all running jobs.
killkill [pid]Attempt to kill the process specified by [pid].
lsls [path] [recurse]List files and folders in [path] with optional param to list recursively. Defaults to current working directory.
mkdirmkdir [dir]Create a directory.
mvmv [source] [destination]Move a file from source to destination. Modal popup.
pspsList process information.
pwdpwdPrint working directory.
rmrm [path]Remove a file specified by [path]
shellshell [command]Run a shell command which will translate to a process being spawned with command line: cmd.exe /r[command]
unsetenvsetenv [envname] [value]Sets an environment variable to your choosing.
sleepsleep [seconds]Set the callback interval of the agent in seconds.
unsetenvunsetenv [envname]Unset an environment variable.
uploaduploadUpload a file to a remote path on the machine. Modal popup.

Supported C2 Profiles

Currently, only one C2 profile is available to use when creating a new Nimplant agent: HTTP.

HTTP Profile

The HTTP profile calls back to the Mythic server over the basic, non-dynamic profile. When selecting options to be stamped into Nimplant at compile time, all options are respected with the exception of those parameters relating to GET requests.

R K

Recent Posts

Shadow-rs : Harnessing Rust’s Power For Kernel-Level Security Research

shadow-rs is a Windows kernel rootkit written in Rust, demonstrating advanced techniques for kernel manipulation…

1 week ago

ExecutePeFromPngViaLNK – Advanced Execution Of Embedded PE Files via PNG And LNK

Extract and execute a PE embedded within a PNG file using an LNK file. The…

2 weeks ago

Red Team Certification – A Comprehensive Guide To Advancing In Cybersecurity Operations

Embark on the journey of becoming a certified Red Team professional with our definitive guide.…

3 weeks ago

CVE-2024-5836 / CVE-2024-6778 : Chromium Sandbox Escape via Extension Exploits

This repository contains proof of concept exploits for CVE-2024-5836 and CVE-2024-6778, which are vulnerabilities within…

3 weeks ago

Rust BOFs – Unlocking New Potentials In Cobalt Strike

This took me like 4 days (+2 days for an update), but I got it…

3 weeks ago

MaLDAPtive – Pioneering LDAP SearchFilter Parsing And Security Framework

MaLDAPtive is a framework for LDAP SearchFilter parsing, obfuscation, deobfuscation and detection. Its foundation is…

3 weeks ago