
Un escáner de Cobalt Strike que recupera los beacons del Team Server detectados en un objeto JSON
Una herramienta para cazar/minar balizas de Cobalt Strike y "reducir" su configuración de baliza para indexación posterior. Las cacerías pueden ser expansivas y a nivel de internet utilizando servicios como SecurityTrails, Shodan, o ZoomEye, o una lista de IPs.
cat results.json | jq📺 Demo
Requisitos: virtualenv y python3.8+
git clone https://github.com/splunk/melting-cobalt && cd melting-cobalt Clona el proyecto y accede al directorio del proyecto.pip install virtualenv && virtualenv -p python3 venv && source venv/bin/activate && pip install -r requirements.txt Crea el entorno virtual e instala los requisitos.Continúa a configuración para la clave API de SecurityTrails, Shodan o ZoomEye.
melting-cobalt.conf¡Copia melting-cobalt.conf.example a melting-cobalt.conf!
Asegúrate de configurar un token para uno de los proveedores disponibles. Si necesitas crear uno para tu cuenta, sigue [estas](htt://need wiki page) instrucciones.
Ejemplo de configuración:
[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
Para modificar la minería predeterminada realizada en diferentes proveedores, personaliza search.yml. Los Ejemplos de búsqueda predeterminados de melting-cobalt están a continuación.
Ejecuta:
python melting-cobalt.py
puebla ips.txt con IPs de C2 de Cobalt Strike potenciales, delimitadas por nueva línea, ejemplo:
1.1.1.1
2.2.2.2
3.3.3.3
Ejecuta:
python melting-cobalt.py -i ips.txt
Si necesitas inspiración de cazadores, recomendamos encarecidamente:
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
Las siguientes búsquedas se proporcionan de serie y se pueden añadir más a search.yml para más datos.
'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"'
nota: generará muchos resultados ruidosos, no programes esto a menos que quieras quemar tus créditos de licencia.
'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)'
Por favor, usa el rastreador de incidencias de GitHub para reportar errores o solicitar funciones.
Si tienes preguntas o necesitas soporte, puedes:
Copyright 2020 Splunk Inc.
Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puedes usar este archivo excepto en cumplimiento con la Licencia. Puedes obtener una copia de la Licencia en
http://www.apache.org/licenses/LICENSE-2.0
A menos que lo exija la ley aplicable o se haya acordado por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulta la Licencia para el lenguaje específico que rige los permisos y limitaciones bajo la Licencia.