Skip to main content
Meet us at Black Hat USA 2026— Las Vegas, August 1–6Book a Meeting
Mallory
Back to malware
MalwareUsed by 4 actors

PylangGhost

PylangGhost is a Python-based remote access trojan (RAT) associated with North Korean activity, most consistently attributed in the provided reporting to Famous Chollima, also known as Wagemole/PurpleBravo, and used in the broader Contagious Interview/DeceptiveDevelopment campaign. It is described as a Python counterpart to GolangGhost, with very similar structure, naming conventions, function names, and an identical command structure. Reporting characterizes PylangGhost as primarily Windows-focused, while related GolangGhost activity continued to target macOS; some later reporting also describes PylangGhost/GolangGhost as related multi-platform RATs.

Observed delivery vectors in the provided content include fake job interview and skill-testing websites impersonating companies such as Coinbase, Robinhood, Uniswap, Archblock, and Parallel Studios; ClickFix-style social engineering that instructs victims to copy and execute malicious PowerShell, Command Shell, or Bash commands; malicious npm packages; and JavaScript loaders embedded in trojanized packages. The campaign primarily targeted software developers, job seekers, and cryptocurrency/blockchain professionals, with reporting specifically noting victims predominantly in India and broader targeting of finance, technology, AI, cryptocurrency, and Web3 sectors.

In the Talos-described Windows infection chain, a command downloads a ZIP archive containing six Python modules, a Visual Basic Script, and a renamed Python interpreter used to launch nvidia.py. The VBS launcher unzips lib.zip and starts the RAT. The main module creates persistence via a Windows registry Run value at user logon, generates a GUID for the infected host, connects to command-and-control infrastructure, and enters a command loop. Capabilities directly described in the content include system reconnaissance, file upload and download, remote OS shell access, sleep/tasking, and theft of browser credentials, cookies, and extension data. The malware is reported to steal stored browser credentials, session cookies, and data from more than 80 browser extensions, including cryptocurrency wallets and password managers such as MetaMask, Phantom, TronLink, 1Password, NordPass, Bitski, Initia, and MultiverseX. Multiple reports also state that PylangGhost can target Chrome data and was engineered to defeat or address Google Chrome app-bound credential protection.

C2 communications are described as HTTP with RC4-encrypted packets. Reported packet structure includes a 16-byte MD5 checksum, a 128-byte RC4 key, and an encrypted data blob. Additional reporting notes a line-based protocol with Base64-encoded tokens and obfuscated command identifiers. Persistence and runtime artifacts mentioned in the content include registry Run-key execution via wscript.exe and temporary-directory state files such as .store and .host.

The content includes several infrastructure and IOC references tied to PylangGhost campaigns. Talos-associated reporting lists C2 servers 31.57.243.29:8080, 154.58.204.15:8080, 212.81.47.217:8080, and 31.57.243.190:8080; download domains api.quickcamfix.online and api.nvidia-release.us; and fake interview domains including krakenhire.com, robinhood.ecareerscan.com, coinbase.talentmonitoringtool.com, and uniswap.prehireiq.com. Another npm-delivery report identifies malicanbur[.]pro and 173.211.46[.]22:8080, with campaign identifier ML2J and Windows payload SHA-256 0be2375362227f846c56c4de2db4d3113e197f0c605c297a7e0e0c154e94464e. A Cloudflare Pages/Workers abuse cluster is reported to have delivered a Windows PylangGhost bundle with SHA-256 9ec622624f5f07c5d86e6048f2710de1e9c5ac7c6a6fad4fcb31121bb67c0239, deoft.org infrastructure resolving to 187.77.111.137, and a plaintext PylangGhost C2 address of 187.127.248.20 in config.py. Talos also published ClamAV detections including Win.Backdoor.PyChollima-10045389-0 through Win.Backdoor.PyChollima-10045384-0.

Share:
For your environment

Hunt this family in your stack

Mallory pivots from this family to the IOCs, detections, and named campaigns that touch your stack, and pages you when something new lands.

THREAT ACTORS

Groups observed using it

4 distinct threat actors attributed by public researchers. Open in Mallory to see the full evidence chain and overlapping campaigns.

View more details
Contagious Interview

In May 2025, Cisco Talos identified a Python-based remote access trojan (RAT) we call “PylangGhost,” used exclusively by a North Korean-aligned threat actor.

via talosintelligence otherblog.talosintelligence.com
WageMole

In May 2025, Cisco Talos identified a Python-based remote access trojan (RAT) we call “PylangGhost,” used exclusively by a North Korean-aligned threat actor.

via talosintelligence otherblog.talosintelligence.com
FamousChollima

"North Korea's abuse of Cloudflare Workers and Pages" published by Kmsec. #FamousChollima, #NPM, #PylangGhost, #DPRK, #CTI

via lazarusholic blueskybsky.app
Lazarus

First instance of PylangGhost RAT observed on npm ... PyLangGhost RAT: Rising Stealer from Lazarus Group Striking Finance and Technology

MITRE ATT&CK

Techniques & procedures

25 distinct techniques documented for this family, organized by ATT&CK tactic.

Initial Access

3 techniques
T1195Supply Chain CompromiseEvidence4

A cluster of 5 npm packages abuse Cloudflare infrastructure (Pages/Workers) to deliver PylangGhost RAT... The intended workflow is for ether-bn.js to be installed as a dependency to a coding project, which then adds the malicious sub-dependencies.

T1566PhishingEvidence2

"distribute malware to unsuspecting job seekers in the software development industry"; "pretext of a recruitment process or technical assignment"

T1566.003Spearphishing via ServiceEvidence2

These campaigns include using variants of Contagious Interview (aka DeceptiveDevelopment) and creating fake job advertisements and skill-testing pages... real software engineers, marketing employees, designers and other workers are targeted by fake recruiters and instructed to visit skill-testing pages in order to move forward with their application.

Execution

8 techniques
T1053Scheduled Task/JobEvidence1

Several titles explicitly mention 'VS Code Tasks Abuse,' 'Tracking the VS Code Tasks Infection Vector,' and 'Evolution of VS Code and Cursor Tasks Infection Chains.'

T1059.001PowerShellEvidence1

Instructions for downloading the alleged fix are different based on the browser fingerprinting, and also given in appropriate shell language for the OS: PowerShell or Command Shell for Windows... The command line uses either PowerShell Invoke-Webrequest or curl to download a ZIP file containing the PylangGhost modules as well as Visual Basic Script file.

T1059.004Unix ShellEvidence2

execSync("chmod +x /var/tmp/camDriver.sh && nohup bash /var/tmp/camDriver.sh >/dev/null 2>&1 &"

T1059.005Visual BasicEvidence3

The command line uses either PowerShell Invoke-Webrequest or curl to download a ZIP file containing the PylangGhost modules as well as Visual Basic Script file. This script is responsible for unzipping the Python library stored in the “lib.zip file” and launching the trojan...

T1059.006PythonEvidence3

This script is responsible for unzipping the Python library stored in the “lib.zip file” and launching the trojan by running a renamed Python interpreter using the file “nvidia.py” as the Python program to run.

T1059.007JavaScriptEvidence1

The decrypted payload in full... This is what’s invoked by globalThis.eval... evaluates remote content held at keo[.]pages[.]dev/output-2.

T1127Trusted Developer Utilities Proxy ExecutionEvidence1

The intended workflow is for ether-bn.js to be installed as a dependency to a coding project... infection happens at runtime as opposed to installation.

T1204User ExecutionEvidence2

Finally, when the user requests camera, the site displays the instructions for the user to copy, paste and execute a command to allegedly install the required video drivers... The initial stage consists of a command line which the fake webpage tells the unsuspecting user to copy, paste and execute.

Persistence

2 techniques
T1053Scheduled Task/JobEvidence1

Several titles explicitly mention 'VS Code Tasks Abuse,' 'Tracking the VS Code Tasks Infection Vector,' and 'Evolution of VS Code and Cursor Tasks Infection Chains.'

T1547.001Registry Run Keys / Startup FolderEvidence1

The execution starts with the file “nvidia.py”, which performs several tasks: It creates a registry value to launch the RAT every time user logs onto the system...

Privilege Escalation

2 techniques
T1053Scheduled Task/JobEvidence1

Several titles explicitly mention 'VS Code Tasks Abuse,' 'Tracking the VS Code Tasks Infection Vector,' and 'Evolution of VS Code and Cursor Tasks Infection Chains.'

T1547.001Registry Run Keys / Startup FolderEvidence1

The execution starts with the file “nvidia.py”, which performs several tasks: It creates a registry value to launch the RAT every time user logs onto the system...

Stealth

4 techniques
T1027Obfuscated Files or InformationEvidence1

Novel obfuscation techniques, encryption, runtime logic gates, and device fingerprinting are used to hinder detection... return globalThis.eval(payload).

T1127Trusted Developer Utilities Proxy ExecutionEvidence1

The intended workflow is for ether-bn.js to be installed as a dependency to a coding project... infection happens at runtime as opposed to installation.

T1140Deobfuscate/Decode Files or InformationEvidence1

This loader follows a decode-decrypt-evaluate sequence and uses a hardcoded XOR key — the string “fdfdfdfdf3rykyjjgfkwi” — to unlock the hidden payload before it executes in memory.

T1497Virtualization/Sandbox EvasionEvidence1

unique-string-64 file index.js scans the host environment with node-env-detector... It checks CPU, memory, and other attributes to determine if the host is running in a sandbox.

Credential Access

2 techniques
T1539Steal Web Session CookieEvidence1

These commands enable remote control the infected system and the theft of cookies and credentials from over 80 browser extensions... The module “auto.py” contains the functionality for stealing the stored browser credentials and session cookies...

T1555Credentials from Password StoresEvidence1

These commands enable remote control the infected system and the theft of cookies and credentials from over 80 browser extensions, including password managers and cryptocurrency wallets, including Metamask, 1Password, NordPass, Phantom, Bitski, Initia, TronLink and MultiverseX.

Discovery

4 techniques
T1082System Information DiscoveryEvidence3

COMMAND_INFORMATION - collect information about the infected system, username, OS version etc

T1083File and Directory DiscoveryEvidence1

COMMAND_INFORMATION - collect information about the infected system, username, OS version etc ... COMMAND_FILE_UPLOAD - file upload COMMAND_FILE_DOWNLOAD - file download

T1217Browser Information DiscoveryEvidence1

The RAT is also capable of enumerating Chrome extension IDs installed on the compromised machine, giving attackers a direct path to browser-stored credentials and sensitive personal data.

T1497Virtualization/Sandbox EvasionEvidence1

unique-string-64 file index.js scans the host environment with node-env-detector... It checks CPU, memory, and other attributes to determine if the host is running in a sandbox.

Collection

1 technique
T1560Archive Collected DataEvidence1

This script is responsible for unzipping the Python library stored in the “lib.zip file”... Finally, “util.py” handles the compression and decompression of files.

Command and Control

4 techniques
T1071Application Layer ProtocolEvidence2

The attacker’s command-and-control (C2) infrastructure relies on the domain malicanbur[.]pro, with a C2 IP address of 173.211.46[.]22:8080.

T1071.001Web ProtocolsEvidence1

“Api.py” is responsible for implementing the communications protocol with the C2 server, using RC4 encryption to encrypt packets over otherwise unencrypted HTTP used while communicating with the C2 server.

T1090.002External ProxyEvidence1

A cluster of 5 npm packages abuse Cloudflare infrastructure (Pages/Workers)... The encrypted string... decrypts to hxxps://dpw.jr12012025z.workers[.]dev , another piece of Cloudflare infrastructure.

T1105Ingress Tool TransferEvidence3

The command line uses either PowerShell Invoke-Webrequest or curl to download a ZIP file containing the PylangGhost modules as well as Visual Basic Script file.

INDICATORS OF COMPROMISE

IOCs tracked for this family

95 indicators attributed across vendor reports, sandbox runs, and researcher write-ups. Full values are available in Mallory.

View more in app
Network
56 tracked

IPs, domains, and DNS infrastructure linked to this family.

Hashes
25 tracked

File hashes (MD5, SHA-1, SHA-256) from samples and reports.

Other
14 tracked

Other indicator types observed in public reporting.

TypeValueLatest sighting
domain●●●●●●●●●●●●View more in app2 months ago
email●●●●●●●●●●●●View more in app2 months ago
email●●●●●●●●●●●●View more in app2 months ago
hash.md5●●●●●●●●●●●●View more in app2 months ago
hash.sha256●●●●●●●●●●●●View more in app2 months ago
ip.v4●●●●●●●●●●●●View more in app2 months ago
What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets match these IOCs, which detections are missing, which campaigns to expect next, and what to do in the next 30 minutes.
IOC matching95

Match every observed IP, domain, and hash against your live telemetry.

Threat actor attribution4

Named campaigns wielding this family, with evidence pinned to each claim.

Exploited vulnerabilities

CVEs this family uses for access and lateral movement.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

MITRE ATT&CK mapping25

Every documented technique, ranked by evidence weight.

Researcher chatter

Reddit, Mastodon, and CTI community discussion around this family.