アウトオブバンド検出のためのエクスプロイトサーバー。ターゲットを自分が所有するドメインに向けてください。送り返されるすべてのHTTPリクエストとメールは自分が管理するダッシュボードに届き、それに対して任意のレスポンスを返すことができます。
BEAR-C2 は、ロシア、中国、北朝鮮、イランの APT グループに触発された実世界の TTP を中心に構築された敵対者シミュレーションおよびエミュレーションフレームワークです。多様なエンゲージメントシナリオに対応する柔軟な環境を提供し、APT Attack Simulation Repository における関連するシミュレーション研究から得られた知見を活かし、レッドチーム運用および敵対者エミュレーションのための現実的な基盤を提供します。防御回避技術や複数の暗号化オプションをサポートし、実世界の侵入シナリオを正確に再現します。

[!CAUTION] 本プロジェクトは教育および研究目的のみを対象としており、いかなる無断使用も法的な結果を招く可能性があることに留意することが重要です。
git clone https://github.com/S3N4T0R-0X0/BEAR-C2.git && cd BEAR-C2
chmod +x requirements.sh && ./requirements.sh
./BEAR-C2
## 🧠 アドバーサリ・シミュレーションの課題:
**APT 技術**を正確に再現するには、現代の侵入で使用される`接続プロトコル、暗号化方式、持ち出し手法、C2 チャネル/プロファイルを模倣できる柔軟な環境`が必要です。しかし、このレベルの精度を実現することは常に課題でした。
<img width="1366" height="732" alt="main " src="https://assets.kitploit.com/production/public/readmes/54775/8af4474bf61f52114745ec8403b4ea6d01d26a57f85913f1f01b4bba559a1eb7/59654a7b465df184554d5c31ee49293c1f5d9da71a1e6ef81aa0a2fa5b88b8ea-display-v1.webp" />
オペレーターが特定の**持ち出しプロファイル**で特定の**暗号化スキーム**をテストする必要があるたびに、攻撃シナリオに合わせた**個別の C2 スクリプト**`を構築しなければなりません。` 例えば、あるシミュレーションでは **AES 暗号化**と **OneDrive による持ち出し**が必要になる一方、別のシミュレーションでは実際の攻撃で観測された技術を反映するために**異なる暗号化方式**と **Dropbox による持ち出し**を組み合わせる必要があるかもしれません。この柔軟性の欠如により、プロセスは非効率的で時間のかかるものになっています。
<img width="1359" height="680" alt="Screenshot From 2026-09-01 05-54-48" src="https://assets.kitploit.com/production/public/readmes/54775/c106129e53832b08e6575610090337721e4e5892eade10bee395fae638326cc2/299229b4ffae9286d368a6e9243c4528d469f5395f166d9b67fa0020beaf5d8a-display-v1.webp" />
このような理由から **BEAR C2** は、新しいリスナーを通じて完全なカスタマイズを可能にする**アドバーサリ・シミュレーション**を提供するために開発されました。これにより、`接続プロトコル、暗号化、持ち出し、`および自動ロード技術をシームレスに構成できます。これにより、シナリオごとにカスタムスクリプトを構築する必要なく、シミュレーションが実際の **APT 侵入**を正確に反映できるようになります。
## Reaper Node ペイロードサンプル
Reaper Node は C++ ペイロードサンプル `/Stagers-Loaders/Reaper Node Samples/` を提供しており、事前生成されたペイロードが不要な環境向けのカスタマイズ可能なテンプレートとして使用できます。サンプルには、対応する Reaper Node インスタンスとの通信を確立するために必要なコア構成フィールドが含まれています。
ペイロードをコンパイルする前に、Reaper Node の構成に一致するよう、必要な接続およびトランスポートパラメータを構成する必要があります。
### ペイロード構成
ペイロード構成では、以下のパラメータの入力フィールドを提供する必要があります:
* **Authentication ID**
ペイロードを構成済みの Reaper Node インスタンスに関連付けるために使用される識別子。
* **Server Host**
Reaper Node エンドポイントの IP アドレスまたはホスト名。
* **Server Port**
選択した通信プロトコル用に Reaper Node が公開するネットワークポート。
* **Encryption Key**
選択したトランスポートが暗号化を使用する場合に必要です。値は Reaper Node で使用される暗号化構成と一致する必要があります。暗号化が無効になっている場合、このフィールドは不要です。
* **User-Agent**
初期の HTTP/HTTPS 通信を確立する際に使用される HTTP クライアント識別値。ペイロードは、対応する Reaper Node 構成でサポートされている User-Agent を使用する必要があります。
User-Agent は、異なる Reaper Node 構成間で同一である必要はありません。結果として得られる構成がサーバー側のトランスポート設定と互換性がある限り、ペイロードは選択した Reaper Node プロファイルでサポート対象として定義されている任意の User-Agent を使用できます。
### 構成例
以下の例は、認証、サーバーアドレス指定、暗号化、および User-Agent パラメータを含む HTTPS トランスポート構成のサンプルを示しています:```cpp
const string AUTH_ID = "YOUR_AUTH_ID";
const string SERVER_HOST = "YOUR_SERVER_HOST";
const int SERVER_PORT = YOUR_SERVER_PORT;
const string KEY = "YOUR_ENCRYPTION_KEY";
const string DEFAULT_USER_AGENT = "YOUR_USER_AGENT";
bool VERIFY_SSL = true;
この設定は、暗号化が有効化された HTTPS トランスポートを表します。上記に示された値はプレースホルダーであり、対応する Reaper Node 設定で定義されたパラメータに置き換える必要があります。
C++ サンプルは、カスタマイズの出発点を提供することを目的としています。ユーザーは、テスト対象の Reaper Node プロファイルに応じて設定およびトランスポート関連のパラメータを変更し、その後、許可されたシミュレーション環境向けにカスタマイズしたペイロードをコンパイルできます。
Listeners Table は、すべてのアクティブおよび設定済みの C2 リスナーを一元的に把握できる概要を提供します。リスナー名、アドレス、ネットワークプロトコル、暗号化方式、exfiltration プロファイル、および現在のステータス (Active または Stopped/Disconnected) などの重要な詳細を表示します。このインターフェースから、オペレーターはリスナーの開始、停止、名前変更、削除を簡単に行えます。また、ビーコン通信を管理するための暗号化キーや認証 ID にすばやくアクセスできます。このテーブルは、C2 インフラストラクチャを編成および監視するためのコマンドハブとして機能します。

このバージョンは、集中化されたリスナー管理、リアルタイムのセッション追跡、カスタマイズ可能な通信プロファイル、統合された exfiltration ワークフロー、および効率的なエンゲージメント管理のための柔軟なオペレーター制御を通じて、敵対者シミュレーション運用を効率化する完全な GUI を備えています。
⚠️ NOTE: このプロジェクトは活発に開発中です。機能は継続的に追加および改善されています。
| 機能 | 説明 |
|---|---|
| マルチプロトコルリスナー | DoH、HTTPS、HTTP、QUIC、Reverse TCP |
| リスナーごとの暗号化 | AES、XOR、RC4、DES、ChaCha20、RSA |
| Exfiltration プロファイル | Google Drive、OneDrive、Dropbox |
| 統合 C2 チャネル | 統合された Telegram、Discord C2 通信チャネル |
| プロキシサポート | SOCKS4、SOCKS4a、および SOCKS5 プロキシおよびリダイレクターのサポート |
| 動的ドメイン生成アルゴリズム | 復元力のあるインフラストラクチャシミュレーションのための DGA サポート |
| JA3S フィンガープリンティング | トラフィックシミュレーションおよびネットワークプロファイル調整のためのカスタマイズ可能な JA3S フィンガープリント |
| Malleable C2 プロファイル | 柔軟なネットワークトラフィックシミュレーションのためのコミュニティ Malleable C2 profiles のサポート |
| ステージャー & ローダー | APT 敵対者シミュレーション向けに設計された自動化されたステージャーおよびローダー技術 |
| 統合ツール | 組み込みのスクリプト難読化ツール、フィッシングツールキット、およびファイルホスティング |
| TLS 証明書生成 | 信頼されたベンダーを模倣した自己署名 TLS 証明書 |
| HTTP カスタマイズ | クライアントとサーバーの両方の通信に対する Base64 URL エンコーディングおよびカスタム HTTP ヘッダー |
| リアルタイムセッションマネージャー | ライブステータス追跡、セッション監視、およびリアルタイム更新機能 |
| カスタム命名 & URI パス | 運用の柔軟性のためのユーザー定義のキャンペーン名および設定可能な URI パス |
| 再接続 & タイムアウト制御 | セッションごとに設定可能な再接続遅延および調整可能なタイムアウトしきい値 |
| 認証識別子 | セキュリティ強化のための有効期限制御を備えた一意の認証トークン |
| セッションハードニングユーティリティ | アクティブセッションのための履歴クリーナー、セッションリミッター、および認証タイムアウト管理 |
Google Drive、OneDrive、Dropbox などのサポートされているクラウドストレージプロバイダーに対して、セッションごとの exfiltration 設定を構成します。Exfiltration Profile インターフェースでは、API アクセストークンと宛先フォルダパスを定義でき、セッションごとにデータ収集ワークフローをカスタマイズできます。各セッションは独自の exfiltration プロファイルを使用できるため、運用に応じて収集したデータを異なるクラウドストレージプロバイダーや宛先に簡単にルーティングできます。

Telegram 通信レイヤーは、C2 サーバーとペイロードの間の仲介者として Telegram ボットを使用します。C2 サーバーは、設定された API ID、API Hash、および電話番号を使用して Telegram アカウントに認証し、そのアカウントを通じて事前に作成された Telegram ボットに接続します

ボットの Bot Token はペイロードに埋め込まれ、ペイロードが Telegram API を通じてボットと通信できるようにします。コマンドは C2 サーバーからボットに送信され、ボットはそれらをペイロードに転送し、ペイロードは受信したタスキングを実行して同じ通信パスを通じて結果を返します。これにより、Telegram を通信レイヤーとして使用する双方向のコマンドアンドコントロールチャネルが作成されます。

Telegram で @BotFather を開き、/newbot を使用して新しいボットを作成します。
/newbot を送信するbot で終わる一意のユーザー名を指定する
Bot Token は、Telegram エージェントが Telegram Bot API で認証するために必要です。
公式の Telegram API 開発ポータルを開き、新しいアプリケーションを作成します。
以下の認証情報を生成します: https://my.telegram.org/apps
API IDAPI Hash
これらの認証情報は、ボット通信の管理に使用される Telegram アカウントを BEAR-C2 が認証するために使用されます。
Telegram Agent.cpp を開き、Telegram 通信設定を構成します。
BotFather によって生成された Bot Token は、ペイロードをコンパイルする前に /Stagers-Loaders/C2 Channel Agent Samples/Telegram Agent.cpp に配置する必要があります。

設定フローは次のとおりです:
BotFather → Bot Token → payload.cpp → Compile
API ID と API Hash は BEAR-C2 の Telegram 統合で使用され、Bot Token は Telegram ペイロードで設定されるため、設定された Telegram ボットと通信できます。
このステージでは、従来のコマンドアンドコントロール通信チャネルを、Discord Gateway API を使用した Discord ベースの通信レイヤーに置き換えます。専用サーバー、固定 IP アドレス、またはカスタムドメインに依存する代わりに、オペレーターはプライベートな Discord チャネルを通じてシミュレートされたインプラントと通信します。

Discord 通信レイヤーは、同じ Discord チャネルを通じて接続された 2 つの Discord ボットを使用します。1 つのボットは C2 サーバーに接続され、2 つ目のボットはペイロードに割り当てられます。2 つのボットは共有の Discord チャネルを通じて通信し、Discord を介して C2 サーバーとペイロードの間でタスキングと通信を可能にします。
Discord ではボットが他のボットと直接通信することが許可されていないため、共有チャネルを使用することで両者間の通信パスが提供されます。

Discord エージェントは、ペイロードと BEAR-C2 の間の通信レイヤーとして Discord Gateway および API を使用します。セットアップには、Discord Bot アプリケーション、専用のテキストチャネル、必要なボット権限、および C++ エージェントサンプルで設定する対応する値が必要です。
公式の「Discord Developer Portal」(https://discord.com/developers/applications) を開き、シミュレーションに必要な Discord Bot アプリケーションを作成します。
Discord C2 チャネルは 2 つの Bot アイデンティティを使用します:
各アプリケーションについて、Bot 設定を開き、必要な Bot Token を生成します。

Discord Developer Portal の Bot 設定を開き、Message Content Intent を有効にします。
また、Bot はシミュレーションで使用される Discord テキストチャネルに対して必要な権限を持っている必要があり、以下が含まれます:
これらの権限により、Bot は設定されたチャネルからメッセージにアクセスし、同じ通信パスを通じてメッセージを送信できます。Discord では、API を通じてメッセージコンテンツを受信する必要があるアプリケーションに Message Content Intent が必要です。

Discord エージェント専用のプライベートテキストチャネルを作成し、両方の Bot アプリケーションをチャネルに追加します。
Discord Developer Portal で設定された同じ権限が、チャネル内の Bot アプリケーションに対しても有効になっていることを確認してください。
Discord Developer Mode を有効にして Channel ID をコピーします。Discord は Developer Mode が有効な場合に Copy Channel ID オプションを通じて Channel ID を提供します。

同じ Channel ID が C2 設定と Discord エージェントの両方で使用され、両側が同じ Discord チャネルを通じて通信します。
以下に located する Discord エージェントサンプルを開きます:
"Stagers-Loaders/C2 Channel Agent Samples/Discord Agent.cpp"
このサンプルは、Discord Bot Token、Channel ID、および Bot User ID の設定フィールドを提供します:

プレースホルダーを、Payload Bot および専用 Discord チャネルに属する値に置き換えます。
"BOT_USER_ID" は、ペイロードが使用する Bot アカウントを識別します。Discord User ID は、Developer Mode を有効にした後にコピーできます。
BEAR-C2 内の Discord Channel 設定で、対応する C2 Bot Token、Channel ID、および Listener Name を指定します。

C2 Bot と Payload Bot は通信パスとして同じ Discord チャネルを使用し、各側は独自の Bot Token を使用して認証します。
Discord 設定とペイロードサンプルが完了したら、許可された敵対者シミュレーション環境で使用するために C++ エージェントをコンパイルします。
⚠️ NOTE: C2 チャネルの制限事項
C2 チャネルは、C2 サーバーとビーコンの間の通信レイヤーとしてサードパーティのメッセージングプラットフォームを使用する場合、データ転送およびビーコン識別に関連する制限を導入します
● データ転送の制限
Telegram と Discord は、ボット API を通じて交換される個々のメッセージに最大文字数制限を課しています。BEAR C2 では、C2 チャネルが C2 サーバーとビーコンの間のトランスポートレイヤーとして機能するため、この制限はチャネルを通じて転送されるデータに適用され、ビーコンのペイロード自体のサイズには適用されません。C2 サーバーからビーコンに送信されるデータ、およびビーコンから C2 サーバーに返されるデータは、送信前に Base64 エンコードされる場合があります。Base64 は送信される表現のサイズを増加させるため、単一のメッセージで転送できる元のデータ量は、プラットフォームの文字数制限よりも少なくなります。
[ Telegram ] メッセージあたり最大 4096 文字、C2 データ転送用に 4000 文字が設定されています

[ Discord ] メッセージあたり最大 2000 文字、C2 データ転送用に 1400 文字が設定されています

設定された制限は、C2 メッセージ構造とエンコーディングのオーバーヘッドに対して十分な余裕を提供するために、意図的にプラットフォームの制限より低く抑えられています。データが設定された制限を超える場合、エンコードされたデータは複数のメッセージに分割され、受信側で再構築される必要があります。
● ビーコン識別と応答の帰属
C2 チャネルは、複数のビーコンが同じ Telegram ボットまたは Discord チャネルを共有する場合にも制限を導入します。同じボットまたはチャネルを通じて通信するすべてのビーコンは同じ通信パスを使用するため、C2 サーバーは本質的に各ビーコンを独立した通信セッションとして表現できません。たとえば、5 つのビーコンが同じ Telegram ボットまたは Discord チャネルを通じて通信する場合、それらは 5 つの独立して識別可能なビーコンではなく、単一の C2 通信パスとして表示されます。
同じ制限がコマンド応答にも影響します。コマンドが同じボットまたはチャネルを通じて複数のビーコンに配布されると、結果として得られる応答は同じ通信パスを通じて返されます。追加のビーコン識別メカニズムがなければ、C2 サーバーは特定の応答をどのビーコンが生成したかを確実に判断できません。
直接的な解決策は、Telegram では各ビーコンに専用のボットを割り当てるか、Discord では各ビーコンに分離されたチャネルまたはボット設定を割り当てることです。これにより、ビーコンとその通信パスの間に 1 対 1 のマッピングが作成され、個々のビーコンとその応答を区別できるようになります。トレードオフは、ビーコンの数が増えるにつれてインフラストラクチャと管理のオーバーヘッドが増加することです。
これらの制限は、メッセージングプラットフォームを C2 トランスポートチャネルとして使用することに固有のものであり、ビーコンのペイロード自体とは無関係です。
● 実用的な影響
メッセージサイズの制限により、一度に転送できるデータ量が減少し、コマンドの送信とその出力の受信に必要な時間が増加する可能性があります
共有の Telegram ボットまたは Discord チャネルを使用すると、複数のビーコンが C2 テーブル内で単一のビーコンとして表示され、コマンドはそのボットまたはチャネルを使用するすべてのビーコンに配信され、応答を特定のビーコンに確実に帰属させることができません。
許可された敵対者シミュレーション演習中にフィッシングシナリオを設定および管理するための専用インターフェースを通じて、スピアフィッシングキャンペーンをシミュレートします。このモジュールは、被害者の送信制限、設定可能なフィッシングパラメータ、およびセッション管理などのキャンペーン制御を提供し、オペレーターがキャンペーンの動作を制御し、シミュレートされたフィッシングシナリオに対するユーザーの操作を評価できるようにします。これは、キャンペーンの実行に対する可視性と制御をオペレーターに提供しながら、制御されたフィッシング評価をサポートするように設計されています。

設定可能なサーバー設定と自動ファイル配信を備えた専用の Host File インターフェースを通じてファイルをホストおよび配布します。ホストされたファイルは、ユーザーの操作や手動のダウンロードプロンプトを必要とせずに、アクセス時に自動的に読み込まれます。このインターフェースは、制御された敵対者シミュレーションおよび許可されたセキュリティテストワークフローのための集中化されたファイルホスティングと配信管理を提供します。
Script Obfuscator は、PS1、BAT、HTML、VBS、JS、および PY ペイロードをサポートし、複数の設定可能な難読化レイヤーを備えた包括的な難読化エンジンを提供します。これには 変数および関数の名前変更、文字列暗号化、ジャンクコードの挿入、多層難読化、アンチデバッグ技術、および XOR ベースのペイロード暗号化 が含まれます。これらの機能は分析の複雑さを増し、スクリプトの可読性を低下させ、リバースエンジニアリングを大幅に困難にすると同時に、ペイロードが静的解析により耐えられるように支援します。
BEAR-C2 が開発を通じてシミュレートした APT グループの完全なリスト
| [**Labyrinth Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Labyrinth%20Chollima) [**Velvet Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Velvet%20Chollima) [**Famous Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Famous%20Chollima) [**Stardust Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Stardust%20Chollima) [**Ricochet Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Ricochet%20Chollima) [**Silent Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Silent%20Chollima) |
|
Helix Kitten |