Healthcare Service Disruption and Data Exfiltration
An adversary has gained access to clinical systems via phishing or supply chain compromise and is now exfiltrating patient data or preparing to deploy ransomware.
Based on research by Proofpoint 2026-10-14 12 steps · 5 queries T1041 T1195 T1486 T1566
Brief
Why This Hunt Matters
The Proofpoint report, "Healthcare Sees No Relief from Cyberattacks Disrupting Patient Care" (https://www.proofpoint.com/us/newsroom/press-releases/cyber-insecurity-in-healthcare-report-2026), highlights how initial access via phishing and supply chain compromises leads to service outages. These disruptions directly impact patient safety. We designed this hunt to identify the specific footprint of these disruptions before they reach the point of total service failure.
Scoping the Clinical Fleet
The hunt begins by identifying the most critical assets. The first query searches software inventory for specific clinical packages like Epic, Cerner, or Meditech. By isolating Electronic Health Record (EHR) servers and diagnostic workstations, the hunt focuses telemetry analysis where the risk to patient care is highest.
Verifying Initial Access
Once scoped, the hunt runs two parallel checks. One query examines authentication logs for successful sign-ins that bypassed multi-factor authentication or originated from unusual geographic locations. Simultaneously, another query looks for rare process executions on these clinical hosts. This identifies potential supply chain tampering where an adversary disguises malware as a legitimate system utility or updater.
Assessing Clinical Impact
The hunt then pivots to find evidence of the intrusion's goal. It monitors outbound network traffic for large data transfers to destinations that are rare across the fleet. At the same time, it looks for file activity bursts, where a single process modifies or deletes thousands of files in a short window. This pattern indicates active data wiping or ransomware encryption.
Correlating the Lifecycle
An analyst or agent assesses these findings together. Instead of alerting on a single rare process, the hunt correlates access, exfiltration, and impact signals. This lifecycle approach helps distinguish legitimate administrative maintenance from a coordinated attack on healthcare operations.
Blind Spots
This hunt has two primary limitations. First, if an adversary uses deep process nesting, the EDR telemetry might truncate the ancestry, hiding the original injection point. Second, while the hunt detects high-volume network transfers, it cannot inspect the contents of encrypted HTTPS traffic. Data leaked via AI prompts or specific PII/PHI transfers remains invisible at the network connection level.
How to Run the Hunt
This hunt is an open-source playbook in the hunt.md format. You can import it into Huntbase or any compatible runtime. It follows a phased flow: it first defines the scope and then executes targeted evidence gathering across authentication, process, network, and file surfaces.
Steps
-
Discover clinical assets
Query · scopingIdentify hosts running healthcare applications to focus the hunt on systems where disruption would impact patient care.
reads hb_software_inventorysqlSELECT DISTINCT device_hostname, package_name, package_version FROM hb_software_inventory WHERE instr(',' || '{{clinical_software_keywords}}' || ',', ',' || LOWER(package_name) || ',') > 0What a hit looks like. A list of hosts running clinical software. Silence means no matching packages were found in inventory.
-
Phishing and BEC sign-in check
Query · baselineIdentify successful sign-ins to clinical hosts that bypassed MFA or originated from unusual sources.
reads hb_auth_signinsqlSELECT device_hostname, actor_user_name, src_endpoint_ip, src_location_country, mfa, time FROM hb_auth_signin WHERE status_id = 1 AND (mfa = 'false' OR mfa IS NULL) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') ORDER BY time DESCWhat a hit looks like. A concentration of MFA-less logins on a single host. Rare source countries indicate potential account takeover.
-
Clinical supply chain process check
Query · detection candidateFind rare processes on the scoped clinical hosts, which may indicate a supply-chain compromise where malware is disguised as normal system operations.
reads hb_process_activitysqlSELECT device_hostname, process_path, process_name, parent_process_name, process_cmd_line, COUNT(*) as occurrence_count FROM hb_process_activity WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, process_path HAVING occurrence_count < 3 ORDER BY occurrence_count ASCWhat a hit looks like. A rare binary path on a host that belongs to the clinical scope. Absence suggests only common fleet-wide binaries are running.
-
Early stage triage
Agent triageAssess whether any clinical hosts show concurrent signs of access compromise before proceeding to search for impact.
-
Exfiltration network check
Query · enrichmentIdentify high-volume outbound network traffic to rare destinations from clinical hosts that may indicate data exfiltration.
reads hb_network_connectionsqlSELECT device_hostname, dst_endpoint_ip, traffic_bytes, process_name, time FROM hb_network_connection WHERE direction = 'outbound' AND traffic_bytes > {{large_transfer_threshold}} AND state_kind = 'log' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') ORDER BY traffic_bytes DESCWhat a hit looks like. Outbound flows exceeding 100MB to rare destination IPs. Absence of rows means no single flow met the threshold or all targets are fleet-wide common.
-
Ransomware file burst
Query · triageDetect mass file modifications (renames or deletions) on clinical hosts that indicate ransomware encryption activity.
reads hb_file_activitysqlSELECT device_hostname, process_name, activity_name, COUNT(*) as file_count, MIN(time) as burst_start FROM hb_file_activity WHERE activity_id IN (3, 4, 5) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, process_name, activity_name HAVING file_count > 1000 ORDER BY file_count DESCWhat a hit looks like. A single process modifying thousands of files. A hit suggests active encryption or data wiping.
-
Final intrusion assessment
Agent triageCorrelate early access signals with impact evidence to confirm a full intrusion chain threatening patient care.
-
Route on verdict
DecisionDirect the response based on the agent's final assessment of the intrusion status.
-
Isolate host
Response actionImmediately contain the suspected intrusion to prevent further exfiltration or encryption of clinical data.
-
Analyst validation
Analyst taskPerform manual review of the cited evidence to confirm the intrusion chain and update hunt parameters.
-
Close out
Analyst taskFinalize the hunt by documenting results and any identified coverage gaps.
Coverage
Scenario coverage
| Stage | Covered | How, or why not |
|---|---|---|
| Business Email Compromise and Phishing T1566 |
Yes | phishing-signin-check |
| Supply Chain Compromise T1195 |
Yes | supply-chain-process-check |
| Data Exfiltration and Leakage T1041 |
Yes | exfiltration-network-check |
| Ransomware Data Encryption T1486 |
Yes | ransomware-file-burst |
Blind spots
- Needs EDR process tree depth exceeding 10 levels. Short process command lines or truncated ancestry may hide the original injection point of a supply chain compromise. It would answer Did a legitimate clinical updater spawn the malicious child process?. Remediation: Increase EDR process telemetry depth and ensure full command line capture for clinical binaries.
- Needs hb_http_activity with decrypted payload visibility. The current network connection surface only shows volume; it cannot see the content of HTTPS POST requests to AI service providers. It would answer Is sensitive patient data being leaked via AI prompts in encrypted HTTPS requests?. Remediation: Deploy TLS inspection on clinical segments to monitor for PII/PHI leakage via web services.
Parameters & data
Parameters
| Parameter | Type | Default | What it is |
|---|---|---|---|
clinical_software_keywords | list[string] | epic, cerner, meditech, allscripts, pacs, dicom | Exact package names of clinical software to identify sensitive hosts. |
large_transfer_threshold | number | 100000000 | Threshold in bytes (default 100MB) for outbound network traffic volume. |
lookback_days | number | 14 | Days of history to examine. |
scope_hosts | list[host] | — | Hostnames identified in the scoping step; leave empty for a full-estate hunt. |
Telemetry
| Source | Category | Telemetry |
|---|---|---|
| Endpoint telemetry (hb_ surfaces) | endpoint | endpoint |
| Identity / sign-in telemetry | identity | identity |
| Network telemetry | network | network |
Source
---
analysis: A standard detection rule might fire on a single rare process or a large
file modification. This hunt correlates those signals across the entire attack lifecycle
(Phishing -> Supply Chain -> Exfiltration -> Encryption) and uses clinical inventory
context to distinguish maintenance from an intrusion.
blind_spots:
- id: missing-process-ancestry
owner: Endpoint Security
question: Did a legitimate clinical updater spawn the malicious child process?
remediation: Increase EDR process telemetry depth and ensure full command line capture
for clinical binaries.
requires: EDR process tree depth exceeding 10 levels
risk: Short process command lines or truncated ancestry may hide the original injection
point of a supply chain compromise.
stage: initial-access-supply-chain
- id: encrypted-exfiltration-visibility
owner: Network Engineering
question: Is sensitive patient data being leaked via AI prompts in encrypted HTTPS
requests?
remediation: Deploy TLS inspection on clinical segments to monitor for PII/PHI leakage
via web services.
requires: hb_http_activity with decrypted payload visibility
risk: The current network connection surface only shows volume; it cannot see the
content of HTTPS POST requests to AI service providers.
stage: exfiltration-data-leakage
coverage:
- stage: initial-access-phishing-and-bec
status: covered
steps:
- phishing-signin-check
- stage: initial-access-supply-chain
status: covered
steps:
- supply-chain-process-check
- stage: exfiltration-data-leakage
status: covered
steps:
- exfiltration-network-check
- stage: impact-ransomware-encryption
status: covered
steps:
- ransomware-file-burst
guardrails:
claims: no_unsupported
evidence: citation_required
missing_data: not_benign
telemetry: untrusted
hunt:
applicability: campaign-specific
handoff: keep-as-periodic-hunt
justification: Cyber disruption to healthcare operations directly threatens patient
safety. This hunt provides assurance that critical systems are not currently subject
to the high-impact attack patterns (Ransomware, BEC, Supply Chain) highlighted
in the 2026 report.
methodology: model-assisted
trigger: intel-report
hypothesis: An adversary has gained access to clinical systems via phishing or supply
chain compromise and is now exfiltrating patient data or preparing to deploy ransomware.
labels:
- hunt
- attack.t1566
- attack.t1195
- attack.t1041
- attack.t1486
- exfiltration
- impact
- initial access
name: Healthcare Service Disruption and Data Exfiltration
parameters:
clinical_software_keywords:
default:
- epic
- cerner
- meditech
- allscripts
- pacs
- dicom
description: Exact package names of clinical software to identify sensitive hosts.
from:
kind: manual
observed: '2026-10-13'
ref: healthcare-software-list
type: list[string]
large_transfer_threshold:
default: '100000000'
description: Threshold in bytes (default 100MB) for outbound network traffic volume.
from:
kind: manual
observed: '2026-10-13'
ref: network-policy
type: number
lookback_days:
default: '14'
description: Days of history to examine.
from:
kind: manual
observed: '2026-10-13'
ref: hunt-standard-config
type: number
scope_hosts:
default: []
description: Hostnames identified in the scoping step; leave empty for a full-estate
hunt.
from:
kind: manual
observed: '2026-10-13'
ref: scoping-output
type: list[host]
provenance:
authors:
- name: Huntbase hunt generation
org: huntbase.io
generated:
by: huntbase-hunt-generation
from: https://www.proofpoint.com/us/newsroom/press-releases/cyber-insecurity-in-healthcare-report-2026
gates:
- dry-run
- lint
model: hb_google/gemini-3-flash-preview
rationale: Start with hosts identified by the clinical_software_keywords list. Focus
on Electronic Health Record (EHR) servers and diagnostic workstations. Ensure that
domain controllers are included when assessing MFA-less sign-ins.
references:
- name: "Proofpoint \u2014 Healthcare Sees No Relief from Cyberattacks Disrupting\
\ Patient Care"
url: https://www.proofpoint.com/us/newsroom/press-releases/cyber-insecurity-in-healthcare-report-2026
related:
- hunt: clinical-data-access-audit
reason: This hunt looks for mass exfiltration behavior; a sibling hunt is needed
to audit individual credential access to database tables via application logs.
relation: out-of-scope-alternative
scenario:
stages:
- name: Business Email Compromise and Phishing
observables:
- Business email compromise (BEC) attempts
- AI-generated phishing
- Social engineering lures
- Unauthorized cloud account access
slug: initial-access-phishing-and-bec
tactic: initial-access
techniques:
- T1566
- name: Supply Chain Compromise
observables:
- Compromised AI vendors
- Malicious software dependencies
- Untrusted third-party service integration
slug: initial-access-supply-chain
tactic: initial-access
techniques:
- T1195
- name: Data Exfiltration and Leakage
observables:
- Data leakage through AI prompts
- Exfiltration of sensitive healthcare information
- High-volume outbound network traffic
- Unauthorized file access
slug: exfiltration-data-leakage
tactic: exfiltration
techniques:
- T1041
- name: Ransomware Data Encryption
observables:
- Mass file encryption
- Deployment of ransomware payloads
- Disruption of clinical applications
- Encryption of patient records
slug: impact-ransomware-encryption
tactic: impact
techniques:
- T1486
summary: "Healthcare organizations are facing a surge in cyberattacks\u2014including\
\ ransomware, supply chain compromises, and business email compromise\u2014that\
\ increasingly disrupt patient care and cause significant financial and operational\
\ strain. The rise of unsanctioned AI tools and vulnerable cloud accounts has\
\ further expanded the attack surface, leading to frequent data exfiltration and\
\ clinical service delays."
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
identity:
category: identity
name: Identity / sign-in telemetry
telemetry:
- identity
network:
category: network
name: Network telemetry
telemetry:
- network
tlp: clear
type: investigation
---
# Healthcare Service Disruption and Data Exfiltration
This hunt follows the attack lifecycle identified in the 2026 Cyber Insecurity in Healthcare report. It identifies critical healthcare assets and then monitors for signs of initial access, such as Business Email Compromise and supply chain anomalies. The hunt then pivots to detect high-volume exfiltration and the mass file encryption characteristic of ransomware, providing a phased assessment of the intrusion's progression on clinical hosts.
## discover-clinical-assets
<!-- Discover clinical assets -->
Identify hosts running healthcare applications to focus the hunt on systems where disruption would impact patient care.
```sqlite target=endpoint role=scoping params=(clinical_software_keywords=clinical_software_keywords)
~~~yaml
expected: A list of hosts running clinical software. Silence means no matching packages
were found in inventory.
reads:
- device_hostname
- package_name
- package_version
silence: evidence_of_absence
source: hb_software_inventory
verified: dry-run
verified_at: '2026-10-14'
~~~
SELECT DISTINCT device_hostname, package_name, package_version FROM hb_software_inventory WHERE instr(',' || '{{clinical_software_keywords}}' || ',', ',' || LOWER(package_name) || ',') > 0
```
## parallel-access-check
<!-- Parallel initial access check -->
parallel:
- → phishing-signin-check
- → supply-chain-process-check
join: → early-stage-triage
## phishing-signin-check
<!-- Phishing and BEC sign-in check -->
Identify successful sign-ins to clinical hosts that bypassed MFA or originated from unusual sources.
```sqlite target=identity role=baseline params=(scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
baseline:
compare: first_seen
window: '{{lookback_days}}d'
expected: A concentration of MFA-less logins on a single host. Rare source countries
indicate potential account takeover.
prevalence:
by: src_location_country
key:
- actor_user_name
rare_below: 2
reads:
- device_hostname
- actor_user_name
- src_endpoint_ip
- src_location_country
- mfa
- time
silence: not_evidence_of_absence
source: hb_auth_signin
verified: dry-run
verified_at: '2026-10-14'
~~~
SELECT device_hostname, actor_user_name, src_endpoint_ip, src_location_country, mfa, time FROM hb_auth_signin WHERE status_id = 1 AND (mfa = 'false' OR mfa IS NULL) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') ORDER BY time DESC
```
## supply-chain-process-check
<!-- Clinical supply chain process check -->
Find rare processes on the scoped clinical hosts, which may indicate a supply-chain compromise where malware is disguised as normal system operations.
```sqlite target=endpoint role=detection-candidate params=(scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
baseline:
compare: first_seen
window: '{{lookback_days}}d'
expected: A rare binary path on a host that belongs to the clinical scope. Absence
suggests only common fleet-wide binaries are running.
prevalence:
by: device_hostname
key:
- process_path
rare_below: 3
reads:
- device_hostname
- process_path
- process_name
- parent_process_name
- process_cmd_line
- time
silence: not_evidence_of_absence
source: hb_process_activity
verified: dry-run
verified_at: '2026-10-14'
~~~
SELECT device_hostname, process_path, process_name, parent_process_name, process_cmd_line, COUNT(*) as occurrence_count FROM hb_process_activity WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, process_path HAVING occurrence_count < 3 ORDER BY occurrence_count ASC
```
## early-stage-triage
<!-- Early stage triage -->
```agent target=hunter
cite: required
context:
- discover-clinical-assets
- phishing-signin-check
- supply-chain-process-check
max_iterations: 4
objective: Determine if any host in the clinical scope shows signs of BEC or supply
chain tampering based on the sign-in and process evidence.
success_criteria: A per-host verdict of suspicious | benign for initial access stages.
tools:
- endpoint
- identity
- network
```
## parallel-impact-check
<!-- Parallel impact and exfiltration check -->
parallel:
- → exfiltration-network-check
- → ransomware-file-burst
join: → final-intrusion-assessment
## exfiltration-network-check
<!-- Exfiltration network check -->
Identify high-volume outbound network traffic to rare destinations from clinical hosts that may indicate data exfiltration.
```sqlite target=network role=enrichment params=(large_transfer_threshold=large_transfer_threshold, scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
expected: Outbound flows exceeding 100MB to rare destination IPs. Absence of rows
means no single flow met the threshold or all targets are fleet-wide common.
prevalence:
by: device_hostname
key:
- dst_endpoint_ip
rare_below: 2
reads:
- device_hostname
- dst_endpoint_ip
- traffic_bytes
- process_name
- time
silence: not_evidence_of_absence
source: hb_network_connection
verified: dry-run
verified_at: '2026-10-14'
~~~
SELECT device_hostname, dst_endpoint_ip, traffic_bytes, process_name, time FROM hb_network_connection WHERE direction = 'outbound' AND traffic_bytes > {{large_transfer_threshold}} AND state_kind = 'log' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') ORDER BY traffic_bytes DESC
```
## ransomware-file-burst
<!-- Ransomware file burst -->
Detect mass file modifications (renames or deletions) on clinical hosts that indicate ransomware encryption activity.
```sqlite target=endpoint role=triage params=(scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
expected: A single process modifying thousands of files. A hit suggests active encryption
or data wiping.
reads:
- device_hostname
- process_name
- activity_name
- time
silence: not_evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-10-14'
~~~
SELECT device_hostname, process_name, activity_name, COUNT(*) as file_count, MIN(time) as burst_start FROM hb_file_activity WHERE activity_id IN (3, 4, 5) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, process_name, activity_name HAVING file_count > 1000 ORDER BY file_count DESC
```
## final-intrusion-assessment
<!-- Final intrusion assessment -->
```agent target=hunter
cite: required
context:
- early-stage-triage
- exfiltration-network-check
- ransomware-file-burst
max_iterations: 6
objective: Synthesize findings from initial access triage with follow-on network exfiltration
and ransomware file bursts to determine the severity and status of the intrusion.
success_criteria: A final verdict of malicious | suspicious | benign per host, with
a description of the attack stage.
tools:
- endpoint
- identity
- network
```
## route-on-verdict
<!-- Route on verdict -->
if~: "the final-intrusion-assessment verdict is malicious for at least one host" (confidence: high, judge=hunter)
then: → isolate-host
indeterminate: → analyst-validation
unavailable: → analyst-validation (blind_spot: missing-process-ancestry)
else: → close-out
## isolate-host
<!-- Isolate host -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the host and preserve its memory state for forensic analysis. Notify clinical operations of the system downtime.
```
→ analyst-validation
## analyst-validation
<!-- Analyst validation -->
```manual target=analyst
Review the clinical hosts identified. Verify if the network traffic and file activity are legitimate clinical operations or malicious behavior. Document tuning recommendations for the sign-in and file burst queries.
```
→ close-out
## close-out
<!-- Close out -->
```manual target=analyst
Record what was examined and what was not visible. If no intrusion was found, highlight the clinical systems that were verified as secure.
```
→ 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, then reviewed by a person.