CyberBattleSim

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


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

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

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

Цели проекта

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

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

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

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

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

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

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

Состояние сборки

ТипВеткаСтатус
CIмастер.github/workflows/ci.yml
Изображение докерамастер.github/workflows/build-container.yml

Показатель

См .Бенчмарк.

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

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

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

мерзавец клон https://github.com/microsoft/CyberBattleSim.git

В Linux или WSL

Инструкции были протестированы на дистрибутиве Linux Ubuntu (как родном, так и через WSL). Выполните следующую команду, чтобы настроить среду разработки и установить все необходимые зависимости (пакеты apt и pip):

./init.sh

Скрипт устанавливает python3.8, если его нет. Если вы используете версию Ubuntu старше 20, она автоматически добавит дополнительный репозиторий apt для установки python3.8.

Скрипт создаст виртуальную среду Python под venvподкаталогом, с помощью которого вы сможете запустить Python venv/bin/python.

Примечание: Если вы предпочитаете Python из глобальной установки вместо виртуальной среды, то вы можете пропустить создание виртуальной среды, запустив скрипт с ./init.sh -nпомощью . Вместо этого все пакеты Python будут установлены в общесистемной установке Python 3.8.

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

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

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

Для аутентификации с помощью Git вы можете либо использовать аутентификацию на основе SSH, либо использовать трюк credential-helper для автоматической генерации токена PAT. Последнее можно сделать, запустив следующую команду под WSL (подробнее здесь):

git config --global credential.helper "/mnt/c/Program Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

Докер на WSL

Чтобы запустить среду в контейнере docker, мы рекомендуем запустить dockerее через подсистему Windows в Linux (WSL), используя следующие инструкции: Установка Docker в Windows под WSL).

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

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

Начало работы быстрое использование Docker

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

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

В качестве обходного пути вы можете самостоятельно воссоздать образ docker с помощью предоставленного Dockerfileфайла, опубликовать полученный образ в своем собственном реестре docker и заменить имя реестра в приведенных ниже командах.

вход в докер spinshot.azurecr.io тяга докера spinshot.azurecr.io/cyberbattle:239bdf22e47aa1c8c88915f356cede002865fa1c docker run -it spinshot.azurecr.io/cyberbattle:239bdf22e47aa1c8c88915f356cede002865fa1c cyberbattle/agents/baseline/run.py

Проверьте свое окружение

Выполните следующую команду для запуска моделирования с базовым агентом RL:

python cyberbattle/agents/baseline/run.py --training_episode_count 1 --eval_episode_count 1 --iteration_count 10 --rewardplot_with 80  --chain_size=20 --ownership_goal 1.0 

Если все настроено правильно, вы должны получить вывод, который выглядит следующим образом:

факел CUDA и доступно=истина ###### DQL по обучению: episode_count=1,iteration_count=10,?=0.9,?_min=0.1, ?_expdecay=5000,?=0.015, то LR=0.01, replaymemory=10000, пакетный=512, target_update=10 ## эпизод: 1/1 'DQL по' ?=0.9000, ?=0.015, то LR=0.01, replaymemory=10000, пакетный=512, target_update=10 Эпизод 1|итерация 10|награда: 139.0|истекшее время: 0:00:00|###################################################################| ###### Случайного поиска обучении с: episode_count=1,iteration_count=10,?=1.0,?_min=0.0, ## эпизод: 1/1 'случайного поиска' ?=1.0000, Эпизод 1|итерация 10|награда: 194.0|Истекшее время: 0:00:00|###################################################################| моделирование состава эпизод продолжительность-DQN=Красный, Случайный=зеленый 10.00 + кумулятивные награды-DQN=Красный, случайный=зеленый 194.00 + ?--? 174.60 + | 155.20 +?-----? 135.80 +| ?--? 116.40 +| | 97.00 +| ?? 77.60 +| | 58.20 +? ?--? 38.80 + | 19.40 + | 0.00 +--?

Записные книжки Юпитера

Чтобы быстро ознакомиться с проектом, вы можете открыть один из предоставленных блокнотов Juptyer, чтобы играть в интерактивном режиме с окружением тренажерного зала. Просто запустите jupyter с jupyter notebookпомощью или venv/bin/jupyter notebookесли вы используете настройку виртуальной среды.

Следующие .pyзаписные книжки лучше всего просматривать в VSCode или в Jupyter с расширением Jupytext и при необходимости легко конвертировать в .ipynbформат:

Как создать экземпляр среды тренажерного зала?

Следующий код показывает, как создать экземпляр в тренажерном зале OpenAI среде CyberBattleChain-v0, окружающей среды, основанных на цепь, как сетевые структуры, с 10 узлов (size=10), где агенту цель-либо получить полное право собственности на сети (own_atleast_percent=1.0) или перерыв на 80% сети, доступность по SLA (maintain_sla=0.80), в то время как сети контролируется и защищается основных probalistically моделируется защитник (defender_agent=ScanAndReimageCompromisedMachines):

импорт 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(  вероятность=0,6, scan_capacity=2, scan_frequency=5))

Чтобы попробовать другие топологии сети, возьмем пример chainpattern.py чтобы определить свой собственный набор машин и уязвимостей, добавьте запись в инициализатор модуля для объявления и регистрации среды тренажерного зала.

Способствующий

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

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

Этот проект принял Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. Часто задаваемые вопросы по Кодексу поведения или свяжитесь с нами opencode@microsoft.com с любыми дополнительными вопросами или комментариями.

Идеи для вклада

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

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

Цитируя этот проект

@misc{msft:cyberbattlesim, Author = {Исследовательская группа Microsoft Defender.}  Примечание = {созданные Кристиан Зайферт, Майкл Betser, Уильям Блум, Джеймс Боно, Кейт Феррис, Эмили Горен, Джастин Грана, Кристиан Holsheimer, Брэндон Маркен, Джошуа Нил, Николь Николс, скуловой Парих, он Вэй.},  Издатель = {Гитхабе},  Howpublished = {URL-адреса{https://github.com/microsoft/cyberbattlesim}},  Звание = {CyberBattleSim},  Год = {2021} }

Источник: github.com

Комментарии: