Gorbag: Browser Data Harvesting and Exfiltration
A Russia-aligned actor is stealing browser credentials and VPN configurations, exfiltrating them via Telegram or direct IP, and then deleting the evidence from disk.
Based on research by ESET Research 2026-11-04 9 steps · 3 queries T1005 T1048.001 T1070.004 T1071.001 T1217 T1539 T1555.003 T1560 T1567
Brief
Strategic Intel Theft
A recent report from ESET Research, Gorbag: Orcs at the border harvesting intelligence from Ukraine, describes a targeted intelligence-gathering campaign. The adversary, likely Russia-aligned, focuses on Ukrainian justice and defense sectors to harvest credentials and VPN configurations. Their toolkit, including BeautyStealer, operates with a 'one-pass' philosophy: access the data, archive it, send it, and delete the evidence. We designed this hunt to find this specific progression of behaviors across an enterprise fleet.
How the Hunt Flows
The lead query identifies non-browser processes that read sensitive browser credential databases or VPN configuration files. It targets SQLite databases for Chrome and Edge, alongside OpenVPN and Cisco configuration files. A hit here indicates that a process other than the legitimate application is interested in identity secrets.
Once the hunt identifies suspicious access, it executes two parallel queries to build evidence. The first branch looks for rare process behaviors, specifically the creation of RAR or ZIP archives and file deletions within the ProgramData directory. This pattern matches the staging and cleanup behavior observed in BeautyStealer infections. The hunt stacks these events by host count to highlight outliers.
The second parallel branch examines network telemetry. It matches outbound connections against known command-and-control (C2) IPs and domains provided in the ESET report. It also flags any process communicating with the Telegram API (api.telegram.org), which the actor uses as a convenient, encrypted exfiltration channel.
Finally, an analyst or automated agent weighs these signals. A host where a rare process read a browser database, created a ZIP file, and then connected to Telegram represents a confirmed intrusion. This multi-stage approach ensures that the noise of legitimate administrative tools does not drown out the actual threat.
Blind Spots
This hunt relies on specific telemetry. If the environment does not have file read-access auditing enabled for user profile paths, the lead query will return no results. Without this visibility, unauthorized access to SQLite databases remains invisible. Additionally, while we identify traffic to Telegram, the use of RC4 encryption over HTTPS prevents us from seeing exactly what data was stolen without full SSL inspection.
Running the Hunt
This hunt is available as an open hunt.md playbook. You can import it directly into Huntbase or any other hunt.md-aware runtime. It uses a 14-day lookback by default and allows you to scope the search to specific high-value hosts or departments most likely to be targeted by Gorbag.
In this series
Steps
-
Suspicious browser and VPN data access
Query · detection candidateIdentify non-browser processes reading sensitive credential databases or VPN configurations as a lead for data theft.
reads hb_file_activitysqlSELECT device_hostname, process_name, file_path, time FROM hb_file_activity WHERE activity_id = 2 AND (LOWER(file_path) LIKE '%\google\chrome\user data%\login data' OR LOWER(file_path) LIKE '%\microsoft\edge\user data%\login data' OR LOWER(file_path) LIKE '%\google\chrome\user data%\cookies' OR LOWER(file_path) LIKE '%.ovpn' OR LOWER(file_path) LIKE '%.pcf' OR LOWER(file_path) LIKE '%\etc\openvpn%') AND (LOWER(process_name) NOT LIKE '%\chrome.exe' AND LOWER(process_name) NOT LIKE '%\msedge.exe' AND LOWER(process_name) NOT LIKE '%\vpn.exe' AND LOWER(process_name) NOT LIKE '%\browser.exe') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. A row names a process that has no business reading browser or VPN secrets. Silence suggests no such unauthorized access occurred via this vector.
-
Rare archiving and cleanup activity
Query · baselineFind rare processes creating archives or performing cleanup in ProgramData, characteristic of BeautyStealer.
reads hb_file_activitysqlSELECT LOWER(process_name) AS process, COUNT(DISTINCT device_hostname) AS host_count, COUNT(*) AS event_count, MIN(time) AS first_seen FROM hb_file_activity WHERE ((activity_id = 1 AND (LOWER(file_path) LIKE '%.rar' OR LOWER(file_path) LIKE '%.zip' OR LOWER(file_path) LIKE '%.7z')) OR (activity_id = 4 AND LOWER(file_path) LIKE 'c:\programdata\%')) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY 1 HAVING host_count <= 3 ORDER BY host_count ASCWhat a hit looks like. A rare process creating archives or deleting files in common malware staging paths. Frequent processes are likely legitimate software.
-
Connections to exfiltration infrastructure
Query · triageMatch network traffic against known Gorbag infrastructure or the Telegram API used for exfiltration.
reads hb_network_connectionsqlSELECT device_hostname, process_name, dst_endpoint_ip, dst_endpoint_hostname, time FROM hb_network_connection WHERE (instr(',' || '{{gorbag_ips}}' || ',', ',' || dst_endpoint_ip || ',') > 0 OR instr(',' || '{{gorbag_domains}}' || ',', ',' || LOWER(dst_endpoint_hostname) || ',') > 0 OR LOWER(dst_endpoint_hostname) = 'api.telegram.org') AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. Traffic to specific IPs or the Telegram API linked to a suspicious process confirms exfiltration.
-
Triage harvesting behavior
Agent triageEvaluate whether the combined file access, archiving, and network activity indicate an intelligence harvesting intrusion.
-
Route on verdict
DecisionDirect the analyst to immediate remediation or standard review.
-
Isolate host and revoke credentials
Response actionImmediately stop ongoing exfiltration and prevent use of stolen credentials.
-
Forensic validation
Analyst taskIdentify which specific files and credentials were stolen and look for signs of follow-on activity.
-
Hunt closeout
Analyst taskDocument findings and determine if current detection rules require tuning.
Coverage
Scenario coverage
| Stage | Covered | How, or why not |
|---|---|---|
| Rapid Browser and VPN Data Theft T1555.003 · T1539 · T1217 · T1005 |
Yes | suspicious-credential-access, rare-process-file-behavior |
| C2 and Telegram Exfiltration T1071.001 · T1567 · T1048.001 |
Yes | exfiltration-network-traffic |
| Self-Deletion Cleanup T1070.004 |
Yes | rare-process-file-behavior |
| Spearphishing with Malicious Lures T1566.001 · T1199 |
Out of scope | Belongs to another part of the 'Gorbag: Orcs at the border harvesting intelligence from Ukraine' series. |
| WinRAR Path Traversal Exploitation T1203 |
Out of scope | Belongs to another part of the 'Gorbag: Orcs at the border harvesting intelligence from Ukraine' series. |
| Macro or PowerShell Dropper Execution T1059.001 · T1027.009 |
Out of scope | Belongs to another part of the 'Gorbag: Orcs at the border harvesting intelligence from Ukraine' series. |
| Persistence via Startup Folder T1547.001 |
Out of scope | Belongs to another part of the 'Gorbag: Orcs at the border harvesting intelligence from Ukraine' series. |
Blind spots
- Needs hb_file_activity with read-access auditing. Without read auditing, unauthorized access to credentials leaves no trace in the lead query. It would answer Did any process read the browser SQLite databases?. Remediation: Enable 'Audit File System' for application data paths under user profiles via GPO.
- Needs HTTPS inspection or endpoint socket attribution. The use of RC4 encryption on top of HTTPS makes it impossible to determine the volume or content of stolen data from network telemetry alone. It would answer Was the data transmitted to Telegram or the C2 encrypted or plain text?. Remediation: Deploy SSL inspection for traffic to known cloud services like Telegram and correlate with process telemetry.
Parameters & data
Parameters
| Parameter | Type | Default | What it is |
|---|---|---|---|
gorbag_domains | list[domain] | psw.agent.ma, agent.eji, runner.fb | C2 domains identified in the report. |
gorbag_ips | list[ip] | 89.44.9.186, 142.111.194.73 | C2 and exfiltration IPs identified in the report. |
lookback_days | number | 14 | Days of history to examine. |
scope_hosts | list[host] | — | Limit the hunt to specific hosts; leave empty to hunt across the entire estate. |
Telemetry
| Source | Category | Telemetry |
|---|---|---|
| Endpoint telemetry (hb_ surfaces) | endpoint | endpoint |
| Network telemetry | network | network |
Source
---
analysis: A single detection rule would miss the 'one-pass' nature of this threat.
This hunt pivots between unauthorized credential access, rare process behavior stack-counting,
and network exfiltration patterns, providing context that an analyst must weigh
to confirm the intrusion.
blind_spots:
- id: no-file-telemetry
owner: Endpoint Security Team
question: Did any process read the browser SQLite databases?
remediation: Enable 'Audit File System' for application data paths under user profiles
via GPO.
requires: hb_file_activity with read-access auditing
risk: Without read auditing, unauthorized access to credentials leaves no trace
in the lead query.
stage: browser-intel-harvesting
- id: encrypted-network-exfiltration
owner: Network Operations
question: Was the data transmitted to Telegram or the C2 encrypted or plain text?
remediation: Deploy SSL inspection for traffic to known cloud services like Telegram
and correlate with process telemetry.
requires: HTTPS inspection or endpoint socket attribution
risk: The use of RC4 encryption on top of HTTPS makes it impossible to determine
the volume or content of stolen data from network telemetry alone.
stage: network-c2-and-exfiltration
coverage:
- stage: browser-intel-harvesting
status: covered
steps:
- suspicious-credential-access
- rare-process-file-behavior
- stage: network-c2-and-exfiltration
status: covered
steps:
- exfiltration-network-traffic
- stage: post-intrusion-cleanup
status: covered
steps:
- rare-process-file-behavior
- reason: 'Belongs to another part of the ''Gorbag: Orcs at the border harvesting
intelligence from Ukraine'' series.'
stage: spearphishing-delivery
status: out_of_scope
- reason: 'Belongs to another part of the ''Gorbag: Orcs at the border harvesting
intelligence from Ukraine'' series.'
stage: exploit-winrar-traversal
status: out_of_scope
- reason: 'Belongs to another part of the ''Gorbag: Orcs at the border harvesting
intelligence from Ukraine'' series.'
stage: dropper-execution-vba-ps
status: out_of_scope
- reason: 'Belongs to another part of the ''Gorbag: Orcs at the border harvesting
intelligence from Ukraine'' series.'
stage: startup-persistence
status: out_of_scope
guardrails:
claims: no_unsupported
evidence: citation_required
missing_data: not_benign
telemetry: untrusted
hunt:
applicability: campaign-specific
handoff: keep-as-periodic-hunt
justification: Gorbag acts as an initial access broker for Russia-aligned APTs,
harvesting intelligence for strategic battle damage assessment. Detecting their
tools in the collection phase prevents the follow-on intrusions that these stolen
credentials enable.
methodology: model-assisted
trigger: intel-report
hypothesis: A Russia-aligned actor is stealing browser credentials and VPN configurations,
exfiltrating them via Telegram or direct IP, and then deleting the evidence from
disk.
labels:
- hunt
- attack.t1555.003
- attack.t1539
- attack.t1217
- attack.t1005
- attack.t1071.001
- attack.t1567
- attack.t1048.001
- attack.t1070.004
- attack.t1560
- command and control
- credential access
- defense evasion
- execution
- initial access
- persistence
name: 'Gorbag: Browser Data Harvesting and Exfiltration'
parameters:
gorbag_domains:
default:
- psw.agent.ma
- agent.eji
- runner.fb
description: C2 domains identified in the report.
from:
kind: article
observed: '2026-11-03'
ref: eset-research
type: list[domain]
gorbag_ips:
default:
- 89.44.9.186
- 142.111.194.73
description: C2 and exfiltration IPs identified in the report.
from:
kind: article
observed: '2026-11-03'
ref: eset-research
type: list[ip]
lookback_days:
default: '14'
description: Days of history to examine.
type: number
scope_hosts:
default: []
description: Limit the hunt to specific hosts; leave empty to hunt across the
entire estate.
type: list[host]
provenance:
authors:
- name: Huntbase hunt generation
org: huntbase.io
generated:
by: huntbase-hunt-generation
from: https://www.welivesecurity.com/en/eset-research/gorbag-orcs-border-harvesting-intelligence-ukraine/
gates:
- dry-run
- lint
- critic
model: hb_google/gemini-3-flash-preview
rationale: Focus the hunt on Ukrainian justice, law enforcement, and defense sector
entities. Prioritize systems where WinRAR is installed or systems belonging to administrative
staff who process fines or tax documents.
references:
- name: 'Gorbag: Orcs at the border harvesting intelligence from Ukraine'
url: https://www.welivesecurity.com/en/eset-research/gorbag-orcs-border-harvesting-intelligence-ukraine/
related:
- hunt: winrar-exploit-startup-persistence
reason: This hunt focuses on the collection and exfiltration phase; the WinRAR exploit
and startup folder persistence are covered in a companion hunt.
relation: out-of-scope-alternative
- hunt: gorbag-rapid-harvester-deployment
relation: follows
scenario:
stages:
- name: Spearphishing with Malicious Lures
observables:
- "\u0434\u043E\u0434\u0430\u0442\u043E\u043A \u043F\u043E\u0434\u0430\u0442\u043A\
\u043E\u0432\u0430.xlsm"
- "\u041F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F 4726-49.rar"
- Email subjects regarding administrative fines or taxes
slug: spearphishing-delivery
tactic: initial-access
techniques:
- T1566.001
- T1199
- name: WinRAR Path Traversal Exploitation
observables:
- CVE-2025-8088
- Extraction of alternate data streams outside directory
- LNK file written to Startup folder
slug: exploit-winrar-traversal
tactic: execution
techniques:
- T1203
- name: Macro or PowerShell Dropper Execution
observables:
- VBA decoding base64 from Excel cells
- Payload dropped into %ProgramData%
- PowerShell loader in %ProgramData%
slug: dropper-execution-vba-ps
tactic: execution
techniques:
- T1059.001
- T1027.009
- name: Persistence via Startup Folder
observables:
- LNK file in %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
slug: startup-persistence
tactic: persistence
techniques:
- T1547.001
- name: Rapid Browser and VPN Data Theft
observables:
- BeautyStealer access to browser profile databases
- Collection of VPN configurations
- Staging of documents for exfiltration
slug: browser-intel-harvesting
tactic: credential-access
techniques:
- T1555.003
- T1539
- T1217
- T1005
- name: C2 and Telegram Exfiltration
observables:
- HTTPS connection to 89.44.9.186 (Prime ReverseShell)
- Exfiltration to 142.111.194.73
- Data exfiltration via Telegram API
- RC4 encrypted payloads
slug: network-c2-and-exfiltration
tactic: command-and-control
techniques:
- T1071.001
- T1567
- T1048.001
- name: Self-Deletion Cleanup
observables:
- Malware binary removal from %ProgramData% after single pass execution
slug: post-intrusion-cleanup
tactic: defense-evasion
techniques:
- T1070.004
summary: Gorbag is a Russia-aligned threat actor targeting Ukrainian law enforcement
and defense sectors since 2025. They utilize spearphishing with macro-enabled
spreadsheets or WinRAR exploits (CVE-2025-8088) to deploy BeautyStealer for rapid
credential and file harvesting and Prime ReverseShell for command and control
before performing self-deletion.
series:
index: 2
slug: gorbag-orcs-at-the-border-harvesting-intelligence-from-ukraine
title: 'Gorbag: Orcs at the border harvesting intelligence from Ukraine'
total: 2
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
network:
category: network
name: Network telemetry
telemetry:
- network
tlp: clear
type: investigation
---
# Gorbag: Browser Data Harvesting and Exfiltration
This hunt identifies the one-pass data harvesting pattern of BeautyStealer and Prime ReverseShell, as observed in attacks against Ukrainian administrations and defense sectors. It begins by identifying unauthorized access to browser credential databases and VPN configurations. The hunt then corroborates this behavior using two parallel queries: one that identifies rare archiving and cleanup activity across the fleet, and another that matches network traffic against known exfiltration infrastructure and the Telegram API. Finally, an agent weighs the combined evidence to identify hosts where intelligence harvesting has occurred.
## suspicious-credential-access
<!-- Suspicious browser and VPN data access -->
Identify non-browser processes reading sensitive credential databases or VPN configurations as a lead for data theft.
```sqlite target=endpoint role=detection-candidate params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
expected: A row names a process that has no business reading browser or VPN secrets.
Silence suggests no such unauthorized access occurred via this vector.
reads:
- device_hostname
- process_name
- file_path
- time
silence: evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-11-04'
~~~
SELECT device_hostname, process_name, file_path, time FROM hb_file_activity WHERE activity_id = 2 AND (LOWER(file_path) LIKE '%\google\chrome\user data%\login data' OR LOWER(file_path) LIKE '%\microsoft\edge\user data%\login data' OR LOWER(file_path) LIKE '%\google\chrome\user data%\cookies' OR LOWER(file_path) LIKE '%.ovpn' OR LOWER(file_path) LIKE '%.pcf' OR LOWER(file_path) LIKE '%\etc\openvpn%') AND (LOWER(process_name) NOT LIKE '%\chrome.exe' AND LOWER(process_name) NOT LIKE '%\msedge.exe' AND LOWER(process_name) NOT LIKE '%\vpn.exe' AND LOWER(process_name) NOT LIKE '%\browser.exe') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```
## corroborative-activity
<!-- Corroborate with behavior and network -->
parallel:
- → rare-process-file-behavior
- → exfiltration-network-traffic
join: → agent-triage
## rare-process-file-behavior
<!-- Rare archiving and cleanup activity -->
Find rare processes creating archives or performing cleanup in ProgramData, characteristic of BeautyStealer.
```sqlite target=endpoint role=baseline params=(lookback_days=lookback_days)
~~~yaml
baseline:
compare: first_seen
window: '{{lookback_days}}d'
expected: A rare process creating archives or deleting files in common malware staging
paths. Frequent processes are likely legitimate software.
prevalence:
by: device_hostname
key:
- process_name
rare_below: 3
reads:
- process_name
- device_hostname
- file_path
- activity_id
- time
silence: not_evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-11-04'
~~~
SELECT LOWER(process_name) AS process, COUNT(DISTINCT device_hostname) AS host_count, COUNT(*) AS event_count, MIN(time) AS first_seen FROM hb_file_activity WHERE ((activity_id = 1 AND (LOWER(file_path) LIKE '%.rar' OR LOWER(file_path) LIKE '%.zip' OR LOWER(file_path) LIKE '%.7z')) OR (activity_id = 4 AND LOWER(file_path) LIKE 'c:\programdata\%')) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY 1 HAVING host_count <= 3 ORDER BY host_count ASC
```
## exfiltration-network-traffic
<!-- Connections to exfiltration infrastructure -->
Match network traffic against known Gorbag infrastructure or the Telegram API used for exfiltration.
```sqlite target=network role=triage params=(lookback_days=lookback_days, gorbag_ips=gorbag_ips, gorbag_domains=gorbag_domains)
~~~yaml
expected: Traffic to specific IPs or the Telegram API linked to a suspicious process
confirms exfiltration.
reads:
- device_hostname
- process_name
- dst_endpoint_ip
- dst_endpoint_hostname
- time
silence: not_evidence_of_absence
source: hb_network_connection
verified: dry-run
verified_at: '2026-11-04'
~~~
SELECT device_hostname, process_name, dst_endpoint_ip, dst_endpoint_hostname, time FROM hb_network_connection WHERE (instr(',' || '{{gorbag_ips}}' || ',', ',' || dst_endpoint_ip || ',') > 0 OR instr(',' || '{{gorbag_domains}}' || ',', ',' || LOWER(dst_endpoint_hostname) || ',') > 0 OR LOWER(dst_endpoint_hostname) = 'api.telegram.org') AND time >= datetime('now', '-{{lookback_days}} days')
```
## agent-triage
<!-- Triage harvesting behavior -->
```agent target=hunter
cite: required
context:
- suspicious-credential-access
- rare-process-file-behavior
- exfiltration-network-traffic
max_iterations: 5
objective: Determine if the observed behavior on a host constitutes a Gorbag data-stealing
intrusion by linking unauthorized credential access to exfiltration traffic.
success_criteria: A per-host verdict of malicious | suspicious | benign, citing the
rows that link the harvesting process to its exfiltration destination.
tools:
- endpoint
- network
```
## route-verdict
<!-- Route on verdict -->
if~: "The triage verdict is malicious for at least one host, indicating data harvesting and exfiltration has occurred." (confidence: high, judge=hunter)
then: → remediate-and-isolate
indeterminate: → forensic-investigation
unavailable: → forensic-investigation (blind_spot: no-file-telemetry)
else: → hunt-closeout
## remediate-and-isolate
<!-- Isolate host and revoke credentials -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the host immediately to prevent further exfiltration. Revoke all active sessions and initiate password resets for any user whose browser profile or VPN configuration was accessed.
```
→ forensic-investigation
## forensic-investigation
<!-- Forensic validation -->
```manual target=analyst
Review the file activity rows to identify the specific documents and credential stores accessed. Examine the exfiltration destination to confirm if data was successfully sent. Search for signs of lateral movement or secondary payloads that may have been deployed before BeautyStealer removed itself.
```
→ hunt-closeout
## hunt-closeout
<!-- Hunt closeout -->
```manual target=analyst
Record the final status of all hosts examined. If suspicious-credential-access returned high-fidelity results, promote it to a standing detection rule.
```
→ 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.