attack-mapping
Check or add ATT&CK technique ids on a finding by grounding each id in an observable. Read this when a triage, investigation, or…
Judge whether one internal RDP (Remote Desktop) session is lateral movement or an administrator doing their job. Read this for a finding on port 3389 or technique T1021.001 before deciding lateral-movement, suspicious, or expected-admin.
$ npx -y skills add Vigil-SOC/vigil --skill rdp-lateral-movement --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/rdp-lateral-movementContext preview
The summary Claude sees to decide when to auto-load this skill.
Judge whether one internal RDP (Remote Desktop) session is lateral movement or an administrator doing their job. Read this for a finding on port 3389 or technique T1021.001 before deciding lateral-movement, suspicious, or expected-admin.
name: rdp-lateral-movement description: Judge whether one internal RDP (Remote Desktop) session is lateral movement or an administrator doing their job. Read this for a finding on port 3389 or technique T1021.001 before deciding lateral-movement, suspicious, or expected-admin. metadata: vigil-origin: "epic #882 slice 2, #1075"
Use this for one internal Remote Desktop session. It does not cover SMB, WinRM, or SSH. When the finding is not RDP, say so and stop. When it is RDP, end the turn with the labelled block. A lookup you cannot run is not a reason to stop early.
1. **Extract the session.** From `raw_data` take `src_host`, `dst_host`, the account (`src_user`, otherwise `user`, otherwise `account`), the timestamp, and any auth detail (`logon_type`). Keep the original spelling for the path line. If you only hold an id and you hold `get_finding`, call it and extract from the result. If you already hold the finding, do not call it.
2. **Ask what separates movement from administration.**
Answer from the finding first. If you hold `list_findings` or `search_findings`, search by the source host and the account. If you hold `recall_entity`, call it on the source host, the destination host, and the account. If none of these is callable, do not announce a lookup and do not invent a result. Never end a turn on an announced lookup.
3. **Read roles, hour, and prior compromise off the text.** Lowercase only while testing; echo the original spelling on the path line.
4. **Pick the verdict.** First match wins. Do not override a match. The finding title is not evidence.
5. **Fill prior-compromise.** First match wins.
End with this block. Plain text, six lines, labels lowercase, one space after each colon. No bold, quotes, bullets, angle brackets, or pipe characters. Each angle-bracket phrase in the layout is a blank: replace it with one value and do not print the blank. The technique line is fixed text; copy it character for character. Between the two host names write a space, a hyphen-minus, a greater-than, and a space. A Unicode arrow is wrong.
`confidence` is `high` when every field of the matched rule is present in the finding, `medium` for `suspicious`, and `low` when a host, the account, or the timestamp is missing. `next` is `contain` for lateral-movement, `investigate` for suspicious, and `dismiss` for expected-admin. Use `monitor` only when the finding asks to watch and neither contain nor dismiss applies.
verdict: <lateral-movement|suspicious|expected-admin> path: <src> -> <dst> as <account> technique: T1021.001 prior-compromise: <finding id | stated in this finding | none found | not checked> confidence: <high|medium|low> next: <contain|investigate|monitor|dismiss>
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.
Check or add ATT&CK technique ids on a finding by grounding each id in an observable. Read this when a triage, investigation, or…
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.