← All hunts medium TLP:CLEAR Part 2 of 2

Volume Shadow Copy Manipulation and Impact

An adversary is abusing the Volume Shadow Copy Service (VSS) to either extract the Active Directory database (ntds.dit) for credential theft or delete recovery points to prevent rollback before encrypting data.

Based on research by Huntress 2026-09-17 9 steps · 4 queries T1003.003 T1486 T1490

Brief

Background

Recent research from Huntress, titled How Attackers Abuse VSS, and How Huntress Detects It, highlights how adversaries frequently target the Volume Shadow Copy Service. VSS is a dual-use mechanism: it provides the necessary infrastructure for legitimate backups, but it also allows attackers to create snapshots of locked system files like the Active Directory database (ntds.dit) for offline cracking, or to delete recovery points entirely before deploying ransomware.

How the Hunt Flows

The hunt begins by scoping the environment using the hb_devices surface. We specifically isolate Windows Domain Controllers and high-value servers where the impact of credential theft or data encryption is highest. This ensures the hunt remains performant and focused on high-risk assets.

Next, we pivot to hb_process_activity to identify the use of vssadmin.exe or wmic.exe. We are looking for specific command-line arguments related to shadow copy creation (often used for staging NTDS exfiltration) or deletion (used to prevent rollbacks). At this stage, we are collecting leads, not making final judgments.

To separate legitimate administration from an attack, we run two parallel corroboration phases using hb_file_activity. The first branch looks for processes accessing ntds.dit within a shadow copy path—a clear indicator of credential staging. The second branch looks for high-volume file modifications by processes that are rare across the fleet. This allows us to identify potential ransomware activity that may have been preceded by VSS deletion.

The final phase uses a triage agent to correlate these signals. It looks for temporal proximity between the VSS manipulation and the suspicious file activity, providing a verdict based on the full lifecycle of the observed behavior.

Limitations and Blind Spots

No hunt is exhaustive. This playbook primarily relies on command-line monitoring. If an attacker uses direct Win32 API calls (via PowerShell or a custom binary) to interact with the VSS provider, they may bypass the process activity checks. We also note that during periods of extreme disk I/O, such as mass encryption, endpoint agents may suppress file events to maintain system stability, which could impact our file churn calculations.

Running the Hunt

This hunt is packaged as an open hunt.md playbook. It can be imported into Huntbase or any runtime compatible with the hunt.md format. It is designed to be run periodically against server estates to identify latent persistence or staging activity that does not trigger standard real-time alerts.

By focusing on the 'why'—correlating the tool with the result—this hunt provides a higher degree of confidence than isolated detection rules.

In this series

Steps

  1. Identify Windows Servers and DCs

    Query · scoping

    Focus the hunt on Windows systems where NTDS.dit extraction or mass encryption would have the highest business impact.

    reads hb_devicessql
    SELECT hostname AS device_hostname, os_name, ip_address FROM hb_devices WHERE platform = 'windows' AND (LOWER(os_name) LIKE '%server%' OR LOWER(hostname) LIKE '%dc%') AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. A list of hostnames identifying the server estate. Silence means no Windows servers were seen in the lookback window.

  2. Suspicious VSS CLI Manipulation

    Query · detection candidate

    Find command-line invocations of vssadmin or wmic that specifically create or delete shadow copies.

    reads hb_process_activitysql
    SELECT device_hostname, process_name, process_cmd_line, parent_process_name, time FROM hb_process_activity WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND ((LOWER(process_name) LIKE '%vssadmin.exe' AND (LOWER(process_cmd_line) LIKE '%create%shadow%' OR LOWER(process_cmd_line) LIKE '%delete%shadows%')) OR (LOWER(process_name) LIKE '%wmic.exe' AND LOWER(process_cmd_line) LIKE '%shadowcopy%')) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. Processes launching VSS commands. Deletion with '/quiet' or creation by unusual parents (like PsExec or cmd) are high-priority leads.

  3. Credential Database Access via Shadow Copy

    Query · enrichment

    Identify processes accessing the Active Directory database (ntds.dit) through a volume shadow copy path.

    reads hb_file_activitysql
    SELECT device_hostname, process_name, file_path, activity_name, time FROM hb_file_activity WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND LOWER(file_name) = 'ntds.dit' AND LOWER(file_path) LIKE '%shadowcopy%' AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. Any row showing a process reading ntds.dit from a 'HarddiskVolumeShadowCopy' path is an immediate indicator of credential theft.

  4. High-Volume Rare Process File Churn

    Query · baseline

    Identify rare processes performing high-volume file updates or deletions, characteristic of ransomware.

    reads hb_file_activitysql
    SELECT process_name, COUNT(DISTINCT device_hostname) AS affected_hosts, COUNT(*) AS total_events, MIN(time) AS first_seen FROM hb_file_activity WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND activity_id IN (3, 4, 5) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY process_name HAVING affected_hosts < 3 AND total_events > 500 ORDER BY total_events DESC

    What a hit looks like. A process rare in the fleet but generating hundreds of file events on a single host. Known backup agents will have a high 'affected_hosts' count and can be ignored.

  5. Triage VSS Activity and Correlated Signals

    Agent triage

    Correlate VSS manipulation with file-level indicators of theft or destruction.

  6. Route on Verdict

    Decision

    Automate response routing based on the severity of the triage findings.

  7. Isolate Compromised Host

    Response action

    Stop further encryption or credential exfiltration immediately.

  8. Analyst Review and Close-out

    Analyst task

    Final validation of findings and documentation of false positives for tuning.

Coverage

Scenario coverage

StageCoveredHow, or why not
Credential Access via Shadow Copy
T1490
Yes vss-tool-execution, ntds-access
Inhibit System Recovery via Shadow Deletion
T1490
Yes vss-tool-execution
Data Encrypted for Impact
T1486
Yes file-churn-baseline
Exploitation of Public-Facing Application
T1190
Out of scope Belongs to another part of the 'How Attackers Abuse VSS, and How Huntress Detects It' series.
Lateral Movement via SMB and PsExec
T1021.002
Out of scope Belongs to another part of the 'How Attackers Abuse VSS, and How Huntress Detects It' series.
Session and Network Reconnaissance
T1021.001
Out of scope Belongs to another part of the 'How Attackers Abuse VSS, and How Huntress Detects It' series.

Blind spots

  • Needs Microsoft-Windows-VSS event logs or hb_api_activity. Sophisticated actors using direct API calls (e.g., via PowerShell or custom C++ binaries) bypass CLI-based detection rules entirely. It would answer Was VSS manipulated via direct Win32 API calls rather than command-line tools?. Remediation: Ingest Windows Event Log 13 (VSS service started) and 8224 (VSS provider activity).
  • Needs hb_file_activity with zero dropped-event indicator. Mass encryption is exceptionally noisy; if the agent suppresses events to maintain system performance, the 'total_events' count may fall below the hunt threshold. It would answer Did the endpoint agent drop file activity events during a period of massive disk I/O?. Remediation: Monitor agent performance metrics for 'dropped events' during high-churn detection windows.

Parameters & data

Parameters

ParameterTypeDefaultWhat it is
lookback_daysnumber14Days of history to examine.
scope_hostslist[host]Specific hostnames to scope; leave empty for the entire Windows server fleet.

Telemetry

SourceCategoryTelemetry
Endpoint telemetry (hb_ surfaces)endpointendpoint

Source

Download hunt.md Definition (JSON) An open hunt.md file; it runs anywhere that reads the format.
---
analysis: 'While static rules can catch ''vssadmin delete shadows'', this hunt adds
  context: it correlates the VSS command with specific file access (ntds.dit) and
  fleet-wide rarity of the calling process, distinguishing legitimate RMM tools from
  attackers.'
blind_spots:
- id: vss-api-evasion
  owner: Endpoint Security Team
  question: Was VSS manipulated via direct Win32 API calls rather than command-line
    tools?
  remediation: Ingest Windows Event Log 13 (VSS service started) and 8224 (VSS provider
    activity).
  requires: Microsoft-Windows-VSS event logs or hb_api_activity
  risk: Sophisticated actors using direct API calls (e.g., via PowerShell or custom
    C++ binaries) bypass CLI-based detection rules entirely.
  stage: vss-credential-access
- id: event-suppression-during-churn
  owner: Detection Engineering
  question: Did the endpoint agent drop file activity events during a period of massive
    disk I/O?
  remediation: Monitor agent performance metrics for 'dropped events' during high-churn
    detection windows.
  requires: hb_file_activity with zero dropped-event indicator
  risk: Mass encryption is exceptionally noisy; if the agent suppresses events to
    maintain system performance, the 'total_events' count may fall below the hunt
    threshold.
  stage: ransomware-encryption
coverage:
- stage: vss-credential-access
  status: covered
  steps:
  - vss-tool-execution
  - ntds-access
- stage: vss-recovery-inhibition
  status: covered
  steps:
  - vss-tool-execution
- stage: ransomware-encryption
  status: covered
  steps:
  - file-churn-baseline
- reason: Belongs to another part of the 'How Attackers Abuse VSS, and How Huntress
    Detects It' series.
  stage: initial-exploitation
  status: out_of_scope
- reason: Belongs to another part of the 'How Attackers Abuse VSS, and How Huntress
    Detects It' series.
  stage: lateral-movement-psexec
  status: out_of_scope
- reason: Belongs to another part of the 'How Attackers Abuse VSS, and How Huntress
    Detects It' series.
  stage: internal-reconnaissance
  status: out_of_scope
guardrails:
  claims: no_unsupported
  evidence: citation_required
  missing_data: not_benign
  telemetry: untrusted
hunt:
  applicability: campaign-specific
  handoff: keep-as-periodic-hunt
  justification: Volume Shadow Copies are a primary target for ransomware operators
    and a quiet vector for credential theft. Ensuring these features are not being
    manipulated by unauthorized processes is a critical security obligation.
  methodology: model-assisted
  trigger: intel-report
hypothesis: An adversary is abusing the Volume Shadow Copy Service (VSS) to either
  extract the Active Directory database (ntds.dit) for credential theft or delete
  recovery points to prevent rollback before encrypting data.
labels:
- hunt
- attack.t1490
- attack.t1486
- attack.t1003.003
name: Volume Shadow Copy Manipulation and Impact
parameters:
  lookback_days:
    default: '14'
    description: Days of history to examine.
    from:
      kind: article
      observed: '2026-09-14'
      ref: huntress-vss-abuse
    type: number
  scope_hosts:
    default: []
    description: Specific hostnames to scope; leave empty for the entire Windows server
      fleet.
    from:
      kind: manual
      observed: '2026-09-14'
      ref: analyst-entry
    type: list[host]
provenance:
  authors:
  - name: Huntbase hunt generation
    org: huntbase.io
  generated:
    by: huntbase-hunt-generation
    from: https://www.huntress.com/blog/vss-abuse-explained
    gates:
    - dry-run
    - lint
    - critic
    model: hb_google/gemini-3-flash-preview
rationale: Focus on domain controllers and high-value servers (DB, File). Use the
  scope_hosts parameter to narrow the behavior queries if the estate is very large.
references:
- name: "Huntress \u2014 How Attackers Abuse VSS, and How Huntress Detects It"
  url: https://www.huntress.com/blog/vss-abuse-explained
related:
- hunt: lateral-movement-psexec-hunting
  reason: PsExec is frequently used to launch VSS tools on remote domain controllers;
    that hunt handles the remote execution vector.
  relation: precedes
- hunt: vss-abuse-precursors-exploitation-lateral-movement
  relation: follows
scenario:
  stages:
  - name: Exploitation of Public-Facing Application
    observables:
    - Exploitation of internet-facing host
    - Vulnerability exploitation in web servers or databases
    slug: initial-exploitation
    tactic: initial-access
    techniques:
    - T1190
  - name: Lateral Movement via SMB and PsExec
    observables:
    - PsExec usage
    - Spawning of SYSTEM-level command shell processes
    - Activity on domain controllers
    slug: lateral-movement-psexec
    tactic: lateral-movement
    techniques:
    - T1021.002
  - name: Session and Network Reconnaissance
    observables:
    - Enumeration of active Remote Desktop sessions
    - DNS enumeration commands
    - Reconnaissance against additional network hosts
    slug: internal-reconnaissance
    tactic: discovery
    techniques:
    - T1021.001
  - name: Credential Access via Shadow Copy
    observables:
    - vssadmin create shadow
    - Extraction of ntds.dit from volume shadow copy
    slug: vss-credential-access
    tactic: credential-access
    techniques:
    - T1490
  - name: Inhibit System Recovery via Shadow Deletion
    observables:
    - vssadmin delete shadows /all /quiet
    - Deletion of shadow copies following credential extraction
    slug: vss-recovery-inhibition
    tactic: impact
    techniques:
    - T1490
  - name: Data Encrypted for Impact
    observables:
    - Mass file encryption
    - Ransomware detonation
    slug: ransomware-encryption
    tactic: impact
    techniques:
    - T1486
  summary: Attackers leverage Volume Shadow Copy (VSS) to facilitate credential theft
    by creating shadows to extract the NTDS.dit database or to inhibit recovery by
    deleting shadows prior to ransomware deployment. These techniques are often preceded
    by lateral movement using tools like PsExec and internal reconnaissance against
    domain controllers.
series:
  index: 2
  slug: how-attackers-abuse-vss-and-how-huntress-detects-it
  title: How Attackers Abuse VSS, and How Huntress Detects It
  total: 2
severity: medium
targets:
  analyst:
    name: Tier-2 analyst
    role: analyst
  endpoint:
    category: endpoint
    name: Endpoint telemetry (hb_ surfaces)
    telemetry:
    - endpoint
  hunter:
    agent: true
    name: Hunt agent
tlp: clear
type: investigation
---


# Volume Shadow Copy Manipulation and Impact

This hunt targets the abuse of Windows VSS infrastructure as described in recent threat research. It begins by identifying the Windows server estate, specifically targeting Domain Controllers and critical servers. It then monitors for suspicious command-line invocations of vssadmin or wmic used to create or delete shadow copies. To distinguish between administrative tasks and malicious activity, the hunt corroborates these leads by checking for direct file access to ntds.dit within shadow copy paths (the credential theft path) and identifying rare processes performing high-volume file modifications indicative of ransomware. A triage agent then correlates these findings across process lineage and time windows to provide a definitive verdict.

## scope-to-servers
<!-- Identify Windows Servers and DCs -->
Focus the hunt on Windows systems where NTDS.dit extraction or mass encryption would have the highest business impact.

```sqlite target=endpoint role=scoping params=(lookback_days=lookback_days)
~~~yaml
expected: A list of hostnames identifying the server estate. Silence means no Windows
  servers were seen in the lookback window.
reads:
- hostname
- os_name
- ip_address
- time
silence: not_evidence_of_absence
source: hb_devices
verified: dry-run
verified_at: '2026-09-17'
~~~
SELECT hostname AS device_hostname, os_name, ip_address FROM hb_devices WHERE platform = 'windows' AND (LOWER(os_name) LIKE '%server%' OR LOWER(hostname) LIKE '%dc%') AND time >= datetime('now', '-{{lookback_days}} days')
```

## vss-tool-execution
<!-- Suspicious VSS CLI Manipulation -->
Find command-line invocations of vssadmin or wmic that specifically create or delete shadow copies.

```sqlite target=endpoint role=detection-candidate params=(scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
expected: Processes launching VSS commands. Deletion with '/quiet' or creation by
  unusual parents (like PsExec or cmd) are high-priority leads.
reads:
- device_hostname
- process_name
- process_cmd_line
- parent_process_name
- time
silence: not_evidence_of_absence
source: hb_process_activity
verified: dry-run
verified_at: '2026-09-17'
~~~
SELECT device_hostname, process_name, process_cmd_line, parent_process_name, time FROM hb_process_activity WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND ((LOWER(process_name) LIKE '%vssadmin.exe' AND (LOWER(process_cmd_line) LIKE '%create%shadow%' OR LOWER(process_cmd_line) LIKE '%delete%shadows%')) OR (LOWER(process_name) LIKE '%wmic.exe' AND LOWER(process_cmd_line) LIKE '%shadowcopy%')) AND time >= datetime('now', '-{{lookback_days}} days')
```

## parallel-corroboration
<!-- Corroborate VSS Intent -->
parallel:
- → ntds-access
- → file-churn-baseline
join: → vss-triage

## ntds-access
<!-- Credential Database Access via Shadow Copy -->
Identify processes accessing the Active Directory database (ntds.dit) through a volume shadow copy path.

```sqlite target=endpoint role=enrichment params=(scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
expected: Any row showing a process reading ntds.dit from a 'HarddiskVolumeShadowCopy'
  path is an immediate indicator of credential theft.
reads:
- device_hostname
- process_name
- file_name
- file_path
- activity_name
- time
silence: not_evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-09-17'
~~~
SELECT device_hostname, process_name, file_path, activity_name, time FROM hb_file_activity WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND LOWER(file_name) = 'ntds.dit' AND LOWER(file_path) LIKE '%shadowcopy%' AND time >= datetime('now', '-{{lookback_days}} days')
```

## file-churn-baseline
<!-- High-Volume Rare Process File Churn -->
Identify rare processes performing high-volume file updates or deletions, characteristic of ransomware.

```sqlite target=endpoint role=baseline params=(scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
baseline:
  compare: first_seen
  window: '{{lookback_days}}d'
expected: A process rare in the fleet but generating hundreds of file events on a
  single host. Known backup agents will have a high 'affected_hosts' count and can
  be ignored.
prevalence:
  by: device_hostname
  key:
  - process_name
  rare_below: 3
reads:
- process_name
- device_hostname
- activity_id
- time
silence: not_evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-09-17'
~~~
SELECT process_name, COUNT(DISTINCT device_hostname) AS affected_hosts, COUNT(*) AS total_events, MIN(time) AS first_seen FROM hb_file_activity WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND activity_id IN (3, 4, 5) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY process_name HAVING affected_hosts < 3 AND total_events > 500 ORDER BY total_events DESC
```

## vss-triage
<!-- Triage VSS Activity and Correlated Signals -->
```agent target=hunter
cite: required
context:
- vss-tool-execution
- ntds-access
- file-churn-baseline
max_iterations: 4
objective: Determine if the observed VSS manipulation on a host is part of an active
  attack. Look for temporal proximity (within 1 hour) between VSS tool execution and
  either ntds.dit access or high-volume file churn. Distinguish from legitimate backup
  software by checking the process name and affected host count.
success_criteria: A per-host verdict of malicious | suspicious | benign citing specific
  process paths and timestamps.
tools:
- endpoint
```

## route-on-verdict
<!-- Route on Verdict -->
if~: "the triage verdict is 'malicious' for at least one host involving either access to ntds.dit or mass file churn" (confidence: high, judge=hunter)
then: → isolate-host
indeterminate: → analyst-incident-review
unavailable: → analyst-incident-review (blind_spot: vss-api-evasion)
else: → analyst-incident-review

## isolate-host
<!-- Isolate Compromised Host -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the host via the EDR. Proceed to collect memory artifacts and specifically the ntds.dit file if theft was indicated.
```
→ analyst-incident-review

## analyst-incident-review
<!-- Analyst Review and Close-out -->
```manual target=analyst
Review the agent's cited evidence. If the 'malicious' verdict was triggered by an unauthorized but known admin tool, update the whitelist. If the verdict was benign but the activity is high-volume, consider refining the churn threshold.
```
→ end

Run it

Take this hunt into your environment.

Open it in Huntbase to run every step against your own connections, with Scout weighing the evidence and your analysts in command. Or take the open hunt.md file anywhere that reads the format.

Machine-drafted by huntbase-hunt-generation using hb_google/gemini-3-flash-preview, gated by dry-run, lint, critic, then reviewed by a person.