
Экспериментальная и исследовательская платформа для изучения взаимодействия автоматизированных агентов в абстрактных симулированных сетевых средах.
8 апреля 2021 г.: См. объявление в блоге Microsoft Security.
CyberBattleSim — это экспериментальная исследовательская платформа для изучения взаимодействия автоматизированных агентов, работающих в смоделированной абстрактной корпоративной сетевой среде. Симуляция предоставляет высокоуровневую абстракцию компьютерных сетей и концепций кибербезопасности. Её интерфейс OpenAI Gym на Python позволяет обучать автоматизированных агентов с помощью алгоритмов обучения с подкреплением.
Среда симуляции параметризуется фиксированной топологией сети и набором уязвимостей, которые агенты могут использовать для латерального перемещения в сети. Цель атакующего — захватить контроль над частью сети, используя уязвимости, заложенные в компьютерных узлах. Пока атакующий пытается распространиться по сети, защитник наблюдает за сетевой активностью и пытается обнаружить любую атаку и смягчить её последствия, вытесняя атакующего. Мы предоставляем базового стохастического защитника, который обнаруживает и смягчает текущие атаки на основе заданных вероятностей успеха. Смягчение реализуется путем переустановки образов заражённых узлов — процесс, абстрактно моделируемый как операция, длящаяся несколько шагов симуляции.
Для сравнения производительности агентов мы рассматриваем две метрики: количество шагов симуляции, необходимых для достижения цели, и суммарное вознаграждение за шаги симуляции на протяжении эпох обучения.
Мы рассматриваем этот проект как экспериментальную платформу для проведения исследований взаимодействия автоматизированных агентов в абстрактных смоделированных сетевых средах. Открывая его исходный код, мы надеемся побудить исследовательское сообщество изучать, как киберагенты взаимодействуют и эволюционируют в таких сетевых средах.
Предоставляемая симуляция, безусловно, упрощена, но у этого есть преимущества. Её высокоабстрактная природа исключает прямое применение к реальным системам, что служит защитой от потенциального злонамеренного использования обученных на ней автоматизированных агентов. В то же время её простота позволяет сосредоточиться на конкретных аспектах безопасности, которые мы хотим изучить, и быстро экспериментировать с новейшими алгоритмами машинного обучения и ИИ.
Например, текущая реализация сосредоточена на методах латерального перемещения в кибератаках, с надеждой на понимание того, как топология и конфигурация сети влияют на них. С этой целью мы решили, что моделирование реального сетевого трафика не требуется. Это лишь один пример существенного ограничения нашей системы, которое будущие участники, возможно, захотят устранить.
С алгоритмической стороны мы предоставляем несколько базовых агентов в качестве отправной точки, но нам было бы любопытно узнать, как современные алгоритмы обучения с подкреплением сравниваются с ними. Мы обнаружили, что большое пространство действий, присущее любой компьютерной системе, представляет собой особую проблему для обучения с подкреплением, в отличие от других применений, таких как видеоигры или управление роботами. Обучение агентов, способных хранить и извлекать учётные данные, — ещё одна задача, возникающая при применении методов RL, где агенты обычно не обладают внутренней памятью. Это ещё одни области исследований, где симуляцию можно использовать для целей сравнения.
Другие области интереса включают ответственное и этичное использование автономных систем кибербезопасности: как спроектировать корпоративную сеть, дающую защитным агентам внутреннее преимущество? Как проводить безопасные исследования, направленные на защиту предприятий от автономных кибератак, предотвращая при этом злонамеренное использование такой технологии?
Прочитайте Краткое введение в проект.
| Тип | Ветка | Статус |
|---|---|---|
| CI | master | |
| Образ Docker | master |
См. Документацию по бенчмарку. Jupyter-ноутбуки с последними запусками хранятся под специальным тегом по адресу /notebooks/benchmarks (latest_benchmark).
Настоятельно рекомендуется работать в среде Linux, либо напрямую, либо через WSL на Windows. Запуск Python на Windows напрямую должен работать, но больше не поддерживается.
Начните с клонирования репозитория:
git clone https://github.com/microsoft/CyberBattleSim.git
Если при запуске papermill на ноутбуках (или при выполнении orca --help) возникает следующая ошибка:
/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,
выполните следующую команду:
sudo apt install libnss3-dev libgtk-3-0 libxss1 libasound2-dev libgtk2.0-0 libgconf-2-4
Инструкции были протестированы на дистрибутиве Linux Ubuntu (как нативно, так и через WSL).
Если conda ещё не установлена, необходимо установить её, запустив скрипт install_conda.sh.
bash install-conda.sh
После этого откройте новый терминал и выполните скрипт инициализации:
bash init.sh
Это создаст окружение conda с именем cybersim со всеми необходимыми зависимостями ОС и Python.
Для активации окружения выполните:
conda activate cybersim
Поддерживаемая среда разработки на Windows — через WSL. Сначала необходимо установить дистрибутив Ubuntu WSL на вашу машину с Windows, а затем следовать инструкциям для Linux (следующий раздел).
Для аутентификации в Git вы можете использовать аутентификацию на основе SSH или, альтернативно, трюк с credential-helper для автоматической генерации PAT-токена. Последнее можно сделать, выполнив следующую команду в WSL (подробнее здесь):
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
Для запуска вашего окружения в контейнере Docker мы рекомендуем запускать docker через подсистему Windows для Linux (WSL), следуя этим инструкциям:
Установка Docker в Windows через WSL).
Этот метод больше не поддерживается, вместо этого предпочтительнее работать в
среде Linux через подсистему WSL.
Но если вы настаиваете, начните с установки Python 3.10, а затем в командной строке PowerShell выполните скрипт ./init.ps1.
Самый быстрый способ начать работу — через контейнер Docker.
ПРИМЕЧАНИЕ: По лицензионным причинам мы не публикуем публично никакие артефакты сборки. В частности, реестр Docker
spinshot.azurecr.io, упоминаемый в командах ниже, остаётся закрытым для только для сопровождающих проекта.В качестве обходного пути вы можете воссоздать образ Docker самостоятельно, используя предоставленный
Dockerfile, опубликовать полученный образ в своём собственном реестре Docker и заменить имя реестра в командах ниже.