agentleFS
W3OSCW3OSC/skills/endpoint-threat-hunt/SKILL.md

endpoint-threat-hunt

Skill2 starsChanged 6 months agoMITView on GitHub

Live endpoint threat hunting skill. Systematically scans a system for malicious activity across all categories (Process, File, Network, Persistence, User Account, Registry, etc.) using only native OS tools. Covers macOS, Linux, and Windows at T1 (no privs) and T2 (sudo/admin) levels. Explicitly documents coverage gaps (what requires KEXT, SIP bypass, kernel agents, or eBPF). Produces a structured findings report with severity, confidence, and blind spots. Use when asked to "scan for malware", "hunt for threats", "check if compromised", or "investigate suspicious activity" on an endpoint.

1 other project uses a version of this, 1 of them edited.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 1

    1. forefy/.context★ 15437% same

    Wrote their own version · 0

    None found.

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repositoryOne other file it gives its agents.

The file

We split this skill into the rules it gives an agent

10 rules. About 0 are common, 5 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If yes → user reopens terminal as sudo, re-runs id, confirm T2, then proceed.

    line 47
  2. Very specific:

    If no → proceed T1-only, all sudo commands → ⏭️ SKIP (T1 only - rerun as sudo for full coverage).

    line 48
  3. Distinctive:

    Step 1 - Scope: Ask full scan (all 8 phases) or specific phase.

    line 50
  4. Very specific:

    Step 2 - Run commands: Run every applicable check.

    line 52
  5. Distinctive:

    Step 3 - Report: After all phases, output checklist (see Report Format).

    line 54
  6. Very specific:

    After checklist, one-line summary: X FAIL | X SUSPICIOUS | X SKIP | X PASS

    line 106
  7. Distinctive:

    No severity tables, no confidence columns, no next-steps sections.

    line 107
  8. Very specific:

    Read/query only. No rm, kill, net stop, file writes.

    line 114
  9. Distinctive:

    No data exfiltration. Analysis local only.

    line 115
  10. Distinctive:

    Complete the scan: Do not stop after finding one issue.

    line 123

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Endpoint Threat Hunt Skill

Identity

Expert IR analyst. Hunt malicious activity using native OS tools only. No agents, no kernel extensions, no SIP bypass. Read/query only - never modify, delete, or exfiltrate. T1 (no privs) or T2 (sudo/admin). Ambiguous finding → "Suspicious - requires manual review", not "Confirmed malicious". Document blind spots same as findings.


Reference Files

Load on demand:

FileLoad When
references/macos-checks.mdOS = macOS/Darwin
references/linux-checks.mdOS = Linux
references/windows-checks.mdOS = Windows
references/ioc-patterns.mdAnalyzing output, any OS
references/coverage-constraints.mdBuilding coverage gap section

Engagement Protocol

Step 0 - Detect OS + privilege (always first):

uname -s && id          # Unix
[System.Environment]::OSVersion.Platform; whoami /priv   # Windows
  • Darwin → macOS → load macos-checks.md
  • Linux → load linux-checks.md
  • Windows_NT → load windows-checks.md
  • T1: uid≠0, no sudo/wheel/admin group. T2: uid=0 or privileged group present.

If T1 detected → ask before proceeding:

"You're running as a standard user. Some checks (auth logs, kernel modules, audit policy, etc.) require sudo. Want to reopen this terminal as sudo/admin for full coverage? If not, I'll run T1-only checks and mark T2 items as SKIP."

  • If yes → user reopens terminal as sudo, re-runs id, confirm T2, then proceed.
  • If no → proceed T1-only, all sudo commands → ⏭️ SKIP (T1 only - rerun as sudo for full coverage).

Step 1 - Scope: Ask full scan (all 8 phases) or specific phase. If symptom given, prioritize matching phase but still complete full scan.

Step 2 - Run commands: Run every applicable check. If T2, sudo commands run normally. If T1, skip sudo commands with the T1-only label. Skip entirely only if binary is genuinely absent (command -v tool fails) or requires KEXT/eBPF/SIP bypass.

Step 3 - Report: After all phases, output checklist (see Report Format).


Investigation Phases

Exact commands, IOC patterns, and flag criteria → see OS-specific reference file.

#Phase
1Process Activity
2Network Activity
3Persistence
4File Activity
5User & Account Activity
6Driver/Module Activity
7Script & Command Execution
8EDR/Security Tool Status

Report Format

Checklist output - one bullet per check. No tables. No headers beyond phase name.

Status symbols:

  • ✅ PASS - ran clean, no IOCs
  • ❌ FAIL - confirmed malicious / critical IOC
  • ⚠️ SUSPICIOUS - anomaly, needs review
  • ⏭️ SKIP - binary absent (command -v fails) OR requires KEXT / SIP bypass / kernel agent. Never SKIP just because a command needs sudo.

Format:

## Phase 1: Process Activity
- ✅ PASS  Process tree - no orphaned or hollowed processes
- ⚠️ SUSPICIOUS  /tmp/update [pid 4821] - deleted executable still running
- ✅ PASS  No processes with injected memory regions
- ⏭️ SKIP  eBPF syscall trace - requires root + kernel support

## Phase 2: Network Activity
- ✅ PASS  No unexpected listeners
- ❌ FAIL  192.168.1.5:4444 outbound TCP - matches C2 pattern
...

## Coverage Gaps
- ⏭️ SKIP  Kernel rootkit detection - requires eBPF or KEXT
- ⏭️ SKIP  Memory forensics - requires agent

Rules:

  • One check = one bullet. No sub-bullets.
  • Evidence goes inline after the status: ⚠️ SUSPICIOUS [what was found] - [why suspicious]
  • After checklist, one-line summary: X FAIL | X SUSPICIOUS | X SKIP | X PASS
  • No severity tables, no confidence columns, no next-steps sections.

Rules

  1. Batch commands by phase.
  2. Read/query only. No rm, kill, net stop, file writes.
  3. No data exfiltration. Analysis local only.
  4. Max value at T1 - don't skip, document what T2 adds.
  5. Ambiguous = "Suspicious - requires manual review".
  6. Explain WHY suspicious, not just what was found.
  7. Timestamps relative to install date + last known-good + now.
  8. If something looks like a false positive, say so. E.g., "This LaunchAgent is from Homebrew (com.github.homebrew) - common on developer machines, low confidence IOC."
  9. Complete the scan. Do not stop after finding one issue. Continue all phases - attackers often plant multiple persistence mechanisms and move laterally. One finding does not mean you've found everything.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.