
Сканер Cobalt Strike, который извлекает обнаруженные маяки Team Server в JSON-объект
Инструмент для охоты/добычи маяков Cobalt Strike и «сокращения» их конфигурации маяка для последующей индексации. Охота может быть как масштабной и охватывающей весь интернет с помощью сервисов SecurityTrails, Shodan или ZoomEye, так и по списку IP-адресов.
cat results.json | jq📺 Демо
Требования: virtualenv и python3.8+
git clone https://github.com/splunk/melting-cobalt && cd melting-cobalt Клонируйте проект и перейдите в каталог проекта.pip install virtualenv && virtualenv -p python3 venv && source venv/bin/activate && pip install -r requirements.txt Создайте виртуальное окружение и установите зависимости.Перейдите к настройке ключа API SecurityTrails, Shodan или ZoomEye.
melting-cobalt.confСкопируйте melting-cobalt.conf.example в melting-cobalt.conf!
Убедитесь, что указали токен для одного из доступных провайдеров. Если нужно создать токен для своей учётной записи, следуйте [этим](htt://need wiki page) инструкциям.
Пример конфигурации:
[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
Чтобы изменить поиск по умолчанию, выполняемый для разных провайдеров, настройте search.yml. Ниже приведены примеры поиска по умолчанию melting-cobalt.
Запустите:
python melting-cobalt.py
Заполните ips.txt потенциальными IP-адресами C2 Cobalt Strike, разделяя их новой строкой, например:
1.1.1.1
2.2.2.2
3.3.3.3
Запустите:
python melting-cobalt.py -i ips.txt
Если вам нужно вдохновение от охотников, настоятельно рекомендуем:
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
Следующие запросы предоставляются «из коробки», их можно добавлять в search.yml для получения дополнительных данных.
'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"'
примечание: будет генерировать много шумных результатов; не запускайте это по расписанию, если не хотите сжечь свои лицензионные кредиты.
'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)'
Пожалуйста, используйте GitHub issue tracker для отправки сообщений об ошибках или запросов функций.
Если у вас есть вопросы или вам нужна поддержка, вы можете:
Copyright 2020 Splunk Inc.
Лицензировано на условиях Apache License, Version 2.0 («Лицензия»); вы не можете использовать этот файл иначе как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу:
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется действующим законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, распространяется на условиях «КАК ЕСТЬ», БЕЗ ГАРАНТИЙ ИЛИ УСЛОВИЙ любого рода, явных или подразумеваемых. См. Лицензию для получения информации о разрешениях и ограничениях в рамках данной Лицензии.