Skip to content

Latest commit

 

History

History
93 lines (54 loc) · 8.49 KB

README.md

File metadata and controls

93 lines (54 loc) · 8.49 KB

Documentation Status Telegram chat en

Поддержка языка eXtraction and Processing (XP) в Visual Studio Code

Язык eXtraction and Processing (XP) используется для создания детектирующих правил на основе анализа событий c конечных точек, подобно Sigma-правилам. На языке XP вы можете разрабатывать правила нормализации, агрегации событий, их корреляции и обогащения.

Быстро ознакомиться с процессом создания правил можно тут.

Настоящее расширение разработано Dmitry Fedosov и контрибьютерами, оно позволяет разрабатывать и тестировать правила в VSCode и VSCodium, а также публиковать их в необходимый для вашего продукта формат.

Руководство по работе с расширением (частично устарела, идёт процесс актуализации): https://vscode-xp.readthedocs.io/

Основные возможности

Возможности расширения:

  • Просмотр и редактирование правил нормализации, агрегации, корреляции, обогащения и табличных списков.
  • Создание из шаблонов правил корреляции, обогащения и нормализации.
  • Просмотр, редактирование, создание интеграционных и модульных тестов для правил корреляции, обогащения и нормализации.
  • Запуск интеграционных и модульных тестов для правил корреляции, обогащения и нормализации.
  • Автоматическое дополнение ключевых слов, функций, типовых конструкций языка XP и полей таксономии.
  • Статическая валидация исходного кода на типичные ошибки.
  • Заполнение метаданных правил.
  • Создание и редактирование правил локализации правил.
  • Сбор графов правил, схемы и БД табличных списков.
  • Проверка срабатываний всего графа корреляций на необработанные события.
  • Распаковка и упаковка пакетов экспертизы в файлы формата KB.

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

Использование проекта VSCode XP Workspace

Вы можете легко получить готовое окружение для разработки на XP, если воспользуетесь проектом VSCode XP Workspace. В нём всё собрано в единый Docker-контейнер, а редактирование происходит через веб-версию VSCode. Подробности в репозитории проекта.

Нормализация событий

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

Разработчикам

Разработкой расширения занимается сообщество Security Experts Community. Вы можете принять участие в проекте и внести в него свою экспертизу. Актуальный список задач проекта публикуется в списке задач. В удобном виде со списком задач можно ознакомиться в проекте репозитория.

Компиляция

Чтобы скомпилировать расширение:

  1. Установите VSCode.

  2. Установите Node.js.

  3. Создайте локальную копию репозитория:

git clone https://github.com/Security-Experts-Community/vscode-xp
  1. В корне проекта выполните команду npm install.

Репозитории

Основной на GitHub: https://github.com/Security-Experts-Community/vscode-xp

Зеркало на Codeberg: https://codeberg.org/Security-Experts-Community/vscode-xp

Зеркало на GitFlic: https://gitflic.ru/project/security-experts-community/vscode-xp

Компиляция всех частей проекта

Чтобы вести разработку, нужно собрать клиент, сервер, ui тулкит для старых вью и новые вью со встраиванием реакта, используйте командуnpm run compile:all. При добавлении новых реакт приложений нужно обновить содержание скрипта react:build:all сборкой таких реакт приложений.

Сборка расширения в установочный пакет

Перед сборкой установочного пакета расширения (*.vsix-файл) вам нужно в корне проекта выполнить команду npm install -g vsce.

Чтобы собрать установочный пакет расширения, выполните команду vsce package -o vscode-xp.vsix или запустите скрипт publish.py в корне проекта.

Прокидывание vscode ui toolkit в webview

Неактуально, так как новые вью разрабатываются со встраиванием React. Удалить этот пункт, когда перепишем все вью на React.

  1. В провайдер webview добавляем const webviewUri = this.getUri(this._view.webview, this._config.getExtensionUri(), ["client", "out", "ui.js"]);

  2. Прокидываем webviewUri в plain: "WebviewUri": webviewUri

  3. В вебвью добавляем в раздел скриптов добавляем <script type="module" src="{{WebviewUri}}"></script>

  4. Добавляем в вебвью любой компонент из документации тулкита

Если не подтягиваются изменения кода в процессе разработки

Такое очень редко, но бывает. Поочередно прописываем npm run package и npm run compile