Abuse of Remote Gateways and Third-Party Access
An adversary has breached a manufacturing network by using stolen vendor credentials on a VPN gateway or by exploiting a phishing foothold to traverse an IT-to-OT jump server.
Based on research by Huntress 2026-10-15 11 steps · 3 queries T1133 T1195 T1566 T1572
Brief
Manufacturing infrastructure relies on a delicate balance between corporate connectivity and factory floor uptime. As noted in 7 Key Manufacturing Cybersecurity Trends for 2027 (https://www.huntress.com/blog/manufacturing-cybersecurity-trends), the IT-to-OT bridge is a primary target for adversaries seeking to disrupt production. This hunt targets the specific ways attackers cross that bridge.
Scoping the Remote Access Surface
The first phase focuses on identity. A query scans authentication logs for successful sign-ins involving known vendor accounts or assets named as VPNs, gateways, or jump servers. This scoping step provides the initial list of sessions that might represent unauthorized entry. We do not assume every vendor login is malicious; instead, we establish which accounts and assets are active in the environment.
Evaluating the Lead
An automated agent examines the results of the initial scoping query. It looks for anomalies in source IP addresses, geographic locations, and time of day. For example, a vendor account connecting from an unusual region outside of a maintenance window triggers a deeper investigation. This stage ensures the hunt only proceeds to more resource-heavy queries when there is a credible reason to suspect credential abuse.
Fanning Out for Evidence
Once a suspicious sign-in is identified, the hunt runs two parallel queries to find corroborating evidence of a breach. One query searches corporate laptops for the initial foothold. It looks for common email or browser processes, such as Outlook or Chrome, spawning shells or script interpreters like PowerShell and cmd.exe. This helps determine if the gateway access followed a standard phishing attack.
Simultaneously, a second query examines the behavior of the gateway host itself. It looks for outbound network connections to internal IP addresses that occur with low frequency. Because gateways typically connect to a limited set of management ports, rare or new connections suggest an adversary is probing the network for lateral movement.
Triage and Correlation
The final phase brings these disparate data points together. An agent weighs the evidence from the phishing foothold search and the network probing results against the original suspicious login. If a single host shows a shell spawned from a browser followed by rare internal connections, the hunt confirms the bridge traversal. This correlation provides the why that a standalone alert on a single login often lacks.
Blind Spots
This hunt has two primary limitations. First, if the remote access gateway is a proprietary hardware appliance that does not support an endpoint agent, the hunt cannot see process execution or local activity on that host. In these cases, we rely entirely on authentication and network logs. Second, if an adversary uses a persistent, always-on tunnel already established by a vendor, the hunt might miss the initial entry because no new sign-in event occurs.
In this series
Steps
-
Vendor and Gateway Sign-in Lead
Query · scopingIdentify successful authentications to gateways from vendor accounts or to specific gateway hostnames, handling domain prefixes and partial matches.
reads hb_auth_signinsqlSELECT device_hostname, actor_user_name, src_endpoint_ip, dst_endpoint_name, logon_type, time FROM hb_auth_signin WHERE status_id = 1 AND ( (instr(',' || '{{vendor_accounts}}' || ',', ',' || (CASE WHEN instr(actor_user_name, '\') > 0 THEN SUBSTR(LOWER(actor_user_name), instr(actor_user_name, '\') + 1) ELSE LOWER(actor_user_name) END) || ',') > 0) OR (LOWER(dst_endpoint_name) LIKE '%vpn%' OR LOWER(dst_endpoint_name) LIKE '%gateway%' OR LOWER(dst_endpoint_name) LIKE '%jump%' OR LOWER(dst_endpoint_name) LIKE '%citrix%') OR (instr(',' || '{{gateway_keywords}}' || ',', ',' || LOWER(dst_endpoint_name) || ',') > 0) ) AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. Rows show successful logins to critical gateways. Silence means no monitored accounts or services were accessed during the window.
-
Evaluate Sign-in Lead
Agent triageFilter the initial sign-ins for anomalies in source IP, timing, or account behavior to decide if the gated fan-out is required.
-
Gate: Proceed with Fan-out?
DecisionRestrict expensive evidence gathering to cases where the login lead is truly suspicious.
-
Phishing Foothold: Email/Browser Child Processes
Query · detection candidateIdentify potential initial compromise on corporate machines where malicious payloads spawn shells, using partial path matching for robust detection.
reads hb_process_activitysqlSELECT device_hostname, process_name, process_cmd_line, parent_process_name, user_name, time FROM hb_process_activity WHERE (LOWER(parent_process_name) LIKE '%\outlook.exe' OR LOWER(parent_process_name) LIKE '%\chrome.exe' OR LOWER(parent_process_name) LIKE '%\msedge.exe' OR instr(',' || '{{corporate_apps}}' || ',', ',' || LOWER(parent_process_name) || ',') > 0) AND (LOWER(process_name) LIKE '%\powershell.exe' OR LOWER(process_name) LIKE '%\cmd.exe' OR LOWER(process_name) LIKE '%\wscript.exe' OR instr(',' || '{{interpreters}}' || ',', ',' || LOWER(process_name) || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. Processes like PowerShell or CMD spawned directly from Outlook or a browser. Silence indicates no obvious script-based payloads ran from common entry apps.
-
Bridge Traversal: Internal Network Probing
Query · baselineDetect bridging behavior where a gateway host initiates rare outbound connections to internal segments, using a tunable threshold.
reads hb_network_connectionsqlSELECT device_hostname, process_name, dst_endpoint_ip, dst_endpoint_port, COUNT(*) AS connection_count FROM hb_network_connection WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND direction = 'outbound' AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, process_name, dst_endpoint_ip, dst_endpoint_port HAVING connection_count < {{connection_threshold}} ORDER BY connection_count ASCWhat a hit looks like. Rare outbound connections from gateway machines to internal IP addresses. Silence suggests no anomalous probing from the identified gateways.
-
Final Triage: Confirm the Bridge
Agent triageCorrelate the suspicious login with the foothold and bridging behavior to confirm a segment crossing.
-
Route on Final Verdict
DecisionDirect the hunt toward containment or formal review.
-
Isolate Gateway and Revoke Identity
Response actionSever the bridge between the adversary and the internal network.
-
Analyst Post-Mortem
Analyst taskVerify the findings and prepare for detection engineering.
-
Hunt Close-out
Analyst taskRecord results and state coverage gaps.
Coverage
Scenario coverage
| Stage | Covered | How, or why not |
|---|---|---|
| Corporate Phishing Foothold T1566 |
Yes | phishing-foothold |
| Compromised Third-Party Vendor Access T1195 |
Yes | remote-access-lead, evaluate-lead |
| IT-to-OT Bridge Access T1133 |
Yes | bridge-traversal |
| Legacy Industrial Asset Discovery T1133 |
Out of scope | Belongs to another part of the '7 Key Manufacturing Cybersecurity Trends for 2027 | Huntress' series. |
| Lateral Movement via Tunneling T1572 |
Out of scope | Belongs to another part of the '7 Key Manufacturing Cybersecurity Trends for 2027 | Huntress' series. |
| Operational Technology Ransomware Impact T1486 |
Out of scope | Belongs to another part of the '7 Key Manufacturing Cybersecurity Trends for 2027 | Huntress' series. |
Blind spots
- Needs Endpoint agent coverage on the gateway host. If the gateway is a proprietary appliance with no agent, the hunt can see the sign-in but not the subsequent bridge processes. It would answer Whether a sign-in leads to execution on a host with no process logging.
- Needs Network flow logs with start/end duration. If a tunnel is already established, sign-in logs will not show a new event, and the network activity might blend into existing traffic baselines. It would answer If a persistent vendor tunnel is used for silent lateral movement.
Parameters & data
Parameters
| Parameter | Type | Default | What it is |
|---|---|---|---|
connection_threshold | number | 15 | Rare connection count threshold for bridge traversal. |
corporate_apps | list[string] | outlook.exe, chrome.exe, msedge.exe | Email and browser processes that might spawn a phishing payload. |
gateway_keywords | list[string] | vpn-main, gateway-01, jump-server, citrix-ext | Names of remote access or bridge infrastructure assets. |
interpreters | list[string] | powershell.exe, cmd.exe, wscript.exe | System interpreters used in initial foothold scripts. |
lookback_days | number | 14 | Days of history to examine. |
scope_hosts | list[host] | — | Specific gateways or jump servers to focus on; populate from the lead step results. |
vendor_accounts | list[string] | hvac_admin, integrator_service, vendor_support | Known vendor or third-party account names. |
Telemetry
| Source | Category | Telemetry |
|---|---|---|
| Endpoint telemetry (hb_ surfaces) | endpoint | endpoint |
| Identity / sign-in telemetry | identity | identity |
| Network telemetry | network | network |
Source
---
analysis: A standard rule alerts on a single login or shell; this hunt correlates
a successful third-party login with its preceding foothold and its rare follow-on
network connections, providing the context needed to distinguish maintenance from
an intrusion.
blind_spots:
- id: limited-gateway-telemetry
question: Whether a sign-in leads to execution on a host with no process logging
requires: Endpoint agent coverage on the gateway host
risk: If the gateway is a proprietary appliance with no agent, the hunt can see
the sign-in but not the subsequent bridge processes.
stage: third-party-supply-chain-entry
- id: always-on-tunnels
question: If a persistent vendor tunnel is used for silent lateral movement
requires: Network flow logs with start/end duration
risk: If a tunnel is already established, sign-in logs will not show a new event,
and the network activity might blend into existing traffic baselines.
stage: it-ot-gateway-bridging
coverage:
- stage: phishing-initial-foothold
status: covered
steps:
- phishing-foothold
- stage: third-party-supply-chain-entry
status: covered
steps:
- remote-access-lead
- evaluate-lead
- stage: it-ot-gateway-bridging
status: covered
steps:
- bridge-traversal
- reason: Belongs to another part of the '7 Key Manufacturing Cybersecurity Trends
for 2027 | Huntress' series.
stage: legacy-system-discovery
status: out_of_scope
- reason: Belongs to another part of the '7 Key Manufacturing Cybersecurity Trends
for 2027 | Huntress' series.
stage: lateral-protocol-tunneling
status: out_of_scope
- reason: Belongs to another part of the '7 Key Manufacturing Cybersecurity Trends
for 2027 | Huntress' series.
stage: ot-impact-ransomware
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: Manufacturing production uptime is the primary target for modern
ransomware. Securing the IT-to-OT bridge is the most critical control for preventing
a breach in the corporate office from impacting the shop floor.
methodology: model-assisted
trigger: intel-report
hypothesis: An adversary has breached a manufacturing network by using stolen vendor
credentials on a VPN gateway or by exploiting a phishing foothold to traverse an
IT-to-OT jump server.
labels:
- hunt
- attack.t1133
- attack.t1195
- attack.t1566
- attack.t1572
- command and control
- discovery
- impact
- initial access
name: Abuse of Remote Gateways and Third-Party Access
parameters:
connection_threshold:
default: '15'
description: Rare connection count threshold for bridge traversal.
type: number
corporate_apps:
default:
- outlook.exe
- chrome.exe
- msedge.exe
description: Email and browser processes that might spawn a phishing payload.
type: list[string]
gateway_keywords:
default:
- vpn-main
- gateway-01
- jump-server
- citrix-ext
description: Names of remote access or bridge infrastructure assets.
type: list[string]
interpreters:
default:
- powershell.exe
- cmd.exe
- wscript.exe
description: System interpreters used in initial foothold scripts.
type: list[string]
lookback_days:
default: '14'
description: Days of history to examine.
type: number
scope_hosts:
default: []
description: Specific gateways or jump servers to focus on; populate from the
lead step results.
type: list[host]
vendor_accounts:
default:
- hvac_admin
- integrator_service
- vendor_support
description: Known vendor or third-party account names.
from:
kind: manual
observed: '2026-10-14'
ref: incident
type: list[string]
provenance:
authors:
- name: Huntbase hunt generation
org: huntbase.io
generated:
by: huntbase-hunt-generation
from: https://www.huntress.com/blog/manufacturing-cybersecurity-trends
gates:
- dry-run
- lint
model: hb_google/gemini-3-flash-preview
rationale: Focus on servers identified as VPN concentrators or IT/OT jump servers.
The vendor_accounts list should be populated with the names of external contractors
who have remote access privileges.
references:
- name: 7 Key Manufacturing Cybersecurity Trends for 2027 | Huntress
url: https://www.huntress.com/blog/manufacturing-cybersecurity-trends
related:
- hunt: ot-ransomware-encryption-indicators
reason: This hunt focuses on the entry; a follow-on hunt should look for the file-level
encryption patterns of the ransomware payload itself.
relation: follows
scenario:
stages:
- name: Corporate Phishing Foothold
observables:
- Phishing emails targeting Sales or Finance departments
- Execution of malicious attachments on corporate laptops
slug: phishing-initial-foothold
tactic: initial-access
techniques:
- T1566
- name: Compromised Third-Party Vendor Access
observables:
- Use of stolen credentials from specialized machine integrators or HVAC contractors
- Persistent 'always-on' VPN links from vendor networks
- Remote management tool logins appearing as routine maintenance
slug: third-party-supply-chain-entry
tactic: initial-access
techniques:
- T1195
- name: IT-to-OT Bridge Access
observables:
- Access to Citrix or VPN appliances acting as bridges
- Logins to jump servers positioned between corporate and plant networks
- Stolen credentials used to cross network segmentation boundaries
slug: it-ot-gateway-bridging
tactic: initial-access
techniques:
- T1133
- name: Legacy Industrial Asset Discovery
observables:
- Windows 7 and Windows XP systems running as HMIs
- Legacy PLCs with hard-coded passwords like '1234' or 'password'
- Unencrypted management ports active on legacy execution systems
slug: legacy-system-discovery
tactic: discovery
techniques:
- T1133
- name: Lateral Movement via Tunneling
observables:
- Encapsulated network traffic traversing segment digital walls
- Lateral movement using Telnet (port 23), FTP (port 21), or unencrypted HTTP
(port 80)
- Connections to Human-Machine Interfaces (HMIs) and Programmable Logic Controllers
(PLCs)
slug: lateral-protocol-tunneling
tactic: command-and-control
techniques:
- T1572
- name: Operational Technology Ransomware Impact
observables:
- Encryption of files on Manufacturing Execution Systems (MES)
- Manipulation of PLC recipe values or belt speed
- Disabling of safety sensors on the plant floor
slug: ot-impact-ransomware
tactic: impact
techniques:
- T1486
summary: Attackers target manufacturing environments by gaining a corporate foothold
via phishing or compromised third-party vendor VPNs, subsequently pivoting into
operational technology (OT) networks through jump servers or poorly segmented
bridges. Once inside, they exploit legacy systems and unencrypted protocols (Telnet,
HTTP) to manipulate industrial control systems or deploy ransomware that disrupts
production uptime and assembly lines.
series:
index: 1
slug: 7-key-manufacturing-cybersecurity-trends-for-2027-huntress
title: 7 Key Manufacturing Cybersecurity Trends for 2027 | Huntress
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
network:
category: network
name: Network telemetry
telemetry:
- network
tlp: clear
type: investigation
---
# Abuse of Remote Gateways and Third-Party Access
Manufacturing networks are increasingly targeted through their remote access infrastructure. Adversaries exploit stolen vendor credentials or phishing footholds to traverse the IT-to-OT bridge and halt production. This hunt identifies successful but anomalous sign-ins from third-party accounts. It then fans out to find evidence of the preceding compromise on corporate laptops and subsequent lateral probing from the gateway into the internal network. An agent weighs these results to determine if an intruder has bridged the network segments.
## remote-access-lead
<!-- Vendor and Gateway Sign-in Lead -->
Identify successful authentications to gateways from vendor accounts or to specific gateway hostnames, handling domain prefixes and partial matches.
```sqlite target=identity role=scoping params=(vendor_accounts=vendor_accounts, gateway_keywords=gateway_keywords, lookback_days=lookback_days)
~~~yaml
expected: Rows show successful logins to critical gateways. Silence means no monitored
accounts or services were accessed during the window.
reads:
- actor_user_name
- device_hostname
- dst_endpoint_name
- logon_type
- src_endpoint_ip
- status_id
- time
silence: not_evidence_of_absence
source: hb_auth_signin
verified: dry-run
verified_at: '2026-10-15'
~~~
SELECT device_hostname, actor_user_name, src_endpoint_ip, dst_endpoint_name, logon_type, time FROM hb_auth_signin WHERE status_id = 1 AND ( (instr(',' || '{{vendor_accounts}}' || ',', ',' || (CASE WHEN instr(actor_user_name, '\') > 0 THEN SUBSTR(LOWER(actor_user_name), instr(actor_user_name, '\') + 1) ELSE LOWER(actor_user_name) END) || ',') > 0) OR (LOWER(dst_endpoint_name) LIKE '%vpn%' OR LOWER(dst_endpoint_name) LIKE '%gateway%' OR LOWER(dst_endpoint_name) LIKE '%jump%' OR LOWER(dst_endpoint_name) LIKE '%citrix%') OR (instr(',' || '{{gateway_keywords}}' || ',', ',' || LOWER(dst_endpoint_name) || ',') > 0) ) AND time >= datetime('now', '-{{lookback_days}} days')
```
## evaluate-lead
<!-- Evaluate Sign-in Lead -->
```agent target=hunter
cite: required
context:
- remote-access-lead
max_iterations: 3
objective: Determine if any sign-in from the lead query looks like credential abuse
(e.g., unusual geolocations or off-hours maintenance).
success_criteria: Verdicts identifying specific suspicious sessions.
tools:
- endpoint
- identity
- network
```
## gate-on-access
<!-- Gate: Proceed with Fan-out? -->
if~: "the evaluate-lead verdict identifies at least one suspicious or malicious sign-in" (confidence: medium, judge=hunter)
then: → corroborate-activity
indeterminate: → analyst-review
unavailable: → analyst-review (blind_spot: limited-gateway-telemetry)
else: → close-out
## corroborate-activity
<!-- Fan-out: Foothold and Bridge Evidence -->
parallel:
- → phishing-foothold
- → bridge-traversal
join: → final-triage
## phishing-foothold
<!-- Phishing Foothold: Email/Browser Child Processes -->
Identify potential initial compromise on corporate machines where malicious payloads spawn shells, using partial path matching for robust detection.
```sqlite target=endpoint role=detection-candidate params=(corporate_apps=corporate_apps, interpreters=interpreters, lookback_days=lookback_days)
~~~yaml
expected: Processes like PowerShell or CMD spawned directly from Outlook or a browser.
Silence indicates no obvious script-based payloads ran from common entry apps.
reads:
- device_hostname
- parent_process_name
- process_cmd_line
- process_name
- time
- user_name
silence: not_evidence_of_absence
source: hb_process_activity
verified: dry-run
verified_at: '2026-10-15'
~~~
SELECT device_hostname, process_name, process_cmd_line, parent_process_name, user_name, time FROM hb_process_activity WHERE (LOWER(parent_process_name) LIKE '%\outlook.exe' OR LOWER(parent_process_name) LIKE '%\chrome.exe' OR LOWER(parent_process_name) LIKE '%\msedge.exe' OR instr(',' || '{{corporate_apps}}' || ',', ',' || LOWER(parent_process_name) || ',') > 0) AND (LOWER(process_name) LIKE '%\powershell.exe' OR LOWER(process_name) LIKE '%\cmd.exe' OR LOWER(process_name) LIKE '%\wscript.exe' OR instr(',' || '{{interpreters}}' || ',', ',' || LOWER(process_name) || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```
## bridge-traversal
<!-- Bridge Traversal: Internal Network Probing -->
Detect bridging behavior where a gateway host initiates rare outbound connections to internal segments, using a tunable threshold.
```sqlite target=network role=baseline params=(scope_hosts=scope_hosts, lookback_days=lookback_days, connection_threshold=connection_threshold)
~~~yaml
baseline:
compare: first_seen
window: '{{lookback_days}}d'
expected: Rare outbound connections from gateway machines to internal IP addresses.
Silence suggests no anomalous probing from the identified gateways.
prevalence:
by: device_hostname
key:
- dst_endpoint_ip
- dst_endpoint_port
rare_below: 5
reads:
- device_hostname
- direction
- dst_endpoint_ip
- dst_endpoint_port
- process_name
- time
silence: not_evidence_of_absence
source: hb_network_connection
verified: dry-run
verified_at: '2026-10-15'
~~~
SELECT device_hostname, process_name, dst_endpoint_ip, dst_endpoint_port, COUNT(*) AS connection_count FROM hb_network_connection WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND direction = 'outbound' AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, process_name, dst_endpoint_ip, dst_endpoint_port HAVING connection_count < {{connection_threshold}} ORDER BY connection_count ASC
```
## final-triage
<!-- Final Triage: Confirm the Bridge -->
```agent target=hunter
cite: required
context:
- evaluate-lead
- phishing-foothold
- bridge-traversal
max_iterations: 5
objective: Determine if a compromised account was used to bridge from a corporate
foothold into the internal or OT network.
success_criteria: A final verdict of malicious, suspicious, or benign.
tools:
- endpoint
- identity
- network
```
## route-on-verdict
<!-- Route on Final Verdict -->
if~: "the final-triage verdict is malicious for at least one host or vendor account" (confidence: high, judge=hunter)
then: → isolate-gateway
indeterminate: → analyst-review
unavailable: → analyst-review
else: → close-out
## isolate-gateway
<!-- Isolate Gateway and Revoke Identity -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the compromised gateway host and revoke the affected vendor account's sessions in the identity provider.
```
→ analyst-review
## analyst-review
<!-- Analyst Post-Mortem -->
```manual target=analyst
Review the correlated timeline; evaluate whether the 'phishing-foothold' query is reliable enough for a permanent detection rule.
```
→ close-out
## close-out
<!-- Hunt Close-out -->
```manual target=analyst
Document the hunt outcome, noting that no suspicious gateway activity was found for the lookback period.
```
→ 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.