Purple ops
Purple-team operations — structured detection validation against MITRE ATT&CK through planned emulation, measured coverage gaps, joint red+blue debrief, and tracked closure via D3FEND mapping. Bridge between the pentest bundle and the blue bundle.From its SKILL.md
npx -y skills add roodlicht/accans-sec-skills --skill purple-opsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 4 stars4 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
9.9 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it
Purple Team Ops
Bridge skill: this is a both-blue-and-pentest category. The actual work is collaboration — red simulates a TTP, blue tries to detect it, both learn at the same time. No surprise engagements ("see if we catch them without warning"); that is red team. Purple is planned, measured, and aimed at gap closure.
When to use
A SOC can write endless rules without ever knowing if they cover the right TTPs. A red team can run endless engagements without the defensive side learning more than "we got owned again". Purple ops is the discipline between the two: ATT&CK-mapped, repeatable, measured.
Triggers on:
- A question like "set up a purple-team cycle", "which TTPs are we not detecting", "ATT&CK coverage measurement", "validate detection rule X against real emulation", "post-pentest debrief with the SOC".
- A handoff from
pentest-reporter(post-engagement feedback feeding into a detection-gap approach),detection-engineer(rule validation),alert-tuning(coverage gap identified after rule retirement). - A periodic (quarterly to half-yearly) maturity measurement of the detection stack.
- Compliance context (NIS2 Art 21 effectiveness evaluation, DORA Art 25 testing) — a purple cycle delivers evidence of "we test our controls".
When NOT (handoff)
- Surprise red-team engagement without blue informed in advance → pentest skills (
recon-agent,c2-hygiene,post-exploit,pentest-reporter). - Writing detection rules →
detection-engineer. - Alert tuning on existing rules →
alert-tuning. - Threat hunt for the unknown-unknown →
threat-hunt(command). - IOC feed work →
ioc-hunter. - Forensics after an incident →
forensics-assist. - IR itself →
ir-runbook.
Approach
Six phases as a cycle, not a one-off project. Each run covers a sub-set of ATT&CK; over quarters you work toward broader coverage.
1. Plan: scope, threat-actor emulation, success criteria
- Threat-actor choice: emulate a specific group relevant to your sector (FIN7 for financial, APT28 for a geopolitical target, RANSOM cluster for broad impact). MITRE Adversary Emulation Plans as a template.
- TTP subset: not the whole kill chain in every cycle. Focus on one tactic or a chain of 2–3 tactics. For example, Q1 Initial Access + Execution; Q2 Persistence + Privilege Escalation.
- Target systems in scope: lab? a specific staging environment? a deliberately chosen production segment? RoE sign-off for each.
- Detection coverage goal: which ATT&CK techniques do you claim to have covered? DeTT&CT (NL Rabobank-CDC) or ATT&CK Navigator as baseline. Those are the claims you are about to test.
- Success criteria: not "we get caught" — measurable: "technique T1003.001 is detected within 5 minutes by rule X with TP confidence high; rule does not fire on baseline traffic". Qualitative AND quantitative criteria.
- Communication: the blue team knows that a cycle is running and which window. Not which specific TTPs at which moment — that fingerprint is for blue to find themselves.
2. Execute: emulation with atomic-red-team / Caldera / manual
- atomic-red-team (Red Canary, MIT) — atomic tests per ATT&CK technique. Small, scriptable, replay-able. Default for unit-style emulation.
# Example atomic test for T1003.001 LSASS dumping Invoke-AtomicTest T1003.001 - MITRE Caldera — full-scenario emulation with an agent on endpoints. Fits multi-step chains.
- Hand-driven emulation for TTPs without an atomic equivalent or for a target-specific environment. Document exactly what you did.
- Replay discipline: document each execution (timestamp, target, parameters, result). Output goes to the evidence store.
- Cleanup discipline: atomic tests have cleanup commands; always run after. Remove Caldera agents after the cycle. Do not leave persistence behind.
3. Measure: detection vs. blind, MTTD, false-positive context
Per executed TTP:
- Detection status: detected (which rule, how fast) / partial (rule fires but at too low a severity) / blind (no alert).
- MTTD (Mean Time To Detect) for covered TTPs: time between execution and alert generation. Goal: shorter than attacker dwell time in a real incident.
- MTTR (Mean Time To Respond) for covered TTPs: time between alert and blue-team action. Part of capability measurement.
- False-positive impact in the same period: a rule that now fires, how often on baseline? Too many FPs make the rule operationally unusable even when it fires correctly on emulation.
- Coverage shift: how much % of the claimed coverage has been validated? New gaps?
Output: a per-TTP row in the coverage matrix with "validated detect" / "validated blind" / "not tested".
4. Close gaps: detection-engineering cycle
Per blind spot, an action:
- Quick win: existing SIEM data permits detection but there is no rule. Handoff to
detection-engineerfor a Sigma/SPL/KQL rule. - Data gap: SIEM does not have the right log source. Handoff to the log-pipeline team for enablement (Sysmon config, EDR policy, audit-policy expansion).
- Tooling gap: rule building is possible but the SIEM platform has limits. Roadmap input for tooling evolution.
- Compensating control: detection remains hard, but a D3FEND defensive technique (prevention or mitigation) closes the gap. For example: T1003.001 LSASS dump is hard to detect across every variant; LSASS Credential Guard makes it irrelevant.
D3FEND mapping is core here: per ATT&CK technique, the defensive techniques that mitigate it. Not every gap must close via detection — some via prevention.
5. Re-test and track closure
A gap is only closed when you test it again and see validated detect.
- Re-test cycle: after detection-rule deployment, run the atomic test again. Confirmation: rule fires, FP rate acceptable, MTTD inside target.
- Closure tracking in the coverage matrix: update the status per TTP (validated → re-validated with date).
- Regression check periodically: are previously validated detections still firing? Schema drift in log sources, EDR-policy changes, or rule tuning can retroactively break detection coverage.
6. Verification-loop and program-level metrics
Layer 1: scope (subset of TTPs covered as planned? all blind spots addressed or explicitly accepted?), assumptions (atomic tests represent real attacker behavior, no lab-only shortcuts?), gaps (D3FEND counters considered or only the detection path?). Layer 2: ATT&CK T-IDs correct, atomic-test IDs really exist in the atomic-red-team repo, MTTD/MTTR figures from the SIEM source of truth, coverage claims supported by DeTT&CT output or an ATT&CK Navigator export.
Program-level metrics over quarters:
- Coverage trend (ATT&CK techniques validated-detect / total relevant).
- MTTD trend per severity class.
- New-blind-spots rate (regressions).
- Closure time per blind spot (time from identification to re-validation).
Output
Purple-team cycle report — <quarter/cycle name>
Period: <start → end>
Threat-actor emulation: <APT/group + source emulation plan>
Scope tactics: <T-A##: ... + T-A##: ...>
Plan:
TTPs in scope: <T-IDs list>
Target systems: <lab/staging/scope segments>
Success criteria: <per TTP: detect window + FP acceptance>
Execute:
Per TTP:
Test method: <atomic-red-team / Caldera / manual>
Test-ID: <T-id ref>
Run timestamp: <UTC>
Target: <system>
Cleanup status: <ok>
Measure (coverage matrix):
TTP | Detected? | Rule-id | MTTD | FP context | Verdict (validated/blind/partial)
Close gaps:
Per blind spot:
Type: <quick-win / data-gap / tooling-gap / compensating>
Action: <handoff to detection-engineer / pipeline team / D3FEND control>
Owner: <name>
Deadline: <date>
Re-test:
Per closed gap:
Re-test date: <...>
Result: <validated-detect | partial | still open>
Program-level metrics:
Coverage trend: <% validated-detect>
MTTD trend: <minutes>
Open gaps: N
Closed this cycle: N
Handoffs:
detection-engineer: <new rules / refinements>
alert-tuning: <FP tuning on freshly validated rules>
ir-runbook: <playbook update for ATT&CK context>
policy-drafter: <if a D3FEND control touches a policy requirement>
Verification-loop: ...
References
- MITRE ATT&CK — https://attack.mitre.org/. Common framework.
- MITRE D3FEND — https://d3fend.mitre.org/. Defensive-technique mapping.
- MITRE ATT&CK Navigator — https://mitre-attack.github.io/attack-navigator/. Coverage visualization.
- MITRE Adversary Emulation Plans — https://github.com/center-for-threat-informed-defense/adversary_emulation_library. Per-actor plans.
- atomic-red-team — https://github.com/redcanaryco/atomic-red-team. Per-technique replay modules.
- MITRE Caldera — https://github.com/mitre/caldera. Adversary-emulation platform.
- DeTT&CT — https://github.com/rabobank-cdc/DeTTECT. NL tooling for data-source and coverage mapping.
- Center for Threat-Informed Defense — https://ctid.mitre-engenuity.org/. Research + tooling.
- SANS Purple Team Maturity Model — https://www.sans.org/. Maturity rubric.
- Detection Engineering Maturity Matrix — community resource for self-assessment.
Categories
- blue
- pentest
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.