Accessibility Features on Windows can be abused as a privilege escalation or persistence mechanism.
This persistence works by switching out one of the binaries associated with Accessibility Features with cmd.exe
or whatever malware you choose. After the binary is replaced, pressing the sequence of keys required to trigger the feature at the logon screen yields code execution as SYSTEM.
An example is replacing C:\Windows\System32\sethc.exe
with cmd.exe
. At the logon screen, pressing Shift 5 times will spawn cmd.exe
as SYSTEM.

This technique also works over RDP and is a popular backup persistence method used at CTFs and by many threat actors due to its ease of implementation.
In practice, this technique is used to recover lost passwords. With physical access to the system, you can boot up an OS from USB, mount the computer’s physical disk, and make the required alterations. After rebooting the system, trigger the backdoor to get a shell as SYSTEM and use net.exe
to change the user’s password.
Affected Programs
Description | Executable | Keyboard Shortcut |
Sticky Keys | sethc.exe | Shift 5 times |
On-Screen Keyboard | osk.exe | Windows + Control + U |
Utility Manager | utilman.exe | Windows + U |
Display Switcher | DisplaySwitch.exe | Windows + P |
App Switcher | AtBroker.exe | Alt + Tab |
Magnifier | Magnify.exe | Windows + + |
Narrator | Narrator.exe | Windows + Control + Enter |
Image File Execution Options
Alternatively, various Image File Execution Options features can be abused to achieve the same type of behavior.
For example, adding a Debugger
value of C:\Windows\System32\cmd.exe
to sethc.exe
‘s key in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe
will also spawn cmd.exe
as SYSTEM when you press Shift five times on the logon screen.
Detection
An easy way to determine if this technique has been used on a system is by comparing the hashes of the accessibility features executables with those of known good copies.
An easy way to verify this is by looking up each program’s hash on VirusTotal. If the hash on disk doesn’t match the filename provided by VirusTotal, it has probably been altered.
Some tools check for this technique by matching each accessibility tool against the hashes of cmd.exe
or powershell.exe
. If any of them are equal to cmd or powershell, this backdoor is likely present.
This is not the best strategy because other LOLBAS utilities such as ftp.exe
can be used as an interactive shell instead of cmd.exe
:
C:\Users\Daniel>ftp ftp> !whoami domain\daniel ftp> !dir C:\ Volume in drive C is Windows Volume Serial Number is PP5-1-D00D00 Directory of C:\ 09/05/2021 01:39 PM <DIR> Program Files 08/31/2021 05:15 PM <DIR> Program Files (x86) 08/31/2021 05:17 PM <DIR> Tools 08/17/2021 06:31 PM <DIR> Users 08/26/2021 06:31 PM <DIR> Windows 0 File(s) 0 bytes 5 Dir(s) 786,584,748,032 bytes free
Repairing Affected Systems
One way to repair this issue is by using the System File Checker: sfc.exe
Here, sfc.exe
is ran against an unaltered file:
PS C:\Windows\system32> sfc /scanfile=C:\windows\system32\sethc.exe Windows Resource Protection did not find any integrity violations.
After replacing sethc.exe
with cmd.exe
, sfc.exe
was able to repair it:
PS C:\Windows\system32> sfc /scanfile=C:\windows\system32\sethc.exe Windows Resource Protection found corrupt files and successfully repaired them. For online repairs, details are included in the CBS log file located at windir\Logs\CBS\CBS.log. For example C:\Windows\Logs\CBS\CBS.log. For offline repairs, details are included in the log file provided by the /OFFLOGFILE flag. The system file repair changes will take effect after the next reboot.
If this doesn’t work, another trick is to look for files with an extension of .bak
, or .old
that may have been created as backups.