
Un outil pour évaluer la qualité des données, construit sur le formidable OSSEM.

Un outil pour évaluer la qualité des données, construit sur le super projet OSSEM.
Power-up utilise le Detection Data Model (DDM) d'OSSEM comme fondement de son évaluation de la qualité des données. La raison principale est qu'il offre un moyen structuré de corréler les ATT&CK Data Sources, les entités du modèle d'information commun (CIM) et les Data Dictionaries (événements) entre eux.
Pour ceux qui ne connaissent pas la structure DDM, voici un exemple :
| ATT&CK Data Source | Sub Data Source | Source Data Object | Relationship | Destination Data Object | 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 |
Comme vous pouvez le voir, chaque entrée du DDM définit une sous-source de données (périmètre) en utilisant des entités abstraites comme process, user, file, etc. Chacune de ces entrées contient également un ID d'événement, où le périmètre s'applique. Vous pouvez en savoir plus sur ces entités ici.
En résumé, les entrées DDM jouent un rôle majeur en supprimant la complexité des événements bruts, en fournissant un périmètre qui définit comment une source de journal (canaux de données) peut être consommée.
Power-up évalue le score de qualité des données selon cinq dimensions distinctes :
| Dimension | Type | Description |
|---|---|---|
| Coverage | Data channel | Combien d'appareils ou segments réseau sont couverts par le canal de données |
| Timeliness | Data channel | Combien de temps faut-il pour que l'événement soit disponible |
| Retention | Data channel | Combien de temps l'événement reste disponible |
| Structure | Event | À quel point l'événement est complet, si les champs pertinents sont disponibles |
| Consistency | Event | À quel point les champs de l'événement sont standardisés, si les champs ont été normalisés |
Chaque dimension est notée avec un score entre 0 (aucun) et 5 (excellent).
Ces dimensions sont liées aux canaux de données et se propagent à tous les événements qu'ils fournissent.
En raison de la nature de ces dimensions, elles doivent être évaluées manuellement, selon les spécificités des canaux de données.
Power-up utilise resources/dcs.yml pour définir le canal de données et noter les dimensions :
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
Afin de calculer à quel point la structure de l'événement est complète, power-up compare les noms standard du dictionnaire de données avec les champs des entités (CIM) référencées dans l'entrée DDM (source et destination).
Parce que tous les champs d'entité ne sont pas pertinents (cela dépend du contexte), power-up utilise le concept de profils pour sélectionner quels champs doivent correspondre aux noms standard du dictionnaire de données. Par exemple :
# OSSEM CIM Profile
process:
- process_name
- process_path
- process_command_line
Note : Un exemple de profil se trouve dans
profiles/default.ymlpour vous permettre de jouer avec.
Le score de structure est calculé avec la formule suivante :
SCORE_PERCENT = (MATCHED_FIELDS / TOTAL_RELEVANT_FIELDS) * 100
Pour plus de clarté, voici un exemple de calcul du score de structure :

Note : Parce que le dictionnaire de données de Sysmon Event Id 1 correspond à 100 % des champs d'entité pertinents, le score de structure sera noté 5 (excellent).
Le score de structure est traduit sur l'échelle de 0 à 5 de la manière suivante :
| Percentage | Score |
|---|---|
| 0 | 0 |
| 1 to 25 | 1 |
| 26 to 50 | 2 |
| 51 to 75 | 3 |
| 76 to 99 | 4 |
| 100 | 5 |
Note : Selon le cas d'usage (SIEM, Threat Hunting, Forensics), vous pouvez définir différents profils pour noter vos journaux différemment.
Pour calculer la cohérence, power-up calcule simplement le pourcentage de champs ayant un nom standard dans un dictionnaire de données. Les dictionnaires de données avec un grand nombre de champs mappés à un nom standard sont plus susceptibles de corréler avec les entités CIM.
Le score de cohérence est calculé avec la formule suivante :
SCORE_PERCENT = (STANDARD_NAME_FIELDS / TOTAL_FIELDS) * 100
Le score de cohérence est traduit sur l'échelle de 0 à 5 de la manière suivante :
| Percentage | Score |
|---|---|
| 0 | 0 |
| 1 to 50 | 1 |
| 51 to 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
Comme vous pouvez le voir, power-up peut consommer des données OSSEM à partir de deux formats différents :