
데이터 품질을 평가하는 도구로, 훌륭한 OSSEM을 기반으로 구축되었습니다.

훌륭한 OSSEM 프로젝트를 기반으로 구축된 데이터 품질 평가 도구입니다.
Power-up은 데이터 품질 평가의 기반으로 OSSEM 탐지 데이터 모델(DDM)을 사용합니다. 주요 이유는 DDM이 ATT&CK 데이터 소스, 공통 정보 모델 엔티티(CIM), 데이터 사전(이벤트)을 서로 연관 지을 수 있는 구조화된 방법을 제공하기 때문입니다.
DDM 구조에 익숙하지 않은 분들을 위해 예제를 제공합니다:
| ATT&CK 데이터 소스 | 하위 데이터 소스 | 소스 데이터 객체 | 관계 | 대상 데이터 객체 | EventID |
|---|---|---|---|---|---|
| 프로세스 모니터링 | 프로세스 생성 | process | 생성됨 | process | 4688 |
| 프로세스 모니터링 | 프로세스 생성 | process | 생성됨 | process | 1 |
| 프로세스 모니터링 | 프로세스 종료 | process | 종료됨 | - | 4689 |
| 프로세스 모니터링 | 프로세스 종료 | process | 종료됨 | - | 5 |
보시다시피 DDM의 각 항목은 process, user, file 등의 추상 엔티티를 사용하여 하위 데이터 소스(범위)를 정의합니다. 각 항목에는 해당 범위가 적용되는 이벤트 ID도 포함됩니다. 이러한 엔티티에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
요약하면, DDM 항목은 로그 소스(데이터 채널)가 어떻게 소비될 수 있는지 정의하는 범위를 제공함으로써 원시 이벤트의 복잡성을 제거하는 데 중요한 역할을 합니다.
Power-up은 다섯 가지 차원에 따라 데이터 품질 점수를 평가합니다:
각 차원은 0(없음)에서 5(우수) 사이의 점수로 평가됩니다.
이 차원들은 데이터 채널에 연결되며, 해당 채널이 제공하는 모든 이벤트에 전파됩니다.
이러한 차원의 특성상 데이터 채널의 특성에 따라 수동으로 평가해야 합니다.
Power-up은 resources/dcs.yml을 사용하여 데이터 채널을 정의하고 차원을 평가합니다:
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은 프로파일 개념을 사용하여 데이터 사전 표준 이름과 일치해야 하는 필드를 선택합니다. 예를 들어:
# OSSEM CIM 프로파일
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]
훌륭한 OSSEM을 기반으로 구축된 ATT&CK 데이터 소스 적용 범위 평가 도구.
optional arguments:
-h, --help 도움말 메시지를 표시하고 종료
-o OSSEM, --ossem OSSEM
OSSEM 마크다운을 가져올 경로
-y OSSEM_YAML, --ossem-yaml OSSEM_YAML
OSSEM YAML을 가져올 경로
-p PROFILE, --profile PROFILE
CIM 프로파일 경로
--excel OSSEM DDM을 엑셀로 내보내기
--elastic OSSEM 데이터 모델을 Elastic으로 내보내기
--yaml OSSEM 데이터 모델을 YAML로 내보내기
--layer OSSEM 데이터 모델을 Navigator 레이어로 내보내기
보시다시피 power-up은 두 가지 형식의 OSSEM 데이터를 사용할 수 있습니다:
현재 Power-up은 OSSEM 출력을 다음으로 내보냅니다:
output/ 폴더에 YAML 형식의 OSSEM 구조 생성output/ 폴더에 데이터 품질 점수가 추가된 OSSEM DDM 테이블 생성참고: 프로파일 파일 경로가 지정되지 않으면 power-up은 기본적으로
profiles/default.yml을 사용합니다.
$> python3 powerup.py -o ../OSSEM --yaml
_____ _____ _____ _____ _____ _____ _____ _ _ _ _____ _____ _____ _____ __
| | __| __| __| | | _ | | | | | __| __ |___| | | _ | |
| | |__ |__ | __| | | | | __| | | | | | __| -|___| | | __|__|
|_____|_____|_____|_____|_|_|_| |__| |_____|_____|_____|__|__| |_____|__| |__|
[*] 프로파일 경로: profiles/default.yml
[*] 마크다운에서 OSSEM 파싱 중
[*] 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 파싱 중
[*] OSSEM DDM을 Excel로 내보내는 중
[*] Excel 저장됨: output/ddm_enriched_20191114_160041.xlsx
Excel로 내보낼 때 power-up은 각 항목에 대한 데이터 품질 차원이 포함된 보기 좋은 DDM을 생성합니다:

$> python3 powerup.py -o ../OSSEM --elastic
_____ _____ _____ _____ _____ _____ _____ _ _ _ _____ _____ _____ _____ __
| | __| __| __| | | _ | | | | | __| __ |___| | | _ | |
| | |__ |__ | __| | | | | __| | | | | | __| -|___| | | __|__|
|_____|_____|_____|_____|_|_|_| |__| |_____|_____|_____|__|__| |_____|__| |__|
[*] 프로파일 경로: profiles/default.yml
[*] 마크다운에서 OSSEM 파싱 중
[*] 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 파싱 중
[*] OSSEM을 Navigator 레이어로 내보내는 중
[*] ATT&CK 데이터 가져오는 중
[*] 데이터 소스 품질 레이어 생성 중
[*] 생성됨 output/ds_layer_20191119_220141.json
레이어로 내보낼 때 power-up은 각 기술에 대한 데이터 품질 차원이 포함된 Attack Navigator Layer JSON 파일을 생성합니다:

참고: 기술 점수는 DDM의 데이터 소스 평균 점수에서 파생됩니다.
| 차원 | 유형 | 설명 |
|---|
| 적용 범위 | 데이터 채널 | 데이터 채널이 적용되는 장치 또는 네트워크 세그먼트의 수 |
| 적시성 | 데이터 채널 | 이벤트를 사용할 수 있을 때까지 걸리는 시간 |
| 보존 기간 | 데이터 채널 | 이벤트가 사용 가능한 상태로 유지되는 기간 |
| 구조 | 이벤트 | 관련 필드가 사용 가능한지, 이벤트의 완전성 |
| 일관성 | 이벤트 | 이벤트 필드가 표준화되었는지, 필드가 정규화되었는지 |
| 0 | 0 |
| 1 ~ 25 | 1 |
| 26 ~ 50 | 2 |
| 51 ~ 75 | 3 |
| 76 ~ 99 | 4 |
| 100 | 5 |