← All hunts medium TLP:CLEAR

External Access and Proxy-Based Command and Control

An adversary exploits unpatched internet-facing vulnerabilities or phishes users to establish multi-hop proxy C2, banking on reduced holiday staffing to delay detection and response.

Based on research by Huntress 2026-09-20 11 steps · 3 queries T1090.003 T1190 T1566

Brief

Why this hunt

Recent analysis by Huntress in their article Operational Resilience: IT Security Risks with Reduced Staffing (https://www.huntress.com/blog/operational-resilience-reduced-staffing-risks) highlights how adversaries capitalize on holiday windows. When fewer analysts are on the clock, dwell times often increase. This hunt addresses that gap by proactively looking for the intersection of high-risk vulnerabilities and suspicious outbound command-and-control traffic.

How the hunt flows

The hunt begins by scoping the environment for unpatched critical vulnerabilities. The first query checks the vulnerability surface for any active findings with a high severity rating. An agent then evaluates these results to determine if the exposure warrants further investigation, focusing on internet-facing or widely distributed assets that represent the most significant risk.

If the agent identifies high-risk exposure, the hunt moves into a parallel behavioral analysis phase. One branch monitors the process surface for phishing execution patterns, specifically looking for productivity applications that spawn command interpreters like PowerShell or cmd.exe. Simultaneously, a second branch examines the network surface for rare outbound connections to known proxy and Tor ports. This two-pronged approach catches both the initial delivery and the subsequent C2 establishment.

In the final phase, an agent correlates the vulnerability findings with the behavioral evidence. If a host shows both a critical exposure and suspicious activity, the playbook can trigger an automated isolation action. This provides immediate containment during periods when a human analyst might not be available to respond instantly to every alert.

Beyond Detection

Standard detection rules fire on specific Tor domains or ngrok indicators. This hunt goes further by pivoting across three distinct data surfaces—vulnerabilities, process execution, and network egress—to find intrusions that individual rules often miss. By weighting behavioral alerts based on the underlying vulnerability exposure of the host, we reduce noise and find the true signals of compromise that require immediate attention.

What the hunt cannot see

This hunt relies on recent vulnerability scan data. If a scan failed or the data is stale, the initial scoping might miss new exposures. On the network side, the hunt focuses on explicit proxy ports such as 9050 or 8080. If an adversary tunnels C2 traffic over port 443 using standard HTTPS, this hunt will not identify that traffic without additional TLS fingerprinting or deep packet analysis.

Steps

  1. Identify critical vulnerabilities

    Query · scoping

    Identify active critical vulnerabilities that could serve as initial access points during reduced staffing periods.

    reads hb_vulnerability_findingsql
    SELECT device_uid, cve_uid, title, severity_id, affected_package_name, last_seen FROM hb_vulnerability_finding WHERE severity_id >= {{critical_severity_threshold}} AND status != 'suppressed' AND last_seen >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. A list of hostnames with unpatched critical flaws. Silence means no critical vulnerabilities were reported in the window.

  2. Evaluate exposure and impact

    Agent triage

    Determine if the identified vulnerabilities warrant the expense of a behavioral hunt based on current organizational risk appetite.

  3. Gate: Proceed to behavior?

    Decision

    Halt the hunt if no high-risk exposure is identified, preserving analyst and agent resources.

  4. Detect phishing execution patterns

    Query · detection candidate

    Find instances where common productivity apps spawn interpreters, indicating potential phishing execution.

    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 instr(',' || '{{phishing_parents}}' || ',', ',' || LOWER(parent_process_name) || ',') > 0 AND instr(',' || '{{interpreter_children}}' || ',', ',' || LOWER(process_name) || ',') > 0 AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. A parent-child process match. Silence indicates no common phishing execution chains were detected.

  5. Detect anomalous proxy connections

    Query · baseline

    Identify hosts connecting to common proxy or Tor infrastructure, which may indicate multi-hop C2.

    reads hb_network_connectionsql
    SELECT device_hostname, dst_endpoint_ip, dst_endpoint_port, COUNT(*) AS connections, MIN(time) AS first_seen FROM hb_network_connection WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND activity_id = 1 AND instr(',' || '{{proxy_ports}}' || ',', ',' || CAST(dst_endpoint_port AS TEXT) || ',') > 0 AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY 1, 2, 3 HAVING connections < 50

    What a hit looks like. Rare connections to proxy-associated ports. Silence means no direct proxy traffic was observed on those ports.

  6. Triage intrusion risk

    Agent triage

    Correlate exposure risk with behavioral evidence to identify confirmed threats requiring immediate response.

  7. Route response

    Decision

    Automatically isolate high-confidence threats to mitigate impact during reduced staffing periods.

  8. Isolate endpoint

    Response action

    Neutralize the threat immediately when the security team is at reduced capacity.

  9. Analyst review

    Analyst task

    Manually validate suspicious findings and confirm isolation actions.

  10. Close out

    Analyst task

    Finalize the hunt and record exposure findings for patching.

Coverage

Scenario coverage

StageCoveredHow, or why not
Initial Access via Phishing
T1566
Yes detect-phishing-patterns
Exploitation of Public-Facing Application
T1190
Yes identify-vulnerabilities, evaluate-risk
Command and Control via Multi-hop Proxy
T1090.003
Yes detect-proxy-connections

Blind spots

  • Needs hb_vulnerability_finding last_seen. A scan that failed recently would show old data, leading the lead query to miss new exposures. It would answer Are the vulnerability findings current or did a recent scan fail?.
  • Needs hb_network_connection destination_hostname. Adversaries often use HTTPS for proxy traffic. This hunt focuses on explicit proxy ports; traffic on 443 remains a blind spot without TLS fingerprinting. It would answer Is C2 traffic being hidden behind common ports like 443?.

Parameters & data

Parameters

ParameterTypeDefaultWhat it is
critical_severity_thresholdnumber4Minimum severity_id (4=High, 5=Critical) to trigger the hunt.
interpreter_childrenlist[string]powershell.exe, cmd.exe, mshta.exe, cscript.exe, wscript.exe, scrcons.exeCommon interpreters spawned by phishing entry points.
lookback_daysnumber14Days of history to examine.
phishing_parentslist[string]outlook.exe, chrome.exe, msedge.exe, winword.exe, excel.exe, powerpnt.exeCommon parent processes for phishing delivery.
proxy_portslist[string]1080, 3128, 8080, 9001, 9050, 9150Common proxy and Tor bridge ports.
scope_hostslist[host]List of hostnames to narrow behavioral queries.

Telemetry

SourceCategoryTelemetry
Endpoint telemetry (hb_ surfaces)endpointendpoint
Network telemetrynetworknetwork

Source

Download hunt.md Definition (JSON) An open hunt.md file; it runs anywhere that reads the format.
---
analysis: Standard rules fire on specific Tor domains or ngrok indicators. This hunt
  pivots across vulnerability exposure (surface 1), rare phishing-style execution
  (surface 2), and anomalous proxy port egress (surface 3) to find intrusions that
  individual rules miss.
blind_spots:
- id: vulnerability-scan-staleness
  question: Are the vulnerability findings current or did a recent scan fail?
  requires: hb_vulnerability_finding last_seen
  risk: A scan that failed recently would show old data, leading the lead query to
    miss new exposures.
  stage: initial-access-exploit-public-app
- id: proxy-obfuscation
  question: Is C2 traffic being hidden behind common ports like 443?
  requires: hb_network_connection destination_hostname
  risk: Adversaries often use HTTPS for proxy traffic. This hunt focuses on explicit
    proxy ports; traffic on 443 remains a blind spot without TLS fingerprinting.
  stage: c2-multi-hop-proxy
coverage:
- stage: initial-access-phishing
  status: covered
  steps:
  - detect-phishing-patterns
- stage: initial-access-exploit-public-app
  status: covered
  steps:
  - identify-vulnerabilities
  - evaluate-risk
- stage: c2-multi-hop-proxy
  status: covered
  steps:
  - detect-proxy-connections
guardrails:
  claims: no_unsupported
  evidence: citation_required
  missing_data: not_benign
  telemetry: untrusted
hunt:
  applicability: campaign-specific
  handoff: keep-as-periodic-hunt
  justification: Reduced staffing during holiday periods increases the time from detection
    to response. This hunt proactively identifies the most dangerous access paths
    and enables immediate containment to maintain resilience.
  methodology: model-assisted
  trigger: intel-report
hypothesis: An adversary exploits unpatched internet-facing vulnerabilities or phishes
  users to establish multi-hop proxy C2, banking on reduced holiday staffing to delay
  detection and response.
labels:
- hunt
- attack.t1090.003
- attack.t1190
- attack.t1566
name: External Access and Proxy-Based Command and Control
parameters:
  critical_severity_threshold:
    default: '4'
    description: Minimum severity_id (4=High, 5=Critical) to trigger the hunt.
    type: number
  interpreter_children:
    default:
    - powershell.exe
    - cmd.exe
    - mshta.exe
    - cscript.exe
    - wscript.exe
    - scrcons.exe
    description: Common interpreters spawned by phishing entry points.
    type: list[string]
  lookback_days:
    default: '14'
    description: Days of history to examine.
    type: number
  phishing_parents:
    default:
    - outlook.exe
    - chrome.exe
    - msedge.exe
    - winword.exe
    - excel.exe
    - powerpnt.exe
    description: Common parent processes for phishing delivery.
    type: list[string]
  proxy_ports:
    default:
    - '1080'
    - '3128'
    - '8080'
    - '9001'
    - '9050'
    - '9150'
    description: Common proxy and Tor bridge ports.
    type: list[string]
  scope_hosts:
    default: []
    description: List of hostnames to narrow behavioral queries.
    type: list[host]
provenance:
  authors:
  - name: Huntbase hunt generation
    org: huntbase.io
  generated:
    by: huntbase-hunt-generation
    from: https://www.huntress.com/blog/operational-resilience-reduced-staffing-risks
    gates:
    - dry-run
    - lint
    model: hb_google/gemini-3-flash-preview
rationale: The lead query identifies any host with a critical vulnerability. The gate
  ensures that deep behavioral queries only run when the organization's current operational
  capacity necessitates proactive intervention on high-risk assets.
references:
- name: 'Operational Resilience: IT Security Risks with Reduced Staffing'
  url: https://www.huntress.com/blog/operational-resilience-reduced-staffing-risks
related:
- hunt: suspicious-cloud-access-holiday-anomalies
  reason: This hunt focuses on endpoints and vulnerabilities; a sibling hunt is needed
    for anomalous cloud console logins.
  relation: sibling
scenario:
  stages:
  - name: Initial Access via Phishing
    observables:
    - phishing email
    - malicious links
    - email attachments
    - social engineering
    - OAuth spam
    slug: initial-access-phishing
    tactic: initial-access
    techniques:
    - T1566
  - name: Exploitation of Public-Facing Application
    observables:
    - critical vulnerability
    - unpatched internet-facing host
    - web server exploitation
    - open sockets
    - exposed OpenSLP services
    slug: initial-access-exploit-public-app
    tactic: initial-access
    techniques:
    - T1190
  - name: Command and Control via Multi-hop Proxy
    observables:
    - Tor traffic
    - onion routing
    - multi-hop proxies
    - operational relay box (ORB) networks
    - C2 traffic obfuscation
    slug: c2-multi-hop-proxy
    tactic: command-and-control
    techniques:
    - T1090.003
  summary: Organizations face increased risk during periods of reduced staffing when
    capacity for incident response and change management is limited. Adversaries exploit
    these windows using phishing or vulnerability exploitation, often masking their
    presence with multi-hop proxies to complicate detection and eviction.
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
  network:
    category: network
    name: Network telemetry
    telemetry:
    - network
tlp: clear
type: investigation
---


# External Access and Proxy-Based Command and Control

Adversaries exploit reduced staffing levels during holidays to conduct stealthy intrusions. This hunt identifies critical unpatched vulnerabilities and uses an agent to evaluate their impact on the organization's external attack surface. If exposure is confirmed, it fans out to look for behavioral indicators of phishing execution and multi-hop proxy connections (Tor/ORBs) that bypass standard detection rules. An agent weighs the combined risk of exposure and suspicious activity to identify hosts that require immediate isolation during periods of reduced operational capacity.

## identify-vulnerabilities
<!-- Identify critical vulnerabilities -->
Identify active critical vulnerabilities that could serve as initial access points during reduced staffing periods.

```sqlite target=endpoint role=scoping params=(critical_severity_threshold=critical_severity_threshold, lookback_days=lookback_days)
~~~yaml
expected: A list of hostnames with unpatched critical flaws. Silence means no critical
  vulnerabilities were reported in the window.
reads:
- device_uid
- cve_uid
- title
- severity_id
- status
- last_seen
silence: not_evidence_of_absence
source: hb_vulnerability_finding
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_uid, cve_uid, title, severity_id, affected_package_name, last_seen FROM hb_vulnerability_finding WHERE severity_id >= {{critical_severity_threshold}} AND status != 'suppressed' AND last_seen >= datetime('now', '-{{lookback_days}} days')
```

## evaluate-risk
<!-- Evaluate exposure and impact -->
```agent target=hunter
cite: required
context:
- identify-vulnerabilities
max_iterations: 3
objective: Review the identified vulnerabilities and decide if they represent a high-risk
  exposure path (e.g. exploitable, internet-facing, or widely distributed) that justifies
  running behavioral checks.
success_criteria: A clear recommendation to continue to behavior analysis or end the
  hunt.
tools:
- endpoint
- network
```

## gate-on-lead
<!-- Gate: Proceed to behavior? -->
if~: "the evaluate-risk verdict identifies high-impact exposure or unmitigated critical vulnerabilities" (confidence: high, judge=hunter)
then: → behavioral-fanout
indeterminate: → analyst-review
unavailable: → analyst-review (blind_spot: vulnerability-scan-staleness)
else: → close-out

## behavioral-fanout
<!-- Behavioral fan-out -->
parallel:
- → detect-phishing-patterns
- → detect-proxy-connections
join: → triage-intrusion

## detect-phishing-patterns
<!-- Detect phishing execution patterns -->
Find instances where common productivity apps spawn interpreters, indicating potential phishing execution.

```sqlite target=endpoint role=detection-candidate params=(scope_hosts=scope_hosts, phishing_parents=phishing_parents, interpreter_children=interpreter_children, lookback_days=lookback_days)
~~~yaml
expected: A parent-child process match. Silence indicates no common phishing execution
  chains were detected.
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-20'
~~~
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 instr(',' || '{{phishing_parents}}' || ',', ',' || LOWER(parent_process_name) || ',') > 0 AND instr(',' || '{{interpreter_children}}' || ',', ',' || LOWER(process_name) || ',') > 0 AND time >= datetime('now', '-{{lookback_days}} days')
```

## detect-proxy-connections
<!-- Detect anomalous proxy connections -->
Identify hosts connecting to common proxy or Tor infrastructure, which may indicate multi-hop C2.

```sqlite target=network role=baseline params=(scope_hosts=scope_hosts, proxy_ports=proxy_ports, lookback_days=lookback_days)
~~~yaml
baseline:
  compare: first_seen
  window: '{{lookback_days}}d'
expected: Rare connections to proxy-associated ports. Silence means no direct proxy
  traffic was observed on those ports.
prevalence:
  by: device_hostname
  key:
  - dst_endpoint_ip
  - dst_endpoint_port
  rare_below: 3
reads:
- device_hostname
- dst_endpoint_ip
- dst_endpoint_port
- time
silence: not_evidence_of_absence
source: hb_network_connection
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, dst_endpoint_ip, dst_endpoint_port, COUNT(*) AS connections, MIN(time) AS first_seen FROM hb_network_connection WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND activity_id = 1 AND instr(',' || '{{proxy_ports}}' || ',', ',' || CAST(dst_endpoint_port AS TEXT) || ',') > 0 AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY 1, 2, 3 HAVING connections < 50
```

## triage-intrusion
<!-- Triage intrusion risk -->
```agent target=hunter
cite: required
context:
- evaluate-risk
- detect-phishing-patterns
- detect-proxy-connections
max_iterations: 5
objective: Determine if any host with a critical vulnerability is also showing signs
  of phishing execution or multi-hop proxy C2. Use the first agent's assessment of
  exposure to weight the behavioral findings.
success_criteria: A per-host verdict citing specific rows from the process and network
  surfaces.
tools:
- endpoint
- network
```

## route-response
<!-- Route response -->
if~: "the triage-intrusion verdict is malicious for at least one host" (confidence: high, judge=hunter)
then: → isolate-endpoint
indeterminate: → analyst-review
unavailable: → analyst-review (blind_spot: proxy-obfuscation)
else: → close-out

## isolate-endpoint
<!-- Isolate endpoint -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the host to prevent lateral movement and further C2 communication while the analyst completes the investigation.
```
→ analyst-review

## analyst-review
<!-- Analyst review -->
```manual target=analyst
Review the agent triage findings; prioritize hosts where critical vulnerabilities intersect with rare behavioral alerts. Confirm or revert isolation actions.
```
→ close-out

## close-out
<!-- Close out -->
```manual target=analyst
Document findings, update the risk profile for the remaining holiday period, and ensure vulnerable hosts identified in the lead are scheduled for patching.
```
→ 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.