一款用于搜索/挖掘 Cobalt Strike 信标并“缩减”其信标配置以便后续索引的工具。搜索范围可以是基于 SecurityTrails、Shodan 或 ZoomEye 等服务的广域网级别,也可以是 IP 列表。
📺 演示
要求: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 创建 Virtualenv 并安装依赖。继续前往配置以获取 SecurityTrails、Shodan 或 ZoomEye 的 API 密钥。
melting-cobalt.conf将 melting-cobalt.conf.example 复制为 melting-cobalt.conf!
确保为其中一个可用提供商设置令牌。如需为你的账户创建令牌,请按照[这些](htt://need wiki page)说明操作。
配置示例:
[global]
output = results.json
# 在此以 JSON 格式存储匹配结果
log_path = melting-cobalt.log
# 设置日志文件的路径
log_level = INFO
# 设置日志级别
# 可选值:INFO, ERROR, VERBOSE
nse_script = grab_beacon_config.nse
# NSE 脚本路径,用于提取 Cobalt 配置信息。特指 https://github.com/whickey-r7/grab_beacon_config
searches = search.yml
# 包含在互联网扫描服务提供商(如 shodan、zoomeye、security trails)上搜索团队服务器时运行的不同搜索。
shodan_token = TOKENHERE
# 用于搜索的 Shodan 令牌
zoomeye_token = TOKENHERE
# 用于搜索的 ZoomEye 令牌
securitytrails_token = TOKENHERE
# 用于搜索的 SecurityTrails 令牌
要修改在不同提供商上执行的默认挖掘行为,请自定义 search.yml。以下是 melting-cobalt 默认的搜索示例。
运行:
python melting-cobalt.py
将潜在的 Cobalt Strike C2 IP 填入 ips.txt,每行一个 IP,示例如下:
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]
扫描开放的 Cobalt Strike 团队服务器,获取其信标配置,并将其写入 JSON 日志,以便后续使用 Splunk、Elastic 等分析工具进行分析。
optional arguments:
-h, --help 显示此帮助信息并退出
-c CONFIG, --config CONFIG
配置文件路径
-o OUTPUT, --output OUTPUT
结果写入的文件,默认为 results.json.log
-v, --version 显示当前 melting-cobalt 版本
-i INPUT, --input INPUT
换行分隔的 Cobalt Strike 服务器 IP 文件,用于获取信标配置。示例: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 问题跟踪器 提交错误或请求功能。
如果你有问题或需要支持,你可以:
Copyright 2020 Splunk Inc.
Licensed under the Apache License, Version 2.0 (the "License"); 你可以在遵守许可证的前提下使用本文件。 你可以在以下网址获得许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件均按“原样”分发,不提供任何明示或默示的保证或条件。请参阅许可证以了解具体的许可权限和限制。