시그마 규칙: 범용 감지 논리 및 SIEM 변환
방어적인 사이버 보안의 세계에서 가장 지속적인 문제 중 하나는 항상 다음과 같습니다. 는 감지 언어의 단편화: 각 SIEM에는 고유한 구문이 있습니다. 독점적이므로 플랫폼마다 Splunk용으로 작성된 서로 다른 쿼리와 규칙이 필요합니다. Elastic에서는 작동하지 않으며 결과적으로 Microsoft Sentinel과 호환되지 않습니다. 그 결과 SOC 팀은 이를 다시 작성하는 데 엄청난 시간을 소비하게 됩니다. 실제로 중요한 것에 초점을 맞추기보다는 각 도구에 대한 감지 논리를 사용합니다. 피해를 입히기 전에 위협을 찾아보세요.
Le 시그마 규칙 이 문제를 해결하기 위해 태어났습니다. Florian Roth와 Thomas Patzke가 소개한 Sigma는 오늘날 사실상의 표준 형식입니다. 이식 가능하고 플랫폼 독립적인 방식으로 탐지 규칙을 작성합니다. 한 번 작성한 시그마 규칙을 자동으로 쿼리로 변환 가능 Splunk SPL, Elasticsearch KQL, Microsoft Sentinel KQL, IBM QRadar, Chronicle YARA-L, 그리고 40개 이상의 다른 목표. 이 기사에서는 Sigma 구문을 심층적으로 살펴봅니다. 로그 소스 매핑 패턴, 편집 및 변환 기술, 통합 방법 최신 코드로서의 탐지 파이프라인의 Sigma.
이 기사에서 배울 내용
- 시그마 규칙의 전체 구조: 제목, 로그 소스, 탐지, 조건
- 로그 소스 매핑: 카테고리, 제품, 서비스 및 이를 SIEM으로 변환하는 방법
- 고급 수정자: 포함, 시작, 끝, re, base64offset
- 집계 조건: 탐지 통계의 개수, 합계, 최소, 최대
- sigma-cli를 사용하여 Splunk, Elastic 및 Sentinel로 자동 변환
- 측면 이동, 지속성, 유출 감지 패턴
- 합성 데이터를 사용한 시그마 규칙 테스트 및 검증
- 모범 사례를 통해 회사의 Sigma 저장소 관리
시그마(Sigma)란 무엇이며 왜 표준이 되었나요?
Sigma는 탐지 패턴을 설명하기 위한 개방형 YAML 기반 형식입니다. 플랫폼 독립적인 방식으로 보안 로그에 기록됩니다. 다음과 같이 생각해보세요 로그용 YARA: YARA에서 규칙을 작성할 수 있는 것처럼 모든 스캐너에서 작동하는 악성 파일에 대해 Sigma를 사용하면 다음과 같은 작업을 수행할 수 있습니다. 모든 SIEM에서 작동하는 탐지 규칙.
SigmaHQ 프로젝트는 오늘 더 많은 것을 호스팅합니다. 3,000개의 커뮤니티 규칙 지속적인 유지 관리가 적용되고 MITRE ATT&CK 프레임워크에 매핑되어 준비됨 변환됩니다. 성장은 폭발적이었습니다. 틈새 도구에서 시작하여 위협 사냥꾼인 Sigma는 탐지 엔지니어의 공용 언어가 되었습니다. 전문가. 주요 장점은 세 가지입니다.
- 이식성: 규칙을 작성하고 N개의 서로 다른 SIEM에 배포
- 협동: 사용 중인 SIEM에 관계없이 누구나 규칙을 읽을 수 있습니다.
- 오토메이션: CI/CD에서는 변환이 완전히 자동화됩니다.
시그마 규칙의 분석
잘 정의된 필드가 있는 시그마 규칙 및 YAML 파일. 구조를 살펴보자 mimikatz의 사용을 기록한 실제 예제를 통해 완성됩니다. Windows 이벤트 로그:
title: Mimikatz Detection via Windows Security Events
id: 0d82df6e-0e4e-4fbb-a12b-6e7a00a9c7c3
status: stable
description: Detects mimikatz usage patterns via LSASS access events
and command-line indicators
references:
- https://github.com/gentilkiwi/mimikatz
- https://attack.mitre.org/techniques/T1003/001/
author: Federico Calo
date: 2026/03/01
modified: 2026/03/09
tags:
- attack.credential_access
- attack.t1003.001
- attack.defense_evasion
logsource:
category: process_access
product: windows
detection:
selection_lsass:
TargetImage|endswith: '\lsass.exe'
GrantedAccess|contains:
- '0x1010'
- '0x1038'
- '0x1400'
- '0x143a'
selection_mimikatz_cli:
CommandLine|contains|all:
- 'sekurlsa'
- 'logonpasswords'
filter_legitimate:
SourceImage|startswith:
- 'C:\Windows\System32\'
- 'C:\Program Files\Windows Defender\'
condition: (selection_lsass and not filter_legitimate) or selection_mimikatz_cli
falsepositives:
- Legitimate security tools performing LSASS inspection
- Antivirus and EDR solutions
level: high
각 섹션을 자세히 분석해 보겠습니다.
필수 필드 및 메타데이터
규칙 시작 부분의 메타데이터 블록은 문서화용입니다. 관리 자동화를 위한 것:
- 제목: 읽을 수 있는 규칙 이름입니다. 고유해야 합니다. 그리고 설명. 규칙: "동사 + 주제 + 문맥"
- ID: 고유한 UUID v4. 시간이 지나도 절대 변하지 않습니다. 허용하세요. 버전 추적 및 오탐지 보고
-
상태: 규칙의 수명주기. 유효한 값은 다음과 같습니다:
stable,test,experimental,deprecated,unsupported -
수준: 심각성. 값:
informational,low,medium,high,critical -
태그: .format의 MITRE ATT&CK 태그 목록
attack.t<ID>기술이나attack.<tactic>전술을 위해
Logsource: 이식성의 핵심
블록 로그 소스 그리고 Sigma를 휴대 가능하게 만드는 마법입니다. SIEM 특정 인덱스나 데이터 스트림을 지정하는 대신 세 가지 필드를 통해 추상적으로 로그 유형을 확인합니다.
# Esempio 1: Windows Security Events
logsource:
category: process_creation
product: windows
# Esempio 2: Linux Authentication
logsource:
category: process_creation
product: linux
# Esempio 3: Web Server Logs
logsource:
category: webserver
# nessun product specifico: generico
# Esempio 4: Log specifico di un servizio
logsource:
product: windows
service: security
# Esempio 5: Log di rete
logsource:
category: network_connection
product: windows
# Esempio 6: Cloud Trail
logsource:
product: aws
service: cloudtrail
sigma-cli 파이프라인 시스템은 이러한 추상 로그 소스를
각 SIEM의 구체적인 경로. 예를 들어, category: process_creation
su product: windows 다음과 같이 됩니다:
| SIEM 타겟 | 로그소스 번역 |
|---|---|
| 스플렁크 | source="WinEventLog:Security" EventCode=4688 |
| 엘라스틱서치(ECS) | event.category:process AND event.type:start |
| 마이크로소프트 센티넬(KQL) | SecurityEvent | where EventID == 4688 |
| 크로니클(YARA-L) | $event.metadata.event_type = "PROCESS_LAUNCH" |
탐지: 선택 및 조건
블록 발각 감지 논리가 정의되는 곳입니다. 이는 두 부분으로 구성됩니다. 선택 (로그 필드에 대한 필터) 그리고 상태 (선택 항목을 결합하는 부울 논리)
detection:
# Selection con match esatto su campo singolo
selection_exact:
EventID: 4625
# Selection con lista di valori (OR implicito)
selection_multi_value:
CommandLine|contains:
- 'net user'
- 'net localgroup'
- 'whoami'
# Selection con match su tutti i valori (AND implicito con |all)
selection_and_all:
CommandLine|contains|all:
- '-enc'
- 'powershell'
# Selection con regex
selection_regex:
CommandLine|re: '(?i)(invoke-mimikatz|sekurlsa::)'
# Selection con wildcard
selection_wildcard:
TargetFilename|startswith: 'C:\Users\'
TargetFilename|endswith: '.exe'
# Filter per ridurre i falsi positivi
filter_system_processes:
ParentImage|startswith: 'C:\Windows\System32\'
# Condition: logica booleana
condition: selection_exact and (
selection_multi_value or selection_and_all
) and not filter_system_processes
고급 수정자
I 수정자 필드 이름에 추가되는 접미사입니다.
파이프 캐릭터와 함께 | 검색 유형을 변경하려면
효과적인 규칙을 작성하려면 이들 모두를 아는 것이 필수적입니다.
| 수정자 | 설명 | Esempio |
|---|---|---|
contains |
하위 문자열 일치(양쪽 모두 와일드카드) | CommandLine|contains: 'mimikatz' |
startswith |
값의 시작 부분에서 일치 | Image|startswith: 'C:\Users\' |
endswith |
값의 끝에서 일치 | Image|endswith: '\cmd.exe' |
re |
정규식 PCRE | CommandLine|re: '(?i)sekurlsa' |
base64offset |
오프셋 0,1,2를 사용한 Base64 디코딩 | CommandLine|base64offset|contains: 'IEX' |
wide |
유니코드 와이드 문자열에서 일치 | CommandLine|wide|contains: 'sekurlsa' |
all |
목록의 모든 값이 일치해야 합니다. | CommandLine|contains|all: ['-enc', 'bypass'] |
windash |
대시와 슬래시를 모두 일치시킵니다. | CommandLine|contains|windash: '-Enc' |
cidr |
IP의 CIDR 범위 일치 | DestinationIp|cidr: '10.0.0.0/8' |
lt, lte, gt, gte |
수치 비교 | EventID|gte: 4624 |
집계 조건: 통계적 탐지
일부 탐지에서는 특정 시간 간격으로 이벤트를 계산해야 합니다. 단일 이벤트와 일치하지 않습니다. 시그마는 지원합니다 집계 조건 다음 사용 사례의 경우:
# Rilevare brute force: più di 10 login falliti in 60 secondi
title: Windows Brute Force Login Attempt
logsource:
product: windows
service: security
detection:
selection:
EventID: 4625
LogonType: 3
condition: selection | count() > 10
timeframe: 60s
falsepositives:
- Users with expired passwords
level: medium
---
# Rilevare data exfiltration: upload anomalo per destinazione
title: Potential Data Exfiltration by Volume
logsource:
category: network_connection
product: windows
detection:
selection:
Initiated: 'true'
DestinationPort:
- 443
- 80
condition: selection | count(DestinationHostname) by SourceIp > 50
timeframe: 1h
level: high
---
# Port scan detection: molte porte diverse dallo stesso sorgente
title: Network Port Scan Detection
logsource:
category: network_connection
detection:
selection:
EventID: 5156
condition: selection | count(DestinationPort) by SourceAddress > 30
timeframe: 10m
level: medium
sigma-cli를 사용한 변환: 실용 가이드
시그마-cli 규칙을 변환하는 공식 도구 SIEM 쿼리 언어의 시그마. 기본 설치 및 사용:
# Installazione
pip install sigma-cli
pip install pySigma-backend-splunk
pip install pySigma-backend-elasticsearch
pip install pySigma-backend-microsoft365defender
# Verifica backend disponibili
sigma list backends
# Conversione base: Sigma -> Splunk SPL
sigma convert -t splunk -p splunk_windows rules/mimikatz.yml
# Output atteso:
# (source="WinEventLog:Microsoft-Windows-Sysmon/Operational"
# EventCode=10 TargetImage="*\\lsass.exe"
# GrantedAccess IN ("0x1010", "0x1038", "0x1400", "0x143a"))
# NOT (SourceImage="C:\\Windows\\System32\\*"
# OR SourceImage="C:\\Program Files\\Windows Defender\\*")
# Conversione con pipeline personalizzata
sigma convert \
-t splunk \
-p splunk_windows \
-p my_custom_field_mapping.yml \
rules/
# Conversione per Elasticsearch con ECS
sigma convert \
-t elasticsearch \
-p ecs_windows \
-f lucene \
rules/credential_access/
# Conversione per Microsoft Sentinel (KQL)
sigma convert \
-t microsoft365defender \
-p microsoft365defender \
rules/lateral_movement/
# Output in formato JSON per automazione
sigma convert \
-t splunk \
-p splunk_windows \
--format-output json \
rules/ > converted_rules.json
주의: 파이프라인 및 필드 매핑
각 조직에는 자체 로그 정규화가 있습니다. 귀하의 로그 표준 패턴(예: Windows용 Sysmon)을 따르지 않으면 커스텀 파이프라인 시그마 필드를 필드에 매핑합니다. SIEM의 실제 데이터. 이 매핑이 없으면 변환된 규칙이 작동하지 않습니다.
커스텀 파이프라인 생성
시그마 파이프라인은 시그마 추상 필드를 필드에 매핑하는 방법을 정의합니다. SIEM의 구체적인 요소. 사용하는 인프라에 대해 생성하는 방법은 다음과 같습니다. 사용자 정의 로그 형식:
# custom_pipeline.yml
name: Custom Windows Pipeline
priority: 20
transformations:
# Rinominare campo Sigma -> campo reale nel SIEM
- id: field_mapping_process
type: field_name_mapping
mapping:
CommandLine: process.command_line
Image: process.executable
ParentImage: process.parent.executable
User: user.name
TargetImage: target.process.executable
GrantedAccess: target.process.granted_access
rule_conditions:
- type: logsource
category: process_creation
# Aggiungere condizioni all'index di destinazione
- id: index_condition
type: detection_item_keyword
keyword: 'index=windows_events'
rule_conditions:
- type: logsource
product: windows
# Sostituire valori nei campi
- id: winlog_channel_map
type: field_value_mapping
field_name: winlog.channel
mapping:
'Security': 'security'
'System': 'system'
'Application': 'application'
일반적인 사용 사례에 대한 탐지 패턴
우선순위가 높은 사용 사례에 준비된 시그마 규칙 모음을 살펴보겠습니다. 가장 많이 활용되는 MITRE ATT&CK 기술에 매핑됩니다.
측면 이동: Pass-the-Hash
title: Pass-the-Hash Attack Pattern
id: 6571d552-4c16-4f50-b5f6-11ae9d1b0a38
status: stable
description: Detects Pass-the-Hash attacks via anomalous NTLM authentication
tags:
- attack.lateral_movement
- attack.t1550.002
logsource:
product: windows
service: security
detection:
selection:
EventID: 4624
LogonType: 3
AuthenticationPackageName: NTLM
KeyLength: 0
filter_local:
IpAddress:
- '127.0.0.1'
- '::1'
filter_machine:
SubjectUserName|endswith: '






