Persistence 1.0

Persistence

آخر تحديث 10 نوفمبر 2026
في هذه الصفحة

Persistence answers: what will run again without anyone starting it?

At a glance

Question

What will run again without anyone starting it?

Reads

Services, scheduled tasks, auto-start entries of the machine and every user, WMI subscriptions, BITS jobs - each from every place Windows keeps it, merged.

Works best with

Security auditing of service installations (4697) and task changes (4698-4702); the Task Scheduler log enabled.

Parameter

Persistence.all: true lists Windows' own entries too.

Rule prefix

PERSIST

What it reads

What

Where Signal reads it

Services and drivers

The service table now (installed_service), and their installations in the System log 7045 and Security 4697 (service_install), merged per installation.

Scheduled tasks

The TaskCache registry, the task's XML or .job file, and the Task Scheduler's own list - merged into one task (scheduled_task); changes from the TaskScheduler log and Security 4698-4702 (task_change).

Auto-start entries

Run keys, Winlogon, IFEO debuggers, AppInit, LSA packages, COM overrides, Startup folders, PowerShell profiles, Office add-ins and test key, netsh helpers, print monitors, time providers, Active Setup, screensavers, AMSI providers and more - for the machine and every user, including users not signed in (their hives are read from disk) (autostart).

WMI subscriptions

root\subscription now, and their registration (5861, Sysmon 19-21).

BITS jobs

The Bits-Client log, merged per job (bits_job).

Every program a configured entry runs is checked: its signature (offline, no network), its SHA-256, SHA-1 and MD5.

Signals it raises

31 rules: 1 critical, 15 high, 15 medium. The full text of each is in the rule catalog.

ID

Severity

Title

Evidence

ATT&CK

PERSIST-ACCESSIBILITY-HIJACK

critical

An accessibility program is hijacked through its debugger

autostart

T1546.008

PERSIST-APPINIT-DLLS

high

AppInit or AppCert DLLs are loaded into programs

autostart

T1546.010, T1546.009

PERSIST-BOOTEXECUTE

high

BootExecute runs something besides autocheck

autostart

T1547.001

PERSIST-COM-HIJACK

high

A user's COM class overrides the machine's with an unsigned DLL in a user folder

autostart

T1546.015

PERSIST-LOGON-SCRIPT

high

A user logon script is set in the user's Environment key

autostart

T1037.001

PERSIST-LSA-PACKAGE

high

A non-default LSA package is loaded

autostart

T1547.002, T1547.005, T1556.002

PERSIST-OFFICE-TEST-KEY

high

The Office test key loads a DLL

autostart

T1137.002

PERSIST-RUN-KEY-SCRIPT-HOST

high

A Run key starts a script host

autostart

T1547.001, T1059, T1218

PERSIST-SERVICE-RUNS-SHELL

high

A service runs a command shell or script host

service_install, installed_service

T1569.002, T1543.003

PERSIST-SERVICE-USER-PATH

high

A service runs from a user-writable folder

service_install, installed_service

T1543.003, T1569.002

PERSIST-SYSTEM-DLL-HOOK

high

A netsh helper, print monitor, print processor or time provider loads an unusual DLL

autostart

T1546.007, T1547.010, T1547.012, T1547.003

PERSIST-TASK-HIDDEN

high

A scheduled task is hidden from the Task Scheduler

scheduled_task

T1053.005, T1564

PERSIST-TASK-SCRIPT-HOST

high

A scheduled task runs a script host with a hidden or downloaded command

scheduled_task, task_change

T1053.005, T1059.001

PERSIST-TASK-USER-PATH

high

A scheduled task runs a program from a user-writable folder

scheduled_task

T1053.005

PERSIST-WINLOGON-CHANGED

high

Winlogon starts something other than Windows' own shell or Userinit

autostart

T1547.004

PERSIST-WMI-COMMAND-CONSUMER

high

A WMI subscription runs a command or script

wmi_subscription, wmi_subscription_created

T1546.003

PERSIST-ACTIVE-SETUP

medium

An Active Setup component runs a program from a user-writable folder, or an unsigned one

autostart

T1547.014

PERSIST-BITS-ADDRESS-URL

medium

A BITS job transferred from a public IP address rather than a host name

bits_job

T1197, T1105

PERSIST-BITS-SCRIPT-CLIENT

medium

A BITS job was created by a shell, a script host or bitsadmin

bits_job

T1197

PERSIST-IFEO-DEBUGGER

medium

A program is started through another one's debugger or exit monitor

autostart

T1546.012

PERSIST-OFFICE-ADDIN-UNSIGNED

medium

An Office add-in loads an unsigned DLL from a user-writable folder

autostart

T1137.006

PERSIST-OFFICE-STARTUP-FILE

medium

A file is in Word's or Excel's startup folder

autostart

T1137.001

PERSIST-POWERSHELL-PROFILE-ALL-USERS

medium

A PowerShell profile runs for every user

autostart

T1546.013

PERSIST-RUN-KEY-USER-PATH

medium

A Run key starts an unsigned program from a user-writable folder

autostart

T1547.001

PERSIST-SCREENSAVER

medium

A user's screensaver is a program outside System32, or not validly signed

autostart

T1546.002

PERSIST-STARTUP-FOLDER-SCRIPT

medium

A script is in a Startup folder

autostart

T1547.001

PERSIST-TASK-CREATED-BY-ACCOUNT

medium

A person's account registered a task that runs a program outside Program Files and System32

task_change

T1053.005

PERSIST-TASK-LEGACY-JOB

medium

A legacy .job scheduled task exists

scheduled_task

T1053.002, T1053.005

PERSIST-TASK-UNLISTED

medium

A scheduled task is defined in the registry but not shown by the Task Scheduler

scheduled_task

T1053.005, T1564

PERSIST-UNSIGNED-DRIVER

medium

A driver is not signed, or its signature does not verify

installed_service

T1543.003

PERSIST-VULNERABLE-DRIVER

medium

A driver with a known vulnerability is installed

service_install, installed_service

T1068, T1685

How to read it

  • The persistence table lists every entry configured now, Windows' own left out (counted). Use it to stack hosts: an entry on one host of a thousand stands out.

  • A state and its creation are one signal. A service installed (7045) and still configured is one signal, the installation corroborated by the service table.

  • Who made it comes from the Security log (4697, 4698-4702) when those are audited; the System log's 7045 does not say.

  • persist.modified is a key's last write: a clue to when, not proof.

What it can't see

Try it yourself

The lab on your own machine creates a harmless scheduled task and watches PERSIST-TASK-USER-PATH fire.

Next

Logons: how the host was used, and from where.