agentsclimarketplace

Sigma writing

Skill Liberty91LTD/cti-skills/skills/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

Install
npx -y skills add Liberty91LTD/cti-skills --skill sigma-writing

Assembled 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

CategoryDescriptionCommon fields
process_creationNew process startedImage, CommandLine, ParentImage, User
network_connectionNetwork connection initiatedDestinationIp, DestinationPort, SourceIp
file_eventFile created/modified/deletedTargetFilename, Image
registry_eventRegistry key/value changeTargetObject, Details
dns_queryDNS resolutionQueryName, QueryType
image_loadDLL/module loadedImageLoaded, Image
pipe_createdNamed pipe createdPipeName
ps_scriptPowerShell script executionScriptBlockText
webserverWeb server access logscs-uri-query, c-ip
firewallFirewall logssrc-ip, dst-ip, dst-port, action

Field Modifiers

ModifierDescriptionExample
containsSubstring matchCommandLine|contains: '-enc'
startswithStarts withImage|startswith: 'C:\Temp'
endswithEnds withImage|endswith: '\powershell.exe'
reRegex matchCommandLine|re: '.*-e(nc)?.*'
base64offsetBase64 encoded contentCommandLine|base64offset: 'IEX'
allAll values must matchCommandLine|contains|all:
cidrCIDR range matchDestinationIp|cidr: '10.0.0.0/8'

Detection Logic

Condition operators

  • and — All conditions must match
  • or — Any condition must match
  • not — Negate a condition
  • 1 of selection* — Any of the named selections matching selection*
  • 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 id field
  • 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.

Keep looking

Skills are one crate of 326,782. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.