Releases: Ne0nd0g/merlin-agent
Releases Β· Ne0nd0g/merlin-agent
v1.6.0
Added
- Parrot specific web browsers through utls library
- Use the agent's
-parrot
command line argument - Use the Makefile's
PARROT=
command line argument - Can be changed while the agent is already running
- Examples include
HelloChrome_102
orHelloRandomized
- List of available strings
- If a JA3 string is provided, the parrot string will be ignored
- Use the agent's
Changed
- Require Go v1.19
- The agent package
New()
function will only print errors to STDOUT instead of returning an error to ensure execution - JA3 transports are now generated from clients/utls
- Upgraded go-clr to v1.0.3
- Upgraded quic-go to v0.30.0
Fixed
- Issue 20 - Manually get username & group for Windows
- Issue 21 - Resolved file download re-write error
Removed
- Removed ja3transport module and moved code into clients/utls
Merlin documentation and Wiki can be found here
The compressed files have a password of
merlin
v1.5.0
Added
- Added new SOCKS5 functionality
Changed
- Go v1.18 is now the minimum supported version
- Upgraded quic-go to v0.28.0
- Upgraded Go JOSE to v2.6.0
- The
Send()
of theClientInterface
interface returns a list of messages.Base instead of a single message - Initial checkin immediately responds to first AgentInfo request after authenticating instead of after sleep time
Fixed
- Issue 17 - Ensure process structure pointer is not nil
Merlin documentation and Wiki can be found here
The compressed files have a password of
merlin
v1.4.2
v1.4.1
Added
- Go build tags to separate out Mythic client from standalone HTTP1/2/3 client
- Added
SLEEP
to Make file (e.g.,make windows SLEEP=2m
)
Fixed
- Issue 13 - Added byte slice variable as a workaround
Changed
- Upgraded quic-go to v0.27.0 for Go 1.18 support
Merlin documentation and Wiki can be found here
The compressed files have a password of
merlin
v1.4.0
Added
- Added a new
memory
command for Windows agents to read/write memory- Uses direct syscalls for
NtReadVirtualMemory
,NtProtectVirtualMemory
, &ZwWriteVirtualMemory
implemented using BananaPhone - The commands take module name (e.g.,
ntdll.dll
) and a procedure name (e.g.,EtwEventWrite
) to target read/write operations - The
read
command will just read the specified number of bytes and return the results - The
write
command will just write the specified bytes without reading them first - The
patch
command will find a specified function, read the existing bytes, and then overwrite it with the provided bytes
- Uses direct syscalls for
- Added
AmsiScanBuffer
patch when loading assemblies into the agent process through theload-assembly
command
Changed
- Upgraded go-clr package to tagged version 1.0.2
Merlin documentation and Wiki can be found here
The compressed files have a password of
merlin
v1.3.1
Added
- Added Garble builds to the Make file
windows-garble
,linux-garble
, &darwin-garble
- THE SERVER MUST BE GARBLED WITH THE EXACT SAME SEED
- Specify the seed at build with
make windows-debug SEED=<your seed valuee>
- Added
GetProcessWindowStation
andGetThreadDesktop
functions in theuser32
package
Changed
- Renamed the
SendMerlinMessage
function of theClientInterface
to justSend()
- Modified
CreateProcessWithToken
function in thewindows/os/pkg/tokens
package to adjust the caller's station and
desktop DACLs if the token user belongs to a different session
Fixed
- Issue 10 - The
shell
command now uses associated impersonation token - Issue 11 - The token is now passed along with execution
- Issue 12 - If running as
NT AUTHORITY\SYSTEM
with an impersonation token, Call LogonUserW and then CreateProcessWithTokenW instead of CreateProcessWithLogon with Merlin'srunas
command
Merlin documentation and Wiki can be found here
The compressed files have a password of
merlin
v1.3.0
Changed
- Added the
Integrity
field to the Agent structure - Added message padding to the following Mythic messages types for the Mythic client:
- CheckIn
- Tasking
- PostResponse
- RSARequest
- PostResponseFile
- PostResponseDownload
Added
- Added
os.GetIntegrityLevel()
to enumerate the agent's integrity level or elevated status- Windows:
2
-Medium,3
-High,4
-System - All other OS:
3
- member of sudo group,4
- running as root
- Windows:
- Added a random amount of message padding, up to the padding max value, to HTTP post requests for the Mythic client
Merlin documentation and Wiki can be found here
The compressed files have a password of
merlin
v1.2.1
v1.2.0
Added
rm
command to remove, or delete, files using native Go functionsrunas
Windows command to create a process as another user with their passwordssh
Connect to a remote host over SSH and execute a command (non-interactive)token
Windows command to interact with Windows Access Tokensmake
Create a new token with a username and password; Unlistedmake_token
aliasprivs
List the current or remote process token privilegesrev2self
Drop any created or stolen access token and revert to original configuration; Unlistedrev2self
aliassteal
Steal a token from another process; Unlistedsteal_token
aliaswhoami
Enumerate process and thread token username, logon ID, privilege count, token type, impersonation level, and integrity level
- New
os/windows/api
directory for operating system specific API and system calls - New
os/windows/pkg
directory for functions that wrap operating system specific calls - Added
commands/os
withSetup()
andTearDown()
functions to prep and release process space before executing any commands- Due to how the Go runtime works, stolen/created Windows access token must be applied/released for each run of a command
- Add both a
-headers
command line argument andHEADERS=
Make parameter to add arbitrary HTTP headers- The flag takes in a new-line seperated (e.g.,
\n
) list of headers
- The flag takes in a new-line seperated (e.g.,
- FreeBSD Makefile build support from paullj1 in Pull 3
- Read STDIN for 500 milliseconds for agent argument from paullj1 in Pull 3
Changed
- Broke the
commands/transfer.go
file intocommands/download.go
andcommands/upload.go
- The
ls
command can now handle Windows UNC paths - The
run
,shell
,execute-assembly
,execute-pe
, &execute-shellcode
commands will use the Windows CreateProcessWithTokenW function call if a token was stolen/created - Updated go-quic library to v0.24.0
Fixed
- Issue 117 - Added random padding to OPAQUE messages
Merlin documentation and Wiki can be found here
The compressed files have a password of
merlin
v1.1.0
Highlights
Added
sdelete
- Securely delete a fileps
- Get a Windows process listtouch
- Timestomp a filenetstat
- List network connectionspipes
- List Windows named pipesenv
- View, add, remove environment variablesuptime
- View the host's uptimeifconfig
/ipconfig
- Prints host network adapter information.kill
- Stop or kill a running process by its process ID (PID)
Changed
- The Merlin Agent config structure now takes a list of comma-separated URLs that the agent will rotate through
Merlin documentation and Wiki can be found here
The compressed files have a password of merlin