Has added the Registry key HKLM\SYSTEM\ControlSet001\Control\Print\Environments\Windows x64\Print Processors\UDPrint” /v Driver /d “spool.dll /f to load malware as a Print Processor.1
Print Processors T1547.012
- Tactics
- Persistence, Privilege Escalation
- Platform
- Windows
- Version
- 1.2
- Created
- 05 October 2020
- Last modified
- 24 October 2025
- Contributors
- Mathieu Tartare, ESET; Tahseen Bin Taj
Adversaries may abuse print processors to run malicious DLLs during system boot for persistence and/or privilege escalation. Print processors are DLLs that are loaded by the print spooler service, spoolsv.exe, during boot.[1]
Print Processors MITRE reference T1547.012
1 group has been recorded using this technique. Newest first; each entry carries MITRE’s procedure text and a link to the group’s full record. Click a name to filter the rules below.
All 1 groups for this technique
2 software entries are documented implementing this technique. MITRE files each as a tool or as malware; newest first, then by how many groups carry them.
Can drop itself in C:\Windows\System32\spool\prtprocs\x64\winprint.dll to be loaded automatically by the spoolsv Windows service.1
The PipeMon installer has modified the Registry key HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Print Processors to install PipeMon as a Print Processor.1
All 2 software entries for this technique
Offense vs defense T1547.012
Is defensive coverage keeping up with adversary use? Eight counts, each ranked against all 697 ATT&CK techniques. Attack sits left, defense right, so a shape leaning left means adversaries are better documented here than defenders are equipped. Hover any spoke for its percentile and the share of techniques that have more. The timeline below shows when each side arrived.
How it got here
Adversary activity (campaign spans) over cumulative rule output. Each source is plotted independently from zero, so neither line includes the other. Campaign dates are year-granularity.
Print Processors detection strategy DET0026
MITRE names one behaviour worth catching for this technique and breaks it into 1 analytic, one per platform. Each carries the log sources it needs and the fields you tune per environment.
Windows Detection Strategy for T1547.012 - Print Processor DLL Persistence
AN0074 · Windows
Correlated registry modifications under Print Processors path, followed by DLL file creation within the system print processor directory, and DLL load by spoolsv.exe. Malicious execution often occurs during service restart or system boot, with SYSTEM-level privileges.
Log sources
The data this analytic draws on. You do not need every component — each one you already collect covers part of it. Each links to its ATT&CK record.
| Data component | Name | Channel |
|---|---|---|
| Module LoadDC0016 | WinEventLog:Sysmon | EventCode=7 |
| Process AccessDC0035 | WinEventLog:Sysmon | EventCode=10 |
| File CreationDC0039 | WinEventLog:Sysmon | EventCode=11 |
| Windows Registry Key ModificationDC0063 | WinEventLog:Sysmon | EventCode=13, 14 |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| TimeWindow | Correlate Registry + DLL Write + Module Load within a short boot or spooler restart window (e.g., 5 minutes). |
| PrintProcessorDirectory | System-specific path derived from GetPrintProcessorDirectory API call; may differ across Windows versions or configurations. |
| DLLNamePattern | Some environments may use custom or non-standard DLL naming conventions for print processors. Allowlist known values. |
| SignedImageValidation | Check Authenticode signature and issuer chain for loaded DLLs to reduce false positives. |
| ServiceRestartTrigger | Monitor for spoolsv.exe restart events that trigger malicious print processor loading. |
Limit user accounts that can load or unload device drivers by disabling SeLoadDriverPrivilege.
| # | Test | Platform | Executor | Elevation | Prereqs | Cleanup | Ref | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 01 | Print Processors | windows | PowerShell | Required | — | Yes | ||||||||||
Establishes persistence by creating a new print processor registry key under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Print Processors. The new print processor will point to a DLL which will be loaded by the spooler service after a reboot. The DLL will then create the file AtomicTest.txt in C:\Users\Public\ as validation that the test is successful. Note: The test assumes a x64 Windows operating system. The payload source code is based on a blog post by stmxcsr: https://stmxcsr.com/persistence/print-processor.html Input arguments
Attack command if( $(get-service -Name spooler).StartType -eq "Disabled") {Set-Service -Name "spooler" -StartupType Automatic}
net stop spooler
Copy-Item "$PathToAtomicsFolder\T1547.012\bin\AtomicTest.dll" C:\Windows\System32\spool\prtprocs\x64\AtomicTest.dll
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Print Processors\AtomicRedTeam" /v "Driver" /d "AtomicTest.dll" /t REG_SZ /f
net start spooler
if(#{restart}){
Restart-Computer
}
Cleanup command net stop spooler rm -force C:\Windows\System32\spool\prtprocs\x64\AtomicTest.dll -ErrorAction SilentlyContinue rm -force C:\Users\Public\AtomicTest.txt -ErrorAction SilentlyContinue remove-item "HKLM:\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Print Processors\AtomicRedTeam" -Force -ErrorAction SilentlyContinue net start spooler GUID4c7ef866-717a-4d82-8b2b-c5673b4205a6 | ||||||||||||||||
Tests from Atomic Red Team (MIT licence) · technique definition