UNK_DeadDrop Credential and Crypto Wallet Theft
A developer has cloned a malicious repository that executed an Overlord-derived RAT to steal browser credentials and cryptocurrency wallets before cleaning up its own files.
Based on research by Proofpoint 2026-09-20 12 steps · 5 queries T1041 T1070.004 T1071.001 T1090.003 T1555
Brief
Why Now
Recent research from Proofpoint (https://www.proofpoint.com/us/blog/threat-insight/dont-fear-repo-unkdeaddrop-phishing-campaign-targets-developers-steal) details a targeted campaign against developers. The UNK_DeadDrop campaign uses social engineering to trick developers into cloning repositories that execute the Overlord RAT. This malware specifically targets browser credentials and cryptocurrency wallets. Because developers often handle sensitive API keys and financial assets, identifying this activity early is a priority.
How the Hunt Flows
The first phase identifies the relevant population within the estate. A query against process activity surfaces hosts running IDEs like VS Code or Cursor. This narrows the scope of the hunt to the high-value developer workstations most likely to be targeted by the UNK_DeadDrop campaign.
The hunt then launches a parallel search for initial infection markers. It looks for the execution of platform-specific Go binaries associated with the Overlord framework while simultaneously checking DNS activity for known C2 domains. This stage provides the first indicators of an active RAT on the identified workstations.
Next, the hunt pivots to behavioral evidence of successful compromise. It searches for outbound network connections with high aggregate traffic volume, representing the potential exfiltration of browser profiles or wallet files. In parallel, it monitors file activity for the automated deletion of directories like .vscode and vendor, which the malware uses as an anti-forensic measure to hide its presence.
In the final phase, an analyst or automated agent evaluates the relationship between these signals. A confirmed intrusion verdict depends on seeing the full chain: the execution of the RAT binary followed by significant data transfer and workspace cleanup.
Blind Spots
This hunt has two primary blind spots. First, it cannot inspect the encrypted WebSocket traffic used by the Overlord framework to see specific commands. We can see that a connection exists, but not which modules the adversary activates. Second, it relies on file deletion telemetry to identify cleanup. If a developer manually cleans their workspace after a project, it may create a false positive without process context for the deletion events.
Steps
-
Identify developer hosts
Query · scopingNarrow the scope to hosts running developer tools like VS Code or Cursor to prioritize high-value targets.
reads hb_process_activitysqlSELECT DISTINCT device_hostname FROM hb_process_activity WHERE (LOWER(process_name) LIKE '%code%' OR LOWER(process_name) LIKE '%cursor%') AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. A list of hostnames belonging to developers. Silence suggests no developer IDE activity was captured in the window.
-
Suspicious Overlord processes
Query · detection candidateFind the execution of the specific Go-based Overlord binaries named in the research on developer hosts.
reads hb_process_activitysqlSELECT device_hostname, process_name, process_path, process_cmd_line, time FROM hb_process_activity WHERE instr(',' || '{{malicious_binaries}}' || ',', ',' || LOWER(process_name) || ',') > 0 AND (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. Specific binary names running from unexpected paths like /tmp/ or cloned repository folders.
-
C2 infrastructure lookup
Query · enrichmentDetect DNS queries to the hardcoded C2 domains used by the Overlord RAT from developer workstations.
reads hb_dns_activitysqlSELECT device_hostname, query_hostname, process_name, time FROM hb_dns_activity WHERE instr(',' || '{{c2_domains}}' || ',', ',' || LOWER(query_hostname) || ',') > 0 AND (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. The Overlord binary or a related process resolving the runoptions.runon domain.
-
Evaluate initial infection
Agent triageAnalyze whether the process and DNS hits confirm the Overlord RAT is active.
-
Exfiltration traffic patterns
Query · baselineFind high-volume outbound network activity representing the exfiltration of wallet and credential data.
reads hb_network_connectionsqlSELECT device_hostname, process_name, dst_endpoint_ip, SUM(traffic_bytes) as total_bytes FROM hb_network_connection WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, process_name, dst_endpoint_ip HAVING total_bytes > 10000000What a hit looks like. Outbound connections with significant aggregate traffic volume (ZIP uploads) from unexpected binaries.
-
Malicious cleanup actions
Query · enrichmentIdentify the malware's attempts to hide its presence by deleting the .vscode and vendor directories on Windows, Linux, and macOS.
reads hb_file_activitysqlSELECT device_hostname, file_path, process_name, time FROM hb_file_activity WHERE activity_id = 4 AND (LOWER(file_path) LIKE '%.vscode%' OR LOWER(file_path) LIKE '%\\.vscode%' OR LOWER(file_path) LIKE '%/vendor/%') AND (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. Deletions of configuration directories by non-IDE processes or the identified Overlord binary.
-
Confirm exfiltration and cleanup
Agent triageSynthesize early infection signals with exfiltration and cleanup evidence to confirm the full attack chain.
-
Remediation route
DecisionRoute the hunt results based on the agent's confirmed intrusion verdict.
-
Isolate host
Response actionIsolate the compromised developer workstation to prevent further data loss of crypto assets.
-
Manual incident response
Analyst taskProvide a manual review task for cases where automation is insufficient.
-
Close hunt
Analyst taskLog the findings and document any visibility gaps for future tuning.
Coverage
Scenario coverage
| Stage | Covered | How, or why not |
|---|---|---|
| Browser and Wallet Credential Theft T1555 · T1539 |
Yes | suspicious-overlord-processes, evaluate-initial-infection |
| C2 over Overlord Framework T1071.001 · T1090.003 |
Yes | c2-infrastructure-lookup, evaluate-initial-infection |
| Exfiltration over C2 T1041 |
Yes | exfiltration-traffic-patterns, confirm-exfiltration-and-cleanup |
| Anti-Forensic Artifact Cleanup T1070.004 |
Yes | malicious-cleanup-actions, confirm-exfiltration-and-cleanup |
| Phishing via Malicious GitHub Repository T1566.002 · T1195.002 |
Out of scope | Belongs to another part of the 'UNK_DeadDrop phishing campaign targets developers' series. |
| Automated IDE Task Execution T1204.002 · T1059.004 · T1059.003 |
Out of scope | Belongs to another part of the 'UNK_DeadDrop phishing campaign targets developers' series. |
| Malicious VSIX Extension Persistence T1546 |
Out of scope | Belongs to another part of the 'UNK_DeadDrop phishing campaign targets developers' series. |
Blind spots
- Needs comprehensive hb_file_activity with delete events. Normal developer cleanup of old repositories could be mistaken for malware activity without process context for the deletion. It would answer Whether the .vscode directory was deleted by the malware or the user..
- Needs deep packet inspection or WebSocket-aware network logs. The hunt can see that a connection exists, but not the specific modules (browserlogin/companywallet) being activated in real-time. It would answer What commands were sent over the Overlord WebSocket connection..
Parameters & data
Parameters
| Parameter | Type | Default | What it is |
|---|---|---|---|
c2_domains | list[domain] | runoptions.runon | C2 domains identified in the research. |
lookback_days | number | 14 | Days of history to examine. |
malicious_binaries | list[string] | google-update-support-linux-amd64, google-update-support-darwin-amd64, google-update-support-darwin-arm64 | Overlord framework binaries used in the campaign. |
scope_hosts | list[host] | — | Restrict the detection phase to the identified developer population. |
Telemetry
| Source | Category | Telemetry |
|---|---|---|
| Endpoint telemetry (hb_ surfaces) | endpoint | endpoint |
| Network telemetry | network | network |
Source
---
analysis: A simple detection rule might fire on the Overlord binary name, but this
hunt uses a phased approach to connect initial execution with later behavioral evidence
of data exfiltration and anti-forensic cleanup, which provides the context necessary
to distinguish a real intrusion from a lone suspicious file.
blind_spots:
- id: limited-file-telemetry
question: Whether the .vscode directory was deleted by the malware or the user.
requires: comprehensive hb_file_activity with delete events
risk: Normal developer cleanup of old repositories could be mistaken for malware
activity without process context for the deletion.
stage: evasion-artifact-cleanup
- id: websocket-blindness
question: What commands were sent over the Overlord WebSocket connection.
requires: deep packet inspection or WebSocket-aware network logs
risk: The hunt can see that a connection exists, but not the specific modules (browserlogin/companywallet)
being activated in real-time.
stage: c2-overlord-framework
coverage:
- stage: credential-access-wallet-theft
status: covered
steps:
- suspicious-overlord-processes
- evaluate-initial-infection
- stage: c2-overlord-framework
status: covered
steps:
- c2-infrastructure-lookup
- evaluate-initial-infection
- stage: exfiltration-c2-channel
status: covered
steps:
- exfiltration-traffic-patterns
- confirm-exfiltration-and-cleanup
- stage: evasion-artifact-cleanup
status: covered
steps:
- malicious-cleanup-actions
- confirm-exfiltration-and-cleanup
- reason: Belongs to another part of the 'UNK_DeadDrop phishing campaign targets developers'
series.
stage: initial-access-phishing-repo
status: out_of_scope
- reason: Belongs to another part of the 'UNK_DeadDrop phishing campaign targets developers'
series.
stage: execution-ide-task-automation
status: out_of_scope
- reason: Belongs to another part of the 'UNK_DeadDrop phishing campaign targets developers'
series.
stage: persistence-malicious-vsix
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: Developer workstations contain sensitive assets like API tokens and
crypto wallets that are not protected by standard identity controls. A North Korean
actor-led campaign specifically targeting these assets makes a negative result
across the estate highly valuable.
methodology: model-assisted
trigger: intel-report
hypothesis: A developer has cloned a malicious repository that executed an Overlord-derived
RAT to steal browser credentials and cryptocurrency wallets before cleaning up its
own files.
labels:
- hunt
- attack.t1041
- attack.t1071.001
- attack.t1090.003
- attack.t1555
- attack.t1070.004
name: UNK_DeadDrop Credential and Crypto Wallet Theft
parameters:
c2_domains:
default:
- runoptions.runon
description: C2 domains identified in the research.
from:
kind: article
observed: '2026-05-30'
ref: proofpoint-unk-deaddrop
type: list[domain]
lookback_days:
default: '14'
description: Days of history to examine.
from:
kind: manual
observed: '2026-05-30'
ref: hunt-standard
type: number
malicious_binaries:
default:
- google-update-support-linux-amd64
- google-update-support-darwin-amd64
- google-update-support-darwin-arm64
description: Overlord framework binaries used in the campaign.
from:
kind: article
observed: '2026-05-30'
ref: proofpoint-unk-deaddrop
type: list[string]
scope_hosts:
default: []
description: Restrict the detection phase to the identified developer population.
from:
kind: manual
observed: '2026-05-30'
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/dont-fear-repo-unkdeaddrop-phishing-campaign-targets-developers-steal
gates:
- dry-run
- lint
model: hb_google/gemini-3-flash-preview
rationale: Start with developer-heavy segments, particularly targeting DeFi or cryptocurrency-related
projects. Use the identify-developer-hosts query to prioritize workstations with
VS Code or Cursor IDEs installed.
references:
- name: "Proofpoint \u2014 UNK_DeadDrop phishing campaign targets developers"
url: https://www.proofpoint.com/us/blog/threat-insight/dont-fear-repo-unkdeaddrop-phishing-campaign-targets-developers-steal
related:
- hunt: malicious-vsix-extension-persistence
reason: This hunt focuses on the post-infection actions of the RAT, while VSIX persistence
is a separate mechanism needing module load analysis.
relation: out-of-scope-alternative
scenario:
stages:
- name: Phishing via Malicious GitHub Repository
observables:
- github.com/Pulsynk/pulsynk
- github.com/Trixauvex-org/trixauvex
- github.com/sr-werney/forge-4626-invariants
- github.com/skyjum/x402-kit
- 'Themes: DeFi recruitment, code reviews, technical assignments'
slug: initial-access-phishing-repo
tactic: initial-access
techniques:
- T1566.002
- T1195.002
- name: Automated IDE Task Execution
observables:
- tasks.json
- 'runoptions.runon: folderOpen'
- vendor/run-update.sh
- vendor/run-update-hidden-launch.vbs
- wscript.exe //B //Nologo vendor/run-update-hidden-launch.vbs
- /bin/bash vendor/run-update.sh
slug: execution-ide-task-automation
tactic: execution
techniques:
- T1204.002
- T1059.004
- T1059.003
- name: Malicious VSIX Extension Persistence
observables:
- google-update-support VSIX extension
- google-update-support-darwin-arm64
- google-update-support-linux-amd64
slug: persistence-malicious-vsix
tactic: persistence
techniques:
- T1546
- name: Browser and Wallet Credential Theft
observables:
- 'Module: browserlogin'
- 'Module: companywallet'
- Accessing Chrome/Firefox profile data
- Targeting browser crypto wallet extensions
slug: credential-access-wallet-theft
tactic: credential-access
techniques:
- T1555
- T1539
- name: C2 over Overlord Framework
observables:
- WebSocket persistent connectivity
- Hardcoded C&C servers
- Overlord C&C framework (Go-based)
slug: c2-overlord-framework
tactic: command-and-control
techniques:
- T1071.001
- T1090.003
- name: Exfiltration over C2
observables:
- ZIP and upload of wallet data
- Exfiltration of browser credentials
slug: exfiltration-c2-channel
tactic: exfiltration
techniques:
- T1041
- name: Anti-Forensic Artifact Cleanup
observables:
- 'Module: cleanup'
- Deletion of .vscode directory
- Deletion of vendor/ directory from cloned repo
slug: evasion-artifact-cleanup
tactic: defense-evasion
techniques:
- T1070.004
summary: The UNK_DeadDrop campaign by North Korean actors targets developers via
phishing emails containing links to malicious GitHub repositories. When victims
open these repositories in IDEs like VS Code or Cursor, automated tasks execute
platform-specific loaders that install malicious extensions and Go-based or Node.js
malware designed to steal cryptocurrency wallets and browser credentials.
series:
index: 2
slug: unk-deaddrop-phishing-campaign-targets-developers
title: UNK_DeadDrop phishing campaign targets developers
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
---
# UNK_DeadDrop Credential and Crypto Wallet Theft
This hunt targets the final stages of the UNK_DeadDrop campaign, an operation attributed to North Korean threat actors. It identifies developer workstations using VS Code or Cursor, then searches for the execution of platform-specific Go binaries from the Overlord framework. The hunt pivots to find evidence of large data transfers and the automated deletion of workspace directories like .vscode and vendor, which the malware uses to hide its tracks. A phased approach ensures that early infection evidence is evaluated before weighing the high-volume exfiltration and cleanup activity to confirm a successful intrusion.
## identify-developer-hosts
<!-- Identify developer hosts -->
Narrow the scope to hosts running developer tools like VS Code or Cursor to prioritize high-value targets.
```sqlite target=endpoint role=scoping params=(lookback_days=lookback_days)
~~~yaml
expected: A list of hostnames belonging to developers. Silence suggests no developer
IDE activity was captured in the window.
reads:
- device_hostname
- process_name
- time
silence: not_evidence_of_absence
source: hb_process_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT DISTINCT device_hostname FROM hb_process_activity WHERE (LOWER(process_name) LIKE '%code%' OR LOWER(process_name) LIKE '%cursor%') AND time >= datetime('now', '-{{lookback_days}} days')
```
## early-infection-parallel
<!-- Early infection parallel search -->
parallel:
- → suspicious-overlord-processes
- → c2-infrastructure-lookup
join: → evaluate-initial-infection
## suspicious-overlord-processes
<!-- Suspicious Overlord processes -->
Find the execution of the specific Go-based Overlord binaries named in the research on developer hosts.
```sqlite target=endpoint role=detection-candidate params=(lookback_days=lookback_days, malicious_binaries=malicious_binaries, scope_hosts=scope_hosts)
~~~yaml
expected: Specific binary names running from unexpected paths like /tmp/ or cloned
repository folders.
reads:
- device_hostname
- process_name
- process_path
- process_cmd_line
- time
silence: not_evidence_of_absence
source: hb_process_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, process_name, process_path, process_cmd_line, time FROM hb_process_activity WHERE instr(',' || '{{malicious_binaries}}' || ',', ',' || LOWER(process_name) || ',') > 0 AND (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND time >= datetime('now', '-{{lookback_days}} days')
```
## c2-infrastructure-lookup
<!-- C2 infrastructure lookup -->
Detect DNS queries to the hardcoded C2 domains used by the Overlord RAT from developer workstations.
```sqlite target=endpoint role=enrichment params=(lookback_days=lookback_days, c2_domains=c2_domains, scope_hosts=scope_hosts)
~~~yaml
expected: The Overlord binary or a related process resolving the runoptions.runon
domain.
reads:
- device_hostname
- query_hostname
- process_name
- time
silence: not_evidence_of_absence
source: hb_dns_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, query_hostname, process_name, time FROM hb_dns_activity WHERE instr(',' || '{{c2_domains}}' || ',', ',' || LOWER(query_hostname) || ',') > 0 AND (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND time >= datetime('now', '-{{lookback_days}} days')
```
## evaluate-initial-infection
<!-- Evaluate initial infection -->
```agent target=hunter
cite: required
context:
- suspicious-overlord-processes
- c2-infrastructure-lookup
max_iterations: 4
objective: Determine if any host shows evidence of the Overlord RAT based on binary
names and DNS traffic.
success_criteria: A suspicious or malicious verdict citing specific rows for at least
one host.
tools:
- endpoint
- network
```
## follow-on-activity-parallel
<!-- Follow-on activity parallel search -->
parallel:
- → exfiltration-traffic-patterns
- → malicious-cleanup-actions
join: → confirm-exfiltration-and-cleanup
## exfiltration-traffic-patterns
<!-- Exfiltration traffic patterns -->
Find high-volume outbound network activity representing the exfiltration of wallet and credential data.
```sqlite target=network role=baseline params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
baseline:
compare: first_seen
window: '{{lookback_days}}d'
expected: Outbound connections with significant aggregate traffic volume (ZIP uploads)
from unexpected binaries.
prevalence:
by: device_hostname
key:
- dst_endpoint_ip
rare_below: 3
reads:
- device_hostname
- process_name
- dst_endpoint_ip
- traffic_bytes
- time
silence: not_evidence_of_absence
source: hb_network_connection
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, process_name, dst_endpoint_ip, SUM(traffic_bytes) as total_bytes FROM hb_network_connection WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, process_name, dst_endpoint_ip HAVING total_bytes > 10000000
```
## malicious-cleanup-actions
<!-- Malicious cleanup actions -->
Identify the malware's attempts to hide its presence by deleting the .vscode and vendor directories on Windows, Linux, and macOS.
```sqlite target=endpoint role=enrichment params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
expected: Deletions of configuration directories by non-IDE processes or the identified
Overlord binary.
reads:
- device_hostname
- file_path
- process_name
- time
- activity_id
silence: not_evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, file_path, process_name, time FROM hb_file_activity WHERE activity_id = 4 AND (LOWER(file_path) LIKE '%.vscode%' OR LOWER(file_path) LIKE '%\\.vscode%' OR LOWER(file_path) LIKE '%/vendor/%') AND (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND time >= datetime('now', '-{{lookback_days}} days')
```
## confirm-exfiltration-and-cleanup
<!-- Confirm exfiltration and cleanup -->
```agent target=hunter
cite: required
context:
- evaluate-initial-infection
- exfiltration-traffic-patterns
- malicious-cleanup-actions
max_iterations: 6
objective: Analyze the relationship between the Overlord RAT signals and the subsequent
high-volume network traffic and workspace cleanup.
success_criteria: A malicious verdict for any host that shows infection followed by
exfiltration or automated workspace deletion.
tools:
- endpoint
- network
```
## remediation-route
<!-- Remediation route -->
if~: "the confirm-exfiltration-and-cleanup verdict is malicious for at least one host" (confidence: high, judge=hunter)
then: → isolate-host
indeterminate: → manual-incident-response
unavailable: → manual-incident-response (blind_spot: limited-file-telemetry)
else: → close-hunt
## isolate-host
<!-- Isolate host -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the identified host and collect memory and browser profile artifacts for forensic analysis.
```
→ manual-incident-response
## manual-incident-response
<!-- Manual incident response -->
```manual target=analyst
Review the cited rows from the Overlord binaries, C2 DNS traffic, and exfiltration logs. Confirm the malicious nature of the IDE workspace cleanup.
```
→ close-hunt
## close-hunt
<!-- Close hunt -->
```manual target=analyst
Document the hosts found with UNK_DeadDrop indicators. Update the malicious_binaries and c2_domains lists with any new findings.
```
→ 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.