-
Notifications
You must be signed in to change notification settings - Fork 166
All in One Pipeline
/analyze/all/<target> is the operator's "run everything" page β Static analysis plus every reachable EDR profile, dispatched in parallel from one click. The page itself is a progress shell; the orchestration lives entirely in JS, hitting the same backend endpoints the standalone analysis pages use. No new analyzer runs server-side.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β /analyze/all/<hash> β
β β
β Phase 0 β preflight β
β GET /api/edr/agents/status β which profiles are reachable β
β β
β Phase 1 β fan out β
β POST /analyze/static/<hash> ββ β
β POST /analyze/edr/elastic/<hash> ββΌβ all in parallel β
β POST /analyze/edr/fibratus/<hash> ββ β
β β
β Phase 2 β drain β
β β static returns sync β Phase 1 done β
β β each EDR returns Phase-1 dict β JS polls β
β GET /api/results/edr/<profile>/<hash> β
β until status != polling_alerts β
β β
β Phase 3 β settle β
β When everything is terminal: render summary + β
β per-tool drill-down + open buttons to each saved-view page. β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Dynamic analysis is intentionally not part of the all-in-one fan-out β it executes the payload locally on the LitterBox host, which conflicts with a parallel EDR dispatch (would taint the EDR run with local-LitterBox process noise). Run dynamic separately when needed.
Before fanning out, the page calls /api/edr/agents/status and only includes profiles whose:
- Whiskers agent is reachable, AND
- backend is reachable (
elastic_reachable: trueforkind: elastic;fibratus_present: trueforkind: fibratus)
A profile that fails preflight is rendered with a grayed-out "agent down" badge and skipped. This keeps a half-broken EDR fleet from blocking the static results.
The page renders one card per task:
| Task | Endpoint | Initial state | Terminal state |
|---|---|---|---|
| Static analysis | POST /analyze/static/<hash> |
running |
completed / error
|
| EDR profile A | POST /analyze/edr/A/<hash> |
polling_alerts |
completed / blocked_by_av / partial / agent_unreachable / busy / error
|
| EDR profile B | POST /analyze/edr/B/<hash> |
polling_alerts |
(same set) |
| ... | ... | ... | ... |
Each card has its own poll loop. EDR poll cadence is the same adaptive scheme used on the standalone EDR results page β 2s base, Γ1.5 backoff up to 15s when no movement, snap back to 2s on alert-count change. Polling pauses on document.visibilityState === 'hidden' and resumes on visible.
When every card hits a terminal state, the page emits a top-level summary band:
-
Detection score β pulled fresh from
/api/results/risk/<hash>(recomputed by the server now that all results are saved on disk). - Total alerts across all EDR profiles β sum.
- Profiles with any detection β count.
- Profiles with high/critical alerts β count.
Below that, one "Open results" button per task, linking to:
- Static β
/results/static/<hash> - Each EDR profile β
/results/edr/<profile>/<hash>
The detail rendering on those pages is exactly the same as if you'd run them standalone.
The all-in-one pipeline is the default first move when you receive a payload. It maximizes signal-per-click β one fan-out gives you static yara/checkplz/stringnalyzer matches AND every reachable EDR's detection alerts in parallel.
Back-to-back dispatches don't queue: each EDR profile holds the Whiskers lock only for its own Phase-1 (typically 1β7 s); Phase-2 (alert correlation) runs unlocked, so two operators hitting the page on different samples can fan out at the same time.
- It is not a separate analyzer β there's no new server code that runs only when you hit it. Same endpoints, same saved-JSON files. You can reach the same end state by hitting the standalone Static page and each EDR page in separate tabs.
- It is not automatic: each EDR profile must be set up first (see Elastic Defend Setup / Fibratus Setup). Profiles not in
Config/edr_profiles/simply don't appear on the page. - It does not include dynamic analysis. Run
/analyze/dynamic/<hash>separately if you need it β kicking it off in parallel with EDR dispatch produces tainted memory-scanner output.
- EDR Integration β how Phase 1 / Phase 2 work
-
Dashboard β
/api/edr/agents/statusis the same data the preflight uses - HTTP API Reference β every endpoint the page hits
- Detection Score Explained β what bumps the score after the fan-out settles
- π Home
- π§ Application Architecture
- π Dashboard
- π All in One Pipeline
- π― Detection Score Explained
- 𧬠Blender Scanner
- π FuzzyHash Scanner
- π‘οΈ HolyGrail BYOVD Scanner
- π YARA Rules Management