Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ossem-power-up — 一个基于优秀的OSSEM构建的数据质量评估工具。 | Kitploit
工具/GitHubGitHub/hxnoyd/ossem-power-up
威胁情报学习与教育精选资源日志分析
GitHubhxnoyd/ossem-power-up

ossem-power-up

一个基于优秀的OSSEM构建的数据质量评估工具。

查看仓库
79111个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

OSSEM

一个基于优秀的 OSSEM 项目构建的数据质量评估工具。

目标

  • 回答这个问题:我想开始狩猎 ATT&CK 技术,哪些日志源和事件更合适?
  • 透明化你的日志源的优势和劣势
  • 提供一种简单的方法来评估你的日志

OSSEM Power-up 概述

Power-up 使用 OSSEM 检测数据模型(DDM)作为其数据质量评估的基础。主要原因是它提供了一种结构化的方式,将 ATT&CK 数据源、通用信息模型实体(CIM)和 数据字典(事件)相互关联起来。

对于那些不熟悉 DDM 结构的人,这里有一个示例:

ATT&CK 数据源子数据源源数据对象关系目标数据对象EventID
进程监控进程创建processcreatedprocess4688
进程监控进程创建processcreatedprocess1
进程监控进程终止processterminated-4689
进程监控进程终止processterminated-5

如你所见,DDM 中的每个条目都使用抽象实体(如 process、user、file 等)定义了一个子数据源(范围)。每个条目还包含一个事件 ID,该 ID 对应范围适用的场景。你可以在此处阅读关于这些实体的更多信息。

简而言之,DDM 条目通过提供一个定义日志源(数据通道)如何被消费的 范围,在消除原始事件复杂性方面发挥着重要作用。

数据质量维度

Power-up 根据五个不同的维度评估数据质量分数:

每个维度评分范围从 0(无)到 5(优秀)。

覆盖面、时效性和保留期

这些维度与数据通道绑定,并传播到由该通道提供的所有事件。

由于这些维度的性质,必须根据数据通道的具体情况手动评分。

Power-up 使用 resources/dcs.yml 定义数据通道并对维度进行评分:

root@kitploit:~
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

结构性

为了计算事件结构的完整性,power-up 将数据字典的标准名称与 DDM 条目(源和目标)中引用的实体(CIM)的字段进行比较。

因为并非所有实体字段都是相关的(取决于上下文),power-up 使用配置文件的概念来选择哪些字段需要与数据字典的标准名称匹配。例如:

root@kitploit:~
# OSSEM CIM Profile
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 范围:

百分比分数
00
1 到 501
51 到 993
1005

如何使用

开始之前

  • Power-up 是一个 Python 脚本,请确保已执行 pip install -r requirements.txt
  • 确保拥有 OSSEM 仓库 的本地副本

运行 power-up

root@kitploit:~
$> 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

如你所见,power-up 可以从两种不同的格式消费 OSSEM 数据:

  • OSSEM markdown - 从 git 克隆时 OSSEM 的原始格式。
  • OSSEM yaml - OSSEM 的摘要格式,仅包含数据字段和一些元数据。你可以使用 power-up 将 OSSEM markdown 转换为 yaml。

目前,Power-up 将 OSSEM 输出导出到:

  • Yaml - 在 output/ 文件夹中创建 OSSEM 结构的 yaml 文件
  • Excel - 创建一个 OSSEM DDM 表,并附带数据质量评分,放在 output/ 文件夹中
  • Elastic - 在 elastic 中创建 OSSEM 结构,索引如下:
    • ossem.ddm - OSSEM DDM 表,并附带数据质量评分
    • ossem.cim - OSSEM CIM 条目
    • ossem.dds - OSSEM 数据字典
    • ossem.dcs - OSSEM 数据通道

注意:如果未指定配置文件路径,power-up 默认使用 profiles/default.yml。

导出为 YAML

root@kitploit:~
$> python3 powerup.py -o ../OSSEM --yaml
  _____ _____ _____ _____ _____    _____ _____ _ _ _ _____ _____     _____ _____ __
 |     |   __|   __|   __|     |  |  _  |     | | | |   __| __  |___|  |  |  _  |  |
 |  |  |__   |__   |   __| | | |  |   __|  |  | | | |   __|    -|___|  |  |   __|__|
 |_____|_____|_____|_____|_|_|_|  |__|  |_____|_____|_____|__|__|   |_____|__|  |__|

[*] Profile path: profiles/default.yml
[*] Parsing OSSEM from markdown
[*] Exporting OSSEM to YAML
[*] Created output/ddm_20191114_160246.yml
[*] Created output/cim_20191114_160246.yml
[*] Created output/dds_20191114_160246.yml

导出/导入为 YAML 的目的是为了方便 OSSEM 自定义。很可能你首先要做的是创建自己的数据字典,然后添加新的 DDM 条目,因此 YAML 将使更新更容易。

注意1: 修改 resources/config.yml 来指示 power-up 正确结构的文件名。然后你只需将它们放入一个文件夹,并传递给 OSSEM_YAML 参数。

注意2: power-up 不会将整个 OSSEM 对象解析为 YAML,只解析数据字段和一些元数据(例如描述)。这样做的原因是希望保持 YAML 对象尽可能精简,只包含评估数据质量所需的数据。

导出为 EXCEL

root@kitploit:~
$> python3 powerup.py -o ../OSSEM --excel
  _____ _____ _____ _____ _____    _____ _____ _ _ _ _____ _____     _____ _____ __
 |     |   __|   __|   __|     |  |  _  |     | | | |   __| __  |___|  |  |  _  |  |
 |  |  |__   |__   |   __| | | |  |   __|  |  | | | |   __|    -|___|  |  |   __|__|
 |_____|_____|_____|_____|_|_|_|  |__|  |_____|_____|_____|__|__|   |_____|__|  |__|

[*] Profile path: profiles/default.yml
[*] Parsing OSSEM from markdown
[*] Exporting OSSEM DDM to Excel
[*] Saved Excel to output/ddm_enriched_20191114_160041.xlsx

当导出为 Excel 时,power-up 将创建一个美观的 DDM 表,其中包含每个条目的相应数据质量维度:

导出为 ELASTIC

root@kitploit:~
$> python3 powerup.py -o ../OSSEM --elastic
  _____ _____ _____ _____ _____    _____ _____ _ _ _ _____ _____     _____ _____ __
 |     |   __|   __|   __|     |  |  _  |     | | | |   __| __  |___|  |  |  _  |  |
 |  |  |__   |__   |   __| | | |  |   __|  |  | | | |   __|    -|___|  |  |   __|__|
 |_____|_____|_____|_____|_|_|_|  |__|  |_____|_____|_____|__|__|   |_____|__|  |__|

[*] Profile path: profiles/default.yml
[*] Parsing OSSEM from markdown
[*] Exporting OSSEM to Elastic
[*] Creating elastic index ossem.ddm
[*] Creating elastic index ossem.cim
[*] Creating elastic index ossem.dds
[*] Creating elastic index ossem.dcs

当导出为 Elastic 时,power-up 会将所有 OSSEM 数据存储在 elastic 中。由于 DDM 也附带了相应的数据质量维度,你将能够创建如下所示的仪表板:

导出为 ATT&CK Navigator

root@kitploit:~
$> python3 powerup.py -o ../OSSEM --layer
  _____ _____ _____ _____ _____    _____ _____ _ _ _ _____ _____     _____ _____ __
 |     |   __|   __|   __|     |  |  _  |     | | | |   __| __  |___|  |  |  _  |  |
 |  |  |__   |__   |   __| | | |  |   __|  |  | | | |   __|    -|___|  |  |   __|__|
 |_____|_____|_____|_____|_|_|_|  |__|  |_____|_____|_____|__|__|   |_____|__|  |__|

[*] Profile path: profiles/default.yml
[*] Parsing OSSEM from markdown
[*] Exporting OSSEM to Naviagator Layer
[*] Pulling ATT&CK data
[*] Generating data source quality layer
[*] Created output/ds_layer_20191119_220141.json

当导出为 layer 时,power-up 将创建一个 ATT&CK Navigator Layer JSON 文件,其中包含每个技术的相应数据质量维度:

注意:技术分数来源于 DDM 中数据源的平均分数。

致谢

  • Roberto Rodriguez @Cyb3rWard0g,Jose Luis Rodriguez @Cyb3rPandaH,以及所有支持 OSSEM 的社区成员。
  • Marcus Bakker @bakk3rm 和 Ruben Bouman @rubenb_2,感谢他们从 DeTTECT 中获得的数据质量维度的灵感。

待办事项

  • 创建额外文档
  • 导出为 ATT&CK Navigator Layer
  • 正确处理共享相同数据通道但根据操作系统具有不同模式的数据字典
  • 提供 Kibana 对象(可视化和仪表板)
下载工具
维度类型描述
覆盖面数据通道数据通道覆盖了多少设备或网络段
时效性数据通道事件变得可用需要多长时间
保留期数据通道事件保持可用多长时间
结构性事件事件的完整性如何,相关字段是否可用
一致性事件事件字段的标准化程度如何,字段是否已规范化
00
1 到 251
26 到 502
51 到 753
76 到 994
1005