
検出されたTeam ServerビーコンをJSONオブジェクトとして取得するCobalt Strike Scanner
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.confmelting-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 に候補となる Cobalt Strike C2 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]
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 イシュートラッカー をご利用ください。
質問やサポートが必要な場合は、以下をご利用いただけます:
Copyright 2020 Splunk Inc.
Apache License, Version 2.0(「ライセンス」)に基づいてライセンスされています。 このファイルは、ライセンスに準拠する場合を除き、使用することはできません。 ライセンスのコピーは次の場所から入手できます。
http://www.apache.org/licenses/LICENSE-2.0
適用法で要求される場合、または書面で同意された場合を除き、 ライセンスに基づいて配布されるソフトウェアは、 明示的または黙示的ないかなる保証もなしに「現状のまま」配布されます。 ライセンスに基づく許容範囲および制限事項については、ライセンスを参照してください。