Contagious Interview turns the hiring process into a malware delivery channel: fake recruiters ask software developers to run a coding test, and the test installs an infostealer and backdoor that empty crypto wallets and harvest developer credentials. This profile is built from MITRE ATT&CK v20 (group G1052 and software S1246 and S1245), the FBI public service announcement I-090324-PSA, and published research by Palo Alto Networks Unit 42, ESET, Socket and Silent Push. It covers names, targeting, ATT&CK techniques, why developer tokens and keys are often the real prize, and detection and hardening. It is for security operations, developer platform and identity teams, and for anyone who runs technical hiring. It names no individuals.
Key takeaways
- The lure is a job, the payload is a repository. Victims are asked to clone a project or install an npm package as part of an interview; running
npm installor starting the project executes the malware. - Two stages, three operating systems. BeaverTail (JavaScript or Qt/C++) steals browser logins and wallet data and downloads InvisibleFerret, a modular Python backdoor that adds keylogging, file theft and AnyDesk remote access on Windows, Linux and macOS.
- Developer secrets are the second prize. A developer laptop holds SSH keys, cloud CLI credentials, package publishing tokens and browser sessions, so one infected interview can become a supply chain or cloud incident.
- The registry is now a delivery channel at scale. Socket counted more than 338 malicious npm packages with over 50,000 downloads in the three months to October 2025, using typosquats of common libraries and loaders called HexEval and XORIndex.
- Isolation beats awareness alone. The FBI's core advice is to never run pre-employment code on a company device; give developers a disposable environment, block install scripts by default and watch for traffic on non-standard ports such as 1224.
Who they are (names and aliases)
MITRE ATT&CK v20 tracks the activity as group Contagious Interview (G1052), a North Korea aligned group active since 2023 that conducts both espionage and financially motivated operations, including theft of cryptocurrency and credentials. Palo Alto Networks Unit 42 named the campaign in November 2023 as CL-STA-0240, with infrastructure dating to about December 2022, and attributed it to North Korea with moderate confidence. ESET tracks an overlapping cluster as DeceptiveDevelopment, assesses it as North Korea aligned with high confidence, and notes technique similarities with Moonstone Sleet and the Lazarus DreamJob and DangerousPassword campaigns without attributing it to a known actor.
| Name | Type | Source |
|---|---|---|
| Contagious Interview (G1052) | Group name used by ATT&CK; campaign name CL-STA-0240 | MITRE ATT&CK v20; Unit 42 |
| DeceptiveDevelopment | Overlapping cluster | ESET; listed as ATT&CK alias |
| DEV#POPPER, Tenacious Pungsan, Gwisin Gang, PurpleBravo, TAG-121 | Vendor aliases | MITRE ATT&CK v20 alias list |
| BeaverTail (S1246) | First-stage infostealer and downloader, JavaScript and Qt/C++ variants, active since 2022 | MITRE ATT&CK v20 |
| InvisibleFerret (S1245) | Second-stage modular Python backdoor (main, payload, browser and AnyDesk modules) | MITRE ATT&CK v20 |
| HexEval Loader (S1249), XORIndex Loader (S1248) | Obfuscating loaders in malicious npm packages | MITRE ATT&CK v20; Socket |
| OtterCookie | Further malware family reported in the same operations | Silent Push |
Not the same as fake IT workers. Unit 42's original report described a twin campaign, Wagemole (CL-STA-0241), in which North Korean applicants seek jobs at Western companies. Contagious Interview is the reverse: the attacker plays the employer and the victim is the candidate. The defences differ, so read the Fake IT Workers Guide for the applicant side and the Lazarus Group Threat Actor Profile for the wider North Korean picture.
Targeting and motivation
The group focuses on individuals in software development and cryptocurrency work. The FBI's September 2024 announcement describes North Korean actors studying employees of DeFi and cryptocurrency firms on professional networking and job platforms, building rapport over long conversations, often in fluent English, and posing as recruiters or known contacts before asking for a "pre-employment test" or debugging exercise.
- Contact channels: ESET lists LinkedIn, Upwork, Freelancer.com, We Work Remotely, Moonlight and Crypto Jobs List; ATT&CK adds X, Telegram and code repository sites such as GitHub.
- Personas and front companies: Socket counted more than 180 fake personas in one npm wave. Silent Push documented three front companies, BlockNovas LLC, Angeloper Agency and SoftGlide LLC, with AI-generated employee profiles. ATT&CK records the group's use of AI for images and content (T1588.007) and its cloning of video-conferencing apps.
- Motivation: mainly financial (wallet theft, payment card data), with persistent access that can support espionage or follow-on intrusion into the employer of a victim who used a work laptop.
- Who is exposed: freelance and contract developers, Web3 engineers and anyone who takes interviews on a corporate device, which Unit 42 warns exposes employer data.
Tactics and techniques (MITRE ATT&CK)
All IDs below are from ATT&CK v20 entries for G1052, S1246 and S1245. Behaviour descriptions summarise the ATT&CK procedure examples and the vendor reports.
| Tactic | Technique (ATT&CK v20) | Contagious Interview behaviour |
|---|---|---|
| Reconnaissance | T1593.001 Social Media; T1593.003 Code Repositories; T1589 Gather Victim Identity Information | Finds developers on LinkedIn, X, Telegram and GitHub |
| Resource development | T1585.001 Social Media Accounts; T1583.001 Domains; T1583.003 Virtual Private Server; T1608.001 Upload Malware | Fake recruiter accounts, lookalike company and conferencing domains, payloads hosted on code repositories |
| Initial access | T1566.003 Spearphishing via Service; T1195.001 Compromise Software Dependencies and Development Tools | Job messages on social platforms; BeaverTail shipped inside npm packages |
| Execution | T1204.005 Malicious Library; T1204.002 Malicious File; T1204.004 Malicious Copy and Paste; T1059.007 JavaScript; T1059.006 Python | Victim installs the "test" package or fake video app; ClickFix-style paste prompts |
| Persistence | T1547.001 Registry Run Keys / Startup Folder; T1543.001 Launch Agent; T1547.013 XDG Autostart Entries | InvisibleFerret startup batch file on Windows, LaunchAgent on macOS, .desktop entry on GNOME Linux |
| Defence impairment and evasion | T1685 Disable or Modify Tools; T1497 Virtualization/Sandbox Evasion; T1480 Execution Guardrails; T1027.013 Encrypted/Encoded File | Victims told to disable Docker and run code directly on the host; C2 checks geolocation and headers; Base64, XOR and hex encoding |
| Credential access | T1555.003 Credentials from Web Browsers; T1555.001 Keychain; T1555.005 Password Managers; T1056.001 Keylogging; T1115 Clipboard Data | Browser logins and cards, macOS keychain, password manager extensions, keystrokes and clipboard |
| Collection and impact | T1217 Browser Information Discovery; T1657 Financial Theft | Searches for wallet extensions and the Solana key file; steals funds |
| Command and control | T1571 Non-Standard Port; T1219.002 Remote Desktop Software; T1090 Proxy | HTTP on ports 1224 and 1244 (BeaverTail) and 1224, 2245 and 8637 (InvisibleFerret); AnyDesk; Astrill VPN |
| Exfiltration | T1041 Exfiltration Over C2 Channel; T1048.003 Exfiltration Over Unencrypted Non-C2 Protocol; T1567 Exfiltration Over Web Service; T1567.002 Exfiltration to Cloud Storage | C2 upload, FTP, Telegram bot API, Dropbox |
How the lure has evolved: Unit 42's 2023 report described an npm package hosted on GitHub, with victims first told to install VS Code, Git and Node.js. In October 2024 Unit 42 reported fake MiroTalk and FreeConference installers and a Qt-based BeaverTail compiled for Windows and macOS from at least July 2024, targeting 13 wallet extensions. ESET reported malicious code appended after a long comment so it sits off-screen in editors without word wrap, and later InvisibleFerret versions targeting 88 browser extensions. Socket's 2025 waves moved the payload into the public npm registry using typosquats such as epxreso, dotevn, vaildator and ethrs.js, with newer loaders hiding AES-encrypted code in a file named LICENSE. It also checks threat intelligence services for reporting on its own indicators (T1681), so expect fast rotation.
How they abuse identities and credentials
Wallets make headlines, but for an organisation the larger risk is what else sits on a developer's machine. Every item below is a non-human or workload credential that outlives the interview.
- Browser sessions and saved passwords: BeaverTail and the InvisibleFerret browser module take saved logins, autofill and cookies from Chromium browsers and Firefox. A stolen session cookie for a source host, cloud console or SSO portal can bypass MFA. See the Infostealer Threat Guide.
- Password manager extensions and keychain: ATT&CK records theft from password manager extensions (T1555.005) and the macOS login keychain (T1555.001). If the vault is unlocked, every stored credential is exposed.
- Package publishing tokens: an
.npmrcwith a publish token turns a victim into a distribution point for the next wave. See the npm Tokens Security Guide. - Source host tokens and SSH keys: personal access tokens and SSH keys give push access to private repositories and CI workflows. See the GitHub Personal Access Tokens Security Guide.
- Cloud CLI credentials: long-lived access keys and cached session tokens in developer profiles reach production directly. The Bybit Hack 2025: How One Developer's AWS Session Tokens Enabled a $1.5 Billion Theft, attributed by the FBI to a different North Korean cluster (TraderTraitor) after a developer ran a malicious Docker project, showed how far one developer's AWS session tokens can reach once a workstation is compromised.
- Attacker-controlled remote access: ESET found the AnyDesk module installs AnyDesk with hardcoded credentials, the only persistence in the chain it studied. That is an unmanaged remote access identity on your endpoint. See the RMM Tool Security Guide.
- Attacker identities on your platforms: fake personas, front companies and throwaway publisher accounts are themselves identities. Socket urges registries to revoke publisher tokens, not just remove packages.
Notable incidents
The sources name no victims; these milestones describe the operation.
- November 2023, campaign named: Unit 42 publishes the first report on Contagious Interview and Wagemole, with BeaverTail and InvisibleFerret delivered through npm packages hosted on GitHub.
- September 2024, FBI warning: I-090324-PSA warns that North Korea is aggressively targeting the crypto industry with fake employment and pre-employment tests, and lists indicators and mitigations.
- October 2024, cross-platform rewrite: Unit 42 reports Qt-based BeaverTail and fake video-conferencing installers for Windows and macOS.
- February 2025, freelance platforms: ESET documents DeceptiveDevelopment on freelance and crypto job sites, with trojanised projects on GitHub, GitLab and Bitbucket.
- July to October 2025, npm flood: Socket tracks more than 338 malicious packages and over 50,000 downloads, with 25 still live at the time of its report.
Detection and defence
What to log and hunt
| Signal | Log source | Why it matters |
|---|---|---|
node spawning python, curl, a shell or a download of a Python runtime shortly after npm install | EDR process tree; Sysmon Event ID 1 or Windows Event ID 4688 | BeaverTail fetching InvisibleFerret |
| Outbound HTTP or TCP from developer hosts to raw IPs on ports 1224, 1244, 2245 or 8637 | Firewall, proxy, EDR network events (Sysmon Event ID 3) | Ports reported for BeaverTail and InvisibleFerret C2 |
Non-browser processes reading browser profile databases, login.keychain or ~/.config/solana/id.json | EDR file access telemetry | Credential and wallet theft |
New startup batch file, macOS LaunchAgent or .desktop autostart created by a Python process | EDR, macOS unified log, file integrity monitoring | InvisibleFerret persistence |
| AnyDesk installed or launched outside the approved remote support tool | Software inventory, EDR, application control logs | Attacker remote access module |
| Traffic to Telegram bot API, Dropbox or FTP from developer endpoints with no business need | Proxy, DNS, CASB | Exfiltration paths reported by ATT&CK and ESET |
| Dependency names one or two characters from popular packages, and new packages with install scripts | Package firewall, SCA, CI logs | Typosquat delivery through the registry |
Hardening, in priority order
- Separate interviews from work: policy and technical control that no candidate or contractor test runs on a corporate device, as the FBI and Unit 42 advise. Provide a disposable VM or cloud development environment with no corporate credentials and no route to internal networks. See the Sandboxing and Code Execution Guide.
- Block install-time execution by default: set npm's
ignore-scriptsoption on developer machines and CI, route installs through an internal registry or package firewall, and pin versions with lockfiles. See the Malicious Package and Dependency Confusion Guide. - Shrink what a stolen laptop holds: short-lived cloud credentials through SSO, hardware-backed SSH keys, fine-grained and expiring repository and npm tokens, and no wallet keys or seed phrases on internet-connected devices.
- Control remote access tools and egress: allow one approved remote support tool and block others with application control; restrict developer egress to known registries and services. See the Application Allowlisting Guide.
- Brief the people being targeted: developers, recruiters and Web3 staff should know the FBI indicators: unusual pay with no negotiation, insistence on custom video software, scripts to "unlock" camera features, pressure to move to other messaging apps, and requests to disable Docker.
- Plan the response: if a test was run on a work device, isolate it, then revoke and reissue every token, key and session it held before reimaging. See the Leaked Credential Response Playbook.
Rollout and testing: enable ignore-scripts and package firewall rules in report-only mode for two to four weeks to find builds that genuinely need install scripts, add explicit exceptions, then enforce for one team before the rest. Keep a per-repository rollback. Test detections with an authorised emulation of a Node.js process spawning Python and connecting to a high port.
Small versus large organisations: small teams get most value from a no-interviews-on-work-devices rule, a managed EDR, short-lived cloud credentials and npm ignore-scripts. Larger estates add an internal registry with malware scanning, cloud development environments for untrusted code, and identity threat detection on token use from new devices.
Metrics
- Developer endpoints and CI runners with install scripts blocked by default (percentage).
- Percentage of cloud and repository access using short-lived credentials rather than long-lived keys or tokens.
- Number of unapproved remote access tools detected per month, and time to remove them.
- Time from suspected infection to revocation of all credentials held on the device.
- Blocked typosquat or malicious package installs per month at the package firewall.
Framework mapping
| Defence | NIST CSF 2.0 | NIST SP 800-53 Rev. 5 |
|---|---|---|
| Awareness for developers and recruiters | PR.AT-01 | AT-2 |
| Short-lived credentials and token lifecycle | PR.AA-01 | IA-5, AC-2 |
| Allowlisting and blocking install scripts | PR.PS-05 | CM-7 |
| Supply chain controls on packages | GV.SC-07 | SR-3, SR-11 |
| Endpoint and network monitoring | DE.CM-01, DE.CM-09 | SI-4 |
Practitioner checklist
- Publish and enforce a rule that interview and freelance test code never runs on corporate devices.
- Provide a disposable, credential-free environment for reviewing untrusted repositories.
- Set npm
ignore-scriptsby default and route installs through a scanned internal registry. - Alert on Node.js processes spawning Python or shells and on developer traffic to ports 1224, 1244, 2245 and 8637.
- Block unapproved remote access tools, including AnyDesk where it is not your standard.
- Move developers to short-lived cloud credentials, expiring fine-grained tokens and hardware-backed SSH keys.
- Keep wallet keys and seed phrases off internet-connected developer machines.
- Write a response runbook that revokes every token, key and session on an affected device before reimaging.
Standards and references
- MITRE ATT&CK: Contagious Interview (G1052)
- MITRE ATT&CK: BeaverTail (S1246)
- MITRE ATT&CK: InvisibleFerret (S1245)
- FBI: North Korea Aggressively Targeting Crypto Industry with Well-Disguised Social Engineering Attacks (I-090324-PSA)
- Palo Alto Networks Unit 42: Hacking Employers and Seeking Employment: Two Job-Related Campaigns
- Palo Alto Networks Unit 42: Contagious Interview: DPRK Threat Actors Lure Tech Industry Job Seekers
- ESET: DeceptiveDevelopment targets freelance developers
- Socket: North Korea's Contagious Interview Campaign Escalates: 338 Malicious npm Packages
Related NHI Mgmt Group resources: Lazarus Group Threat Actor Profile · Fake IT Workers Guide · Threat Actor Groups Guide · Crypto Wallet Security Guide · ClickFix and Fake CAPTCHA Paste-and-Run Attacks Guide