← All hunts medium TLP:CLEAR Part 1 of 2

Initial Access via External Applications and Phishing

An adversary has gained initial access by either exploiting a critical vulnerability in a public-facing application or by use of stolen credentials from a phishing campaign, resulting in anomalous application crashes or high-risk authentication events on perimeter assets.

Based on research by ESET Research 2026-11-03 9 steps · 3 queries T1078 T1190 T1195 T1566

Brief

Why this hunt

The research article When confusion reigns, trusted vendors must guide their SMB customers describes how SMBs are targeted as initial entry points for broader supply-chain attacks. These organizations often provide a path into larger enterprise environments. This hunt addresses the two most common vectors for this initial breach: the exploitation of public-facing applications and the use of stolen credentials.

How the hunt flows

The first phase uses the hb_vulnerability_finding surface to scope the environment. We search for devices with active vulnerabilities that have a severity rating of critical. By identifying these assets first, we create a high-priority list of hosts that are most likely to be targeted for inbound exploitation.

The second phase performs a parallel fan-out across two different behavioral surfaces. On the hb_application_error surface, the hunt searches for rare crashes in web-facing services like IIS, Apache, and Nginx. We specifically look for process faults that occur on fewer than three hosts, as these are strong indicators of memory corruption or failed exploit attempts. Simultaneously, on the hb_auth_signin surface, the hunt identifies authentication events flagged for risk by the identity provider, including brute-force indicators and MFA failures.

The third phase involves a triage agent that correlates these disparate signals. The agent reviews the vulnerability status of the scoped hosts and checks for corresponding crashes or identity risks. This allows the hunt to find "living off the land" access where an adversary uses an exploit or stolen credentials that might not trigger a standard malware detection.

The final phase provides a structured decision path for the analyst. If the correlation suggests a successful breach, the hunt guides the user through isolating the host and revoking user sessions. This transition from detection to containment ensures that a confirmed beachhead is neutralized before the adversary can move laterally into the network.

What the hunt cannot see

This hunt has two main blind spots. First, it depends on standard OS error logging for application crashes. If an adversary exploits a legacy or proprietary application that does not report its errors to the system service, the hunt will not detect those exploitation attempts. Second, if the identity provider does not provide granular logging for the specific MFA methods used during a login, the hunt cannot distinguish between a legitimate session and an MFA bypass.

In this series

Steps

  1. Identify vulnerable perimeter assets

    Query · scoping

    Identify devices with critical active vulnerabilities that could serve as the initial entry point for an adversary.

    reads hb_vulnerability_findingsql
    SELECT device_uid, resource_uid AS device_hostname, cve_uid, severity, cvss_score FROM hb_vulnerability_finding WHERE severity_id >= 4 AND status = 'active' AND resource_type = 'device' ORDER BY cvss_score DESC

    What a hit looks like. A list of hostnames with critical CVEs. Silence indicates no active critical vulnerabilities are reported in the scanner inventory.

  2. Rare application crashes on vulnerable hosts

    Query · baseline

    Find rare application failures in web services that could indicate memory corruption or exploit attempts.

    reads hb_application_errorsql
    SELECT device_hostname, app_name, exception_code, COUNT(DISTINCT device_hostname) AS host_count, MIN(time) AS first_seen FROM hb_application_error WHERE (LOWER(app_name) LIKE '%w3wp%' OR LOWER(app_name) LIKE '%httpd%' OR LOWER(app_name) LIKE '%nginx%' OR LOWER(app_name) LIKE '%sql%') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY app_name, exception_code HAVING host_count < 3 ORDER BY host_count ASC

    What a hit looks like. A crash in a web server or database process occurring on fewer than 3 hosts. Silence suggests no rare fatal application errors occurred.

  3. High-risk authentication and credential abuse

    Query · detection candidate

    Identify sign-ins flagged by providers as high-risk or indicating brute-force/MFA exhaustion.

    reads hb_auth_signinsql
    SELECT dst_endpoint_hostname AS device_hostname, actor_user_name, src_endpoint_ip, risk_state, status_code, event_type, time FROM hb_auth_signin WHERE (risk_state != 'none' OR status_code IN ('50126', '50053', '500121')) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || dst_endpoint_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. Successful or failed sign-ins with 'atRisk' states or codes for brute force/MFA failure. Silence indicates no high-risk identity alerts.

  4. Triage initial access signals

    Agent triage

    Determine if the identified vulnerabilities, application crashes, and identity risks together indicate a successful perimeter breach.

  5. Route based on intrusion verdict

    Decision

    Direct the hunt to containment if successful initial access is confirmed.

  6. Isolate the compromised host

    Response action

    Contain the threat and prevent lateral movement from the beachhead.

  7. Forensic lead analysis

    Analyst task

    Analyze the crash and authentication evidence to confirm the root cause.

  8. Close the gaps

    Analyst task

    Patch vulnerabilities and improve resilience based on the hunt findings.

Coverage

Scenario coverage

StageCoveredHow, or why not
Public-Facing Application Exploitation
T1190 · T1195
Yes vulnerable-device-scoping, rare-application-crashes
Phishing and Business Email Compromise
T1566
Yes suspicious-identity-events
Living off the Land and Unsanctioned RMM
T1218
Out of scope Belongs to another part of the 'When confusion reigns, trusted vendors must guide their SMB customers' series.
Infostealers and Credential Harvest
T1555 · T1078
Out of scope Belongs to another part of the 'When confusion reigns, trusted vendors must guide their SMB customers' series.
Data Encryption for Impact
T1486
Out of scope Belongs to another part of the 'When confusion reigns, trusted vendors must guide their SMB customers' series.

Blind spots

  • Needs hb_auth_signin with full risk detail. If the identity provider does not log the specific MFA method used, we cannot distinguish between a legitimate login and a bypass. It would answer whether a successful login used an MFA bypass technique.
  • Needs hb_application_error covering all custom services. Standard server logs (IIS, Apache) are captured, but proprietary or legacy applications may not report crashes to the OS error logging service. It would answer whether a non-standard web service was exploited.

Parameters & data

Parameters

ParameterTypeDefaultWhat it is
lookback_daysnumber14Days of history to examine for behavior.
scope_hostslist[host]—Hostnames identified in the scoping step to narrow the behavioral queries.

Telemetry

SourceCategoryTelemetry
Endpoint telemetry (hb_ surfaces)endpointendpoint
Identity / sign-in telemetryidentityidentity

Source

Download hunt.md Definition (JSON) An open hunt.md file; it runs anywhere that reads the format.
---
analysis: A standard rule alerts on a single high-risk sign-in; this hunt correlates
  the vulnerability state of the host with rare application crashes and identity flags,
  finding the 'living off the land' beachhead that a single-surface rule would miss.
blind_spots:
- id: no-identity-logging
  question: whether a successful login used an MFA bypass technique
  requires: hb_auth_signin with full risk detail
  risk: If the identity provider does not log the specific MFA method used, we cannot
    distinguish between a legitimate login and a bypass.
  stage: phishing-and-email-compromise
- id: crash-log-omission
  question: whether a non-standard web service was exploited
  requires: hb_application_error covering all custom services
  risk: Standard server logs (IIS, Apache) are captured, but proprietary or legacy
    applications may not report crashes to the OS error logging service.
  stage: inbound-application-exploitation
coverage:
- stage: inbound-application-exploitation
  status: covered
  steps:
  - vulnerable-device-scoping
  - rare-application-crashes
- stage: phishing-and-email-compromise
  status: covered
  steps:
  - suspicious-identity-events
- reason: Belongs to another part of the 'When confusion reigns, trusted vendors must
    guide their SMB customers' series.
  stage: evasive-execution-and-rmm
  status: out_of_scope
- reason: Belongs to another part of the 'When confusion reigns, trusted vendors must
    guide their SMB customers' series.
  stage: credential-theft-infostealers
  status: out_of_scope
- reason: Belongs to another part of the 'When confusion reigns, trusted vendors must
    guide their SMB customers' series.
  stage: ransomware-data-encryption
  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: SMBs are the primary entry point for supply-chain attacks; a negative
    result for perimeter exploitation and high-risk identity events confirms that
    the exposed attack surface remains secure.
  methodology: model-assisted
  trigger: intel-report
hypothesis: An adversary has gained initial access by either exploiting a critical
  vulnerability in a public-facing application or by use of stolen credentials from
  a phishing campaign, resulting in anomalous application crashes or high-risk authentication
  events on perimeter assets.
labels:
- hunt
- attack.t1190
- attack.t1195
- attack.t1566
- attack.t1078
- credential access
- defense evasion
- impact
- initial access
name: Initial Access via External Applications and Phishing
parameters:
  lookback_days:
    default: '14'
    description: Days of history to examine for behavior.
    from:
      kind: manual
      observed: '2024-11-01'
      ref: standard-retention
    type: number
  scope_hosts:
    default: []
    description: Hostnames identified in the scoping step to narrow the behavioral
      queries.
    from:
      kind: manual
      observed: '2024-11-01'
      ref: scoping-result
    type: list[host]
provenance:
  authors:
  - name: Huntbase hunt generation
    org: huntbase.io
  generated:
    by: huntbase-hunt-generation
    from: https://www.welivesecurity.com/en/business-security/when-confusion-reigns-trusted-vendors-guide-smb-customers/
    gates:
    - dry-run
    - lint
    - critic
    model: hb_google/gemini-3-flash-preview
rationale: Begin by querying the vulnerability inventory for hosts with active critical
  CVEs (severity_id 4 or 5). Use these hostnames to narrow the behavioral queries
  in the next steps.
references:
- name: When confusion reigns, trusted vendors must guide their SMB customers
  url: https://www.welivesecurity.com/en/business-security/when-confusion-reigns-trusted-vendors-guide-smb-customers/
related:
- hunt: evasive-execution-and-rmm
  reason: Once initial access is gained, the adversary moves to evasive execution;
    that is a sibling hunt focusing on process behavior.
  relation: follows
scenario:
  stages:
  - name: Public-Facing Application Exploitation
    observables:
    - Exploitation of web servers
    - AI-discovered zero-day exploits
    - Manipulation of software update or delivery mechanisms
    - Anomalous HTTP requests targeting vulnerabilities
    slug: inbound-application-exploitation
    tactic: initial-access
    techniques:
    - T1190
    - T1195
  - name: Phishing and Business Email Compromise
    observables:
    - Emails containing malicious attachments
    - Phishing links delivered via email
    - Unauthorized access to business email accounts
    slug: phishing-and-email-compromise
    tactic: initial-access
    techniques:
    - T1566
  - name: Living off the Land and Unsanctioned RMM
    observables:
    - Execution via signed Microsoft binaries (LOLBAS)
    - Unsanctioned remote monitoring and management (RMM) software
    - Use of 'safe-looking' administrative tools for malicious activity
    slug: evasive-execution-and-rmm
    tactic: defense-evasion
    techniques:
    - T1218
  - name: Infostealers and Credential Harvest
    observables:
    - Infostealer malware execution
    - Searching for credentials in password stores
    - Abuse of compromised valid accounts for session access
    slug: credential-theft-infostealers
    tactic: credential-access
    techniques:
    - T1555
    - T1078
  - name: Data Encryption for Impact
    observables:
    - Deployment of ransomware binaries
    - Mass file encryption on local or remote drives
    - Creation of ransom notes
    slug: ransomware-data-encryption
    tactic: impact
    techniques:
    - T1486
  summary: Adversaries target SMBs as a pathway into larger supply chains, using phishing
    and exploitation of public-facing applications for initial access. Post-compromise,
    they utilize 'living off the land' techniques and unsanctioned remote monitoring
    and management (RMM) tools to steal credentials and deploy ransomware.
series:
  index: 1
  slug: when-confusion-reigns-trusted-vendors-must-guide-their-smb-customers
  title: When confusion reigns, trusted vendors must guide their SMB customers
  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
  identity:
    category: identity
    name: Identity / sign-in telemetry
    telemetry:
    - identity
tlp: clear
type: investigation
---


# Initial Access via External Applications and Phishing

Following research that suggests SMBs are frequently targeted as supply-chain beachheads, this hunt identifies assets with known critical vulnerabilities. The hunt then launches parallel queries to find rare application faults in web services and high-risk authentication flags from identity providers. Finally, an agent correlates these disparate signals to determine if a perimeter breach has occurred, and an analyst reviews the evidence to confirm the intrusion vector.

## vulnerable-device-scoping
<!-- Identify vulnerable perimeter assets -->
Identify devices with critical active vulnerabilities that could serve as the initial entry point for an adversary.

```sqlite target=endpoint role=scoping
~~~yaml
expected: A list of hostnames with critical CVEs. Silence indicates no active critical
  vulnerabilities are reported in the scanner inventory.
reads:
- device_uid
- resource_uid
- cve_uid
- severity
- cvss_score
- severity_id
- status
- resource_type
silence: not_evidence_of_absence
source: hb_vulnerability_finding
verified: dry-run
verified_at: '2026-11-03'
~~~
SELECT device_uid, resource_uid AS device_hostname, cve_uid, severity, cvss_score FROM hb_vulnerability_finding WHERE severity_id >= 4 AND status = 'active' AND resource_type = 'device' ORDER BY cvss_score DESC
```

## perimeter-anomaly-fan-out
<!-- Examine behavior across application and identity surfaces -->
parallel:
- → rare-application-crashes
- → suspicious-identity-events
join: → initial-access-triage

## rare-application-crashes
<!-- Rare application crashes on vulnerable hosts -->
Find rare application failures in web services that could indicate memory corruption or exploit attempts.

```sqlite target=endpoint role=baseline params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
baseline:
  compare: first_seen
  window: '{{lookback_days}}d'
expected: A crash in a web server or database process occurring on fewer than 3 hosts.
  Silence suggests no rare fatal application errors occurred.
prevalence:
  by: device_hostname
  key:
  - app_name
  - exception_code
  rare_below: 3
reads:
- device_hostname
- app_name
- exception_code
- time
silence: not_evidence_of_absence
source: hb_application_error
verified: dry-run
verified_at: '2026-11-03'
~~~
SELECT device_hostname, app_name, exception_code, COUNT(DISTINCT device_hostname) AS host_count, MIN(time) AS first_seen FROM hb_application_error WHERE (LOWER(app_name) LIKE '%w3wp%' OR LOWER(app_name) LIKE '%httpd%' OR LOWER(app_name) LIKE '%nginx%' OR LOWER(app_name) LIKE '%sql%') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY app_name, exception_code HAVING host_count < 3 ORDER BY host_count ASC
```

## suspicious-identity-events
<!-- High-risk authentication and credential abuse -->
Identify sign-ins flagged by providers as high-risk or indicating brute-force/MFA exhaustion.

```sqlite target=identity role=detection-candidate params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
expected: Successful or failed sign-ins with 'atRisk' states or codes for brute force/MFA
  failure. Silence indicates no high-risk identity alerts.
reads:
- dst_endpoint_hostname
- actor_user_name
- src_endpoint_ip
- risk_state
- status_code
- event_type
- time
silence: not_evidence_of_absence
source: hb_auth_signin
verified: dry-run
verified_at: '2026-11-03'
~~~
SELECT dst_endpoint_hostname AS device_hostname, actor_user_name, src_endpoint_ip, risk_state, status_code, event_type, time FROM hb_auth_signin WHERE (risk_state != 'none' OR status_code IN ('50126', '50053', '500121')) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || dst_endpoint_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```

## initial-access-triage
<!-- Triage initial access signals -->
```agent target=hunter
cite: required
context:
- vulnerable-device-scoping
- rare-application-crashes
- suspicious-identity-events
max_iterations: 4
objective: Review the critical vulnerabilities on scoping hosts and correlate them
  with any rare application crashes or high-risk authentication events on those same
  hosts. Decide if the timing and nature of these signals represent a successful intrusion.
success_criteria: A verdict for each host in the context, citing specific rows for
  crashes or sign-in risks.
tools:
- endpoint
- identity
```

## intrusion-decision
<!-- Route based on intrusion verdict -->
if~: "the initial-access-triage verdict is malicious for at least one host" (confidence: high, judge=hunter)
then: → isolate-compromised-host
indeterminate: → incident-response-task
unavailable: → incident-response-task (blind_spot: no-identity-logging)
else: → remediation-task

## isolate-compromised-host
<!-- Isolate the compromised host -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the host identified as malicious and revoke all active sessions for the involved users in the identity provider (Entra ID/Okta).
```
→ incident-response-task

## incident-response-task
<!-- Forensic lead analysis -->
```manual target=analyst
Review the application errors and authentication logs. If an application crash was found, correlate with hb_http_activity to find the URI and source IP that triggered the fault. If auth risk was found, check for subsequent hb_process_activity or hb_file_activity that indicates hands-on-keyboard activity.
```
→ remediation-task

## remediation-task
<!-- Close the gaps -->
```manual target=analyst
Immediately patch the CVEs identified on any malicious or suspicious hosts. Review the conditional access policies for any accounts flagged for risk to ensure phishing-resistant MFA is required for perimeter access.
```
→ 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.

Locked pack

Sign up to unlock

Pack contents are available to Huntbase users.