AgentSkillsCN

custom-signatures

为THOR扫描定制并部署自定义IOC、YARA规则、Sigma规则,以及STIX指标。

SKILL.md
--- frontmatter
name: custom-signatures
description: Create and deploy custom IOCs, YARA rules, Sigma rules, and STIX indicators for THOR scans.

Custom Signatures Skill

Goal: Help users create, format, and deploy custom detection content for THOR.

Overview

THOR processes all files in the ./custom-signatures folder. The file extension and filename tags determine how each file is interpreted:

ExtensionTypeDescription
.txtSimple IOCsCSV-style IOC files (hashes, filenames, C2s, etc.)
.datEncrypted IOCsEncrypted simple IOCs (via thor-util)
.yarYARA rulesPlain text YARA rules
.yasEncrypted YARAEncrypted YARA rules
.ymlSigma rulesLog detection rules
.ymsEncrypted SigmaEncrypted Sigma rules
.jsonSTIX v2STIXv2 JSON indicators
.jsosEncrypted STIXEncrypted STIX indicators

Simple IOCs

Filename tags determine IOC type. Tag is detected via regex \Wc2\W (word boundary match).

Tag in FilenamePurposeExample Filename
c2 or domainsIPs, hostnames, CIDR rangescase22-c2-iocs.txt
filename or filenamesRegex-based path/name IOCsapt-filename-iocs.txt
hash or hashesMD5, SHA1, SHA256, Imphashmisp-hashes.txt
keyword or keywordsString-based keywordsincident-keywords.txt
trusted-hashWhitelist hashes (reduce score)my-trusted-hashes.txt
handlesMutex/Event valuesmalware-handles.txt
pipesNamed pipesc2-pipes.txt

Rules

YARA Rules

  • Generic rules: Applied to files, process memory, DeepDive chunks
  • Specific rules (tag in filename):
    • registry - Registry key/value detection
    • log - Log file and eventlog detection
    • process or memory - Process memory only
    • keyword - All string checks across modules
    • meta - All files (first 2KB + externals only)

Sigma Rules

Applied to Windows Eventlogs and log files. By default only high and critical levels shown.

STIX v2

Supports file observables (name, path, hashes, size, timestamps) and registry key observables.

THOR-Specific YARA Enhancements

Score Attribute

yara
meta:
    score = 80  // Default is 75 if not specified

External Variables

Available in generic and meta YARA rules:

VariableDescriptionExample
filenameFile name onlycmd.exe
filepathPath without filenameC:\temp
extensionExtension with dot, lowercase.exe
filetypeMagic header typeEXE, ZIP, PDF
filesizeSize in bytes(YARA built-in)
ownerFile ownerNT-AUTHORITY\SYSTEM
filemodePOSIX-style file mode
unpack_parentImmediate containerZIP
unpack_sourceFull unpack chainEMAIL>ZIP

Restriction Attributes

yara
meta:
    type = "memory"      // or "file" - restrict to memory/file only
    limit = "Mutex"      // Restrict to specific module
    nodeepdive = 1       // Exclude from DeepDive
    falsepositive = 1    // Reduce score instead of add

Reference Documentation

Examples

Quick Reference

File Naming

code
# Good - tag detected
case22-c2-domains.txt       ✓ (c2 tag)
misp-export-hashes.txt      ✓ (hashes tag)
incident-filename-iocs.txt  ✓ (filename tag)

# Bad - tag not detected
myc2iocs.txt                ✗ (no word boundary)
filenameiocs.txt            ✗ (no word boundary)

Deployment

bash
# Place files in custom-signatures folder
cp my-hashes.txt /path/to/thor/custom-signatures/

# For YARA rules, use yara subfolder
cp my-rules.yar /path/to/thor/custom-signatures/yara/

# Encrypt sensitive IOCs (optional)
thor-util encrypt --file my-c2-domains.txt
# Creates my-c2-domains.dat

Testing

bash
# Run with custom signatures only
./thor-macosx --customonly -p /target/path

# Verify IOC loading in startup
./thor-macosx 2>&1 | grep -i "custom\|ioc\|signature"