
Um Cobalt Strike Scanner que recupera beacons detectados do Team Server em um objeto JSON
Uma ferramenta para caçar/minerar beacons do Cobalt Strike e "reduzir" sua configuração de beacon para indexação posterior. As buscas podem ser amplas e abranger toda a Internet usando serviços como SecurityTrails, Shodan ou ZoomEye, ou uma lista de IPs.
cat results.json | jq📺 Demo
Requisitos: virtualenv e python3.8+
git clone https://github.com/splunk/melting-cobalt && cd melting-cobalt Clone o projeto e entre no diretório.pip install virtualenv && virtualenv -p python3 venv && source venv/bin/activate && pip install -r requirements.txt Crie um Virtualenv e instale as dependências.Continue para configuração para obter a chave da API do SecurityTrails, Shodan ou ZoomEye.
melting-cobalt.confCopie melting-cobalt.conf.example para melting-cobalt.conf!
Certifique-se de definir um token para um dos provedores disponíveis. Se precisar criar um para sua conta, siga [estas](htt://need wiki page) instruções.
Exemplo de configuração:
[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 a mineração padrão realizada em diferentes provedores, personalize o search.yml. Os Exemplos de Pesquisa padrão do melting-cobalt estão abaixo.
Execute:
python melting-cobalt.py
Preencha o ips.txt com possíveis IPs de C2 do Cobalt Strike, um por linha, exemplo:
1.1.1.1
2.2.2.2
3.3.3.3
Execute:
python melting-cobalt.py -i ips.txt
Se precisar de inspiração de caçadores, recomendamos:
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
As seguintes pesquisas são fornecidas prontas para uso e mais podem ser adicionadas ao search.yml para mais dados.
'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: gerará muitos resultados ruidosos, não programe isso a menos que queira queimar seus créditos de licença.
'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, use o rastreador de problemas do GitHub para relatar bugs ou solicitar recursos.
Se você tiver dúvidas ou precisar de suporte, pode:
Copyright 2020 Splunk Inc.
Licenciado sob a Apache License, Versão 2.0 (a "Licença"); você não pode usar este arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em
http://www.apache.org/licenses/LICENSE-2.0
A menos que exigido pela lei aplicável ou acordado por escrito, o software distribuído sob a Licença é distribuído "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a Licença para obter as permissões específicas e limitações sob a Licença.