Analytics Rules
detect-autogen-studio-agent-tool-execution-anomaly.kql
AutoGen Studio-hosted AI agent taking code-execution or sensitive-tool actions outside its baseline set — the 'AutoJack' agent-abuse shape.
// Author: Ian D. Hanley (DevSecOpsDad) | linkedin.com/in/ianhanley | devsecopsdad.com | devsecopsdadattack.com
// Detects AutoGen Studio-hosted AI agent taking a code-execution or sensitive-tool action outside
// its baseline set — the 'AutoJack' agent-abuse shape where a legitimately-hosted agent becomes
// the exploit primitive.
// Source: KQL Detection of the Week: The Attack That Stayed Under the Threshold (2026-06-19) — https://devsecopsdadattack.com/2026-06-19-KQL-of-the-Week_-The-Attack-That-Stayed-Under-the-Threshold/
let autogenProcesses = dynamic(["autogenstudio", "autogen_studio", "python.exe", "python", "python3"]);
let autogenCmdlineTerms = dynamic(["autogen", "autogenstudio", "mcp", "websocket"]);
let suspawnedProcs = dynamic([
"cmd.exe", "powershell.exe", "pwsh.exe",
"bash", "sh", "zsh",
"curl", "wget", "certutil.exe", "bitsadmin.exe",
"whoami.exe", "whoami", "net.exe", "net1.exe",
"wscript.exe", "cscript.exe", "mshta.exe",
"regsvr32.exe", "rundll32.exe"
]);
DeviceProcessEvents
| where Timestamp > ago(7d)
| where InitiatingProcessFileName in~ (autogenProcesses)
| where InitiatingProcessCommandLine has_any (autogenCmdlineTerms)
| where FileName in~ (suspawnedProcs)
| project
Timestamp, DeviceId, DeviceName, AccountName,
InitiatingProcessParentFileName, InitiatingProcessFileName,
InitiatingProcessCommandLine, FileName, ProcessCommandLine, SHA256,
AlertDetail = strcat("AutoGen process spawned ", FileName, " | Parent cmdline: ", InitiatingProcessCommandLine)