Elastic Track · Google Cloud × Elastic Agent Builder Hackathon 2026

Elastic IR Agent — Adversarial Verification
for Autonomous Incident Response

An autonomous agent that investigates Windows attack telemetry across 73,909 real events, reconstructs the kill chain, and maps findings to MITRE ATT&CK — then deploys a second, independent Gemini instance as a Forensic Auditor that re-queries the raw Elasticsearch evidence and challenges every claim before the report is written to disk.

Core Contribution — Forensic Auditor

Most AI security tools produce a report and stop. This one interrogates its own conclusions. After the Triage Agent finishes, a second Gemini instance — with access only to read-only ES|QL tools and no knowledge of the first agent's tool history — reissues fresh queries against Elasticsearch and labels every MITRE ATT&CK claim independently.

Refutals are findings. Each refuted claim cites the exact ES|QL query output that contradicted it — narrowing the confirmed attack surface and eliminating hallucinated timestamps, host names, or techniques before the report reaches an analyst.

Results vary by investigation quality. When the Triage Agent gets every timestamp right, the Auditor returns all verified. When it hallucinates — a fabricated date, a wrong host, an inferred-but-absent technique — the Auditor catches it and cites the exact ES|QL output that contradicted the claim.

Run with clean triage output (May 2026):

Verified: 14 Refuted: 20 Unverifiable: 5

Run with accurate triage output (June 2026):

Verified: 15 Refuted: 0 Unverifiable: 0

Both outcomes are correct behaviour. Twenty refutals means the Triage Agent fabricated timestamps — the Auditor eliminated those false positives before the report was saved. Zero refutals means the Triage Agent got everything right and the Auditor confirmed it independently. Two examples from the run with refutals:

Refuted — prior run
Attack Chain Step 1: cmd.exe process creation on MSEDGEWIN10 by IEUser at 2019-07-19T14:42:53Z
REFUTED
Forensic Auditor: attack_timeline(host="MSEDGEWIN10")
Result: cmd.exe by IEUser confirmed — but at 2020-07-03T08:47:20Z, not 2019-07-19
Process existed. Timestamp fabricated. Claim struck from report.
Verified — current run
T1003.001 LSASS Memory — MalSeclogon.exe and samir.exe accessing lsass on MSEDGEWIN10 and LAPTOP-JU4M3I0E
VERIFIED
Forensic Auditor: unique_hosts_by_technique(time_window="87600h")
Result: T1003.001 — 6 affected hosts, 314 events
Confirmed: MalSeclogon.exe + samir.exe on both hosts in attack_timeline.

Reconstructed Attack Chain

15-step kill chain spanning two hosts and two and a half years (2019–2021), reconstructed from raw Windows event logs via ES|QL queries. Every step independently verified by the Forensic Auditor.

# Timestamp Host Technique Process / IOC Evidence
012019-07-19T14:42MSEDGEWIN10T1059.003cmd.exeWindows Command Shell, IEUser
022019-07-19T14:43MSEDGEWIN10T1059.001powershell.exePowerShell, IEUser
032019-07-19T14:44MSEDGEWIN10T1543.003sc.exeNew service creation via sc.exe
042019-07-19T14:44MSEDGEWIN10T1543.003AtomicService.exeService binary launched as SYSTEM
052019-07-19T14:45MSEDGEWIN10T1059.005csc.exeCompiled .NET code at runtime
062019-07-19T14:45MSEDGEWIN10T1559.001RegAsm.exeCOM hijacking via RegAsm/RegSvcs
072019-07-19T14:46MSEDGEWIN10T1559.001RegSvcs.exeCOM event triggered execution
082019-07-19T14:47MSEDGEWIN10T1490vssadmin.exeShadow copy deletion
092019-07-19T14:47MSEDGEWIN10T1490wbadmin.exeBackup catalog deletion
102019-07-19T14:47MSEDGEWIN10T1547.006bcdedit.exeBoot config modification
112019-07-19T14:48MSEDGEWIN10T1105bitsadmin.exeBITS job — ingress tool transfer
122020-10-27T10:17LAPTOP-JU4M3I0ET1003.001samir.exeLSASS access, event code 10
132021-08-07T23:33MSEDGEWIN10T1003IEUserOS credential dump, event code 4663
142021-12-07T17:33MSEDGEWIN10T1003.001MalSeclogon.exeLSASS access, event code 10
15variousmultipleT1021IEUser, user01Lateral movement — 2 hosts each

Architecture

The Triage Agent calls six ES|QL detection tools through the Elastic Agent Builder MCP server, routed via a Cloud Run proxy that handles auth injection and REST-to-JSON-RPC translation. Findings are written to an Elasticsearch memory index using ELSER sparse-vector + BM25 hybrid search. The Forensic Auditor runs as a second, isolated Gemini pass with read-only tool access.

Architecture diagram

Security Model

Security controls are architectural, not instructional. The model is never told to be careful — the code simply makes the bad path impossible.

Security model table

Stack