Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sleep_python_bridge — このプロジェクトは、sleepとPython言語の間の「ブリッジ」です。標準のGUIクライアントを必要とせずに、Pythonを介してCobalt Strikeチームサーバーを制御できます。注: このプロジェクトは非常にベータ版です。テストのためのプレイグラウンドを提供することを目的としており、公式にサポートされている機能ではありません。これは将来、コア製品に追加されるかもしれません。 | Kitploit
ツール/GitHubGitHub/cobalt-strike/sleep_python_bridge
侵害指標 (IOC) 管理ペイロード生成コマンド&コントロールレッドチーミングペイロード開発ログ分析
GitHubcobalt-strike/sleep_python_bridge

sleep_python_bridge

このプロジェクトは、sleepとPython言語の間の「ブリッジ」です。標準のGUIクライアントを必要とせずに、Pythonを介してCobalt Strikeチームサーバーを制御できます。注: このプロジェクトは非常にベータ版です。テストのためのプレイグラウンドを提供することを目的としており、公式にサポートされている機能ではありません。これは将来、コア製品に追加されるかもしれません。

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る
1883261年前Kitploit レビュー済み

Cobalt Strike Sleep Python Bridge

このプロジェクトは、sleep言語とPython言語の間の「ブリッジ」です。標準のGUIクライアントを必要とせずに、PythonからCobalt Strikeチームサーバーを制御できます。

注記: このプロジェクトはまだベータ版です。目標はテストのためのプレイグラウンドを提供することであり、公式にサポートされている機能ではありません。おそらくこれは、将来的にコア製品に追加される可能性があります。

このプロジェクトは、@BinaryFaultline氏と@Mcgigglez16氏がプロジェクト https://github.com/emcghee/PayloadAutomation で行った作業に触発されました。お二人に特別な感謝を捧げます!!

このブリッジの中核は、ヘッドレスなCobalt StrikeクライアントのPython実装です。これは、agscript が提供するAggressor Scriptコンソールをエンジンとして使用することで実現されています。agscript はCobalt Strike (https://www.cobaltstrike.com/aggressor-script/index.html) とのヘッドレスな対話を可能にします。この「ブリッジ」は、sleepy.py 内のPythonヘルパー関数を使用して、agscriptコンソールが期待する必要なsleepコマンドを生成することで機能します。sleep関数を書く代わりに、striker.py がsleepを抽象化するヘルパー関数を提供し、Pythonの使用を可能にします。

元のプロジェクトからの注目すべき変更点

PayloadAutomationプロジェクトに触発されたため、このプロジェクトは同じコードの多くから始まりましたが、agscriptラッパーとして機能するために必要なコンポーネントだけを使用するように簡素化したいと考えました。

  • Payload_Automation から sleep_python_bridge に改名。このプロジェクトはペイロード生成以上のものです。
  • PyPIライブラリからローカルモジュールに変更。これはテスト用に行われたもので、広範なテストを経ればPythonライブラリとして有望な候補になる可能性があります。
  • aggressorのバージョンに合わせてヘルパーを更新・追加
  • 外部スクリプトをロードする機能を追加。

同梱ライブラリ

  • Striker: Cobalt Strikeと対話し、通常はSleep/GUIからのみアクセスできる機能を実行するための関数群。
  • Sleepy: SleepオブジェクトとPythonオブジェクトの間のブリッジを容易にするための関数群。
  • Compyler: プラットフォーム固有またはクロスプラットフォームの各種ペイロードをコンパイルするための関数群。
  • Artifactor: アーティファクトを検査・レビューし、IoCを収集・追跡するための関数群。

ファイルとディレクトリ

TODO

  • 公開された関数をドキュメント化する
  • コンパイルベースの関数を striker.py から compyler.py に移動する
  • 特にアプリケーションの依存関係について、追加のエラーチェックを追加する
  • リモートビルドとmingwを含むように compyler を拡張する
  • artifactor.py を介して生成されたペイロードにIoCトラッキングを追加する
  • エラー「User is already connected.」を処理する
  • 正式なPythonライブラリへの変換を検討する

使用方法

このプロジェクトの例が最も理解しやすいかもしれませんが、それは example.py スクリプトです。

root@kitploit:~
#!/usr/local/bin/python3

## Import the bridge
from sleep_python_bridge.striker import CSConnector
from argparse import ArgumentParser
from pprint import pp, pprint

###################
## Argparse
def parseArguments():
    parser = ArgumentParser()
    parser.add_argument('host', help='The teamserver host.')
    parser.add_argument('port', help='The teamserver port.')
    parser.add_argument('username', help='The desired username.')
    parser.add_argument('password', help='The teamserver password.')
    parser.add_argument('path', help="Directory to CobaltStrike")
    
    args = parser.parse_args()
    return args

## Let's go
def main(args):

    cs_host = args.host
    cs_port = args.port
    cs_user = args.username
    cs_pass = args.password
    cs_directory = args.path

    ## Connect to server
    print(f"[*] Connecting to teamserver: {cs_host}")
    with CSConnector(
        cs_host=cs_host, 
        cs_port=cs_port, 
        cs_user=cs_user, 
        cs_pass=cs_pass,
        cs_directory=cs_directory) as cs:

        # Perform some actions
        # 
        # Get beacon metadata - i.e., x beacons() from the script console
        beacons = cs.get_beacons()
        print("BEACONS")
        pprint(beacons)

        # Get list of listners - i.e., x listeners_stageless() from the script console
        listeners = cs.get_listeners_stageless()
        print("LISTENERS")
        pprint(listeners)

if __name__ == "__main__":
    args = parseArguments()
    main(args)

スクリプトを呼び出します

root@kitploit:~
python3 example.py 127.0.0.1 50050 example password /path/to/cobaltstrike

実用的な例

ログトラッカー

ビーコンログは、チームサーバーの実行中に利用できるほか、チームサーバーに保存されたビーコンログファイルからも利用できます。データは常に存在しますが、希望する形式で表示されるとは限りません。これは、HTMLデータグリッドを使用してビーコンログをすばやく表示するログトラッカーの例です。

beaconlogtracker.py は、チームサーバーに接続し、実行中のビーコンログを30秒ごとに抽出して <code>beaconlogs.json` に保存し、検索可能でソート可能なHTMLデータグリッドに表示するスクリプトです。

ビーコンログは常に logs ディレクトリに保存されますが、これは別のビューアを使用してメモリ内ログを追跡する代替手段です。チームサーバーが再起動されるとメモリ内ログは失われるため、チームサーバー上の logs ディレクトリに保存されているログを参照する必要があります。このスクリプトは、メモリ内ログをファイル beaconlogs.json に同期し続けます。これにより、Cobalt Strikeが再起動された場合でも、logs ディレクトリを調べることなく、すべてのデータをすばやく簡単に視覚化できます。

チームサーバーに接続して30秒ごとにログを同期するようにスクリプトを起動します。

使用方法:

python3 beaconlogtracker.py 127.0.0.1 50050 logtracker password /path/to/cobaltstrike

これにより、beaconlogs.json は保存済みおよび実行中のビーコンログと同期されます。30秒ごとに同期されます。

output/html ディレクトリからWebサーバーを起動します。

python3 -m http.server 8000

http://localhost:8000/beaconlogs.html に接続します。

ペイロードジェネレータ

レッドチームオペレーターからよく要求される機能は、Cobalt Strike GUIを必要とせずにペイロードをプログラムで作成できることです。参照プロジェクトはペイロードジェネレータでこれを実現しました。これは素晴らしいですが、特有の課題があります。Aggressorは、ペイロードの構築方法に影響を与えるいくつかのフックを提供します。これらのフックは、さまざまなキット(アーティファクトキット、スリープマスクキット、UDRLキットなど)で使用されます。通常は、GUIを介してaggressorスクリプトをロードすることで使用されます。このプロジェクトは、外部スクリプトのロードを可能にするように拡張されました。これがないと、これらのペイロードフックを使用するのは困難です。このコードは、カスタム難読化を追加したり、カスタムローダーに埋め込んだり、その他の変更を行ったりするために、ペイロードを外部関数に渡すように簡単に拡張できます。

ペイロードジェネレータスクリプトは、チームサーバーに接続し、追加のスクリプトをロードして、ペイロードを作成します。

使用方法(外部キットなし):

  • python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike を実行します。

使用方法(外部キットあり)

この例では、アーティファクトキットとスリープマスクキットが有効になっているArsenalキットを追加する手順を示します。

  • /path/to/arsenal_kit/arsenal_kit.config ファイルを更新して、アーティファクトキットとスリープマスクキットを有効にします。
  • [任意] 必要に応じてアーティファクトキットとスリープマスクキットを変更します。
  • /path/to/arsenal_kit/build_arsenal_kit.sh でArsenalキットをビルドします。
  • Arsenalキットの配布ファイルを payload_scripts ディレクトリにコピーします。
    cp -r /path/to/arsenal_kit/dist/* /path/to/sleep_python_bridge/payload_scripts
  • [任意] 追加の変更の詳細については、ロギングのセクションを参照してください。
  • python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike を実行します。

ロギング

通常、GUIを使用する場合、外部スクリプトは println aggressor関数を使用してScript Consoleに情報を出力できます。これはフィードバックやデバッグに役立ちます。payloadgenerator.py を使用する場合、println の出力は失われ、利用可能な唯一のオプションは elog 関数です。elog を使用する場合、Event Logの情報を表示するにはGUIが必要です。

「外部キットあり」の使用例の続きとして、/path/to/sleep_python_bridge/payload_scripts/arsenal_kit.cna ファイルを更新し、2箇所の println を elog に変更しましょう。この変更により、ArsenalキットのすべてのロギングがGUIのEvent Logで利用できるようになります。

外部スクリプトのロード

外部スクリプトのロードは、ペイロードフック(アーティファクト、スリープマスク、UDRLキットなど)を含むペイロード変更スクリプトを除いて、常に必要というわけではありません。Cobalt Strike GUIからスクリプトをロードした場合、ペイロードはGUI経由のこれらのスクリプトを尊重しますが、agscriptクライアントからは尊重されません(これらは異なるクライアントです)。スクリプトとサポートファイルを payload_scripts ディレクトリに追加する必要があります。

payloadgenerator.py は、payload_scripts ディレクトリの最上位にある .cna スクリプトを自動的にロードします。サブディレクトリにある .cna スクリプトはロードされません。

Arsenal Kitを使用したディレクトリ構造の例。

root@kitploit:~
$ ls -1R ./payload_scripts
./payload_scripts:
arsenal_kit.cna
artifact
sleepmask

./payload_scripts/artifact:
artifact32big.dll
artifact32big.exe
artifact32.dll
artifact32.exe
artifact32svcbig.exe
artifact32svc.exe
artifact64big.exe
artifact64big.x64.dll
artifact64.exe
artifact64svcbig.exe
artifact64svc.exe
artifact64.x64.dll
artifact.cna

./payload_scripts/sleepmask:
sleepmask.cna
sleepmask_pivot.x64.o
sleepmask_pivot.x86.o
sleepmask.x64.o
sleepmask.x86.o

使用方法(4.8の追加オプション)

@mgeeky氏による最近のアップデートのおかげで、payloadgenerator.py スクリプトは、4.8で追加された新しい artifact_payload 関数パラメータをサポートする追加引数をサポートするようになりました。これらの引数により、生成されるペイロードをより細かく制御できるようになりました。

root@kitploit:~
$ python3 payloadgenerator.py --help
------------------------
Beacon Payload Generator
------------------------
usage: payloadgenerator.py [-h] [-o path] [-l name] [-a arch] [-t types] [-e exit] [-c method] host port username password path

positional arguments:
  host                  The teamserver host.
  port                  The teamserver port.
  username              The desired username.
  password              The teamserver password.
  path                  Directory to CobaltStrike

optional arguments:
  -h, --help            show this help message and exit

optional parameters:
  -o path, --payload-path path
                        Where to save generated payloads. Default: output/payloads/
  -l name, --listener name
                        Specify listener name to get payloads for. Default: payloads for all listeners will be produced
  -a arch, --arch arch  Specify payload architecture. Choices: x86, x64. Default: payloads for both are generated
  -t types, --payload-types types
                        Comma separated list of payload types to generate keyed by file extensions. Choices: exe,dll,svc.exe,bin,ps1,py,vbs or use 'all' to compile all at once.
                        Default: exe,dll,bin
  -e exit, --exit exit  Payload exit method. Choices: thread, process. Default: process
  -c method, --call-method method
                        System call method. Choices: indirect, direct, none. Default: <empty> (backwards compatible with Cobalt pre 4.8)

例

root@kitploit:~
$python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike -o /share/payloads/ -c indirect -a x64
------------------------
Beacon Payload Generator
------------------------
[*] Connecting to teamserver: 127.0.0.1
Loading cna scripts from ./payload_scripts

Scripts
-------
arsenal_kit.cna
console.cna

[*] Creating stageless payloads for listener: http1
[*] Creating http1.x64.exe
[*] Creating http1.x64.dll
[*] Creating http1.x64.bin

$python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike -o /share/payloads/ -c indirect -a x64 -t exe
------------------------
Beacon Payload Generator
------------------------
[*] Connecting to teamserver: 127.0.0.1
Loading cna scripts from ./payload_scripts

Scripts
-------
arsenal_kit.cna
console.cna

[*] Creating stageless payloads for listener: http1
[*] Creating http1.x64.exe

$python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike -o /share/payloads/
------------------------
Beacon Payload Generator
------------------------
[*] Connecting to teamserver: 127.0.0.1
Loading cna scripts from ./payload_scripts

Scripts
-------
arsenal_kit.cna
console.cna

[*] Creating stageless payloads for listener: http1
[*] Creating http1.x86.exe
[*] Creating http1.x86.dll
[*] Creating http1.x86.bin
[*] Creating http1.x64.exe
[*] Creating http1.x64.dll
[*] Creating http1.x64.bin

ビーコングラファー

これは、ビーコンを有向グラフで表示するベータ版のコードです。

このスクリプトは、ファイル output/data/beacons.json を更新します。

Webサーバーを起動し、http://localhost:8000/beacons.html を開きます。

使用方法:

python3 beacongrapher.py 127.0.0.1 50050 grapher password /path/to/cobaltstrike

これにより、JavaScriptグラファーが使用する beacons.json ファイルが作成されます。

output/html ディレクトリからWebサーバーを起動します。

python3 -m http.server 8000

http://localhost:8000/beacons.html に接続します。

ツールをダウンロード
項目説明
sleep_python_bridgePythonがCobalt Strikeとインターフェースできるようにするライブラリ
output/htmlHTMLデータビューア用のパス
output/html/dataデータビューアが使用するJSONデータ用のパス
output/payloads保存されたペイロード用のパス(ペイロードジェネレータで使用)
payload_scriptspayloadgenerator.py によってロードされる外部スクリプト用のパス
beaconlogtracker.pyHTMLデータグリッドを使用してビーコンログを表示するビーコンログトラッカーの実装
payloadgenerator.py各リスナー用のペイロードを作成するビーコンペイロードジェネレータの実装
beacongrapher.pyHTML JavaScript有向グラフを使用してビーコンを追跡するビーコングラフトラッカーの実装