IR Playbook — Privilege Escalation
SkillMonitoring & opsIncident-response playbook for privilege escalation on Linux and Windows, sudo/su abuse, SUID and capability misuse, kernel modules and exploits, sudoers/cron/systemd tampering, UAC bypass, admin-group changes and process injection; use when Wazuh raises escalation indicators (e.g. rules 5404, 5405, 5302, 80721, 92046, 92055, 60154) or a user gains unexpected root/SYSTEM.
Use IR Playbook — Privilege Escalation in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add IR Playbook — Privilege Escalation and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the IR Playbook skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by gensecaihq/wazuh-autopilot in backend/app/skills/ir-playbook-privilege-escalation/SKILL.md and read by Ahel’s review.
Severity critical when escalation succeeds. MITRE ATT&CK TA0004: T1548 (.001 SUID, .002 UAC bypass,
.003 sudo), T1068 (exploitation), T1055 (process injection), T1053.003 (cron), T1543 (services),
T1547.006 (kernel modules), T1098 / T1484 (account and group changes). Rule IDs are from the stock Wazuh 4.14
ruleset (levels official). Full procedure and forensic commands: references/playbook.md.
1. Detection signals
| Signal | Wazuh rules (level) | Notes |
|---|---|---|
| sudo failures | rules 5401 (L5), 5404 (L10, three failures), 5405 (L5, user not in sudoers) | group sudo |
| sudo to root / first-time sudo | rules 5402 (L3), 5403 (L4) | low level on their own — escalate when the user or command is unusual |
| su to root | rules 5302 (L9, failed su to root), 5303 (L3, successful su to root) | group su |
| auditd root transition | rules 80721 (L10, user becomes root), 80742 (L5, user ID changed) | requires auditd |
| New user / group, account changes (Linux) | rules 5902 (L8), 5901 (L8), 5904 (L8), 2961 (L5, user added to group sudo) | group adduser |
| Root crontab changed | rule 2833 (L8) | persistence after escalation |
| Unsigned / untrusted kernel module loaded | rules 5132 (L11), 5133 (L11) | T1547.006; kernel exploit/rootkit indicator |
| Critical file changes (FIM) | rules 550 (L7), 554 (L5) on /etc/sudoers*, /etc/passwd, /etc/shadow, systemd units | group syscheck; paths must be monitored |
| Windows UAC bypass | rules 92046 (L12, fodhelper), 92055 (L12), 92056 (L14), 92305 (L12), 92306 (L12) | Sysmon Event IDs 1 / 13 |
| Windows admin group changes | rules 60154 (L12, Administrators group), 60179 (L10, Remote Desktop Users), 60144 (L5, local group member added) | Security log Event ID 4732 |
| Special privileges on logon | rule 67028 (L3, Event ID 4672) | only meaningful for non-admin accounts |
| Process injection | rules 92400 (L12), 92910 (L12) | Sysmon Event IDs 8 / 10 |
Stock gaps (org must create, range 100000–120000): SUID/setcap use with GTFOBins arguments (custom rule 100610,
auditd execve on chmod/setcap), pkexec abuse (custom rule 100613), systemd units created outside the package
manager (custom rule 100616, FIM on /etc/systemd/system). Validate with wazuh-logtest before enabling.
High-confidence patterns: web-server user (www-data, apache, IIS AppPool) spawning a root shell; new UID-0 account; sudoers change followed by sudo use; exploit for a CVE present on the host.
2. Triage / investigation (investigation agent)
- Context:
get_wazuh_alertsfor the host (agent_id,timestamp_start: "now-24h",rule_groups: ["sudo","su","adduser","syscheck"]),search_casesfor the host and user. - Answer:
- Which user escalated, from what to what (user → root/SYSTEM)? Expected for that user?
- Method (sudo, su, SUID, kernel, service/cron, UAC bypass, group change)? Did it succeed?
- Parent process: interactive admin session vs web shell / service account?
- Production or crown-jewel host? (
get_wazuh_agents)
- Host evidence:
get_agent_processes(root processes whose ancestry leads to a non-privileged user or web server, shells spawned by services);get_agent_ports(new listeners opened as root);check_agent_health. The investigation agent can also checkget_wazuh_vulnerabilitiesfor a local-privesc CVE (kernel, sudo, polkit) that matches the observed exploit — hand confirmed CVEs to vuln-management. - Fleet sweep:
search_security_eventsfor the same user/technique on other hosts; novel technique → hand off to threat-hunter. add_entities(user, host withagent_id, suspicious files, process),link_mitre,update_case(attempt only → high; successful escalation or UID-0 creation → critical), andadd_findingwith a containment recommendation to response-planner.
3. Response (response-planner)
Check state first (wazuh_check_user_status, wazuh_check_process), then propose:
| Situation | Proposal |
|---|---|
| Compromised local account used to escalate | propose_action(type="disable_user", params={"agent_id": <host>, "username": <user>}) (D3-AL) |
| Root shell / exploit process running | propose_action(type="kill_process", params={"agent_id": <host>, "process_id": <pid>}) (D3-PT) after evidence |
| Dropped exploit or malicious SUID binary | propose_action(type="quarantine_file", params={"agent_id": <host>, "file_path": <path>}) (D3-FEV) |
| Confirmed root compromise | propose_action(type="isolate_host", params={"agent_id": <host>}) (D3-NI; supervised) |
| External C2 from the host | propose_action(type="block_ip", params={"ip_address": <c2>, "agent_id": <host>}) |
Order: capture process tree and hashes → isolate (if root compromise) → kill → quarantine → disable account.
Never target root/Administrator (protected); record credential resets for humans with add_finding.
4. Eradication and recovery
- Remove persistence: sudoers entries, UID-0 accounts, SUID bits, cron jobs, systemd units, keys.
- Patch the exploited vulnerability; reboot into the fixed kernel where relevant.
- Rebuild (don't clean) hosts with confirmed root/SYSTEM compromise; record the decision.
- Reset credentials of every account present on the host.
5. Verification
The responder checks wazuh_check_user_status, wazuh_check_process, wazuh_check_file_quarantine,
wazuh_check_agent_isolation for executed actions and records results.
6. Evidence and records
- Process ancestry, command lines, file hashes, sudoers/passwd diffs as findings
(
MITRE-ATTACK:T1548.003,NIST-800-53r5:IR-4,ISO-27001:A.5.28). - Coverage gaps (e.g. no auditd for
setcap) → hand off to detection-engineer. - Hand off to reporting for the incident report with root cause (vulnerability vs misconfiguration vs stolen creds).
Escalation
| Condition | Escalate to |
|---|---|
| Root/SYSTEM on production or a DC | IR lead (human); forensic imaging before rebuild |
| Kernel 0-day suspected | Vendor + vulnerability management; ir-playbook-vulnerability-spike |
| Web shell origin | Web application owner; check data access (ir-playbook-data-exfiltration) |
Signals
- GitHub stars
- 57
- Forks
- 16
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
ir-playbook-privilege-escalation- Source
- github.com/gensecaihq/wazuh-autopilot
github.com/gensecaihq/wazuh-autopilot
More in Monitoring & ops
Skill · anthropics
More in Monitoring & opsagent-eval
Skill · affaan-m
More in Monitoring & opspricing
Skill · coreyhaines31
More in Monitoring & opslark-okr
Skill · larksuite
More in Monitoring & opsdashboard-builder
Skill · affaan-m
More in Monitoring & opsbabysit
Skill · thedotmack
More in Monitoring & ops