Lion Cipher Lab

Build a risk-based alerting (RBA) engine from scratch

Why it matters

A SOC does not drown because it misses signals -- it drowns because every weak signal becomes its own alert. One login from a new country. One encoded PowerShell command. One impossible-travel event. Each is individually too weak to page a human on (fire an alert on every new-country login and you will page 200 times a day on sales reps and VPN egress), so teams either mute them -- and miss the one that mattered -- or alert on them and bury the analyst. Risk-based alerting is the way out, and it is a genuinely different SHAPE of detection: instead of one-alert-per-signal, you attribute a…

What you'll learn

Steps in this lab

  1. The idea: risk scores per entity, not one alert per signal
  2. When RBA is the right tool -- and when it absolutely is not
  3. Set up a scratch folder and generate the event stream
  4. Build the engine: a naive scorer and a real RBA scorer in one file
  5. Watch the naive scorer bury the attacker (the failure mode)
  6. Watch RBA lift the attacker to the top and collapse the noise
  7. The traps: base rates, score inflation, entity resolution, decay window
  8. Doing it for real: Splunk ES RBA, Elastic risk scoring, and detection-as-code

Open the full interactive lab →