Hunting persistence mechanisms on windows
Skill meltedinhex/analyst-ai-pack/skills/hunting-persistence-mechanisms-on-windows
Hunts for Windows persistence across autostart locations: Run keys, services, scheduled tasks, WMI event subscriptions, and startup folders, baselining them to surface anomalous or recently added entries. Activates for requests to hunt persistence, audit autostart extensibility points, or find malware autoruns on Windows.From its SKILL.md
npx -y skills add meltedinhex/analyst-ai-pack --skill hunting-persistence-mechanisms-on-windowsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 21 stars21 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.3 KB, 554 tokens by cl100k_base, as published. Nobody here has run it
Hunting Persistence Mechanisms on Windows
When to Use
- You are hunting for how an adversary maintains a foothold across reboots.
- You have autostart inventories (Autoruns exports, registry/scheduled-task/WMI dumps) from one or many hosts and want to surface anomalies.
- You want to baseline a fleet and flag entries that deviate or were recently added.
Do not use a single host's autoruns list as ground truth — many legitimate entries look unusual; comparison against a fleet baseline is what makes anomalies meaningful.
Prerequisites
- Autostart data per host: Run/RunOnce keys, services, scheduled tasks, WMI event subscriptions, startup folders, and (ideally) signing status.
- A baseline (golden image or fleet majority) to diff against.
Workflow
Step 1: Inventory the ASEPs
Collect the common Autostart Extensibility Points across hosts: Run keys (T1547.001), services (T1543.003), scheduled tasks (T1053.005), and WMI subscriptions (T1546.003).
Step 2: Baseline and diff
Compare each host's entries to the fleet baseline; entries appearing on few hosts, unsigned, or pointing to user-writable/temp paths bubble up.
python scripts/analyst.py hunt autostart.json --baseline baseline.json
Step 3: Score anomalies
Raise priority for: unsigned binaries, LOLBins launched with encoded args, paths in
%TEMP%/%APPDATA%, recently created tasks, and WMI consumers running scripts.
Step 4: Triage candidates
For each high-score entry, pull the target binary's signing/hash, the creating user/time, and correlate with process and network telemetry.
Step 5: Confirm and respond
Validate suspicious entries (sandbox/RE the binary), escalate confirmed persistence to IR, and turn the pattern into a detection.
Validation
- Anomalies are ranked against a baseline, not flagged from one host in isolation.
- High-score entries map to concrete artifacts (path, hash, signer) for triage.
- Confirmed persistence ties back to a known intrusion timeline.
Pitfalls
- Treating every unsigned entry as malicious; many legitimate tools are unsigned.
- Checking only Run keys and missing services/tasks/WMI subscriptions.
- No timestamps, so you cannot distinguish long-standing from newly planted entries.
References
- See
references/api-reference.mdfor the autostart hunter. - ATT&CK Persistence tactic and Autoruns (linked in frontmatter).
What ships with it: 3 files
4.2 KB alongside SKILL.md, 1 of them executable
references/
- api-reference.md1.2 KB
scripts/
- analyst.pyruns2.7 KB
- LICENSE340 B