| name | hunting-for-startup-folder-persistence |
| description | Detect T1547.001 startup folder persistence by monitoring Windows startup directories for suspicious file creation, analyzing autoruns entries, and using Python watchdog for real-time filesystem monitoring. |
| domain | cybersecurity |
| subdomain | threat-hunting |
| tags | ["threat-hunting","T1547.001","startup-folder","persistence","autoruns","watchdog","filesystem-monitoring"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
| d3fend_techniques | ["Executable Denylisting","Execution Isolation","File Metadata Consistency Validation","Content Format Conversion","File Content Analysis"] |
| nist_csf | ["DE.CM-01","DE.AE-02","DE.AE-07","ID.RA-05"] |
Hunting for Startup Folder Persistence
Overview
Attackers use Windows startup folders for persistence (MITRE ATT&CK T1547.001 — Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder). Files placed in %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup or C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup execute automatically at user logon. This skill scans startup directories for suspicious files, monitors for real-time changes using Python watchdog, and analyzes file metadata to detect persistence implants.
When to Use
- When investigating security incidents that require hunting for startup folder persistence
- When building detection rules or threat hunting queries for this domain
- When SOC analysts need structured procedures for this analysis type
- When validating security monitoring coverage for related attack techniques
Detection Gaps & Validation
- Both folders, or you miss half: monitor per-user
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup AND all-users %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup. A watchdog on only one is a guaranteed blind spot.
- Extension filtering isn't enough: a
.lnk whose target is encoded PowerShell or a UNC/HTTP path looks benign by extension — you must resolve and inspect the LNK target, not just flag .exe/.bat/.vbs/.ps1.
- Offline profiles: logged-off users' AppData isn't seen by a live agent — scan offline profiles too.
- SACL dependency: Windows EID 4663 only fires if object-access auditing (SACL) is set on the startup folders — off by default.
- Validate: run Atomic T1547.001 startup-folder drop; confirm a new-file event AND successful LNK target extraction.
- FP tuning: baseline vendor shortcuts (Teams, Steam, OEM utilities) by signer + resolved target path.
Prerequisites
- Python 3.9+ with
watchdog, pefile (optional for PE analysis)
- Access to Windows startup folders (user and all-users)
- Windows Event Logs for Event ID 4663 correlation (optional)
Steps
- Enumerate all files in user and system startup directories
- Analyze file types, creation timestamps, and digital signatures
- Flag suspicious file extensions (.bat, .vbs, .ps1, .lnk, .exe)
- Check for recently created files (< 7 days) as potential implants