Sigma writing
Use when the user asks for a SIGMA detection rule, "write a SIGMA rule for X", or `/hash-investigation` / `/malware-analysis` surfaces behaviour worth a vendor-agnostic detection. Format spec + writing guide.From its SKILL.md
npx -y skills add Liberty91LTD/cti-skills --skill sigma-writingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.0 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
SIGMA Rule Writing Guide
SIGMA rules are vendor-agnostic detection rules written in YAML. They can be converted to platform-specific query languages (Splunk SPL, Elastic KQL, Microsoft Sentinel KQL, etc.).
Rule Structure
title: Descriptive title of the detection
id: <UUID> # Generate a unique UUID
status: experimental|test|stable
description: >
Detailed description of what this rule detects and why.
references:
- https://reference-url.com # Source intelligence, blog posts, CVE
author: CTI Platform
date: YYYY/MM/DD
modified: YYYY/MM/DD
tags:
- attack.initial_access # ATT&CK tactic (lowercase, dots)
- attack.t1566.001 # ATT&CK technique
- cve.2024.12345 # CVE if applicable
logsource:
category: process_creation # Log category
product: windows # OS/product
service: # Optional: specific service
detection:
selection:
FieldName|modifier:
- 'value1'
- 'value2'
filter_known_good:
FieldName: 'legitimate_value'
condition: selection and not filter_known_good
falsepositives:
- Description of known false positive scenario
level: critical|high|medium|low|informational
Log Source Categories
| Category | Description | Common fields |
|---|---|---|
process_creation | New process started | Image, CommandLine, ParentImage, User |
network_connection | Network connection initiated | DestinationIp, DestinationPort, SourceIp |
file_event | File created/modified/deleted | TargetFilename, Image |
registry_event | Registry key/value change | TargetObject, Details |
dns_query | DNS resolution | QueryName, QueryType |
image_load | DLL/module loaded | ImageLoaded, Image |
pipe_created | Named pipe created | PipeName |
ps_script | PowerShell script execution | ScriptBlockText |
webserver | Web server access logs | cs-uri-query, c-ip |
firewall | Firewall logs | src-ip, dst-ip, dst-port, action |
Field Modifiers
| Modifier | Description | Example |
|---|---|---|
contains | Substring match | CommandLine|contains: '-enc' |
startswith | Starts with | Image|startswith: 'C:\Temp' |
endswith | Ends with | Image|endswith: '\powershell.exe' |
re | Regex match | CommandLine|re: '.*-e(nc)?.*' |
base64offset | Base64 encoded content | CommandLine|base64offset: 'IEX' |
all | All values must match | CommandLine|contains|all: |
cidr | CIDR range match | DestinationIp|cidr: '10.0.0.0/8' |
Detection Logic
Condition operators
and— All conditions must matchor— Any condition must matchnot— Negate a condition1 of selection*— Any of the named selections matchingselection*all of selection*— All named selections must match
Common patterns
Process execution with specific arguments:
detection:
selection:
Image|endswith: '\cmd.exe'
CommandLine|contains:
- '/c whoami'
- '/c ipconfig'
- '/c net user'
condition: selection
Suspicious parent-child relationship:
detection:
selection:
ParentImage|endswith: '\outlook.exe'
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\wscript.exe'
condition: selection
Network connection to suspicious destination:
detection:
selection:
DestinationIp|cidr:
- '185.220.0.0/16'
filter_internal:
SourceIp|cidr: '10.0.0.0/8'
condition: selection and not filter_internal
MITRE ATT&CK Tag Format
tags:
- attack.tactic_name # e.g., attack.initial_access
- attack.tXXXX # e.g., attack.t1566
- attack.tXXXX.XXX # e.g., attack.t1566.001 (sub-technique)
Common tactic tags: attack.initial_access, attack.execution, attack.persistence, attack.privilege_escalation, attack.defense_evasion, attack.credential_access, attack.discovery, attack.lateral_movement, attack.collection, attack.command_and_control, attack.exfiltration, attack.impact
Quality Checklist
- Unique UUID generated for
idfield - ATT&CK technique(s) mapped in tags
- False positives documented
- Level accurately reflects severity
- Log source correctly specified
- Detection logic tested against known-good and known-bad scenarios
- References link to source intelligence
- Description explains WHAT is detected and WHY it matters
Output Location
Write SIGMA rules to: data/detection-rules/sigma/<technique-id>-<slug>.yml
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.