passwordcracker poses as a dependency-free Discord MFA library but pulls node-net-pool from the attacker's GitHub repo lunexindonesia/node-net-pool, and on load lib/cache.js runs try{module['require']('node-net-pool')}catch(_){} to execute it. On Windows, that index.js downloads a script from a limbomail.com attachment URL, saves it as a hidden winsvc.js under %APPDATA%, %LOCALAPPDATA% or %TEMP%, runs it via a hidden WinSvcHost.vbs, persists through HKCU Run/RunOnce, UserInitMprLogonScript and a Startup shortcut, and re-checks for updates every two hours. Amazon Inspector reported the same loader stub in discord-mfa-solver (MAL-2026-16100). The npm account kingsize published passwordcracker and passwordcrackv2 with identical code on 2026-10-09 and 2026-10-10.
{
"iocs": {
"files": [
{
"digests": {
"sha256": "40ad444731103c356ac7643b1a58e6093fcce1ea2f43977fb07f34833d37178a"
},
"note": "Loader stub: silently requires node-net-pool when the package is loaded. Identical in every non-placeholder version.",
"paths": [
"lib/cache.js"
],
"source": "PACKAGE_ARCHIVE"
},
{
"note": "Stage two from github.com/lunexindonesia/node-net-pool; Windows-only downloader and persistence installer.",
"paths": [
"node_modules/node-net-pool/index.js"
],
"source": "DROPPED"
},
{
"note": "Stage three downloaded from limbomail.com (first writable directory is used), with winsvc.js.v/.lk/.pid side files, WinSvcHost.vbs launcher and self-deleting WinSvcHostCfg.vbs.",
"paths": [
"%APPDATA%\\Microsoft\\Windows\\WinSxS\\Backup\\winsvc.js",
"%APPDATA%\\Microsoft\\Windows\\Themes\\winsvc.js",
"%LOCALAPPDATA%\\Microsoft\\Windows\\Caches\\winsvc.js",
"%TEMP%\\MicrosoftEdge\\winsvc.js"
],
"source": "DROPPED"
},
{
"note": "Startup shortcut; also HKCU Run\\WinSvcHost, RunOnce\\WinSvcHostUpd and HKCU\\Environment\\UserInitMprLogonScript, each running wscript.exe //B //NoLogo WinSvcHost.vbs.",
"paths": [
"%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\WinSvcHost.lnk"
],
"source": "DROPPED"
},
{
"digests": {
"sha256": "8e3a8f364d1d5ef4b18b3d67268e11916601b16548cae6bda593da79fcf4fe87"
},
"note": "Declares node-net-pool as a dependency fetched from an attacker-controlled GitHub tarball.",
"paths": [
"package.json"
],
"source": "PACKAGE_ARCHIVE"
}
],
"urls": [
"https://limbomail.com/api/attachment/l4TIRPOsaUxR._603-vhKDRdgKl3RalN_TVUZYGPsJy2Y/all.js",
"https://github.com/lunexindonesia/node-net-pool/archive/refs/heads/main.tar.gz",
"https://github.com/lunexindonesia/node-net-pool",
"https://github.com/trktgq0wbre1/node-net-pool/archive/refs/heads/main.tar.gz",
"https://github.com/trktgq0wbre1/node-net-pool"
]
}
}