beaconing-review
Grade a periodic outbound flow as c2, suspicious, or benign-periodic. Read this when raw_data shows a repeating connection and…
Check or add ATT&CK technique ids on a finding by grounding each id in an observable. Read this when a triage, investigation, or correlation agent is checking or adding technique ids on a finding.
$ npx -y skills add Vigil-SOC/vigil --skill attack-mapping --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/attack-mappingContext preview
The summary Claude sees to decide when to auto-load this skill.
Check or add ATT&CK technique ids on a finding by grounding each id in an observable. Read this when a triage, investigation, or correlation agent is checking or adding technique ids on a finding.
name: attack-mapping description: Check or add ATT&CK technique ids on a finding by grounding each id in an observable. Read this when a triage, investigation, or correlation agent is checking or adding technique ids on a finding. metadata: vigil-origin: "epic #882 slice 2, #1077"
Ground each technique id in an observable from this finding. The labelled block is the whole answer: write it first and always finish it, then at most two sentences. Keep every observable to a few words. Do not restate technique definitions. This turn may have no tools. If a tool is not callable, skip it and still write the block. Never end the turn on a lookup you announced.
From `raw_data`, `description`, and `iocs`, note only fields that are present:
Name a tool only when you hold it.
Take `mitre_techniques` in listed order. An empty or missing list means there is nothing to confirm. For each id already on the finding:
Then add an id that is not on the list only when an observable shows the behaviour. Prefer the sub-technique when the observable pins it; use the parent only when it does not. An added id's status is `added`. Apply a pin only when this finding has its observables. Do not emit a technique from a pin that did not match, and do not add a second technique for the same fact.
Pins:
Tactic names are lowercase ATT&CK form (`initial-access`, `execution`, `defense-evasion`, `credential-access`, `exfiltration`). A capitalised tactic name is wrong. The `tactics` line lists those tactic names, in the order of the `confirmed` or `added` technique lines, duplicates dropped, separated by a comma and a space. The first tactic is the tactic of the first confirmed or added technique, not that technique's id. `unsupported` and `wrong-sub-technique` add no tactic. One such technique means one tactic and no second word.
`chain` is `single-stage` unless this finding shows two ordered stages. Join stages with ` -> `. Do not invent an earlier stage from the tactic name.
`confidence` is `high` when each confirmed or added technique is pinned by a `raw_data` field, `medium` when only the description supports it, and `low` when the observable is ambiguous.
Plain text. One technique line per id: existing ids first, in listed order, then added ids. Labels lowercase, one space after each colon. No bold, bullets, quotes, backticks, or code fence. No angle brackets and no pipe-separated choices in the answer.
Inside a technique line the separator is the em dash from the layout below (—, U+2014), with one space on each side, twice: after the id and after the status. A hyphen-minus, an en dash, or `--` is wrong. Copy that dash from the layout. The status word is exactly `confirmed`, `added`, `unsupported`, or `wrong-sub-technique`.
technique: <id> — <confirmed|added|unsupported|wrong-sub-technique> — <observable> tactics: <lowercase tactic of the first confirmed or added technique, then any others> chain: <single-stage or tactic -> tactic> confidence: <high|medium|low> environment: <seen|not seen|not checked>
Vigil is an open source, agentic AI SOC released under Apache 2.0. Your playbooks are plain-text Markdown files, your agent logic is readable code, and your integrations use an open standard (MCP). It is a capability you own, not a black box you rent.
Grade a periodic outbound flow as c2, suspicious, or benign-periodic. Read this when raw_data shows a repeating connection and…
Write a security report for a chosen audience - technical report, executive summary, or one-page board brief with…
Broad behavioural hunting across the findings detection already scored and the raw telemetry behind them.
How to move a hunt from its hypotheses to verdicts -- what to query next, when to validate, when to stop. Load at the start of a…
Method for working one open case from its findings to a supported disposition. Load at the start of a case.
Enrich the indicators of compromise (IPs, domains, hashes, URLs) in a finding. Read this before looking up any IOC so the…