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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CyberBattleSim — 自動エージェントの相互作用を抽象的なシミュレートネットワーク環境で調査するための実験・研究プラットフォーム。 | Kitploit
ツール/GitHubGitHub/microsoft/cyberbattlesim
横移動ペネトレーションテスト機械学習論文と研究学習と教育レッドチーミング
GitHubmicrosoft/cyberbattlesim

CyberBattleSim

自動エージェントの相互作用を抽象的なシミュレートネットワーク環境で調査するための実験・研究プラットフォーム。

リポジトリを見る
1.8k28517ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

CyberBattleSim

2021年4月8日: Microsoft Security Blogのアナウンスをご覧ください。

CyberBattleSimは、シミュレートされた抽象的なエンタープライズネットワーク環境で動作する自動化エージェントの相互作用を調査するための実験研究プラットフォームです。このシミュレーションは、コンピュータネットワークとサイバーセキュリティの概念を高レベルで抽象化しています。PythonベースのOpen AI Gymインターフェースにより、強化学習アルゴリズムを使用した自動化エージェントのトレーニングが可能です。

シミュレーション環境は、固定されたネットワークトポロジと、エージェントがネットワーク内を横方向に移動するために利用できる一連の脆弱性によってパラメータ化されます。攻撃者の目標は、コンピュータノードに仕掛けられた脆弱性を悪用してネットワークの一部を乗っ取ることです。攻撃者がネットワーク全体に拡散しようとする間、防御エージェントはネットワークアクティビティを監視し、発生中の攻撃を検出して、攻撃者を追い出すことでシステムへの影響を軽減しようとします。事前に定義された成功確率に基づいて進行中の攻撃を検出・軽減する基本的な確率的防御エージェントを提供します。軽減策として、感染ノードの再イメージ化を実装しています。これは、複数のシミュレーションステップにわたる操作として抽象的にモデル化されています。

エージェントのパフォーマンスを比較するために、2つの指標を使用します。目標達成にかかったシミュレーションステップ数と、トレーニングエポック全体のシミュレーションステップに対する累積報酬です。

プロジェクトの目標

このプロジェクトを、抽象的なシミュレーションネットワーク環境における自動化エージェントの相互作用を研究するための実験プラットフォームと捉えています。オープンソース化することで、研究コミュニティがこのようなネットワーク環境でサイバーエージェントがどのように相互作用し進化するかを調査することを奨励したいと考えています。

提供するシミュレーションは確かに単純ですが、これには利点があります。その高度に抽象的な性質により、現実世界のシステムへの直接適用が妨げられ、それによってシミュレーションでトレーニングされた自動化エージェントの悪意ある使用に対する保護策となります。同時に、その単純さにより、研究したい特定のセキュリティ面に集中し、最新の機械学習やAIアルゴリズムを迅速に実験することができます。

例えば、現在の実装は、ネットワークトポロジと構成がそれらにどのように影響するかを理解することを期待して、横方向の移動サイバー攻撃技術に焦点を当てています。この目標を念頭に置いて、実際のネットワークトラフィックをモデル化する必要はないと判断しました。これは、将来の貢献で対処される可能性のある、システムの重要な制限の一例にすぎません。

アルゴリズム面では、いくつかの基本的なエージェントを出発点として提供していますが、最先端の強化学習アルゴリズムがそれらと比較してどうなるかについては興味があります。コンピュータシステムに内在する大きなアクション空間は、ビデオゲームやロボット制御などの他のアプリケーションとは対照的に、強化学習にとって特に課題であることがわかりました。資格情報を保存および取得できるエージェントのトレーニングは、RL技術を適用する際に直面するもう1つの課題であり、エージェントは通常、内部メモリを備えていません。これらは、シミュレーションをベンチマーク目的で使用できる他の研究分野です。

その他の関心分野としては、自律型サイバーセキュリティシステムの責任ある倫理的な使用があります。防御エージェントに本質的な優位性を与えるエンタープライズネットワークを設計するにはどうすればよいか? 自律型サイバー攻撃から企業を守るための安全な研究を、そのような技術の悪意ある使用を防ぎながらどのように実施するか?

ドキュメント

プロジェクトのクイックイントロダクションをお読みください。

ビルドステータス

タイプブランチステータス
CImaster.github/workflows/ci.yml
Docker imagemaster.github/workflows/build-container.yml

ベンチマーク

ベンチマークドキュメントを参照してください。 最新の実行結果を含むJupyterノートブックは、専用タグの下にチェックインされています: /notebooks/benchmarks (latest_benchmark)。

開発環境のセットアップ

Linux環境(直接またはWindows上のWSL経由)で作業することを強くお勧めします。Windows上で直接Pythonを実行しても動作するはずですが、サポートされなくなりました。

まずリポジトリをチェックアウトします:

root@kitploit:~
git clone https://github.com/microsoft/CyberBattleSim.git

OSコンポーネント

ノートブックでpapermillを実行するとき(または orca --help を実行するとき)に次のエラーが発生した場合:

root@kitploit:~
/home/wiblum/miniconda3/envs/cybersim/lib/orca_app/orca: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory

または libgdk_pixbuf-2.0.so.0 のような他の共有ライブラリの場合、次のコマンドを実行してください:

root@kitploit:~
sudo apt install libnss3-dev libgtk-3-0 libxss1 libasound2-dev libgtk2.0-0 libgconf-2-4

LinuxまたはWSLの場合

手順はLinux Ubuntuディストリビューション(ネイティブおよびWSL経由の両方)でテストされています。

condaがまだインストールされていない場合は、install_conda.sh スクリプトを実行してインストールする必要があります。

root@kitploit:~
bash install-conda.sh

これが完了したら、新しいターミナルを開き、初期化スクリプトを実行します:

root@kitploit:~
bash init.sh

これにより、必要なすべてのOSおよびPython依存関係を含む cybersim という名前のconda環境が作成されます。

環境をアクティブにするには、次を実行します:

root@kitploit:~
conda activate cybersim

Windows Subsystem for Linux (WSL)

Windowsでサポートされている開発環境はWSL経由です。まずWindowsマシンにUbuntu WSLディストリビューションをインストールし、次にLinuxの手順(次のセクション)に進みます。

WSLからのGit認証

Gitで認証するには、SSHベースの認証を使用するか、またはcredential-helperのトリックを使用して自動的にPATトークンを生成します。後者はWSL上で次のコマンドを実行することで行えます(詳細はこちら):

root@kitploit:~
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

WSL上のDocker

Dockerコンテナ内で環境を実行するには、次の手順を使用してWindows Subsystem on Linux (WSL) 経由で docker を実行することをお勧めします: WSLを使用したWindowsへのDockerのインストール。

Windows (サポート対象外)

この方法はもはやメンテナンスされていません。代わりにWSLサブシステムのLinux環境で実行することをお勧めします。ただし、どうしても実行したい場合は、Python 3.10 をインストールし、Powershellプロンプトで ./init.ps1 スクリプトを実行してください。

Dockerを使用したクイックスタート

起動して実行する最も迅速な方法はDockerコンテナを使用することです。

注: ライセンス上の理由から、ビルドアーティファクトを公開配布することはありません。特に、以下のコマンドで参照されているDockerレジストリ spinshot.azurecr.io は、プロジェクトメンテナのみが利用できるプライベートなものです。

回避策として、提供されている Dockerfile を使用して自分でDockerイメージを再作成し、結果のイメージを自分のDockerレジストリに公開して、以下のコマンドのレジストリ名を置き換えてください。

Dockerレジストリからの実行

root@kitploit:~
commit=7c1f8c80bc53353937e3c69b0f5f799ebb2b03ee
docker login spinshot.azurecr.io
docker pull spinshot.azurecr.io/cyberbattle:$commit
docker run -it spinshot.azurecr.io/cyberbattle:$commit python -m cyberbattle.agents.baseline.run

Dockerイメージの再作成

root@kitploit:~
docker build -t cyberbattle:1.1 .
docker run -it -v "$(pwd)":/source --rm cyberbattle:1.1 python -m cyberbattle.agents.baseline.run

環境の確認

次のコマンドを実行して、ベースラインRLエージェントでシミュレーションを実行します:

root@kitploit:~
python -m cyberbattle.agents.baseline.run --training_episode_count 5 --eval_episode_count 3 --iteration_count 100 --rewardplot_width 80  --chain_size=4 --ownership_goal 0.2

python -m cyberbattle.agents.baseline.run --training_episode_count 5 --eval_episode_count 3 --iteration_count 100 --rewardplot_width 80  --chain_size=4 --reward_goal 50 --ownership_goal 0

すべてが正しく設定されている場合、次のような出力が得られるはずです:

root@kitploit:~
torch cuda available=True
###### DQL
Learning with: episode_count=1,iteration_count=10,ϵ=0.9,ϵ_min=0.1, ϵ_expdecay=5000,γ=0.015, lr=0.01, replaymemory=10000,
batch=512, target_update=10
  ## Episode: 1/1 'DQL' ϵ=0.9000, γ=0.015, lr=0.01, replaymemory=10000,
batch=512, target_update=10
Episode 1|Iteration 10|reward:  139.0|Elapsed Time: 0:00:00|###################################################################|
###### Random search
Learning with: episode_count=1,iteration_count=10,ϵ=1.0,ϵ_min=0.0,
  ## Episode: 1/1 'Random search' ϵ=1.0000,
Episode 1|Iteration 10|reward:  194.0|Elapsed Time: 0:00:00|###################################################################|
simulation ended
Episode duration -- DQN=Red, Random=Green
   10.00  ┼
Cumulative rewards -- DQN=Red, Random=Green
  194.00  ┼      ╭──╴
  174.60  ┤      │
  155.20  ┤╭─────╯
  135.80  ┤│     ╭──╴
  116.40  ┤│     │
   97.00  ┤│    ╭╯
   77.60  ┤│    │
   58.20  ┤╯ ╭──╯
   38.80  ┤  │
   19.40  ┤  │
    0.00  ┼──╯

Jupyterノートブック

プロジェクトにすばやく慣れるには、提供されているJupyterノートブックのいずれかを開いて、ジム環境とインタラクティブに操作してみてください。

.py ノートブックに関する注意:

  • ノートブックは .py ファイルとしてGitにチェックインされています。これらはVSCodeで直接開いて実行するか、Jupytext拡張機能を使用してJupyterで開いて実行できます。
  • 出力の .ipynb ファイルは、bashスクリプト run_benchmark.sh を実行して、papermill を使用して自動的に再生成することもできます。
  • また、対応する .ipynb ノートブックのスナップショットを出力とプロット全体を含めて別のgitタグで公開しています。Jupyterノートブックの最新スナップショット(ベンチマークを含む)は、次のgitタグからアクセスできます: /notebooks/benchmarks (latest_benchmark)。

始めるためのノートブック:

  • 「Capture The Flag」おもちゃ環境ノートブック:

    • ランダムエージェント
    • 人間プレイヤー向けインタラクティブセッション
    • インタラクティブセッション - 完全解決版
  • チェーン環境ノートブック:

    • ランダムエージェント
  • その他の環境:

    • ランダム生成環境とのインタラクティブセッション
    • ランダム生成ネットワークでプレイするランダムエージェント
  • ベンチマーク: 以下のノートブックは、さまざまな環境でのベースラインエージェントのベンチマーク評価を示しています。

    • 特定の環境でのベンチマーク
    • 基本的な防御エージェントを使用したチェーン環境のベンチマーク
    • DQL転移学習評価
    • 資格情報検索付きイプシロングリーディ
    • テーブル形式Q学習

Jupyterノートブックの最新スナップショット(ベンチマークを含む)は、次のgitタグからアクセスできます: /notebooks/benchmarks (latest_benchmark)。

Gym環境をインスタンス化するには?

次のコードは、OpenAI Gym環境 CyberBattleChain-v0 のインスタンスを作成する方法を示しています。この環境はチェーン状のネットワーク構造に基づいており、10ノード (size=10) で、エージェントの目標はネットワークの完全な所有権を獲得するか (own_atleast_percent=1.0)、80%のネットワーク可用性SLAを維持すること (maintain_sla=0.80) です。ネットワークは基本的な確率的モデル防御エージェント (defender_agent=ScanAndReimageCompromisedMachines) によって監視および保護されています。

root@kitploit:~
import cyberbattle._env.cyberbattle_env

cyberbattlechain_defender =
  gym.make('CyberBattleChain-v0',
      size=10,
      attacker_goal=AttackerGoal(
          own_atleast=0,
          own_atleast_percent=1.0
      ),
      defender_constraint=DefenderConstraint(
          maintain_sla=0.80
      ),
      defender_agent=ScanAndReimageCompromisedMachines(
          probability=0.6,
          scan_capacity=2,
          scan_frequency=5))

他のネットワークトポロジを試すには、chainpattern.py を参考にして独自のマシンと脆弱性のセットを定義し、モジュールの初期化子にエントリを追加してGym環境を宣言および登録してください。

貢献

このプロジェクトへの貢献と提案を歓迎します。ほとんどの貢献には、あなたが私たちに貢献を使用する権利を持ち、実際に付与することを宣言するContributor License Agreement (CLA) に同意する必要があります。詳細については、https://cla.opensource.microsoft.com をご覧ください。

プルリクエストを送信すると、CLAボットが自動的にCLAを提供する必要があるかどうかを判断し、PRを適切に装飾します(ステータスチェック、コメントなど)。ボットから提供される指示に従ってください。この操作は、当社のCLAを使用するすべてのリポジトリで一度だけ行う必要があります。

このプロジェクトはMicrosoftオープンソースの行動規範を採用しています。詳細については、行動規範FAQを参照するか、追加の質問やコメントがある場合は [email protected] までお問い合わせください。

貢献のアイデア

貢献方法のアイデアをいくつか示します: シミュレーションの強化(イベントベース、シミュレーションの洗練など)、既存のシミュレーションでRLアルゴリズムのトレーニング、エージェントの新規性を評価・比較するためのベンチマークの実装、RLエージェントのトレーニング用のネットワーク生成モードの追加、ドキュメントへの貢献、バグ修正など。

その他のアイデアについては、wikiもご覧ください。

このプロジェクトの引用

root@kitploit:~
@misc{msft:cyberbattlesim,
  Author = {Microsoft Defender Research Team.}
  Note = {Created by Christian Seifert, Michael Betser, William Blum, James Bono, Kate Farris, Emily Goren, Justin Grana, Kristian Holsheimer, Brandon Marken, Joshua Neil, Nicole Nichols, Jugal Parikh, Haoran Wei.},
  Publisher = {GitHub},
  Howpublished = {\url{https://github.com/microsoft/cyberbattlesim}},
  Title = {CyberBattleSim},
  Year = {2021}
}

プライバシーに関する注意

このプロジェクトには顧客データは含まれていません。提供されるモデルとネットワークトポロジはすべて架空のものです。提供されたコードのユーザーはシミュレーションへのすべての入力を提供し、提供されたデータを使用するために必要な許可を持っている必要があります。

商標

このプロジェクトには、プロジェクト、製品、またはサービスに関する商標またはロゴが含まれている場合があります。Microsoftの商標またはロゴの許可された使用は、Microsoftの商標およびブランドガイドラインに従う必要があります。このプロジェクトの修正版でのMicrosoftの商標またはロゴの使用は、混乱を引き起こしたり、Microsoftの後援を暗示したりしてはなりません。第三者の商標またはロゴの使用は、それぞれの第三者のポリシーに従うものとします。

ツールをダウンロード