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

groupdel Command in Linux: Remove a Group and Audit Files

The groupdel command in Linux removes a group from the system. It deletes the group's entry from /etc/group and /etc/gshadow,…

10 hours ago

wc Command in Linux: Count Lines, Words, Characters, and Bytes

The wc command in Linux counts lines, words, characters, and bytes in files or standard input. It…

10 hours ago

top Command in Linux: Monitor Processes and Resource Usage

The top command in Linux provides a real-time view of running processes and system resource usage. From…

10 hours ago

usermod Command in Linux: Modify User Accounts and Groups

The usermod command in Linux modifies existing user account attributes. You can use it to manage group…

10 hours ago

sort Command in Linux: Sort Text, Numbers, Columns, and More

The sort command in Linux reads lines from files or standard input and writes them to standard…

1 day ago

wall Command in Linux: Broadcast Messages to Logged-In Users

The wall command in Linux sends a message to the terminals of all currently logged-in users. The…

1 day ago