Cobalt Strike, observé pour la première fois en 2012, est un outil officiel de simulation d’adversaire et est fréquemment utilisé par les Red Team, les pentesteurs et les acteurs malveillants. En substance, Cobalt Strike est un framework de post-exploitation modularisé qui utilise des canaux secrets pour simuler un acteur malveillant dans le réseau d’une entreprise.

La popularité de Cobalt Strike est principalement due au fait que ses balises (beacons) soient furtives, stables et hautement personnalisables. Les balises sont furtives en raison de l’exécution in-memory via une réflexion au niveau de la mémoire d’un processus sans affecter le système de fichiers. La suite de post-exploitation de Cobalt Strike comprend la prise en charge de l’enregistrement de frappe (keylogging), de l’exécution de commandes, du dumping d’identifiants, du transfert de fichiers, de l’analyse des ports, etc., facilitant ainsi le travail de l’adversaire. Malleable C2 est une autre fonctionnalité appréciée de Cobalt Strike qui permet aux attaquants de modifier l’apparence de ses balises et d’imiter d’autres trafics légitimes afin d’éviter d’être détectés.

Bien que l’éditeur ait réservé la distribution des licences de Cobalt Strike aux seuls professionnels de la sécurité, les adversaires ont très souvent pu le craquer et le divulguer. Récemment Proofpoint a signalé que l’utilisation de Cobalt Strike par des adversaires avait augmenté de 161% entre 2019 et 2020 et restait toujours une menace majeure en 2021. Proofpoint a aussi révélé qu’il avait attribué les deux tiers des campagnes de Cobalt Strike identifiées à partir de 2016 jusqu’en 2018 à des organisations cybercriminelles ou à des groupes APT dotés de ressources suffisantes. APT29, APT32, APT41, Cobalt, FIN6, TA505, TIN WOODLAWN et Mustang Panda ne sont que quelques-uns des acteurs malveillants qui ont utilisé Cobalt Strike pour leurs propres opérations.

Cobalt Strike a été utilisé à plusieurs reprises lors de l’incident très médiatisé ayant ciblé la supply chain de SolarWinds et où le loader Raindrop avait permis de déclencher la charge virale. Plusieurs types de ransomware tels que Ryuk, Conti, Egregor et DoppelPaymer ont commencé à utiliser Cobalt Strike pour accélérer leur déploiement. En septembre 2020, Cisco Talos a signalé que 66% des attaques de ransomware impliquaient Cobalt Strike et que les acteurs malveillants utilisant des ransomwares s’appuyaient fortement sur cet outil en délaissant du coup les chevaux de Troie (trojans) classiques.

Les fonctionnalités de post-exploitation de Cobalt Strike sont exposées via des balises exécutées dans la mémoire du système infecté. Les analystes en sécurité peuvent créer des détections à partir des artefacts laissés par la balise lors de la post-exploitation. De même, les analystes peuvent utiliser des paramètres par défaut tels que des noms de balise et des certificats par défaut pour faciliter la détection.

LogPoint a maintenant publié UseCases v5.0.4, qui comprend des alertes et un tableau de bord pour Cobalt Strike pour vous aider à identifier les menaces au sein de votre environnement, afin que vous puissiez prendre des mesures correctives pour les contrer.

Détection de l’activité Cobalt Strike avec LogPoint

Les tubes nommés (named pipes) sont essentiels pour le fonctionnement des balises Cobalt Strike. Avant la version 4.2, Cobalt Strike n’autorisait pas les opérateurs à modifier le schéma de dénomination par défaut des tubes nommés. Si Sysmon est déployé dans l’environnement et correctement configuré, alors il s’agit d’une très bonne opportunité pour détecter les tubes nommés par défaut de Cobalt Strike.

norm_id=WindowsSysmon label=Pipe
pipe IN ["\msagent_*", "\MSSE-*-server", "\postex_*", "\status_*", "\mypipe-f*", "\mypipe-h*",
"\ntsvcs_*", "\scerpc_*", "\mojo.5688.8052.183894939787088877*", "\mojo.5688.8052.35780273329370473*"]

Sysmon rules for Cobalt Strike Pipe Names

Règles Sysmon pour les noms de tube de Cobalt Strike

Les clients LogPoint peuvent se référer à notre configuration Sysmon de base qui couvre diverses activités de Cobalt Strike.

Les adversaires utilisent couramment la fonctionnalité d’usurpation d’identité de tube nommé de Cobalt Strike pour obtenir des privilèges SYSTEM qui peuvent être détectés via des événements de création de processus.

norm_id=WinServer label="Process" label=Create
parent_process="*\services.exe"
command IN ['*cmd* /c *echo *\pipe\*', '*%COMPSEC%* /c * echo *\pipe\*', '*rundll32*.dll,a*/p:*']

Search for Cobalt Strike Named Pipe Impersonation

Recherche de l’usurpation d’identité de tube nommé de Cobalt Strike

Vous pouvez également rechercher des artefacts dans les services créés par Cobalt Strike à partir des logs du Service Control Manager (SCM).

norm_id=WinServer event_id=7045 ((path="*ADMIN$*" service="*.exe") OR (path="%COMSPEC% /b /c start /b /min powershell -nop -w hidden -encodedcommand*"))

La création des logs de thread distant Sysmon aide à détecter l’activité d’injection de processus de Cobalt Strike.

norm_id=WindowsSysmon event_id=8 start_address IN ["*0B80", "*0C7C", "*0C88"]

Cobalt Strike génère rundll32 sans ligne de commande et injecte régulièrement le code de charge virale nécessaire dans la mémoire de rundll32. Par conséquent, vous devez vérifier la création de rundll32 sans argument de ligne de commande et de plus non affectée par le bruit.

label="Process" label=Create
"process"="*\rundll32.exe" command="*\rundll32.exe"

Ensuite, vous pouvez décoder les sessions PowerShell avec le préfixe de ligne de commande par défaut et surveiller les fragments (snippets) de commande couramment utilisés par Cobalt Strike.

norm_id=WinServer event_source=PowerShell event_id=400
application="powershell -nop -exec bypass -EncodedCommand*"
| norm on application -<:'EncodedCommand\s'>
| process codec(decode, encoded_command) as decoded_command
| search decoded_command IN ["*IEX*DownloadString*127.0.0.1:*",
"Invoke-WMIMethod win32_process*-argumentlist*", "Invoke-Command -ComputerName*-ScriptBlock*", "*=New-Object IO.MemoryStream [Convert]::FromBase64String*"] | chart count() by host, device_ip, decoded_command, encoded_command

La commande powerpick de Cobalt Strike permet l’exécution d’un PowerShell non managé. Vous pouvez rechercher toute activité via une incompatibilité dans la version de l’hôte et la version du moteur au niveau des événements du cycle de vie du moteur de PowerShell.

norm_id=WinServer event_source=PowerShell event_id=400
hostname=ConsoleHost application="*\rundll32.exe"
| process compare(host_version, engine_version) as match
| search match=False

Search for mismatch in host version and engine version in PowerShell's Engine Lifecycle events

Recherche d’une incompatibilité dans la version de l’hôte et la version du moteur au niveau des événements du cycle de vie du moteur de PowerShell

L’exécution proxy via RunDLL32 et Regsvr32 reste la méthode la plus populaire pour exécuter les balises Cobalt Strike. Vous pouvez rechercher des exécutions de fichiers binaires à partir d’emplacements suspects.

label="Process" label=Create "process" IN ["*\rundll32.exe", "*\regsvr32.exe"] command IN ["*C:\ProgramData\*", "*C:\Users\Public\*", "*C:\PerfLogs\*", "*\AppData\Local\Temp\*", "*\AppData\Roaming\Temp\*"]

Recherche du chargement de DLL à partir de chemins suspects

Vous pouvez rechercher les certificats par défaut qui apparaissent avec Cobalt Strike lorsque les adversaires ignorent ou oublient de modifier ces derniers.

(certificate_serial="8BB00EE" OR certificate_serial_number="8BB00EE")

Search for default Cobalt Strike certificate

Recherche du certificat Cobalt Strike par défaut

Enfin, surveillez les alertes IDS/IPS liées à Cobalt Strike. Cisco Talos a fourni une liste de règles snort qui peut vous aider à détecter une infection par Cobalt Strike.

norm_id IN [Snort, SuricataIDS] (message IN ["*CobaltStrike*", "*Cobalt Strike*"] OR signature IN ["*CobaltStrike*", "*Cobalt Strike*"])

Attendez-vous à augmentation de l’utilisation de Cobalt Strike

De nombreux acteurs malveillants utilisent des paramètres par défaut dans Cobalt Strike, facilitant ainsi les détections pour les défenseurs. En parallèle, les acteurs malveillants sophistiqués qui se soucient de l’OPSEC, modifient les valeurs par défaut pour échapper à la détection. Les entreprises peuvent acheter des flux de données de threat-intel, tels que les rapports DFIR, pour obtenir une liste des adresses IP des serveurs Cobalt Strike utilisés comme IoC pour scruter les réseaux.

Dans les années à venir, vous pouvez vous attendre à ce que les acteurs malveillants continuent et même augmentent leur utilisation de Cobalt Strike pour les aider à cibler tous les secteurs en raison de la stabilité, de la polyvalence et de la difficile identification de Cobalt Strike.

Contacter Logpoint

Contactez-nous et découvrez
pourquoi les entreprises
leaders dans leur secteur
choisissent Logpoint: