
Cobalt StrikeおよびBloodHound統合を備えた、ウェブベースのレッドチーム活動のロギング、レポート、状況認識ツール。
Red Team活動の記録保持、状況把握、報告を支援するハブです。 Stepping Stonesは、チームが活動を記録しレポートのスニペットを生成するためのWebベースのUIを提供します。 このUIは、報告フェーズだけでなく、エンゲージメント全体を通じて使用できる十分な速さを意図しています。
Stepping StonesはPython Djangoアプリケーションです。ローカルコピーを実行するには:
python -m venv .venv.venv\Scripts\activate または *nix では source .venv/bin/activatepip install -r requirements.txtpython manage.py makemigrations background_taskpython manage.py migratepython manage.py runserver と python manage.py process_tasks を並行して実行しますpython manage.py check --deploy を実行し、次のようなガイドに従います:
https://docs.djangoproject.com/en/6.0/howto/deployment/チームサーバー上で - Stepping Stonesが接続できるようにファイアウォールに穴を開けます。例:
sudo ufw allow proto tcp from 172.31.16.0/20 to any port 50050ローカルコピーを実行している場合、gitでコードが更新され、新機能を利用したいときは:
sudo service ssbot stopsudo service steppingstones stoprm -rf /tmp/stepping-stones-main; unzip /tmp/stepping-stones-main.zip && cp -R /tmp/stepping-stones-main/* /opt/steppingstones.venv\Scripts\activate または *nix では source .venv/bin/activatepip install -r requirements.txtpython manage.py makemigrations background_taskpython manage.py migrate。
python manage.py makemigrations の実行を促した場合は停止してStepping Stones開発者に連絡してください - すべてのユーザーが同じマイグレーションスクリプトセットで作業していることが重要であり、これらは開発者を通じて調整されるべきです。sudo service ssbot restartsudo service steppingstones restartjournalctl -u steppingstones同じインスタンスを異なるジョブで使用していて、古いデータをアーカイブして新しく開始したい場合は、次のことができます:
mv db.sqlite3 db.sqlite.OLD_CLIENT_NAMEシステムはSQLiteを使用します。サーバーのルートにある db.sqlite3 ファイルを定期的にバックアップするか、Web UIを介してバックアップし、貴重なデータを保護してください。
設定されたWebフックURLには、主要なイベントごとに小さなJSONドキュメントが送信されます。 JSONドキュメントは常に次の構造を持ちます:
{
"type": "notification type",
"message": "Human readable message"
}
type フィールドには次のいずれかを使用できます:
new beacon (これまで見られなかったビーコンが監視対象のTeam Serverに接続しました)respawned beacon (以前に見られたビーコンが監視対象のTeam Serverに接続しました)returned beacon (再接続を明示的に監視されていたビーコンが再接続しました)これを利用するには、次のブループリントに基づいた https://make.com のシナリオを使用できます:
{"name":"Webhook to iOS","flow":[{"id":1,"module":"gateway:CustomWebHook","version":1,"parameters":{"hook":129792,"maxResults":1},"mapper":{},"metadata":{"designer":{"x":-386,"y":-129},"restore":{"parameters":{"hook":{"data":{"editable":"true"},"label":"My webhook"}}},"parameters":[{"name":"hook","type":"hook:gateway-webhook","label":"Webhook","required":true},{"name":"maxResults","type":"number","label":"Maximum number of results"}],"interface":[{"name":"type","type":"text"},{"name":"message","type":"text"}]}},{"id":8,"module":"ios:SendNotification","version":1,"parameters":{"device":171760},"mapper":{"body":"{{1.message}}","title":"{{1.type}}","action":"","priority":10,"collapsible":false},"metadata":{"designer":{"x":-31,"y":-128},"restore":{"expect":{"action":{"label":"Default"},"priority":{"label":"Deliver immediately"}},"parameters":{"device":{"data":{"editable":"undefined"},"label":"Personal Phone"}}},"parameters":[{"name":"device","type":"device:apn","label":"Device","required":true}],"expect":[{"name":"title","type":"text","label":"Title","required":true},{"name":"body","type":"text","label":"Body"},{"name":"action","type":"select","label":"Action","validate":{"enum":["open_url"]}},{"name":"priority","type":"select","label":"Priority","required":true,"validate":{"enum":[10,5]}},{"name":"collapsible","type":"boolean","label":"Collapse push notifications","required":true}]}}],"metadata":{"instant":true,"version":1,"scenario":{"roundtrips":1,"maxErrors":3,"autoCommit":true,"autoCommitTriggerLast":true,"sequential":false,"confidential":false,"dataloss":false,"dlq":false},"designer":{"orphans":[]},"zone":"eu1.make.com"}}
上記のブループリントをインポートするには、空白のシナリオを作成し、Web UIの下部中央にある "..." (More) メニューの "Import Blueprint" 機能を使用します。
さらに2つのステップが必要です:
Webhookは、Stepping Stonesのwebhookページのボタンからテストできます。
Stepping StonesはDjangoのモデルレベルの権限システムを利用しており、ユーザーが各データモデルの作成、編集、表示、削除を制限できます。
グループは /admin コンソールにあり、そのグループのメンバーに一連の権限(例: クライアントのBlue Teamに適したもの)を割り当てます。
既存のグループは次のとおりです:
| ロール | 説明 |
|---|---|
| クライアントBlue Team - 読み取り専用 | イベントとファイルページを読むことができます |
| クライアントBlue Team - 限定書き込み | Client Blue Team - Read Only に加え、Eventのoutcomeおよびdetectionフィールドへの書き込みアクセスがあります |
インストールプロセス中に作成されたユーザーには "superuser" ステータスが付与されるため、暗黙的にすべての権限を持ちます。 ただし、adminコンソールから手動でユーザーを作成する場合は、そのユーザーが "staff" にも "superuser" にもマークされないようにしてください。そうすれば、暗黙の権限なしで開始し、グループに追加されることによってのみ権限を取得できます。
ユーザーのタイムゾーンは /admin ポータルから変更できます。レポート内の時刻は、Blue Teamによる相関を容易にするために意図的にUTCで出力されます。
Stepping Stonesで表示される日付形式は、Webブラウザのロケールと一致するはずです。つまり、ブラウザがUSロケールに設定されているユーザーは、Web UIとレポートスニペットでMM/DD/YYYY形式の日付を表示します。
Stepping Stonesは、他のツールのログがJSONベースの独自のEventStream形式にフォーマットされていれば取り込むことができます。この形式は、スキーマやサンプルデータを含めて、SteppingStonesのWebインターフェース内で詳しく説明されています。
EventStreamログがStepping Stonesに取り込まれると、特定の関連エントリをEventsにクローンしてレポートに使用できます。
Cobalt Strikeを統合する推奨方法はSSBotを介するものです。これには、/opt/cobaltstrike または c:\tools\cobaltstrike にライセンスされたCobalt Strikeのコピーが必要で、Webインターフェースで設定された(有効な)チームサーバーへの接続に使用されます。
統合後:
SSBotが意図したとおりに動作しない場合に使用できる追加のCLIコマンドがあります:
.\manage.py reset_cs_data [-s SERVER] - 指定されたチームサーバーから解析されたデータをリセットします。名前が指定されない場合はすべてをリセットします。これはCSログから派生したデータ(例: 手動でクローンされたイベントや資格情報)には影響しません。.\manage.py parse_log_tar <file name> - チームサーバーから取得してtarでまとめたlogsディレクトリの内容を解析します。注: これにはSSBotがアクセスできるすべてのデータが含まれるわけではないため、推奨される取り込み方法ではありません。Web UIを介して設定されたNeo4jサーバーは、次のために使用されます:
owned ステータスを更新します。プラグインを使用してStepping Stonesの機能を拡張できます。追加ドキュメントはここにあります。