
Инструмент для оценки качества данных, построенный на основе замечательного OSSEM.

Инструмент для оценки качества данных, построенный на основе потрясающего проекта OSSEM.
Power-up использует Модель данных обнаружения (DDM) OSSEM в качестве основы для оценки качества данных. Основная причина этого — структурированный способ корреляции Источников данных ATT&CK, Сущностей общей информационной модели (CIM) и Словарей данных (событий) друг с другом.
Для тех, кто не знаком со структурой DDM, вот пример:
Как видите, каждая запись в DDM определяет под-источник данных (область), используя абстрактные сущности, такие как процесс, пользователь, файл и т. д. Каждая запись также содержит идентификатор события, к которому применяется эта область. Подробнее об этих сущностях можно прочитать здесь.
В двух словах, записи DDM играют важную роль в устранении сложности необработанных событий, предоставляя область, которая определяет, как можно потреблять источник журналов (каналы данных).
Power-up оценивает качество данных по пяти различным измерениям:
Каждое измерение оценивается по шкале от 0 (отсутствует) до 5 (отлично).
Эти измерения привязаны к каналам данных и распространяются на все события, предоставляемые каналом.
Из-за своей природы эти измерения должны оцениваться вручную, в соответствии с особенностями каналов данных.
Power-up использует resources/dcs.yml для определения канала данных и оценки измерений:
data channel: sysmon
description: мониторинг sysmon
coverage: 2
timeliness: 5
retention: 2
---
data channel: security
description: аудит безопасности Windows
coverage: 5
timeliness: 5
retention: 2
Чтобы рассчитать, насколько полна структура события, power-up сравнивает стандартные имена словаря данных с полями сущностей (CIM), на которые ссылается запись DDM (источник и назначение).
Поскольку не все поля сущности релевантны (зависит от контекста), power-up использует концепцию профилей для выбора полей, которые должны соответствовать стандартным именам словаря данных. Например:
# Профиль CIM OSSEM
process:
- process_name
- process_path
- process_command_line
Примечание: Пример профиля находится в
profiles/default.ymlдля экспериментов.
Оценка структуры рассчитывается по следующей формуле:
SCORE_PERCENT = (MATCHED_FIELDS / TOTAL_RELEVANT_FIELDS) * 100
Для наглядности пример расчета оценки структуры:

Примечание: Поскольку словарь данных Sysmon Event Id 1 на 100% соответствует релевантным полям сущности, оценка структуры будет равна 5 (отлично).
Оценка структуры переводится в шкалу 0-5 следующим образом:
| Проценты | Оценка |
|---|
Примечание: В зависимости от сценария использования (SIEM, Охота за угрозами, Криминалистика) можно определить разные профили, чтобы оценивать журналы по-разному.
Для расчета согласованности power-up просто вычисляет процент полей, имеющих стандартное имя в словаре данных. Словари данных с большим количеством полей, сопоставленных со стандартным именем, с большей вероятностью будут коррелировать с сущностями CIM.
Оценка согласованности рассчитывается по следующей формуле:
SCORE_PERCENT = (STANDARD_NAME_FIELDS / TOTAL_FIELDS) * 100
Оценка согласованности переводится в шкалу 0-5 следующим образом:
| Проценты | Оценка |
|---|---|
| 0 | 0 |
| 1 до 50 | 1 |
| 51 до 99 | 3 |
| 100 | 5 |
pip install -r requirements.txt$> python3 powerup.py --help
_____ _____ _____ _____ _____ _____ _____ _ _ _ _____ _____ _____ _____ __
| | __| __| __| | | _ | | | | | __| __ |___| | | _ | |
| | |__ |__ | __| | | | | __| | | | | | __| -|___| | | __|__|
|_____|_____|_____|_____|_|_|_| |__| |_____|_____|_____|__|__| |_____|__| |__|
usage: powerup.py [-h] [-o OSSEM] [-y OSSEM_YAML] [-p PROFILE] [--excel]
[--elastic] [--yaml]
Инструмент для оценки покрытия источников данных ATT&CK, построенный на основе потрясающего OSSEM.
опциональные аргументы:
-h, --help показать это справочное сообщение и выйти
-o OSSEM, --ossem OSSEM
путь для импорта OSSEM из markdown
-y OSSEM_YAML, --ossem-yaml OSSEM_YAML
путь для импорта OSSEM из yaml
-p PROFILE, --profile PROFILE
путь к профилю CIM
--excel экспортировать DDM OSSEM в excel
--elastic экспортировать модели данных OSSEM в elastic
--yaml экспортировать модели данных OSSEM в yaml
--layer экспортировать модели данных OSSEM в слой навигатора
Как видите, power-up может потреблять данные OSSEM из двух разных форматов:
В настоящее время Power-up экспортирует вывод OSSEM в:
output/output/Примечание: если не указан путь к файлу профиля, power-up по умолчанию использует
profiles/default.yml.
$> python3 powerup.py -o ../OSSEM --yaml
_____ _____ _____ _____ _____ _____ _____ _ _ _ _____ _____ _____ _____ __
| | __| __| __| | | _ | | | | | __| __ |___| | | _ | |
| | |__ |__ | __| | | | | __| | | | | | __| -|___| | | __|__|
|_____|_____|_____|_____|_|_|_| |__| |_____|_____|_____|__|__| |_____|__| |__|
[*] Путь к профилю: profiles/default.yml
[*] Парсинг OSSEM из markdown
[*] Экспорт OSSEM в YAML
[*] Создан output/ddm_20191114_160246.yml
[*] Создан output/cim_20191114_160246.yml
[*] Создан output/dds_20191114_160246.yml
Цель экспорта/импорта в/из YAML — упростить настройку OSSEM. Скорее всего, первое, что вы сделаете, это создадите свои собственные словари данных, а затем добавите новые записи DDM, поэтому YAML облегчит обновления.
Примечание 1: измените
resources/config.yml, чтобы указать power-up имена файлов для корректных структур. Затем просто поместите их в папку и передайте аргумент OSSEM_YAML.
Примечание 2: power-up не парсит все объекты OSSEM в YAML, только поля данных и некоторые метаданные (например, описание). Причина в том, что я хотел сделать объект YAML максимально компактным, только с теми данными, которые нужны для оценки качества.
$> python3 powerup.py -o ../OSSEM --excel
_____ _____ _____ _____ _____ _____ _____ _ _ _ _____ _____ _____ _____ __
| | __| __| __| | | _ | | | | | __| __ |___| | | _ | |
| | |__ |__ | __| | | | | __| | | | | | __| -|___| | | __|__|
|_____|_____|_____|_____|_|_|_| |__| |_____|_____|_____|__|__| |_____|__| |__|
[*] Путь к профилю: profiles/default.yml
[*] Парсинг OSSEM из markdown
[*] Экспорт DDM OSSEM в Excel
[*] Сохранен Excel в output/ddm_enriched_20191114_160041.xlsx
При экспорте в Excel power-up создает привлекательную DDM с соответствующими измерениями качества данных для каждой записи:

$> python3 powerup.py -o ../OSSEM --elastic
_____ _____ _____ _____ _____ _____ _____ _ _ _ _____ _____ _____ _____ __
| | __| __| __| | | _ | | | | | __| __ |___| | | _ | |
| | |__ |__ | __| | | | | __| | | | | | __| -|___| | | __|__|
|_____|_____|_____|_____|_|_|_| |__| |_____|_____|_____|__|__| |_____|__| |__|
[*] Путь к профилю: profiles/default.yml
[*] Парсинг OSSEM из markdown
[*] Экспорт OSSEM в Elastic
[*] Создание индекса elastic ossem.ddm
[*] Создание индекса elastic ossem.cim
[*] Создание индекса elastic ossem.dds
[*] Создание индекса elastic ossem.dcs
При экспорте в Elastic power-up сохраняет все данные OSSEM в elastic. Поскольку DDM также обогащается соответствующими измерениями качества данных, вы сможете создавать дашборды, подобные этому:

$> python3 powerup.py -o ../OSSEM --layer
_____ _____ _____ _____ _____ _____ _____ _ _ _ _____ _____ _____ _____ __
| | __| __| __| | | _ | | | | | __| __ |___| | | _ | |
| | |__ |__ | __| | | | | __| | | | | | __| -|___| | | __|__|
|_____|_____|_____|_____|_|_|_| |__| |_____|_____|_____|__|__| |_____|__| |__|
[*] Путь к профилю: profiles/default.yml
[*] Парсинг OSSEM из markdown
[*] Экспорт OSSEM в слой Navigatator
[*] Загрузка данных ATT&CK
[*] Генерация слоя качества источников данных
[*] Создан output/ds_layer_20191119_220141.json
При экспорте в слой power-up создает файл JSON слоя Attack Navigator с соответствующими измерениями качества данных для каждой техники:

Примечание: оценки техник получаются из средних оценок источников данных в DDM.
| Источник данных ATT&CK | Под-источник данных | Объект-источник | Связь | Объект-назначение | EventID |
|---|
| Мониторинг процессов | создание процесса | process | created | process | 4688 |
| Мониторинг процессов | создание процесса | process | created | process | 1 |
| Мониторинг процессов | завершение процесса | process | terminated | - | 4689 |
| Мониторинг процессов | завершение процесса | process | terminated | - | 5 |
| Измерение | Тип | Описание |
|---|
| Покрытие | Канал данных | Сколько устройств или сетевых сегментов охвачено каналом данных |
| Своевременность | Канал данных | Как долго событие становится доступным |
| Хранение | Канал данных | Как долго событие остается доступным |
| Структура | Событие | Насколько полно событие, доступны ли релевантные поля |
| Согласованность | Событие | Насколько поля события стандартизированы, были ли они нормализованы |
| 0 | 0 |
| 1 до 25 | 1 |
| 26 до 50 | 2 |
| 51 до 75 | 3 |
| 76 до 99 | 4 |
| 100 | 5 |