
Una herramienta para evaluar la calidad de los datos, construida sobre la excelente OSSEM.

Una herramienta para evaluar la calidad de los datos, construida sobre el increíble proyecto OSSEM.
Power-up utiliza el Modelo de Datos de Detección (DDM) de OSSEM como base para su evaluación de calidad de datos. La razón principal es que proporciona una manera estructurada de correlacionar Fuentes de Datos ATT&CK, Entidades del modelo de información común (CIM) y Diccionarios de Datos (eventos) entre sí.
Para aquellos no familiarizados con la estructura del DDM, aquí hay un ejemplo:
| Fuente de Datos ATT&CK | Sub Fuente de Datos | Objeto de Datos Origen | Relación | Objeto de Datos Destino | EventID |
|---|---|---|---|---|---|
| Process monitoring | process creation | process | created | process | 4688 |
| Process monitoring | process creation | process | created | process | 1 |
| Process monitoring | process termination | process | terminated | - | 4689 |
| Process monitoring | process termination | process | terminated | - | 5 |
Como puedes ver, cada entrada en el DDM define una sub fuente de datos (alcance) usando entidades abstractas como proceso, usuario, archivo, etc. Cada una de estas entidades también contiene un ID de evento, donde se aplica el alcance. Puedes leer más sobre estas entidades aquí.
En resumen, las entradas del DDM juegan un papel importante en eliminar la complejidad de los eventos en bruto, proporcionando un alcance que define cómo se puede consumir una fuente de registro (canales de datos).
Power-up evalúa la puntuación de calidad de datos según cinco dimensiones distintas:
| Dimensión | Tipo | Descripción |
|---|---|---|
| Cobertura | Canal de datos | Cuántos dispositivos o segmentos de red están cubiertos por el canal de datos |
| Oportunidad | Canal de datos | Cuánto tiempo tarda en estar disponible el evento |
| Retención | Canal de datos | Cuánto tiempo permanece disponible el evento |
| Estructura | Evento | Qué tan completo es el evento, si los campos relevantes están disponibles |
| Consistencia | Evento | Qué tan estándar son los campos del evento, si los campos han sido normalizados |
Cada dimensión se califica con una puntuación entre 0 (ninguno) y 5 (excelente).
Estas dimensiones están vinculadas a los canales de datos y se propagan a todos los eventos proporcionados por ellos.
Debido a la naturaleza de estas dimensiones, deben calificarse manualmente, según las especificidades de los canales de datos.
Power-up utiliza resources/dcs.yml para definir el canal de datos y calificar las dimensiones:
data channel: sysmon
description: sysmon monitoring
coverage: 2
timeliness: 5
retention: 2
---
data channel: security
description: windows security auditing
coverage: 5
timeliness: 5
retention: 2
Para calcular qué tan completa es la estructura del evento, power-up compara los nombres estándar del diccionario de datos con los campos de las entidades (CIM) referenciadas en la entrada del DDM (origen y destino).
Debido a que no todos los campos de las entidades son relevantes (depende del contexto), power-up utiliza el concepto de perfiles para seleccionar qué campos deben coincidir con los nombres estándar del diccionario de datos. Por ejemplo:
# OSSEM CIM Profile
process:
- process_name
- process_path
- process_command_line
Nota: Hay un perfil de ejemplo en
profiles/default.ymlpara que juegues con él.
La puntuación de estructura se calcula con la siguiente fórmula:
SCORE_PERCENT = (MATCHED_FIELDS / TOTAL_RELEVANT_FIELDS) * 100
Para mayor claridad, aquí hay un ejemplo de cómo se calcula la puntuación de estructura:

Nota: Debido a que el diccionario de datos de Sysmon Event Id 1 coincide al 100% con los campos de entidad relevantes, la puntuación de estructura se calificará como 5 (excelente).
La puntuación de estructura se traduce a la escala 0-5 de la siguiente manera:
| Porcentaje | Puntuación |
|---|---|
| 0 | 0 |
| 1 al 25 | 1 |
| 26 al 50 | 2 |
| 51 al 75 | 3 |
| 76 al 99 | 4 |
| 100 | 5 |
Nota: Dependiendo del caso de uso (SIEM, Caza de Amenazas, Forense), puedes definir diferentes perfiles para calificar tus registros de manera diferente.
Para calcular la consistencia, power-up simplemente calcula el porcentaje de campos con un nombre estándar en un diccionario de datos. Los diccionarios de datos con un alto número de campos mapeados a un nombre estándar tienen más probabilidades de correlacionarse con las entidades CIM.
La puntuación de consistencia se calcula con la siguiente fórmula:
SCORE_PERCENT = (STANDARD_NAME_FIELDS / TOTAL_FIELDS) * 100
La puntuación de consistencia se traduce a la escala 0-5 de la siguiente manera:
| Porcentaje | Puntuación |
|---|---|
| 0 | 0 |
| 1 al 50 | 1 |
| 51 al 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]
A tool to assess ATT&CK data source coverage, built on top of awesome OSSEM.
optional arguments:
-h, --help show this help message and exit
-o OSSEM, --ossem OSSEM
path to import OSSEM markdown
-y OSSEM_YAML, --ossem-yaml OSSEM_YAML
path to import OSSEM yaml
-p PROFILE, --profile PROFILE
path to CIM profile
--excel export OSSEM DDM to excel
--elastic export OSSEM data models to elastic
--yaml export OSSEM data models to yaml
--layer export OSSEM data models to navigator layer
Como puedes ver, power-up puede consumir datos de OSSEM desde dos formatos diferentes: