
Un scanner Cobalt Strike qui récupère les balises Team Server détectées dans un objet JSON
Un outil pour chasser/extraire les beacons Cobalt Strike et « réduire » leur configuration de beacon pour indexation ultérieure. Les chasses peuvent être expansives et à l'échelle d'Internet en utilisant des services comme SecurityTrails, Shodan, ou ZoomEye, ou une liste d'IP.
cat results.json | jq📺 Démo
Prérequis : virtualenv, et python3.8+
git clone https://github.com/splunk/melting-cobalt && cd melting-cobalt Cloner le projet et se placer dans le répertoire du projet.pip install virtualenv && virtualenv -p python3 venv && source venv/bin/activate && pip install -r requirements.txt Créer un Virtualenv et installer les dépendances.Continuer vers la configuration pour la clé API SecurityTrails, Shodan, ou ZoomEye.
melting-cobalt.confCopiez melting-cobalt.conf.example vers melting-cobalt.conf!
Assurez-vous de définir un jeton pour l'un des fournisseurs disponibles. Si vous devez en créer un pour votre compte, suivez ces instructions.
Exemple de configuration :
[global]
output = results.json
# stores matches in JSON here
log_path = melting-cobalt.log
# Sets the log_path for the logging file
log_level = INFO
# Sets the log level for the logging
# Possible values: INFO, ERROR, VERBOSE
nse_script = grab_beacon_config.nse
# path to the nse script that rips down cobalt configs. This is specifically using https://github.com/whickey-r7/grab_beacon_config
searches = search.yml
# contains the different searches to run on each internet scanning service provider (eg shodan, zoomeye, security trails) when hunting for team servers.
shodan_token = TOKENHERE
# shodan token for searching
zoomeye_token = TOKENHERE
# zoomeye token for searching
securitytrails_token = TOKENHERE
# security trails token for searching
Pour modifier l'exploitation par défaut effectuée sur différents fournisseurs, personnalisez search.yml. Les Exemples de recherche par défaut de melting-cobalt sont ci-dessous.
Exécutez :
python melting-cobalt.py
Remplissez ips.txt avec des IP potentielles de serveurs C2 Cobalt Strike, une par ligne, exemple :
1.1.1.1
2.2.2.2
3.3.3.3
Exécutez :
python melting-cobalt.py -i ips.txt
Si vous avez besoin d'inspiration de la part de chasseurs, nous recommandons vivement :
usage: melting-cobalt.py [-h] [-c CONFIG] [-o OUTPUT] [-v] [-i INPUT]
scans for open cobalt strike team servers and grabs their beacon configs and write this as a json log to be analyzed by any analytic tools
like splunk, elastic, etc..
optional arguments:
-h, --help show this help message and exit
-c CONFIG, --config CONFIG
config file path
-o OUTPUT, --output OUTPUT
file to write to the results, defaults to results.json.log
-v, --version shows current melting-cobalt version
-i INPUT, --input INPUT
newline delimeted file of cobalt strike server ips to grab beacon configs from. example ips.txt
Les recherches suivantes sont fournies par défaut et d'autres peuvent être ajoutées à search.yml pour plus de données.
'ssl.jarm:07d14d16d21d21d07c42d41d00041d24a458a375eef0c576d23a7bab9a9fb1'
'ssl.jarm:07d14d16d21d21d07c42d41d00041d24a458a375eef0c576d23a7bab9a9fb1 port:"22, 80, 443, 444, 1234, 2000, 2222, 3000, 3780, 4000, 4443, 6379, 7443, 8443, 8080, 8081, 8082, 8087, 8088, 8099, 8089, 8090, 8181, 8888, 8889, 9443, 50050" HTTP/1.1 404 Not Found Content-Length: 0'
'product:"cobalt strike team server"'
remarque : générera beaucoup de résultats parasites, ne planifiez pas cela à moins de vouloir brûler vos crédits de licence.
'ssl.cert.serial:146473198'
'SELECT address, ports.port FROM ips WHERE jarm = "07d14d16d21d21d07c42d41d00041d24a458a375eef0c576d23a7bab9a9fb1"'
'SELECT address, ports.port, isp.name_normalized, ports.port, address, asn.number, jarm, http.headers.raw FROM ips WHERE jarm = "07d14d16d21d21d07c42d41d00041d24a458a375eef0c576d23a7bab9a9fb1" OR jarm = "07d14d16d21d21d07c07d14d07d21d9b2f5869a6985368a9dec764186a9175" OR jarm = "2ad2ad16d2ad2ad22c42d42d00042d58c7162162b6a603d3d90a2b76865b53" AND http.headers.content_type = "text/plain" AND http.headers.raw = "content-length:0" AND ports.port IN (22, 80, 443, 444, 1234, 2000, 2222, 3000, 3780, 4000, 4443, 6379, 7443, 8443, 8080, 8081, 8082, 8087, 8088, 8099, 8089, 8090, 8181, 8888, 8889, 9443, 50050)'
Veuillez utiliser le suivi des problèmes GitHub pour signaler des bugs ou demander des fonctionnalités.
Si vous avez des questions ou besoin d'aide, vous pouvez :
Copyright 2020 Splunk Inc.
Sous licence Apache License, Version 2.0 (la « Licence »); vous ne pouvez pas utiliser ce fichier sauf en conformité avec la Licence. Vous pouvez obtenir une copie de la Licence à
http://www.apache.org/licenses/LICENSE-2.0
Sauf disposition contraire de la loi ou accord écrit, le logiciel distribué sous la Licence est distribué « EN L'ÉTAT », SANS GARANTIE OU CONDITION D'AUCUNE SORTE, expresse ou implicite. Voir la Licence pour les autorisations spécifiques et les limitations.