π§β Merlin v0.6.0 Beta Released
Aug 7 2018
By: Russel Van Tuyl β’ 4 min read
Beta version 0.6.0 of Merlin has been released on July 29, 2018 and is packed with many changes. Take a look at theΒ CHANGELOGΒ for a complete list of them. The biggest new feature of this version is support for the QUIC protocol as a C2 channel and is detailed in aΒ separate blog post.
x.509 Certificates
Merlin is distributed with theΒ data/x509/server.crt
Β andΒ data/x509/server.key
Β certificate files. The idea is to make trying Merlin out for the first time very simple and easy. However, the certificates should be replaced with new files generated by the user and preferable issued by a trusted Certificate Authority. In order to make sure it is very clear the user is running the server using the certificates publicly distributed with Merlin, a message is printed to the console during startup. By default Merlin will look in theΒ data/x509
Β directory for x509 certificates. Alternatively, theΒ -x509cert
Β andΒ -x509key
Β command line flags can be used to provide the path to your own certificates.

Agent Status
TheΒ sessions
Β command from the main menu and theΒ info
Β command from the agent menu will display the current status of the agent.Β ActiveΒ indicates the agent is communicating on schedule according to its sleep time.Β DelayedΒ means the agent has missed at least 1 check in based on the known sleep time but not more than number of the maxretry setting, plus 1. One is added to the maxretry setting to account for skew, which is determined randomly each time by the agent. The server does not have a way to account for the agent skew.Β DeadΒ shows when the agent has missed a check in for the value of the maxretry setting plus 1. It should be noted that the agent can still communicate with the server even if it is marked as Dead and the status will change back to Active.

When an agent is marked as dead, you might not want to continue seeing it when you print the sessions table or when you are using the built-in tab completion to select an agent. For this reason, theΒ remove
Β command was added to the main menu. It should be noted that even after an agent is removed, it could still check in and would be treated as an orphaned agent.
Jobs
The way Merlin Server handles job tasking has been changed. In prior releases, a job was only created and added to the channel at the point when the agent checked in. This functionality was re-worked so that jobs are created and added to the channel when they are created, independent of when an agent checks in. In prior releases you might have to wait 30 seconds before you see a message on the console for the job creation. Now a message will display right away.

Module Info Alias
Out of muscle memory I kept trying to issue theΒ info
Β command while in the module menu. This was not a valid command in prior releases. TheΒ info
Β command was added as an alias for the still presentΒ show info
Β command.

Wrap Up
Beta version 0.6.0 added a few minor features along with one big new capability, support for QUIC. There is still plenty of work to be done and Iβll continue to actively add features and fix any issues. I would enjoy hearing from you if you have questions, issues, or just want to talk about Merlin and its capabilities. You can leave a comment here, reach me on Twitter, create a GitHub issue, or join theΒ Slack Channel.
Happy Hacking!