PAGES
← all tools
◆ Exploitation & C2

merlin

v2.2.2 open-source

Merlin is a cross-platform post-exploitation command-and-control framework written in Go, enabling attackers to manage compromised systems via HTTP/2.

Summary

Merlin is an open-source post-exploitation command-and-control framework, free to use, distributed as a binary you compile and run yourself rather than as a hosted service. It supports mutual TLSmutual TLSMutual TLS, an encrypted connection where both client and server present certificates to prove their identity. It helps services verify who they are communicating with., letting an operator require client certificate verification and supply its own CA, key, and certificate files so agent traffic is authenticated rather than just encrypted. It is built for red teamers and penetration testers running authorized engagements rather than defenders, and it sits in the same category as other C2 frameworks used to manage compromised hosts over HTTP, without the vendor naming a specific peer. Started in 2017 with 22 contributors and 13 tracked releases, it has had no commits in the past year and last released 491 days ago, so treat it as dormant rather than actively maintained.

Merlin is a cross-platform post-exploitation command-and-control framework written in Go, enabling attackers to manage compromised systems via HTTP/2.

How merlin helps

How do I stand up a listener without depending on a third-party certificate authority?

an operator supplies its own CA, key, and certificate files, so the listener can verify agents against a private trust chain instead of a public one

Why did an agent binary I compiled fail to run on the target?

the documented FAQ points to compilation errors and platform quirks like double-clicking the Windows binary doing nothing, both tied to how the agent was built rather than the C2 logic

Why does redirecting output from a shell command through an agent produce nothing?

the FAQ flags input and output redirection pipes as a known limitation, so commands relying on piped redirection need a workaround rather than showing as a bug

all 31 features, with the evidence for each →

Languages

Not documented

Features

31 capabilities · 3 backed by code, an API document or a real run

Built from merlin's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What merlin offers you

  • Command-line interface13
  • Agent-based deployment4
  • Scripting language support2
  • JavaScript scripting support1
  • PowerShell script execution1
All capabilities 31 capabilities
C2 transport protocol selection shipped Allows configuration of the communication transport layer, supporting HTTP/2 and QUIC protocols. 8 releases · 1 other source · first seen Jul 2018

Also counts toward: Command-line interface

release 8 total

  • Adds peer-to-peer agent communication support via a new gRPC server interface (default 127.0.0.1:50051) v2.0.0 · Nov 2023 · source · release history
  • The interactive CLI menu is removed from Merlin CLI; it now requires gRPC to communicate with the Merlin server v2.0.0 · Nov 2023 · source · release history
  • Switched network traffic encoding to Go lang's gob format v0.8.0 · Aug 2019 · source · release history
  • Enabled HTTP/1.1 protocol support alongside existing protocols v0.8.0 · Aug 2019 · source · release history
  • Added flag or configuration option to set an arbitrary HTTP Host header v0.8.0 · Aug 2019 · source · release history
  • Added support to hardcode a web proxy within the client configuration v0.8.0 · Aug 2019 · source · release history

example

  • Configure the Merlin server to use QUIC for C2 communication. merlin server -proto hq v0.6.0 · Jul 2018 · source
TLS mutual authentication verified Secures connections using TLS certificates, supporting configuration of a certificate, private key, and CA for verifying client certificates. 4 releases · 5 other sources · first seen Apr 2019

Also counts toward: Command-line interface

release

  • Adds -addr, -password, -secure, -tlsCA, -tlsCert, and -tlsKey CLI flags to the Merlin server for gRPC configuration v2.0.0 · Nov 2023 · source · release history
  • Added JWT authentication and JWE payloads for encrypted communication v0.8.0 · Aug 2019 · source · release history
  • Added OPAQUE Password Authenticated Key Exchange (PAKE) support for stronger authentication v0.8.0 · Aug 2019 · source · release history
  • Implements Auto Generated X.509 Certificates for secure communication channels v0.7.0 · Apr 2019 · source · release history

command line

example

  • Start the Merlin server with gRPC enabled, secured by a custom password and TLS certificates. merlin-server -addr '0.0.0.0:50051' -password 'my_secure_password' -secure -tlsCA '/path/to/ca.crt' -tlsCert '/path/to/server.crt' -tlsKey '/path/to/server.key' v2.0.0 · Nov 2023 · source
.NET assembly execution shipped Supports loading, listing, and executing .NET assemblies in-memory using native Go integration or existing modules. 4 releases · 3 other sources · first seen Feb 2021

Also counts toward: Command-line interface

release

  • Adds -dotnetBin server-launch flag to configure the path to the dotnet executable (default dotnet, resolved from PATH), giving teamserver operators install-location flexibility without exposing the option to authenticated operators.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v2.2.2 · Oct 2026 · source · release history
  • The dotnetbin and sharpgenbin options have been removed from the SharpGen module (both the module definition and the RPC handler); any operator workflow or script that set these options will break silently — use the new -dotnetBin server-launch flag instead. v2.2.2 · Oct 2026 · source · release history
  • The SharpGen compiler DLL is now always loaded from data/src/cobbr/SharpGen/bin/release/netcoreapp2.1/SharpGen.dll under the Merlin root; custom DLL paths are no longer accepted. v2.2.2 · Oct 2026 · source · release history
  • Adds load-assembly, invoke-assembly, and list-assemblies commands to load and execute .NET assemblies via the new go-clr integration v0.11.0-beta · Apr 2021 · source · release history

docs

  • -dotnetBin string File path to the dotnet executable used by the SharpGen module; defaults to dotnet resolved from the server's PATH (default dotnet) dotnetBin The default is dotnet , resolved from the Merlin Server’s PATH dotnetBin flag sets the file path to the dotnet executable the SharpGen module uses to… docs update · Oct 2026 · source

example

  • When dotnet is installed outside PATH (e.g. via dotnet-install.sh to ~/.dotnet), point the teamserver at it at launch instead of relying on the removed dotnetbin module option. ./merlinServer -dotnetBin «home»/.dotnet/dotnet v2.2.2 · Oct 2026 · source
  • Execute a .NET assembly using the new Sharpgen module via the Mythic framework integration merlin connect mythic://mythic-server:443 agent run sharpgen --module windows/x64/csharp/misc/SharpGen --args 'MyAssembly.dll' v0.10.0-beta · Feb 2021 · source
Trace logging verified Enables verbose trace-level logging for diagnostic purposes. 3 releases · 3 other sources · first seen Mar 2018

Also counts toward: Command-line interface

release

  • Enables structured JSON logging to STDOUT using log/slog with -debug, -extra, and -trace CLI flags v2.0.0 · Nov 2023 · source · release history
  • Supports the h2c protocol in addition to existing http and https support v0.9.0-beta · Sep 2020 · source · release history
  • Adds ability for agents to upload and download files via the server v0.1.4 · Mar 2018 · source · release history

command line

example

  • Enable verbose JSON logging with trace output for debugging Agent communication flows. merlin-server -debug -extra -trace v2.0.0 · Nov 2023 · source
  • Verify support for cleartext HTTP/2 connections. Configure a listener to use the `h2c` protocol in the new Listeners menu. v0.9.0-beta · Sep 2020 · source
Dynamic listener management shipped Allows configuration and dynamic starting/stopping of agent communication listeners via a UI interface without restarting the server. 4 releases · 1 other source · first seen Sep 2020

release

  • Replaces string-based listener identification with UUID-based handling for listeners v2.0.0 · Nov 2023 · source · release history
  • Listener identification has changed from string names to UUIDs; existing configurations referencing listeners by name will fail v2.0.0 · Nov 2023 · source · release history
  • Adds the Listeners menu in the UI to start and stop multiple listeners dynamically without restarting the Merlin Server application v0.9.0-beta · Sep 2020 · source · release history
  • Enables configuration of listener URLs for agent communication via the new Listeners interface v0.9.0-beta · Sep 2020 · source · release history

example

  • Start a new listener via the UI without restarting the service. In the Merlin Server UI, navigate to Listeners > Add Listener and configure the URL (e.g., `https://127.0.0.1:443/news.php`). v0.9.0-beta · Sep 2020 · source
Native system enumeration commands shipped Provides built-in commands for network, process, and environment enumeration without relying on external binaries. 5 releases · first seen Apr 2021

Also counts toward: Command-line interface

release

Agent deployment via reflective loading shipped Deploys the agent binary into target memory using a PowerShell script without writing to disk. 3 releases · 2 other sources · first seen May 2018

Also counts toward: Agent-based deployment, PowerShell script execution, Scripting language support

release

  • Integrates Shellcode Reflective DLL Injection (sRDI) for stealthy payload delivery v0.7.0 · Apr 2019 · source · release history
  • Enables executing raw shellcode payloads through the Merlin Agent on Windows targets v0.6.4 · Jan 2019 · source · release history
  • Adds Invoke-Merlin.ps1 script to reflectively load the merlin.dll into memory v0.5.0 · May 2018 · source · release history

example

  • View documentation for executing shellcode payloads via the Agent menu. https://github.com/Ne0nd0g/merlin/wiki/Merlin-Server-Agent-Menu#execute-shellcode v0.6.4 · Jan 2019 · source
  • Run the new reflective loader to deploy the DLL agent into memory on a target. Invoke-Merlin.ps1 -DLL .\data\bin\merlin.dll v0.5.0 · May 2018 · source
Merlin agent distribution shipped Includes pre-compiled agent binaries and loader scripts for easy deployment. 4 releases · first seen May 2018

Also counts toward: Agent-based deployment

release

  • Adds macOS (Darwin) arm64 and Linux armv7 and arm64 server binaries to the release bundle, alongside the existing Windows x64, Linux x64, and macOS x64 builds.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v2.2.1 · Oct 2026 · source · release history
  • Old cmd & shell commands are replaced by the run command; direct use of cmd will fail v0.10.0-beta · Feb 2021 · source · release history
  • Distributes a compiled agent binary in the data/bin directory v0.6.4 · Jan 2019 · source · release history
  • Ships pre-compiled Merlin Agent binary files (DLL) in data/bin directory alongside the Merlin Server download v0.5.0 · May 2018 · source · release history
In-memory memory manipulation shipped Allows reading, writing, and patching virtual memory within the active agent process space. 4 releases · first seen Apr 2022

release

  • Adds memory write <offset> <data> to inject raw bytes into an agent's process space v1.4.0 · Apr 2022 · source · release history
  • Adds memory read <offset> <length> to dump bytes from an agent's process space v1.4.0 · Apr 2022 · source · release history
  • Adds memory patch <function_name> <bytes> to locate a function and overwrite its code v1.4.0 · Apr 2022 · source · release history
  • Adds the memory command to interact with Windows agent virtual memory v1.4.0 · Apr 2022 · source · release history
Modular service architecture shipped Supports extensible functionality through a module system and integrated JavaScript agent profiles. 4 releases · first seen Mar 2018

Also counts toward: JavaScript scripting support, Scripting language support

release

  • Adds extended Modules for additional functionality within merlin operations v0.7.0 · Apr 2019 · source · release history
  • Enables execution of Cross-Platform Native Commands on agents v0.7.0 · Apr 2019 · source · release history
  • Adds basic support for modules in the service architecture v0.1.4 · Mar 2018 · source · release history
  • Adds a built-in Merlin JavaScript agent profile v0.1.4 · Mar 2018 · source · release history
Agent obfuscation shipped Builds agent binaries with code garbling to evade static analysis detection, supporting configurable seeds for consistent obfuscation across platforms. 2 releases · 1 other source · first seen Apr 2022

release

  • Adds linux-garble, windows-garble, and darwin-garble make targets to build obfuscated agents v1.3.1 · Apr 2022 · source · release history
  • Introduces the SEED environment variable for make linux-garble to control the garbling seed v1.3.1 · Apr 2022 · source · release history

example

  • Build a garbled Linux agent with a specific seed for consistent obfuscation across the team. make linux-garble SEED=my_unique_seed_value v1.3.1 · Apr 2022 · source
Agent grouping and queuing shipped Allows creating groups of agents for targeted interactions and queuing commands for batch execution. 3 releases · first seen Aug 2021

Also counts toward: Command-line interface

release

  • Added the Integrity field to the agents.Agent and messages.SysInfo structures in the server data model. v1.3.0 · Feb 2022 · source · release history
  • group subcommand to create groups of agents to interact with v1.1.0 · Aug 2021 · source · release history
  • queue subcommand to queue commands for agents or groups v1.1.0 · Aug 2021 · source · release history
Windows token manipulation shipped Provides capabilities to interact with Windows Access Tokens, including stealing tokens, elevating privileges, and impersonating users. 3 releases · first seen Dec 2021

Also counts toward: Command-line interface

release

  • The agent menu info command now displays the agent's integrity level, exposing numeric values for privilege context (e.g., Medium, High, System on Windows or sudo/root status on Unix). v1.3.0 · Feb 2022 · source · release history
  • Adds token Windows command to interact with Windows Access Tokens, including subcommands: make, privs, rev2self, steal, and whoami v1.2.0 · Dec 2021 · source · release history
  • Adds runas Windows command to create a process as another user with their password v1.2.0 · Dec 2021 · source · release history
Session management shipped Provides commands to view and clean up stale or dead agent sessions. 2 releases · 1 other source · first seen Jul 2018

Also counts toward: Command-line interface

release

  • Adds support for setting an Agent Kill Date to automatically expire agents v0.7.0 · Apr 2019 · source · release history
  • Adds remove subcommand to clear a dead agent from the server v0.6.0 · Jul 2018 · source · release history

example

  • Clear a dead agent from the server's session list. merlin remove <agent_id> v0.6.0 · Jul 2018 · source
Agent utility commands shipped Provides basic agent-side utility commands such as viewing uptime, adding notes, and removing files. 2 releases · first seen Aug 2021

Also counts toward: Command-line interface

release

Secure file operations shipped Offers commands for securely deleting files and modifying file timestamps. 2 releases · first seen Aug 2021

Also counts toward: Command-line interface

release

Command execution abstraction shipped Provides a unified command execution interface via the 'run' command, replacing legacy shell-specific commands to execute programs directly. 2 releases · first seen Feb 2021

release

  • Consolidates old cmd & shell commands into the run command which executes programs directly without a shell v0.10.0-beta · Feb 2021 · source · release history
  • Old cmd & shell commands are replaced by the run command; direct use of cmd will fail v0.10.0-beta · Feb 2021 · source · release history
Multi-job session management shipped Enables tracking and management of multiple concurrent jobs and results within a single agent interaction. 2 releases · first seen Feb 2021

release

  • Adds jobs, clear, execute-assembly, execute-pe, and sharpgen commands to the Agent menu for job management and execution v0.10.0-beta · Feb 2021 · source · release history
  • Implements a new Jobs structure allowing multiple jobs and results to be sent between client and server during a single interaction v0.10.0-beta · Feb 2021 · source · release history
Mythic framework integration shipped Allows the cyber tool to operate as an agent within the Mythic Framework, supporting modular execution via plugins like SharpGen. 2 releases · first seen Feb 2021

Also counts toward: Agent-based deployment

release

  • Adds Mythic client support, enabling Merlin agent integration with the Mythic Framework v0.10.0-beta · Feb 2021 · source · release history
  • Adds jobs, clear, execute-assembly, execute-pe, and sharpgen commands to the Agent menu for job management and execution v0.10.0-beta · Feb 2021 · source · release history
Listener authentication configuration shipped Enables setting authentication requirements for listeners, supporting methods such as OPAQUE or no authentication. 1 release · first seen Nov 2023

release

  • Introduces configurable listener authentication methods (OPAQUE & none) and transport transforms (aes, base64-byte, base64-string, hex-byte, hex-string, gob-base, gob-string, jwe, rc4, xor) v2.0.0 · Nov 2023 · source · release history
Listener transport transforms shipped Allows configuring data transformation methods for listener communication, including encryption and encoding options like AES, base64, hex, and XOR. 1 release · first seen Nov 2023

release

  • Introduces configurable listener authentication methods (OPAQUE & none) and transport transforms (aes, base64-byte, base64-string, hex-byte, hex-string, gob-base, gob-string, jwe, rc4, xor) v2.0.0 · Nov 2023 · source · release history
New listener types configuration shipped Provides configuration options for new agent listener types including SMB, UDP, and TCP to define traffic behavior. 1 release · first seen Nov 2023

release

  • Adds new SMB/UDP/TCP listener types for configuring Agent traffic behavior (config/generation only, no server binding) v2.0.0 · Nov 2023 · source · release history
Version reporting verified Prints the tool's version number and exits. 1 other source · first seen Nov 2023

command line

SOCKS5 proxying shipped Routes network traffic from the compromised host through a SOCKS5 listener implemented by the agent. 1 other source · first seen Jul 2022

Also counts toward: Agent-based deployment

example

  • Use when you need to route traffic through a compromised host as a SOCKS5 proxy directly from the Merlin agent interface. socks start 9050 v1.5.0 · Jul 2022 · source
Remote command execution via SSH shipped Allows executing non-interactive commands on remote hosts over the SSH protocol. 1 release · first seen Dec 2021

Also counts toward: Command-line interface

release

  • Adds ssh command to connect to a remote host over SSH and execute a non-interactive command v1.2.0 · Dec 2021 · source · release history
Linux in-memory execution shipped Enables running Linux executables in memory by utilizing anonymous file descriptors. 1 release · first seen Apr 2021

Also counts toward: Command-line interface

release

  • Adds memfd command to run Linux executables in-memory as an anonymous file v0.11.0-beta · Apr 2021 · source · release history
Process creation with pipe redirection shipped Enables creating new processes on Windows with standard output and error streams redirected via anonymous pipes. 1 release · first seen Feb 2021

release

  • Adds windows/x64/go/exec/createProcess extended module for process creation with redirected stdout/stderr via anonymous pipes v0.10.0-beta · Feb 2021 · source · release history
Server fingerprinting shipped Distributes a tool to fingerprint Merlin server instances via HTTP responses. 1 release · first seen Aug 2019

release

  • Dropped new PRISM binary in release artifacts to fingerprint Merlin server instances v0.8.0 · Aug 2019 · source · release history
Process memory analysis shipped Captures minidumps from running processes on target hosts. 1 release · first seen Apr 2019

release

  • Supports capturing Minidumps from running processes on target hosts v0.7.0 · Apr 2019 · source · release history
Server health status shipped Provides commands to check server state with UTC timestamp formatting. 1 release · first seen Apr 2019

Also counts toward: Command-line interface

release

  • Introduces the status command to check server state with UTC timestamp formatting v0.7.0 · Apr 2019 · source · release history
Password-protected compressed distribution shipped Distributes the cyber tool in compressed archive files protected with a specific password. 1 release · first seen Dec 2017

release

  • Compressed distribution files available with password merlin. v0.1.3 · Dec 2017 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for merlin, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail merlin puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

20 entries

  1. October 20263
  2. November 20231
  3. July 20221
  4. April 20222
  5. February 20221
  6. December 20211
  7. August 20211
  8. April 20211
  9. February 20211
  10. September 20201
  11. August 20191
  12. April 20191
  13. January 20191
  14. July 20181
  15. May 20181
  16. March 20181
  17. December 20171
    Show

    20 entries

    Project health

    Issue, contributor and maintainer activity in Ne0nd0g/merlin, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 0 −1 vs prior 12 months
    2. Maintainers 0 +0 joined · −1 left, last 12 months
    3. Bus factor 0 committers behind half the commits
    4. Community-filed 100% of issues opened, last 12 months
    5. Median time to close 2.8 days first maintainer reply 5.9 hours
    6. Open backlog 17 of 109 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 17
    3. Contributors / month 0
    4. Commits / month 0
    5. Stars 5,607
    Issue themes, last 12 months
    • other 100%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Articles

    1 article · updated Nov 4, 2026

    Where merlin turns up in what others publish: how-tos, attack reports that name it, and incident write-ups. A row says why it is here and quotes where the article names it; the link goes to the publisher.

    Tutorials & guides 1

    • Command and Control Guide to Merlin Hacking Articles
      In this article, we learn how to use Merlin C2 tool.
      2 more quotes
      The best things about Merlin are that it compiles to work on any platform and that you can even build it from source.
      Run the Merlin server in the folder where agents can call out to it.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →