Communitygithub.com

Construction d'infrastructure de redirecteur C2

Construire des redirecteurs C2 de type "tuyau passif" et à filtrage de trafic avec nginx (proxy_pass) et Apache (mod_rewrite), en dérivant les règles de filtrage d'un profil Malleable C2, en ajoutant une couche TLS avec Let's Encrypt.

Qu'est-ce que Construction d'infrastructure de redirecteur C2 ?

Cette compétence explique comment construire une infrastructure de redirecteur C2 (command & control) pour les engagements de red-team et les exercices d'adversaire simulé. Un redirecteur C2 agit comme un hôte intermédiaire entre les implants malveillants et le serveur de commande réel, protégeant ce dernier de la découverte, du blocage et de l'attribution. La compétence couvre deux types de redirecteurs : les "tuyaux passifs" (avec socat ou iptables) qui transfèrent aveuglément le trafic, et les redirecteurs intelligents avec filtrage (nginx proxy_pass, Apache mod_rewrite) qui n'autorisent que le trafic correspondant au profil Malleable C2 (URI, User-Agent, en-têtes). Le guide détaille la configuration de nginx et Apache, la génération automatique de règles avec cs2modrewrite, l'ajout de TLS avec Let's Encrypt, et les contrôles OPSEC (filtrage géographique, validation des en-têtes, diversion vers des sites leurres). L'objectif est de fournir une infrastructure résiliente et à faible attribution, en phase avec les techniques MITRE ATT&CK T1090.002 (Proxy : Proxy externe) et T1090.004 (Proxy : Domain Fronting).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/building-c2-redirector-infrastructure

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Construction d'infrastructure de redirecteur C2 ?

Utilisation autorisée uniquement : Cette compétence est destinée uniquement aux engagements de red-team autorisés, aux exercices d'adversaire simulé et à la recherche défensive. L'infrastructure de command-and-control (C2) est à double usage ; déployer des redirecteurs pour contrôler des logiciels malveillants sur des systèmes que vous n'êtes pas explicitement autorisé à tester est illégal. Opérez uniquement dans le cadre d'un périmètre convenu avec un document de règles d'engagement signé, et décommissionnez l'infrastructure à la fin de l'engagement.

Aperçu

Un redirecteur C2 est un hôte intermédiaire situé entre les implants des victimes et le véritable serveur de commande. Les beacons se connectent au domaine/IP public du redirecteur ; ce dernier inspecte chaque requête et soit transmet le trafic C2 légitime au serveur de commande masqué, soit redirige tout le reste (scanners, analystes blue-team, sandboxes) vers un site leurre bénin. Cela protège le serveur de commande de la découverte, du blocage et de l'attribution, et permet aux opérateurs de faire pivoter la périphérie publique sans reconstruire le backend. La technique correspond à la technique T1090.002 (Proxy : Proxy externe) de MITRE ATT&CK — les adversaires acheminent le C2 via un nœud intermédiaire pour masquer l'origine réelle.

Les redirecteurs existent en deux types. Les tuyaux passifs (socat, iptables NAT) transfèrent aveuglément un port et offrent une séparation mais aucun filtrage. Les redirecteurs intelligents/à filtrage (nginx proxy_pass, Apache mod_rewrite avec [P], ou des outils spécialisés comme RedWarden) analysent les requêtes HTTP et ne transfèrent que le trafic correspondant au profil Malleable C2 de l'implant — URI, User-Agent, en-têtes corrects — tout en redirigeant tout le reste via un 302 vers un site web réel. La logique de filtrage est dérivée directement du profil de trafic du framework C2, les deux doivent donc rester parfaitement synchronisés. Des outils tels que cs2modrewrite automatisent la génération de règles Apache/nginx à partir d'un profil Malleable C2 de Cobalt Strike.

Cette compétence couvre la construction de redirecteurs passifs et à filtrage avec nginx et Apache, la dérivation de règles de filtrage à partir d'un profil Malleable, l'ajout d'une couche TLS avec Let's Encrypt, et l'application de contrôles OPSEC (domaines catégorisés, domain fronting/CDN fronting, validation d'en-têtes, filtrage géographique/User-Agent) pour une infrastructure résiliente et à faible attribution.

Quand l'utiliser

  • Mettre en place un C2 de red-team qui doit survivre au triage de la blue-team et aux demandes de blocage de domaine.
  • Séparer un serveur de commande masqué de tout hôte exposé à Internet pendant un engagement.
  • Filtrer le trafic des implants afin que seules les requêtes correspondant au profil atteignent le backend, en détournant les scanners.
  • Ajouter la terminaison TLS, la catégorisation de domaine et le CDN/domain fronting à un écouteur HTTP(S).
  • Enseigner aux défenseurs comment le C2 via proxy externe (T1090.002) est construit afin qu'ils puissent le détecter.

Prérequis

  • Une ou plusieurs instances VPS cloud jetables (la périphérie du redirecteur) et un hôte serveur de commande distinct et protégé par pare-feu.
  • Un domaine enregistré avec DNS contrôlable, de préférence ancien et catégorisé.
  • Accès root sur l'hôte du redirecteur. Installez le serveur web et les outils TLS :
    # Redirecteur Debian/Ubuntu
    sudo apt update
    sudo apt install -y nginx apache2 socat certbot python3-certbot-nginx git
    # Activer les modules proxy Apache si vous utilisez un redirecteur mod_rewrite
    sudo a2enmod rewrite proxy proxy_http ssl headers
    
  • Le profil Malleable C2 du framework C2 (profil .profile de Cobalt Strike, profil HTTP de Sliver/Havoc) définissant les URI, User-Agent et en-têtes.
  • cs2modrewrite pour générer automatiquement les règles à partir d'un profil Cobalt Strike :
    git clone https://github.com/threatexpress/cs2modrewrite
    
  • Protégez le serveur de commande par pare-feu afin qu'il n'accepte que l'adresse IP source du redirecteur sur le port C2.

Objectifs

  • Déployer un redirecteur de type tuyau passif (socat/iptables) pour une séparation rapide des ports.
  • Déployer un redirecteur nginx en proxy inverse filtrant, basé sur un profil Malleable.
  • Déployer un redirecteur Apache mod_rewrite avec proxy [P] et repli vers un site leurre via 302.
  • Générer automatiquement les règles du redirecteur à partir d'un profil Cobalt Strike avec cs2modrewrite.
  • Terminer la TLS avec Let's Encrypt et durcir la périphérie publique.
  • Appliquer l'OPSEC : validation des en-têtes/User-Agent, filtrage géographique, diversion vers un leurre et rotation de l'infrastructure.

Cartographie MITRE ATT&CK

ID de techniqueNom officielPertinence
T1090.002Proxy : Proxy externeLe redirecteur est un intermédiaire externe qui proxyifie le C2 pour masquer le serveur de commande
T1090.004Proxy : Domain FrontingLe CDN fronting achemine le trafic des beacons via un domaine de confiance de haute réputation
T1071.001Protocole de couche applicative : Protocoles webLe C2 est tunnelisé via HTTP/HTTPS façonné par le profil Malleable
T1573.002Canal chiffré : Cryptographie asymétriqueLa terminaison TLS au niveau du redirecteur chiffre le canal des beacons
T1583.006Acquérir une infrastructure : Services webDes périphéries VPS/CDN jetables sont acquises pour un C2 résilient

Workflow

1. Isolez et protégez le serveur de commande par pare-feu

Placez le serveur de commande sur un hôte privé. Limitez son port C2 à l'adresse IP du redirecteur uniquement.

# Sur le serveur de commande : seul le redirecteur (203.0.113.10) peut accéder au port 443/tcp
sudo ufw default deny incoming
sudo ufw allow from 203.0.113.10 to any port 443 proto tcp
sudo ufw allow OpenSSH
sudo ufw enable

2. Redirecteur tuyau passif (socat / iptables)

Pour une séparation rapide sans filtrage, transférez le port C2 vers le serveur de commande.

# socat : transfert avant-plan du port 443 vers le serveur de commande
socat TCP4-LISTEN:443,fork,reuseaddr TCP4:10.0.0.2:443

# Ou iptables DNAT (persistant)
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.0.2:443
iptables -t nat -A POSTROUTING -p tcp -d 10.0.0.2 --dport 443 -j MASQUERADE

3. Redirecteur nginx en proxy inverse filtrant

Ne proxyifiez que les requêtes dont l'URI correspond au profil Malleable ; envoyez tout le reste vers un leurre via un 302. Remplacez l'expression régulière de location et le User-Agent par les valeurs de votre profil.

# /etc/nginx/sites-available/redirector.conf
server {
    listen 443 ssl;
    server_name cdn.example.com;

    ssl_certificate     /etc/letsencrypt/live/cdn.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cdn.example.com/privkey.pem;

    # Proxy UNIQUEMENT les URI C2 correspondant au profil vers le serveur de commande masqué
    location ~ ^/(api/v2/jobs|cm/[a-z0-9]+|push) {
        # Exiger le User-Agent exact de l'implant
        if ($http_user_agent != "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") {
            return 302 https://www.legitimate-decoy.com/;
        }
        proxy_pass https://10.0.0.2;
        proxy_ssl_verify off;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
    }

    # Tout le reste -> site leurre bénin
    location / {
        return 302 https://www.legitimate-decoy.com/;
    }
}
sudo ln -s /etc/nginx/sites-available/redirector.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

4. Redirecteur Apache mod_rewrite

Le drapeau [P] d'Apache proxyifie les requêtes correspondantes vers le serveur de commande ; les requêtes non correspondantes reçoivent une redirection 302. C'est le format que produit cs2modrewrite.

# /etc/apache2/sites-available/redirector.conf  (à l'intérieur de <VirtualHost *:443>)
RewriteEngine On
SSLProxyEngine On
# Exiger le User-Agent de l'implant
RewriteCond %{HTTP_USER_AGENT} "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" [NC]
# Correspondre aux URI C2 valides (GET/POST/stager) du profil Malleable
RewriteCond %{REQUEST_URI} ^/(api/v2/jobs|cm/[a-z0-9]+|push)/?$
# Proxyfier vers le serveur de commande masqué, en préservant l'URI
RewriteRule ^.*$ https://10.0.0.2%{REQUEST_URI} [P,L]
# Tout le reste -> site leurre
RewriteRule ^.*$ https://www.legitimate-decoy.com/ [R=302,L]
sudo a2ensite redirector && sudo apache2ctl configtest && sudo systemctl reload apache2

5. Générer des règles à partir d'un profil Malleable

Laissez cs2modrewrite construire les règles Apache ou nginx directement à partir de votre profil Cobalt Strike pour que le filtre corresponde exactement au trafic des beacons.

cd cs2modrewrite
# Règles Apache mod_rewrite
python3 cs2modrewrite.py -i havex.profile -c https://10.0.0.2 \
  -r https://www.legitimate-decoy.com -o /etc/apache2/redirect.rules
# Configuration nginx
python3 cs2nginx.py -i havex.profile -c https://10.0.0.2 \
  -r https://www.legitimate-decoy.com -H cdn.example.com > /etc/nginx/sites-available/c2.conf

6. Terminer la TLS avec Let's Encrypt

Émettez un certificat valide afin que le HTTPS des beacons ne génère pas d'avertissements TLS et que la périphérie semble légitime.

sudo certbot --nginx -d cdn.example.com --agree-tos -m [email protected] --redirect
# Vérifier le renouvellement automatique
sudo certbot renew --dry-run

7. Appliquer les contrôles OPSEC

Ajoutez des couches défensives contre l'analyse de la blue-team : validez les en-têtes, limitez géographiquement au pays cible, détournez les sandboxes et faites pivoter les périphéries. Envisagez le CDN/domain fronting (T1090.004) là où c'est pris en charge.

# Exemple : bloquer les zones géographiques non ciblées au niveau du pare-feu avec ipset/GeoIP,
# exiger un en-tête d'authentification personnalisé dans le profil, et faire pivoter le domaine/IP
# du redirecteur selon un calendrier. Vérifiez que le redirecteur ne transfère que le trafic correspondant :
curl -k https://cdn.example.com/                       # attendu : 302 vers site leurre
curl -k -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
  https://cdn.example.com/api/v2/jobs                  # attendu : réponse proxyfiée

Outils et ressources

OutilObjectifSource
nginxRedirecteur proxy inverse filtranthttps://nginx.org/
Apache mod_rewriteProxy [P] + redirecteur leurre 302https://httpd.apache.org/docs/current/mod/mod_rewrite.html
cs2modrewriteGénérer des règles Apache/nginx à partir d'un profil CShttps://github.com/threatexpress/cs2modrewrite
RedWardenProxy inverse C2 filtrant compatible Malleablehttps://github.com/mgeeky/RedWarden
rediRedirecteur nginx + Let's Encrypt automatisé pour CShttps://github.com/taherio/redi
socatTransfert TCP tuyau passifhttp://www.dest-unreach.org/socat/
Let's Encrypt / certbotCertificats TLS gratuitshttps://certbot.eff.org/
ired.teamRéférence sur l'infrastructure red-teamhttps://www.ired.team/offensive-security/red-team-infrastructure

Critères de validation

  • Le serveur de commande est protégé par pare-feu pour n'accepter que l'adresse IP source du redirecteur sur le port C2.
  • Le redirecteur est déployé (tuyau passif et/ou proxy inverse filtrant).
  • Les règles de filtrage sont dérivées du profil Malleable C2 réel (URI + User-Agent + en-têtes).
  • Les requêtes non correspondantes retournent un 302 vers un site leurre bénin (vérifié avec curl).
  • Les requêtes de beacons correspondantes sont proxyfiées vers le serveur de commande masqué (vérifié avec curl).
  • Un certificat TLS valide est émis et le renouvellement automatique est confirmé.
  • Les contrôles OPSEC sont appliqués (validation UA/en-têtes, géofencing, diversion vers leurre).
  • La catégorisation de domaine / le CDN fronting sont envisagés le cas échéant.
  • Le plan de rotation et de décommissionnement de l'infrastructure est documenté.
  • Toute l'activité est confinée au périmètre d'engagement autorisé.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Skills associés