Lion Cipher Lab

Extract ATT&CK techniques from reporting -- and measure whether your mapping is reliable

Why it matters

Every artefact a threat-intelligence function ships downstream -- the coverage heatmap on the wall, the adversary emulation plan, the detection engineering backlog, the slide that tells a board where next year's money goes -- rests on a step nobody measures: a human read a paragraph of English prose and decided which ATT&CK technique ids it demonstrates. That step is treated as though it were a reading off a gauge, and it is not. It is a judgment made under ambiguity by a person with a deadline, and two competent people making it on the same report routinely produce different answers. This…

What you'll learn

Steps in this lab

  1. [1] The claim under every heatmap you have ever seen
  2. [2] When a mapping programme is worth the effort -- and when it is theatre
  3. [3] Set up -- assume nothing. Open a terminal and check Python.
  4. [4] The corpus: seven kinds of sentence, and why each one is in there
  5. [5] Create mkcorpus.py
  6. [6] Run it -- and read the one number that frames the entire lab
  7. [7] Look inside a single report before you automate anything
  8. [8] What an extractor actually has to do -- the five layers
  9. [9] Create extract.py
  10. [10] Run it: what each layer of the extractor is actually worth
  11. [11] The threshold sweep, and the cliff at 1.2
  12. [12] Per-tactic precision and recall -- the aggregate number is hiding a 2x spread
  13. [13] Where recall collapses -- and open the missed sentences to find out why
  14. [14] The ceiling nobody mentions: one sentence, two techniques
  15. [15] Why percent agreement is a lie, and what chance correction actually does
  16. [16] The three analyst strategies you are about to simulate
  17. [17] Create reliab.py and run it -- what each rater produced
  18. [18] How close is each rater to the truth -- and the granularity trick that changes the answer
  19. [19] The argument, in one table: percent agreement next to kappa
  20. [20] GRANULARITY -- and an honest surprise (the kappa paradox)
  21. [21] Where the two analysts systematically diverge
  22. [22] The five fixes, and what people get wrong about each
  23. [23] Create fixes.py and measure the rubric
  24. [24] Evidence spans -- a reviewer opens the sentence and asks one question
  25. [25] Adjudication -- and why it must be against the evidence, not against each other
  26. [26] Confidence and source grade -- including the thing they do NOT buy you
  27. [27] ATT&CK data sources: is the mapping even falsifiable?
  28. [28] The mapping is never the deliverable
  29. [29] Create damage.py and build the coverage heatmap
  30. [30] The headline number: how much the detection backlog moves
  31. [31] Failure mode 1 -- DOUBLE COUNTING one behaviour as three techniques
  32. [32] Failure mode 2 -- mapping the report's WORDS instead of the adversary's BEHAVIOUR
  33. [33] Failure mode 3 -- CIRCULAR REPORTING, and an honest negative result
  34. [34] Failure mode 4 -- ATT&CK VERSION DRIFT, simulated end to end
  35. [35] Failure mode 5 -- the BASE RATE error, or why 0% coverage means nothing
  36. [36] What to demand of somebody else's mapping
  37. [37] The honest close -- ATT&CK is a communication framework, not a measurement instrument
  38. [38] Clean up, and what to try next

Open the full interactive lab →