← All hunts high TLP:CLEAR

TA488 OWA XSS Exploitation and OWAReaper Network Operations

An intruder has exploited CVE-2026-42897 in Outlook Web Access to deploy the OWAReaper implant, evidenced by anomalous sign-ins, OWA session data access, and covert exfiltration via image CDNs and GitHub.

Based on research by Proofpoint 2026-09-20 13 steps · 5 queries T1021.001 T1041 T1071.001 T1078 T1090.003 T1102 T1190 T1572

Brief

Why this hunt

Proofpoint recently detailed TA488's use of a 'half-click' XSS exploit to deploy the OWAReaper implant in their report, Cleaning Out Inboxes: TA488 Comes to Outlook with Another Half-Click Exploit. The actor uses an XSS vulnerability to inject a persistent implant into OWA. Because the implant resides in the browser's storage and communicates via legitimate services like GitHub and common image CDNs, standard perimeter blocks rarely catch it. This persistence survives credential resets and device re-imaging, making it a critical threat to long-term mailbox confidentiality.

How the hunt flows

The hunt begins by identifying the attack surface. The first query scopes the environment for Exchange servers with unresolved vulnerability findings for CVE-2026-42897. This narrows the investigation to infrastructure susceptible to the half-click XSS trigger.

The second phase focuses on authentication and session interaction. The analyst baselines OWA sign-in events to find rare source IPs or unusual login frequencies. Simultaneously, the hunt monitors for requests to sessiondata.ashx, a specific handler OWAReaper uses to steal user identity and configuration details. This phase aims to identify potential beachheads where an account was already compromised to deliver the exploit.

The third phase investigates network operations typical of the implant. The hunt looks for automated polling of the GitHub Search API, which the actor uses for command and control. It also scans for high-fidelity indicators of exfiltration: requests to acocdn.com or legitimate image CDNs like weserv.nl and slack-imgs.com that carry encrypted URI paths or specific filenames like msanalytics.json.

A final triage step brings these surfaces together. An analyst evaluates whether the hosts identified in the scoping phase correlate with the anomalous logins and the specific C2 network patterns. This behavioral approach identifies the full infection chain rather than relying on a single static indicator.

What the hunt cannot see

This hunt relies on network and authentication telemetry. It cannot see the implant's code inside the browser's localStorage or IndexedDB without direct endpoint forensics. Furthermore, if the initial exploit email is unavailable, the analyst cannot confirm the exact HTML trigger or lure used to initiate the XSS. The hunt identifies the presence of the implant through its network behavior, not by analyzing the browser's memory.

Steps

  1. Identify Vulnerable OWA Infrastructure

    Query · scoping

    Find systems reporting the CVE-2026-42897 vulnerability to scope the hunt to susceptible OWA targets.

    reads hb_vulnerability_findingsql
    SELECT device_uid, affected_package_name, affected_package_version, severity, first_seen FROM hb_vulnerability_finding WHERE cve_uid = '{{cve_id}}' AND status = 'UNRESOLVED'

    What a hit looks like. A list of device UIDs representing vulnerable Exchange servers. Absence suggests the estate is patched or scanning is incomplete.

  2. Anomalous OWA Authentication Events

    Query · baseline

    Baseline OWA sign-ins to identify rare source IPs or high-frequency activity typical of compromised account abuse.

    reads hb_auth_signinsql
    SELECT actor_user_name, src_endpoint_ip, metadata_product, COUNT(*) as login_count, MIN(time) as first_seen FROM hb_auth_signin WHERE (LOWER(dst_endpoint_name) LIKE '%owa%' OR LOWER(dst_endpoint_name) LIKE '%outlook%') AND status_id = 1 AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY actor_user_name, src_endpoint_ip, metadata_product HAVING login_count < 10 ORDER BY login_count ASC

    What a hit looks like. Rare login pairs from external IPs to OWA. These may represent the TA488 beachhead or the source of lure emails.

  3. Access to OWA Session Data Blobs

    Query · enrichment

    Detect requests to sessiondata.ashx, which OWAReaper accesses to steal user identity and configuration info.

    reads hb_http_activitysql
    SELECT device_hostname, actor_user_name, url_path, url_hostname, user_agent, time FROM hb_http_activity WHERE LOWER(url_path) LIKE '%/owa/sessiondata.ashx%' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. HTTP requests to the OWA session handler. While OWA uses this normally, it provides a pivot for an analyst to correlate with exfiltration activity.

  4. Triage Initial Access and OWA Interaction

    Agent triage

    Evaluate whether vulnerable hosts or specific user accounts show signs of anomalous access coinciding with OWA session extraction.

  5. GitHub Commit Search API Polling

    Query · enrichment

    Find systems querying GitHub's search API for target email identifiers, matching OWAReaper's primary C2 method.

    reads hb_http_activitysql
    SELECT device_hostname, url_hostname, url_path, url_query, time FROM hb_http_activity WHERE LOWER(url_hostname) = 'api.github.com' AND (LOWER(url_path) LIKE '%/search/commits%' OR LOWER(url_path) LIKE '%/search/code%') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. Frequent, automated-looking queries to api.github.com. Look for encoded strings or email addresses in the url_query.

  6. Exfiltration via Image CDNs and acocdn.com

    Query · detection candidate

    Find the high-fidelity indicators of OWAReaper exfiltration: proxied asset requests via CDNs or direct POSTs to acocdn.com.

    reads hb_http_activitysql
    SELECT device_hostname, url_hostname, url_path, http_method, user_agent, time FROM hb_http_activity WHERE (instr(',' || '{{cdn_domains}}' || ',', ',' || LOWER(url_hostname) || ',') > 0 OR LOWER(url_hostname) = '{{actor_domain}}') AND (LOWER(url_path) LIKE '/assets/v1_%' OR LOWER(url_path) LIKE '%msanalytics.json%' OR LOWER(url_path) LIKE '%ews_extensions_debug.json%' OR LOWER(url_path) LIKE '%poison_wizard_error_dom.html%') AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. Requests to legitimate CDN domains with encrypted URI paths or POST requests to acocdn.com containing the specific exfiltration filenames.

  7. Triage Full OWAReaper Infection Chain

    Agent triage

    Combine the early access evidence with follow-on network operations to confirm an active OWAReaper implant.

  8. Route on Full Triage Verdict

    Decision

    Route to containment if the triage identifies malicious OWAReaper activity.

  9. Isolate Host and Revoke Exchange Permissions

    Response action

    Halt data exfiltration and remove the actor's server-side persistence.

  10. Detailed Forensic Investigation

    Analyst task

    Manually inspect OWA settings and local browser storage for OWAReaper artifacts.

  11. Verify Remediation and Patching

    Analyst task

    Ensure the vulnerability is patched and all persistence methods are cleared.

  12. Close Out Hunt

    Analyst task

    Document findings and close the hunt.

Coverage

Scenario coverage

StageCoveredHow, or why not
Abuse of Compromised Accounts
T1078
Yes anomalous-owa-logons
OWA XSS Exploitation
T1190
Yes vulnerable-owa-hosts, owa-session-data-access
C2 via GitHub Search API
T1102 · T1071.001
Yes github-c2-polling
Multi-protocol Exfiltration
T1090.003 · T1572 · T1041
Yes cdn-proxied-exfiltration
Browser and Mailbox Persistence
T1137 · T1098.002
Out of scope Belongs to a dedicated hunt for Exchange mailbox permission and storage persistence.

Blind spots

  • Needs direct endpoint browser forensics. The hunt cannot see the actual persistence mechanism on the client side; we rely on the network aftermath (C2/exfil). It would answer Are OWAReaper payloads present in the browser's localStorage or IndexedDB?.
  • Needs email security gateway logs. Without the email body, we cannot confirm the initial XSS trigger (onload handlers in icons). It would answer What were the specific lure subjects and HTML contents of the delivered exploit emails?.

Parameters & data

Parameters

ParameterTypeDefaultWhat it is
actor_domaindomainacocdn.comThe primary actor-controlled C2 and exfiltration relay domain.
cdn_domainslist[domain]weserv.nl, images.weserv.nl, i3.wp.com, slack-imgs.comLegitimate CDN domains used by OWAReaper to proxy exfiltration.
cve_idstringCVE-2026-42897The OWA XSS vulnerability ID exploited by TA488.
lookback_daysnumber14Days of history to examine for exploitation and C2 activity.
scope_hostslist[host]Specific hosts to narrow the hunt, such as known Exchange servers or user endpoints.

Telemetry

SourceCategoryTelemetry
Endpoint telemetry (hb_ surfaces)endpointendpoint
Identity / sign-in telemetryidentityidentity
Web server / proxy logssiemnetwork

Source

Download hunt.md Definition (JSON) An open hunt.md file; it runs anywhere that reads the format.
---
analysis: A simple rule might detect requests to acocdn.com, but this hunt pivots
  from vulnerable infrastructure to anomalous authentication and then correlates GitHub
  C2 polling with legitimate CDN usage. This multi-stage behavioural chain is necessary
  to confirm the full OWAReaper infection and evict server-side persistence.
blind_spots:
- id: owa-storage-blind-spot
  question: Are OWAReaper payloads present in the browser's localStorage or IndexedDB?
  requires: direct endpoint browser forensics
  risk: The hunt cannot see the actual persistence mechanism on the client side; we
    rely on the network aftermath (C2/exfil).
  stage: owareaper-persistence-and-privilege
- id: mail-body-content-blind-spot
  question: What were the specific lure subjects and HTML contents of the delivered
    exploit emails?
  requires: email security gateway logs
  risk: Without the email body, we cannot confirm the initial XSS trigger (onload
    handlers in icons).
  stage: owa-xss-exploitation
coverage:
- stage: compromised-account-access
  status: covered
  steps:
  - anomalous-owa-logons
- stage: owa-xss-exploitation
  status: covered
  steps:
  - vulnerable-owa-hosts
  - owa-session-data-access
- stage: c2-via-github-polling
  status: covered
  steps:
  - github-c2-polling
- stage: covert-data-exfiltration
  status: covered
  steps:
  - cdn-proxied-exfiltration
- reason: Belongs to a dedicated hunt for Exchange mailbox permission and storage
    persistence.
  stage: owareaper-persistence-and-privilege
  status: out_of_scope
guardrails:
  claims: no_unsupported
  evidence: citation_required
  missing_data: not_benign
  telemetry: untrusted
hunt:
  applicability: campaign-specific
  handoff: promote-to-detection
  justification: TA488 is a Russia-aligned threat actor using sophisticated OWA implants
    (OWAReaper) that achieve server-side persistence. This persistence survives credential
    resets and device re-imaging, making it a critical threat to long-term mailbox
    confidentiality.
  methodology: model-assisted
  trigger: intel-report
hypothesis: An intruder has exploited CVE-2026-42897 in Outlook Web Access to deploy
  the OWAReaper implant, evidenced by anomalous sign-ins, OWA session data access,
  and covert exfiltration via image CDNs and GitHub.
labels:
- hunt
- attack.t1190
- attack.t1071.001
- attack.t1102
- attack.t1090.003
- attack.t1572
- attack.t1041
- attack.t1078
- attack.t1021.001
name: TA488 OWA XSS Exploitation and OWAReaper Network Operations
parameters:
  actor_domain:
    default: acocdn.com
    description: The primary actor-controlled C2 and exfiltration relay domain.
    from:
      kind: article
      observed: '2026-07-22'
      ref: Proofpoint-TA488
    type: domain
  cdn_domains:
    default:
    - weserv.nl
    - images.weserv.nl
    - i3.wp.com
    - slack-imgs.com
    description: Legitimate CDN domains used by OWAReaper to proxy exfiltration.
    from:
      kind: article
      observed: '2026-07-22'
      ref: Proofpoint-TA488
    type: list[domain]
  cve_id:
    default: CVE-2026-42897
    description: The OWA XSS vulnerability ID exploited by TA488.
    from:
      kind: article
      observed: '2026-07-22'
      ref: Proofpoint-TA488
    type: string
  lookback_days:
    default: '14'
    description: Days of history to examine for exploitation and C2 activity.
    from:
      kind: manual
      observed: '2026-07-25'
      ref: hunt-standard
    type: number
  scope_hosts:
    default: []
    description: Specific hosts to narrow the hunt, such as known Exchange servers
      or user endpoints.
    from:
      kind: manual
      ref: analyst-scoping
    type: list[host]
provenance:
  authors:
  - name: Huntbase hunt generation
    org: huntbase.io
  generated:
    by: huntbase-hunt-generation
    from: https://www.proofpoint.com/us/blog/threat-insight/cleaning-out-inboxes-ta488-comes-outlook-another-half-click-exploit
    gates:
    - dry-run
    - lint
    - critic
    model: hb_google/gemini-3-flash-preview
rationale: Scope the hunt to all internet-facing Microsoft Exchange servers and user
  endpoints known to access OWA. Prioritize servers where vulnerability findings for
  CVE-2026-42897 are unresolved.
references:
- name: "Proofpoint \u2014 Cleaning Out Inboxes: TA488 Comes to Outlook with Another\
    \ Half-Click Exploit"
  url: https://www.proofpoint.com/us/blog/threat-insight/cleaning-out-inboxes-ta488-comes-outlook-another-half-click-exploit
related:
- hunt: owa-permission-delegation-anomalies
  reason: OWAReaper grants itself Owner permissions to mail folders; this requires
    hb_auth_signin or Exchange audit logs specifically for permission changes.
  relation: out-of-scope-alternative
scenario:
  stages:
  - name: Abuse of Compromised Accounts
    observables:
    - High volume outbound mail from compromised internal accounts
    - Sign-ins from unusual source IP addresses
    slug: compromised-account-access
    tactic: initial-access
    techniques:
    - T1078
  - name: OWA XSS Exploitation
    observables:
    - CVE-2026-42897
    - Lure emails with subjects such as 'Semiconductor Supply Chain Indicators' or
      'Global Tourism Indicators'
    - HTML message bodies containing icons with onload= event handlers
    - Base64 encoded JavaScript payload blobs in HTML icons
    slug: owa-xss-exploitation
    tactic: initial-access
    techniques:
    - T1190
  - name: Browser and Mailbox Persistence
    observables:
    - localStorage entries under PageDataPayload.OwaUserDefaultSettings
    - Modification of OwaFrontendSyncState
    - UpdateFolder API calls to grant 'Owner' permissions to the 'Default' user alias
    - Abuse of GetClientAccessToken for OAuth token theft
    slug: owareaper-persistence-and-privilege
    tactic: persistence
    techniques:
    - T1137
    - T1098.002
  - name: C2 via GitHub Search API
    observables:
    - HTTPS requests to GitHub Commit Search API
    - API queries containing the victim target email address
    - Encrypted command strings in GitHub commit messages
    slug: c2-via-github-polling
    tactic: command-and-control
    techniques:
    - T1102
    - T1071.001
  - name: Multi-protocol Exfiltration
    observables:
    - HTTP requests proxied through images.weserv.nl, i3.wp.com, and slack-imgs.com
    - HTTPS requests to acocdn.com
    - URI paths matching /assets/v1_<base64_aes_data>
    - DNS label tunneling to actor-controlled domains
    - 'HTTP POST of files: msanalytics.json, ews_extensions_debug.json, poison_wizard_error_dom.html'
    - Requests to /owa/sessiondata.ashx
    slug: covert-data-exfiltration
    tactic: exfiltration
    techniques:
    - T1090.003
    - T1572
    - T1041
  summary: TA488 used a series of compromised accounts to deliver emails exploiting
    CVE-2026-42897, an XSS vulnerability in Outlook Web Access, to deploy the OWAReaper
    JavaScript implant. OWAReaper achieves stealthy persistence by modifying OWA settings
    and mailbox permissions, while utilizing GitHub and legitimate image CDNs for
    command retrieval and covert data exfiltration.
severity: high
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
  web:
    category: siem
    name: Web server / proxy logs
    telemetry:
    - network
tlp: clear
type: investigation
---


# TA488 OWA XSS Exploitation and OWAReaper Network Operations

This hunt targets the infection chain of TA488's OWAReaper implant. It begins by identifying hosts vulnerable to CVE-2026-42897 and correlating them with anomalous OWA authentication events and session data access. The second phase hunts for the implant's unique C2 polling via the GitHub Search API and its exfiltration mechanism, which proxies data through legitimate image CDNs (weserv.nl, wp.com, slack-imgs.com) to an actor-controlled domain (acocdn.com). The hunt concludes with a multi-surface triage to confirm persistent server-side mailbox compromise.

## vulnerable-owa-hosts
<!-- Identify Vulnerable OWA Infrastructure -->
Find systems reporting the CVE-2026-42897 vulnerability to scope the hunt to susceptible OWA targets.

```sqlite target=endpoint role=scoping params=(cve_id=cve_id)
~~~yaml
expected: A list of device UIDs representing vulnerable Exchange servers. Absence
  suggests the estate is patched or scanning is incomplete.
reads:
- affected_package_name
- affected_package_version
- cve_uid
- device_uid
- first_seen
- severity
- status
silence: not_evidence_of_absence
source: hb_vulnerability_finding
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_uid, affected_package_name, affected_package_version, severity, first_seen FROM hb_vulnerability_finding WHERE cve_uid = '{{cve_id}}' AND status = 'UNRESOLVED'
```

## early-stage-activity
<!-- Hunt for Initial Access and Exploitation Evidence -->
parallel:
- → anomalous-owa-logons
- → owa-session-data-access
join: → triage-initial-access

## anomalous-owa-logons
<!-- Anomalous OWA Authentication Events -->
Baseline OWA sign-ins to identify rare source IPs or high-frequency activity typical of compromised account abuse.

```sqlite target=identity role=baseline params=(lookback_days=lookback_days)
~~~yaml
baseline:
  compare: first_seen
  window: '{{lookback_days}}d'
expected: Rare login pairs from external IPs to OWA. These may represent the TA488
  beachhead or the source of lure emails.
prevalence:
  by: actor_user_name
  key:
  - src_endpoint_ip
  rare_below: 10
reads:
- actor_user_name
- dst_endpoint_name
- metadata_product
- src_endpoint_ip
- status_id
- time
silence: not_evidence_of_absence
source: hb_auth_signin
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT actor_user_name, src_endpoint_ip, metadata_product, COUNT(*) as login_count, MIN(time) as first_seen FROM hb_auth_signin WHERE (LOWER(dst_endpoint_name) LIKE '%owa%' OR LOWER(dst_endpoint_name) LIKE '%outlook%') AND status_id = 1 AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY actor_user_name, src_endpoint_ip, metadata_product HAVING login_count < 10 ORDER BY login_count ASC
```

## owa-session-data-access
<!-- Access to OWA Session Data Blobs -->
Detect requests to sessiondata.ashx, which OWAReaper accesses to steal user identity and configuration info.

```sqlite target=web role=enrichment params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
expected: HTTP requests to the OWA session handler. While OWA uses this normally,
  it provides a pivot for an analyst to correlate with exfiltration activity.
reads:
- actor_user_name
- device_hostname
- time
- url_hostname
- url_path
- user_agent
silence: not_evidence_of_absence
source: hb_http_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, actor_user_name, url_path, url_hostname, user_agent, time FROM hb_http_activity WHERE LOWER(url_path) LIKE '%/owa/sessiondata.ashx%' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```

## triage-initial-access
<!-- Triage Initial Access and OWA Interaction -->
```agent target=hunter
cite: required
context:
- vulnerable-owa-hosts
- anomalous-owa-logons
- owa-session-data-access
max_iterations: 3
objective: Determine if any host or user account identified in the early stages likely
  represents a TA488 beachhead.
success_criteria: A verdict citing specific users and IPs that should be tracked into
  the network operations phase.
tools:
- endpoint
- identity
- web
```

## follow-on-network-ops
<!-- Hunt for OWAReaper C2 and Exfiltration -->
parallel:
- → github-c2-polling
- → cdn-proxied-exfiltration
join: → triage-full-infection

## github-c2-polling
<!-- GitHub Commit Search API Polling -->
Find systems querying GitHub's search API for target email identifiers, matching OWAReaper's primary C2 method.

```sqlite target=web role=enrichment params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
expected: Frequent, automated-looking queries to api.github.com. Look for encoded
  strings or email addresses in the url_query.
reads:
- device_hostname
- time
- url_hostname
- url_path
- url_query
silence: not_evidence_of_absence
source: hb_http_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, url_hostname, url_path, url_query, time FROM hb_http_activity WHERE LOWER(url_hostname) = 'api.github.com' AND (LOWER(url_path) LIKE '%/search/commits%' OR LOWER(url_path) LIKE '%/search/code%') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```

## cdn-proxied-exfiltration
<!-- Exfiltration via Image CDNs and acocdn.com -->
Find the high-fidelity indicators of OWAReaper exfiltration: proxied asset requests via CDNs or direct POSTs to acocdn.com.

```sqlite target=web role=detection-candidate params=(lookback_days=lookback_days, cdn_domains=cdn_domains, actor_domain=actor_domain)
~~~yaml
expected: Requests to legitimate CDN domains with encrypted URI paths or POST requests
  to acocdn.com containing the specific exfiltration filenames.
reads:
- device_hostname
- http_method
- time
- url_hostname
- url_path
- user_agent
silence: not_evidence_of_absence
source: hb_http_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, url_hostname, url_path, http_method, user_agent, time FROM hb_http_activity WHERE (instr(',' || '{{cdn_domains}}' || ',', ',' || LOWER(url_hostname) || ',') > 0 OR LOWER(url_hostname) = '{{actor_domain}}') AND (LOWER(url_path) LIKE '/assets/v1_%' OR LOWER(url_path) LIKE '%msanalytics.json%' OR LOWER(url_path) LIKE '%ews_extensions_debug.json%' OR LOWER(url_path) LIKE '%poison_wizard_error_dom.html%') AND time >= datetime('now', '-{{lookback_days}} days')
```

## triage-full-infection
<!-- Triage Full OWAReaper Infection Chain -->
```agent target=hunter
cite: required
context:
- triage-initial-access
- github-c2-polling
- cdn-proxied-exfiltration
max_iterations: 5
objective: Weigh the sign-in patterns, session data access, and the unique GitHub/CDN
  network behavior to confirm a persistent OWA compromise.
success_criteria: A final verdict citing rows across the auth, vulnerability, and
  HTTP surfaces.
tools:
- endpoint
- identity
- web
```

## route-on-verdict
<!-- Route on Full Triage Verdict -->
if~: "the triage-full-infection verdict is malicious for at least one user or host" (confidence: high, judge=hunter)
then: → isolate-and-revoke
indeterminate: → forensic-investigation
unavailable: → forensic-investigation (blind_spot: owa-storage-blind-spot)
else: → close-out

## isolate-and-revoke
<!-- Isolate Host and Revoke Exchange Permissions -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the identified host. Critically, review and revoke 'Owner' or 'ReadWrite' permissions granted to the 'Default' user or suspicious accounts on the Exchange server to evict the actor's server-side persistence.
```
→ forensic-investigation

## forensic-investigation
<!-- Detailed Forensic Investigation -->
```manual target=analyst
Examine the browser's localStorage for the 'PageDataPayload.OwaUserDefaultSettings' key and the offline IndexedDB for hidden iframes as described in the report.
```
→ remediation-verification

## remediation-verification
<!-- Verify Remediation and Patching -->
```manual target=analyst
Verify that Microsoft Exchange is patched for CVE-2026-42897. Perform a tenant-wide sweep for anomalous 'UpdateFolder' permission changes.
```
→ end

## close-out
<!-- Close Out Hunt -->
```manual target=analyst
Record the hosts and users examined and any tuning recommendations for the HTTP exfiltration query.
```
→ 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.