Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CyberBattleSim — Экспериментальная и исследовательская платформа для изучения взаимодействия автоматизированных агентов в абстрактных симулированных сетевых средах. | Kitploit
Инструменты/GitHubGitHub/microsoft/cyberbattlesim
Латеральное перемещениеТестирование на ПроникновениеМашинное ОбучениеСтатьи и ИсследованияОбучение и ОбразованиеRed Teaming
GitHubmicrosoft/cyberbattlesim

CyberBattleSim

Экспериментальная и исследовательская платформа для изучения взаимодействия автоматизированных агентов в абстрактных симулированных сетевых средах.

Репозиторий
1.8k28517 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CyberBattleSim

8 апреля 2021 г.: См. объявление в блоге Microsoft Security.

CyberBattleSim — это экспериментальная исследовательская платформа для изучения взаимодействия автоматизированных агентов, работающих в смоделированной абстрактной корпоративной сетевой среде. Симуляция предоставляет высокоуровневую абстракцию компьютерных сетей и концепций кибербезопасности. Её интерфейс OpenAI Gym на Python позволяет обучать автоматизированных агентов с помощью алгоритмов обучения с подкреплением.

Среда симуляции параметризуется фиксированной топологией сети и набором уязвимостей, которые агенты могут использовать для латерального перемещения в сети. Цель атакующего — захватить контроль над частью сети, используя уязвимости, заложенные в компьютерных узлах. Пока атакующий пытается распространиться по сети, защитник наблюдает за сетевой активностью и пытается обнаружить любую атаку и смягчить её последствия, вытесняя атакующего. Мы предоставляем базового стохастического защитника, который обнаруживает и смягчает текущие атаки на основе заданных вероятностей успеха. Смягчение реализуется путем переустановки образов заражённых узлов — процесс, абстрактно моделируемый как операция, длящаяся несколько шагов симуляции.

Для сравнения производительности агентов мы рассматриваем две метрики: количество шагов симуляции, необходимых для достижения цели, и суммарное вознаграждение за шаги симуляции на протяжении эпох обучения.

Цели проекта

Мы рассматриваем этот проект как экспериментальную платформу для проведения исследований взаимодействия автоматизированных агентов в абстрактных смоделированных сетевых средах. Открывая его исходный код, мы надеемся побудить исследовательское сообщество изучать, как киберагенты взаимодействуют и эволюционируют в таких сетевых средах.

Предоставляемая симуляция, безусловно, упрощена, но у этого есть преимущества. Её высокоабстрактная природа исключает прямое применение к реальным системам, что служит защитой от потенциального злонамеренного использования обученных на ней автоматизированных агентов. В то же время её простота позволяет сосредоточиться на конкретных аспектах безопасности, которые мы хотим изучить, и быстро экспериментировать с новейшими алгоритмами машинного обучения и ИИ.

Например, текущая реализация сосредоточена на методах латерального перемещения в кибератаках, с надеждой на понимание того, как топология и конфигурация сети влияют на них. С этой целью мы решили, что моделирование реального сетевого трафика не требуется. Это лишь один пример существенного ограничения нашей системы, которое будущие участники, возможно, захотят устранить.

С алгоритмической стороны мы предоставляем несколько базовых агентов в качестве отправной точки, но нам было бы любопытно узнать, как современные алгоритмы обучения с подкреплением сравниваются с ними. Мы обнаружили, что большое пространство действий, присущее любой компьютерной системе, представляет собой особую проблему для обучения с подкреплением, в отличие от других применений, таких как видеоигры или управление роботами. Обучение агентов, способных хранить и извлекать учётные данные, — ещё одна задача, возникающая при применении методов RL, где агенты обычно не обладают внутренней памятью. Это ещё одни области исследований, где симуляцию можно использовать для целей сравнения.

Другие области интереса включают ответственное и этичное использование автономных систем кибербезопасности: как спроектировать корпоративную сеть, дающую защитным агентам внутреннее преимущество? Как проводить безопасные исследования, направленные на защиту предприятий от автономных кибератак, предотвращая при этом злонамеренное использование такой технологии?

Документация

Прочитайте Краткое введение в проект.

Статус сборки

ТипВеткаСтатус
CImaster.github/workflows/ci.yml
Образ Dockermaster.github/workflows/build-container.yml

Бенчмарк

См. Документацию по бенчмарку. Jupyter-ноутбуки с последними запусками хранятся под специальным тегом по адресу /notebooks/benchmarks (latest_benchmark).

Настройка среды разработки

Настоятельно рекомендуется работать в среде Linux, либо напрямую, либо через WSL на Windows. Запуск Python на Windows напрямую должен работать, но больше не поддерживается.

Начните с клонирования репозитория:

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

Компоненты ОС

Если при запуске 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

Это создаст окружение conda с именем cybersim со всеми необходимыми зависимостями ОС и Python.

Для активации окружения выполните:

root@kitploit:~
conda activate cybersim

Подсистема Windows для Linux (WSL)

Поддерживаемая среда разработки на Windows — через WSL. Сначала необходимо установить дистрибутив Ubuntu WSL на вашу машину с Windows, а затем следовать инструкциям для Linux (следующий раздел).

Аутентификация Git из WSL

Для аутентификации в 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"

Docker в WSL

Для запуска вашего окружения в контейнере Docker мы рекомендуем запускать docker через подсистему Windows для Linux (WSL), следуя этим инструкциям: Установка Docker в Windows через WSL).

Windows (не поддерживается)

Этот метод больше не поддерживается, вместо этого предпочтительнее работать в среде Linux через подсистему WSL. Но если вы настаиваете, начните с установки Python 3.10, а затем в командной строке PowerShell выполните скрипт ./init.ps1.

Быстрый старт с использованием Docker

Самый быстрый способ начать работу — через контейнер Docker.

ПРИМЕЧАНИЕ: По лицензионным причинам мы не публикуем публично никакие артефакты сборки. В частности, реестр Docker spinshot.azurecr.io, упоминаемый в командах ниже, остаётся закрытым для только для сопровождающих проекта.

В качестве обходного пути вы можете воссоздать образ Docker самостоятельно, используя предоставленный Dockerfile, опубликовать полученный образ в своём собственном реестре 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-ноутбуков для интерактивной работы со средами Gymnasium.

Примечания о .py-ноутбуках:

  • Наши ноутбуки хранятся в Git как файлы .py. Их можно открывать и запускать непосредственно в VSCode или в Jupyter с помощью расширения Jupytext.
  • Выходные файлы .ipynb также можно автоматически регенерировать с помощью papermill, выполнив bash-скрипт run_benchmark.sh.
  • Мы также публикуем снимок соответствующих .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.

Участие

Этот проект приветствует вклад и предложения. Большинство вкладов требуют вашего согласия с Лицензионным соглашением для участников (CLA), подтверждающим, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Для подробностей посетите https://cla.opensource.microsoft.com.

Когда вы отправляете запрос на включение (pull request), бот CLA автоматически определит, нужно ли вам предоставить CLA и соответствующим образом оформит PR (например, проверка статуса, комментарий). Просто следуйте инструкциям, предоставленным ботом. Вам нужно будет сделать это только один раз для всех репозиториев, использующих наш CLA.

Этот проект принял Правила поведения для участников открытого исходного кода Microsoft. Для получения дополнительной информации см. Часто задаваемые вопросы о правилах поведения или свяжитесь с [email protected] с любыми дополнительными вопросами или комментариями.

Идеи для участия

Вот несколько идей, как можно внести вклад: улучшить симуляцию (событийно-ориентированную, уточнить симуляцию и т.д.), обучить алгоритм RL на существующей симуляции, реализовать бенчмарк для оценки и сравнения новизны агентов, добавить больше генеративных режимов сети для обучения RL-агентов, внести вклад в документацию, исправить ошибки.

См. также вики с дополнительными идеями.

Цитирование этого проекта

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. Любое использование товарных знаков или логотипов третьих лиц регулируется политикой этих третьих лиц.

Скачать инструмент