Software · OAK-S30 · malware (Python second-stage backdoor / credential-and-wallet-data infostealer)
OAK-S30 — InvisibleFerret
Description
InvisibleFerret is the Python-based second-stage backdoor used by the DPRK Lazarus / TraderTraitor / BlueNoroff cluster in the Contagious Interview / Wagemole campaign, paired structurally with the OAK-S29 BeaverTail first-stage loader in the canonical two-stage payload-chain architecture. The canonical reference is the same July 2023 Palo Alto Unit 42 publication that established the BeaverTail naming ([unit42beavertail2023]); the publication documented the BeaverTail-to-InvisibleFerret staging architecture as the campaign's defining tradecraft fingerprint and remains the principal industry reference for the family.
The family's operational role is persistent access plus credential-and-wallet-data exfiltration downstream of BeaverTail's initial reconnaissance-and-credential-theft step. Where BeaverTail performs lightweight first-pass harvesting from browser-stored stores and visible credential files, InvisibleFerret establishes a persistent C2 channel and performs sustained per-host operation: keychain-harvesting (Apple Keychain on macOS, Windows Credential Manager and DPAPI-protected stores on Windows, GNOME Keyring and KDE Wallet on Linux); browser-data exfiltration including saved-passwords, browsing history, autofill data, and cookies-and-session-tokens with particular emphasis on cryptocurrency-exchange-and-wallet-related browser sessions; cryptocurrency-wallet keychain harvesting from MetaMask, Phantom, Solflare, and other browser-extension wallets including encrypted vault material; SSH-key, AWS-credential, GCP-credential, and Kubernetes-config-file harvesting from common project directories; FileGrabber-pattern selective file-exfiltration based on operator-specified extension and content-keyword patterns; and live remote-shell capability for operator-driven hands-on-keyboard activity.
The Python-language implementation choice is operationally significant: Python is widely installed on developer workstations across Windows, macOS, and Linux, which produces a "live-off-the-land" implementation surface where the InvisibleFerret payload can run under a legitimate Python interpreter without requiring binary deployment of language-runtime infrastructure (a structural advantage relative to compiled-language backdoors that require full-binary deployment); Python's standard library and pip-installable third-party libraries provide rich credential-store-access, network-egress, and remote-shell capability without operator-side custom-tooling investment; and the Python codebase is comparatively easy to rotate and refresh as detection-rule pressure increases (operator-side variant rotation observed at faster cadence than for typical compiled-language second-stage backdoors).
The family's role in the OAK-G01 / OAK-G08 monetization chain is the credential-and-wallet-data harvesting node that produces the operator-side intelligence-and-credential-store from which downstream OAK-T10 / T11 extraction Techniques are executed; in some campaign deployments the InvisibleFerret-harvested credentials directly enable operator-side movement into vendor-side signing infrastructure or crypto-firm cloud-credential-protected systems. From a defender perspective the family is the canonical DPRK-cluster persistent-access second-stage paired with a non-direct-download initial-access surface (npm supply chain rather than LinkedIn-and-Telegram lure), structurally parallel to the TraderTraitor → RustBucket / KandyKorn / SwiftLoader / ObjCShellz second-stage progression at OAK-S20 / S21 / S22.
Observed examples
- Unit 42 canonical July 2023 publication (
[unit42beavertail2023]). Established the InvisibleFerret naming and the BeaverTail-to-InvisibleFerret staging architecture; documented the family's credential-harvesting, wallet-extension-data exfiltration, and persistent-C2 capabilities. Confirmed-grade attribution to DPRK at the cluster level. - Continuous variant evolution (2023–2025). Unit 42, SentinelOne, Mandiant, and CrowdStrike tracked sustained per-version evolution through 2024–2025 with operator-side variant rotation onto modified C2 protocols, refreshed credential-store-target lists, and adjusted persistence-mechanism implementations. Aggregate variant count in the dozens across the campaign window with operator-cohort-attribution to the DPRK Contagious Interview / Wagemole campaign.
- macOS-variant evolution and convergence with the broader DPRK macOS lineage. SentinelOne and Jamf Threat Labs documented macOS-specific InvisibleFerret variants whose persistence-mechanism (LaunchAgents plist files written into
~/Library/LaunchAgents/with non-standard label naming) and child-process invocation patterns (osascript, curl, python3 invocations from base64-encoded staging) converge structurally with the broader DPRK macOS-second-stage lineage at OAK-S20 / S21 / S22. The convergence is operator-cohort-level rather than codebase-level. - Cross-incident credential-and-wallet-data exfiltration (2023–2025). The InvisibleFerret-harvested credential-and-wallet-data has been the documented or strongly-inferred enabling-evidence for multiple per-incident crypto-industry compromises through 2024–2025; per-incident published post-mortems vary in whether they explicitly name InvisibleFerret as the second-stage backdoor, but Mandiant, SentinelOne, and Unit 42 attribute clusters of incidents to the campaign and treat InvisibleFerret-as-second-stage as the dominant 2023–2025 DPRK-against-crypto-developer-workstation pattern. Inferred-strong attribution per industry-forensic source.
- OAK on-chain example surface. No OAK
examples/entry exists for InvisibleFerret-binary specifically as of v0.1; the OAK angle is the OAK-G01 / OAK-G08 cluster proceeds laundering tail rather than per-host-deployment incidents.
Detection / attribution signals
Defenders should treat InvisibleFerret-family detection as a host-layer + network-layer joint problem with the BeaverTail-to-InvisibleFerret payload-chain coupling as the most-distinctive cross-stage forensic signature:
- Endpoint-side process-tree fingerprints — Python-3 interpreter parent process spawning child processes performing keychain-harvesting, browser-data-exfiltration, and cryptocurrency-wallet-extension-data-exfiltration sequences; persistence on macOS via LaunchAgents plist files written into
~/Library/LaunchAgents/with non-standard label naming; persistence on Windows via Run-key or Scheduled Task registration under naming that mimics legitimate Python-runtime tooling; persistence on Linux via systemd user-service or cron-job registration. These persistence mechanisms are documented in Unit 42's canonical publication and in continuous SentinelOne / Jamf macOS-side reporting. - Cryptocurrency-wallet-specific process activity — InvisibleFerret variants explicitly enumerate browser-extension installation directories for MetaMask, Phantom, Solflare, and other major cryptocurrency-wallet extensions and exfiltrate their data files; the wallet-extension-directory enumeration pattern is a high-yield host-side detection signature distinguishing InvisibleFerret from generic Python-based credential-stealer families.
- Network-layer telemetry — persistent C2 channel egress to operator-controlled infrastructure with periodic heartbeat-and-tasking pattern; FileGrabber-pattern selective file-exfiltration to operator-controlled cloud-storage staging (Mega.io, rclone-to-S3, AnonFiles pre-takedown, and similar). Current C2-domain IOCs published in Unit 42 reporting and continuous CTI-vendor feeds.
- Cross-stage payload-chain coupling (the highest-yield campaign-level signature) — detection of either BeaverTail or InvisibleFerret on a host raises the prior on the other family's presence to near-certainty given the campaign's structural pairing of the two; the BeaverTail-to-InvisibleFerret staging coupling is the most-distinctive Contagious Interview campaign-level forensic signature.
- CTI vendor coverage — Palo Alto Unit 42 (canonical July 2023 publication and continuous tracking;
[unit42beavertail2023],[unit42invisibleferret2024]), SentinelOne (sustained tracking and macOS-variant analysis), Jamf Threat Labs (macOS-specific InvisibleFerret detection), Mandiant (Wagemole-and-Contagious-Interview campaign reporting), CrowdStrike (Famous Chollima cluster naming and continuous tracking), Microsoft Threat Intelligence (Sapphire Sleet / Moonstone Sleet related-cluster naming). - Cross-correlation with on-chain cluster watchlists — a workstation compromise consistent with InvisibleFerret on a vendor whose downstream signing key reaches into a crypto-firm cold-wallet path raises the prior on a subsequent OAK-T11.001 / T11.003 extraction event; integrating endpoint-detection telemetry with on-chain G01 / G08 cluster watchlists is a defender-grade compounding control.
Note: omit specific file hashes from this entry. Defenders should consume current IOCs from Unit 42's published indicator list and from the live CTI-vendor feeds named above.
Citations
[unit42beavertail2023]— Palo Alto Unit 42, "Hacking Employers and Seeking Employment: DPRK Threat Actors Use Contagious Interview Campaign," July 2023; canonical publication establishing both the BeaverTail and InvisibleFerret naming and the staging architecture. (NEW citation — see summary.)[unit42invisibleferret2024]— Palo Alto Unit 42 follow-up reporting on InvisibleFerret variant evolution through 2024. (NEW citation — see summary.)[mandiantwagemole2024]— Mandiant Wagemole-and-Contagious-Interview campaign convergence reporting. (NEW citation — see summary.)[crowdstrikefamouschollima2024]— CrowdStrike Famous Chollima cluster naming and operator-cohort-tracking documentation. (NEW citation — see summary.)[sentineloneinvisibleferret2024]— SentinelOne InvisibleFerret continuous tracking and macOS-variant analysis. (NEW citation — see summary.)[jamfinvisibleferret2024]— Jamf Threat Labs macOS-specific InvisibleFerret detection-and-tracking work. (NEW citation — see summary.)[chainalysis2024dprk]— DPRK-attributed cryptocurrency-theft and ransom-proceeds aggregate context (also cited in OAK-G01, OAK-S08, OAK-S25, OAK-S29).
Discussion
On lineage. InvisibleFerret sits within the broader DPRK Lazarus / TraderTraitor / BlueNoroff cluster's second-stage backdoor lineage, pairing structurally with the OAK-S29 BeaverTail first-stage loader in the canonical Contagious Interview campaign chain. The family is operationally parallel to but architecturally distinct from the macOS-second-stage lineage at OAK-S20 RustBucket, OAK-S21 SwiftLoader, and OAK-S22 ObjCShellz — those families are platform-specific compiled-language implementations, while InvisibleFerret is a cross-platform Python implementation. The lineage convergence is at the operator-cohort level (same DPRK cluster) and at the operational-role level (second-stage-backdoor-after-initial-access-payload) rather than the codebase or platform level.
On the BeaverTail / InvisibleFerret two-stage architecture. See OAK-S29 Discussion for the broader two-stage architectural framing. From the second-stage side specifically, the architectural advantage is operator-side capability concentration in the second stage — InvisibleFerret carries the bulk of the campaign's credential-harvesting and wallet-data-exfiltration capability, while BeaverTail is comparatively lightweight. This concentration produces several operational benefits: variant rotation pressure concentrates on the second stage (where capability matters most) rather than dispersing across both stages; first-stage-detection by registry-side malicious-package scanning does not necessarily compromise second-stage capability if the operator can re-establish first-stage delivery via a refreshed package surface; second-stage-detection on a host indicates both that BeaverTail successfully delivered and that the host is on the operator's active-target list.
On the Python-language design choice and live-off-the-land properties. Python's ubiquity on developer workstations produces a structural detection-evasion advantage relative to compiled-language second-stage backdoors: the Python interpreter itself is a legitimate-software baseline; the operator-supplied Python script can be obfuscated via standard Python obfuscation techniques (base64-encoded payloads, dynamic-import-based code-loading, AST-level obfuscation); Python's subprocess and os modules provide rich shell-command-execution capability without requiring operator-side custom-tooling investment. The structural property that the language runtime is the legitimate-software baseline is the principal architectural advantage of the InvisibleFerret design choice and is a non-trivial reason why Python-based second-stage backdoors are increasingly common in modern intrusion-set tradecraft.
On ecosystem position. InvisibleFerret is the persistent-access-and-credential-exfiltration node downstream of the BeaverTail initial-access node in the DPRK Contagious Interview campaign's payload-chain architecture. Downstream of InvisibleFerret, the chain runs through OAK-G01 / OAK-G08-attributed extraction Techniques (T10.001, T11.001, T11.002, T11.003) and OAK-T7-Tactic laundering. A defender control program targeting InvisibleFerret at the host-and-network-detection layer compounds with on-chain G01 / G08 cluster watchlists at the off-ramp layer; either alone is partial coverage.