Detection rules › Sigma

Suspicious Volume Shadow Copy VSS_PS.dll Load

Status
test
Severity
high
Log source
category image_load, product windows
Author
Markus Neis, @markus_neis
Source
github.com/SigmaHQ/sigma

Detects the image load of vss_ps.dll by uncommon executables. This DLL is used by the Volume Shadow Copy Service (VSS) to manage shadow copies of files and volumes. It is often abused by attackers to delete or manipulate shadow copies, which can hinder forensic investigations and data recovery efforts. The fact that it is loaded by processes that are not typically associated with VSS operations can indicate suspicious activity.

MITRE ATT&CK coverage

TacticTechniques
Impact

Telemetry coverage

ProviderRecord / event type
SysmonEvent ID 7: Image loaded

Rule body

title: Suspicious Volume Shadow Copy VSS_PS.dll Load
id: 333cdbe8-27bb-4246-bf82-b41a0dca4b70
related:
    - id: 48bfd177-7cf2-412b-ad77-baf923489e82 # vsstrace.dll
      type: similar
    - id: 37774c23-25a1-4adb-bb6d-8bb9fd59c0f8 # vssapi.dll
      type: similar
status: test
description: |
    Detects the image load of vss_ps.dll by uncommon executables. This DLL is used by the Volume Shadow Copy Service (VSS) to manage shadow copies of files and volumes.
    It is often abused by attackers to delete or manipulate shadow copies, which can hinder forensic investigations and data recovery efforts.
    The fact that it is loaded by processes that are not typically associated with VSS operations can indicate suspicious activity.
references:
    - https://www.virustotal.com/gui/file/ba88ca45589fae0139a40ca27738a8fc2dfbe1be5a64a9558f4e0f52b35c5add
    - https://twitter.com/am0nsec/status/1412232114980982787
author: Markus Neis, @markus_neis
date: 2021-07-07
modified: 2025-07-11
tags:
    - attack.impact
    - attack.t1490
logsource:
    category: image_load
    product: windows
detection:
    selection:
        ImageLoaded|endswith: '\vss_ps.dll'
    filter_main_legit:
        Image|startswith: 'C:\Windows\'
        Image|endswith:
            - '\clussvc.exe'
            - '\dismhost.exe'
            - '\dllhost.exe'
            - '\inetsrv\appcmd.exe'
            - '\inetsrv\iissetup.exe'
            - '\msiexec.exe'
            - '\rundll32.exe'
            - '\searchindexer.exe'
            - '\srtasks.exe'
            - '\svchost.exe'
            - '\System32\SystemPropertiesAdvanced.exe'
            - '\taskhostw.exe'
            - '\thor.exe'
            - '\thor64.exe'
            - '\tiworker.exe'
            - '\vssvc.exe'
            - '\vssadmin.exe'
            - '\WmiPrvSE.exe'
            - '\wsmprovhost.exe'
    filter_main_update:
        CommandLine|startswith: 'C:\$WinREAgent\Scratch\'
        CommandLine|contains: '\dismhost.exe {'
    filter_main_image_null:
        Image: null
    filter_optional_programfiles:
        # When using this rule in your environment replace the "Program Files" folder by the exact applications you know use this. Examples would be software such as backup solutions
        Image|startswith:
            - 'C:\Program Files\'
            - 'C:\Program Files (x86)\'
    condition: selection and not 1 of filter_main_* and not 1 of filter_optional_*
falsepositives:
    - Unknown
level: high

Stages and Predicates

Stage 0: condition

selection and not 1 of filter_main_* and not 1 of filter_optional_*

Stage 1: selection

selection:
    ImageLoaded|endswith: '\vss_ps.dll'

Stage 2: not filter_main_*

filter_main_legit:
    Image|startswith: 'C:\Windows\'
    Image|endswith:
        - '\clussvc.exe'
        - '\dismhost.exe'
        - '\dllhost.exe'
        - '\inetsrv\appcmd.exe'
        - '\inetsrv\iissetup.exe'
        - '\msiexec.exe'
        - '\rundll32.exe'
        - '\searchindexer.exe'
        - '\srtasks.exe'
        - '\svchost.exe'
        - '\System32\SystemPropertiesAdvanced.exe'
        - '\taskhostw.exe'
        - '\thor.exe'
        - '\thor64.exe'
        - '\tiworker.exe'
        - '\vssvc.exe'
        - '\vssadmin.exe'
        - '\WmiPrvSE.exe'
        - '\wsmprovhost.exe'
filter_main_update:
    CommandLine|startswith: 'C:\$WinREAgent\Scratch\'
    CommandLine|contains: '\dismhost.exe {'
filter_main_image_null:
    Image: null

Stage 3: not filter_optional_programfiles

filter_optional_programfiles:
    Image|startswith:
        - 'C:\Program Files\'
        - 'C:\Program Files (x86)\'

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
Imageends_with\System32\SystemPropertiesAdvanced.exeexcludes:Image field:"Image" value:"\System32\SystemPropertiesAdvanced.exe"
Imageends_with\WmiPrvSE.exeexcludes:Image field:"Image" value:"\WmiPrvSE.exe"
Imageends_with\clussvc.exeexcludes:Image field:"Image" value:"\clussvc.exe"
Imageends_with\dismhost.exeexcludes:Image field:"Image" value:"\dismhost.exe"
Imageends_with\dllhost.exeexcludes:Image field:"Image" value:"\dllhost.exe"
Imageends_with\inetsrv\appcmd.exeexcludes:Image field:"Image" value:"\inetsrv\appcmd.exe"
Imageends_with\inetsrv\iissetup.exeexcludes:Image field:"Image" value:"\inetsrv\iissetup.exe"
Imageends_with\msiexec.exeexcludes:Image field:"Image" value:"\msiexec.exe"
Imageends_with\rundll32.exeexcludes:Image field:"Image" value:"\rundll32.exe"
Imageends_with\searchindexer.exeexcludes:Image field:"Image" value:"\searchindexer.exe"
Imageends_with\srtasks.exeexcludes:Image field:"Image" value:"\srtasks.exe"
Imageends_with\svchost.exeexcludes:Image field:"Image" value:"\svchost.exe"
Imageends_with\taskhostw.exeexcludes:Image field:"Image" value:"\taskhostw.exe"
Imageends_with\thor.exeexcludes:Image field:"Image" value:"\thor.exe"
Imageends_with\thor64.exeexcludes:Image field:"Image" value:"\thor64.exe"
Imageends_with\tiworker.exeexcludes:Image field:"Image" value:"\tiworker.exe"
Imageends_with\vssadmin.exeexcludes:Image field:"Image" value:"\vssadmin.exe"
Imageends_with\vssvc.exeexcludes:Image field:"Image" value:"\vssvc.exe"
Imageends_with\wsmprovhost.exeexcludes:Image field:"Image" value:"\wsmprovhost.exe"
Imagestarts_withC:\Windows\excludes:Image field:"Image" value:"C:\Windows\"
CommandLinematch\dismhost.exe {excludes:CommandLine field:"CommandLine" value:"\dismhost.exe {"
CommandLinestarts_withC:\$WinREAgent\Scratch\excludes:CommandLine field:"CommandLine" value:"C:\$WinREAgent\Scratch\"
Imageis_null(no value, null check)excludes:Image
Imagestarts_withC:\Program Files (x86)\excludes:Image field:"Image" value:"C:\Program Files (x86)\"
Imagestarts_withC:\Program Files\excludes:Image field:"Image" value:"C:\Program Files\"

Indicators

These rows show field, operator, and value matches.