DeviceDoor npm Package Mengirimkan Kerangka Kerja Phishing Kode Perangkat Microsoft 365

DeviceDoor: sebuah paket npm publik yang menyediakan kerangka kerja phishing kode perangkat Microsoft 365 dan pengiriman email massal.

TL; DR

nolimit-agent adalah paket npm yang versi yang diterbitkannya — 1.0.299 melalui 1.0.307, dirilis selama empat hari dari 26-06-2026 hingga 29-06-2026 — masing-masing membawa kerangka kerja phishing dan email massal yang lengkap di dalam direktori tersembunyi yang sepenuhnya dienkripsi. Di setiap versi, entri utama mengarah ke .ad/x0.js, salah satu dari ~86 file dalam folder bernama dotfile yang berisi sekitar 4,200 blob array string pengabur javascript; hook instalasi dan tata letak entri identik di seluruh baris.

Di balik kekaburan itu terdapat sebuah Alur kode perangkat Microsoft 365 OAuth (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) yang, setelah kode disetujui, membaca kotak masuk Outlook korban dan item terkirim melalui Microsoft Graph API; mesin pengiriman SMTP dan SMS massal yang digerakkan oleh daftar penerima yang disediakan operator; templat pesan peniruan merek; pembuatan tautan pengalihan terbuka; dan pengintaian melalui DNS-over-HTTPS, WHOIS, dan pencarian kode GitHub. Sinyal lalu lintas runtime ke infrastruktur operator di api[.]nolimitent[.]xyz:4100.

Terdampak: siapa pun yang menginstal versi paket apa pun, dan siapa pun Kotak surat Microsoft 365 yang pemiliknya menyetujui kode perangkat yang disajikan melalui perangkat tersebut. Versi terbaru, 1.0.307, adalah tag terbaru saat ini dan membawa kemampuan kotak surat kode perangkat yang sama — kode berbahaya tidak terbatas pada satu versi sebelumnya.

Kerasnya: kritisEkosistem yang terdampak: npmIndikator pertama yang harus dicari: tuan rumah. api[.]nolimitent[.]xyz.

Serangan: bagaimana cara kerjanya

Cangkang luar yang tampak tidak berbahaya di atas muatan tersembunyi.

Kemasan tersebut memiliki permukaan yang biasa saja. package.json menyatakan sebuah pascainstal kait - 

text postinstall: node scripts/postinstall.js 

— dan saat pemeriksaan scripts/postinstall.js Ini tidak berbahaya: ia menginstal program perantara (shim) perintah Windows dan kemudian keluar. Perilaku sebenarnya tidak terjadi di dalam hook tersebut. utama ke bin kedua bidang tersebut mengarah ke .iklan/, sebuah direktori yang titik di depannya membuatnya tidak terkesan kasual. ls output, dan yang isinya disamarkan secara seragam oleh mesin. Pemindai statis menghitung sekitar 4,293 rentang muatan terenkripsi di seluruh .iklan/ set modul; javascript-obfuscator merupakan dependensi pengembangan yang dideklarasikan, yang sesuai dengan bentuk rotasi array string dari file yang dibundel.

Pemisahan ini adalah sinyal pertama yang patut disebutkan: kode instalasi yang akan diperiksa oleh seorang pengulas terlihat bersih, sementara kode operasionalnya berada satu direktori jauhnya, tersembunyi dan disamarkan, hanya dapat diakses ketika titik masuk yang diekspor dari paket tersebut dijalankan.

Akses kotak surat kode perangkat Microsoft 365

Modul .ad/x12.js Ini membawa kemampuan paling penting dari kerangka kerja tersebut. Ini menggerakkan pemberian otorisasi perangkat Microsoft 365 OAuth 2.0:

text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode 

Pemberian kode perangkat adalah alur kerja Microsoft yang sah yang dirancang untuk perangkat dengan keterbatasan input: sebuah layanan meminta kode, pengguna mengetikkan kode tersebut ke dalam microsoft.com/perangkatlogin` pada perangkat kedua dan menyetujui, dan layanan yang meminta menerima token. Ketika layanan yang meminta dimiliki oleh pihak selain pemilik kotak surat, persetujuan memberikan token kepada pihak ketiga tersebut. Setelah token diperoleh, `.ad/x12.js` membaca kotak surat secara langsung melalui Microsoft Graph:

text GET graph[.]microsoft[.]com/v1.0/me/mailFolders/inbox/messages?$top=250&$select=from GET graph[.]microsoft[.]com/v1.0/me/mailFolders/sentitems/messages?$top=250&$select=toRecipients 

The $pilih Proyeksi mengambil alamat pengirim dari kotak masuk dan alamat penerima dari item terkirim — bahan mentah untuk memetakan koresponden korban. Ini adalah akses penyerang di tengah (AiTM) dengan persetujuan, bukan dengan pengambilan kata sandi: tidak ada kredensial untuk melakukan phishing dalam arti klasik, hanya kode untuk mendapatkan persetujuan.

Mesin pengirim email dan SMS massal dengan templat peniruan identitas.

Di sekeliling akses kotak surat terdapat sebuah pengirim surat. Paket tersebut mengirimkan berkas data yang dapat diedit oleh operator — daftar pengirim (pengirim.txt, smtps.txt) dan file templat (functions.txt) — yang alamat-alamat penggantinya terbaca sebagai lembar casting untuk peniruan identitas: security@apple.com, login-verifikasi, layanan OAuth, penagihan, dan pengirim pemberitahuan akun terhadap yourdomain.com Operator pengganti yang digantikan. Sisi SMS membawa nomor telepon.ebook dan konfigurasi gateway. Program pengirim email mengulangi daftar penerima yang disediakan operator dan mengirimkannya melalui relay SMTP yang telah dikonfigurasi.

Untuk membuat tautan darat, .ad/xu.js ke .ad/xq.js Membangun URL yang memanfaatkan ambiguitas penguraian URL dan pelacakan klik. Pola penipuan tersebut menyematkan otoritas yang tampak tepercaya sebelum sebuah URL asli. @ Jadi, awalan yang terlihat berbeda dari host sebenarnya:

text https://trusted[.]com@      https://trusted[.]com%40      https://trusted[.]com:80@ https://redirect[.]example[.]com/      https://track[.]example[.]com/click? 

Kerangka kerja ini juga mengambil favicon dari merek konsumen utama dan enterprise penyedia email — teknik rutin untuk menghasilkan prompt atau halaman arahan bermerek penyedia yang meyakinkan.

Pengintaian target dan infrastruktur

Beberapa modul mengumpulkan konteks sebelum mengirim. .ad/x0.js menyelesaikan nama melalui DNS-over-HTTPS (dns[.]google/resolve), .ad/xa.js pertanyaan WHOIS (api[.]whois[.]vu), Dan .ad/x9.js menjalankan pencarian kode GitHub (api[.]github[.]com/search/code?q=) — sebuah pola yang konsisten dengan penemuan konfigurasi server email yang terekspos dan kredensial SMTP untuk dimasukkan ke dalam daftar relay. .ad/xs.js menanyakan indeks CDX Wayback Machine.

Komando dan kontrol

Di seluruh rangkaian yang dikaburkan, .ad/x4.js mengacu pada titik akhir operator:

text http://api[.]nolimitent[.]xyz:4100 

Tuan rumah membagikan informasinya tidak terbatas merek dengan penamaan milik penerbit sendiri, dan : 4100 Port adalah saluran panggilan balik kerangka kerja. Ini adalah indikator tunggal yang paling andal bagi pihak bertahan: sebuah paket, stasiun kerja pengembang, atau agen pembangunan yang mencapai api[.]nolimitent[.]xyz telah menjalankan kode ini.

Indikator kompromi

Indikator di bawah ini adalah indikator yang dapat ditindaklanjuti oleh pihak yang bertahan — misalnya, cari di file kunci (lockfile), blokir host, atau cari di log proxy dan DNS. Titik akhir Microsoft muncul karena kerangka kerja tersebut menyalahgunakannya; titik akhir tersebut sendiri tidak berbahaya dan tidak perlu diblokir.

Indikator Tipe Where Aksi pembela
nolimit-agent (semua versi 1.0.299–1.0.307) Paket npm Cari file kunci / log instalasi
api[.]nolimitent[.]xyz (:4100) Tuan rumah C2 .ad/x4.js Blokir; cari log DNS + proxy
.ad/ direktori tersembunyi sebagai target main/bin Structure package.json Sinyal statis dalam tinjauan registri
trusted[.]com@ / %40 / :80@ formulir tautan Pemalsuan URL .ad/xu.js, .ad/xq.js Inspeksi URL email/proxy
Pemberian kode perangkat + Grafik inbox/sentitems Baca baca Tingkah laku .ad/x12.js Masuk ke M365 + Tinjauan audit Graph

Hash file yang diambil saat proses triase:

  • paket/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a

  • paket/package.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644

Sinyal penyewa Microsoft 365 yang layak dicari secara independen dari paket ini: login kode perangkat yang berhasil diikuti dengan cepat oleh pembacaan Graph. Folder surat/kotak masuk ke Folder surat/barang kirimanterutama dari sesi yang tidak dikenali oleh pengguna.

Atribusi & perilaku yang diamati

Apa yang dapat diamati tetap terpisah dari siapa yang berada di baliknya.

Fakta yang dapat diamati: paket tersebut diterbitkan dengan nama pengguna tersebut. agen tanpa batas dengan alamat Gmail yang belum terverifikasi dan tanpa repositori sumber yang terhubung; ini package.json menggambarkannya sebagai "pengirim email tingkat lanjut" dan menandainya dengan tim merah kata kunci; kode runtime terkonsentrasi di tempat tersembunyi dan tersamarkan. .iklan/ direktori yang toolchain-nya (javascript-obfuscator) adalah dependensi yang dideklarasikan; dan host call-home api[.]nolimitent[.]xyz menggunakan kembali tidak terbatas merek. Ini adalah paket tunggal dengan satu infrastruktur penting yang dikendalikan operator — bukan klaster multi-paket, dan tidak ditemukan tumpang tindih dengan kampanye yang disebutkan sebelumnya.

The tim merah Kata kunci tidak mengubah klasifikasi. Perangkat keamanan ofensif yang sah yang memiliki kemampuan penggunaan ganda melakukannya secara transparan: kode sumber yang mudah dibaca, target yang disediakan operator, dan tidak ada panggilan balik tersembunyi. Paket ini membalikkan setiap properti tersebut — kode operasionalnya dikaburkan dan disembunyikan, dan ia mengirimkan sinyal ke infrastruktur operator tetap alih-alih target yang disediakan pengguna. Perilaku, bukan label, yang menentukan vonisnya, yaitu berbahaya.

Niat tidak dijelaskan di sini. Postingan tersebut menjelaskan apa yang dilakukan kode tersebut — meminta kode perangkat, membaca kotak surat melalui Graph, mengirim surat massal melalui relay yang dikonfigurasi, mengirimkan beacon ke host tetap — dan tidak menyebutkan motifnya.

Dampak, tren & panduan bagi pihak bertahan

Ada dua efek yang penting selama proses instalasi. Pertama, setiap pengembang atau agen CI yang melakukan instalasi agen tanpa batas membawa kerangka kerja ke host tersebut dan membangun koneksi ke host. api[.]nolimitent[.]xyzKedua, kemampuan kode perangkat memperluas jangkauannya melampaui host penginstal: kotak surat Microsoft 365 yang pemiliknya dibujuk untuk menyetujui kode yang disajikan dibaca langsung melalui Graph, tanpa kata sandi yang pernah melewati jaringan.

Tren yang lebih luas adalah internalisasi. Phishing kode perangkat (AiTM) telah bergeser dari infrastruktur phishing mandiri menjadi paket di registri publik — distribusinya melalui instalasi npm alih-alih melalui tautan email. Pengemasan kit dengan cara ini menukar masalah hosting dan pengiriman tautan operator phishing dengan jangkauan registri, dan menyembunyikan kode operasional di balik kait instalasi bersih dan direktori yang disamarkan dengan nama dotfile yang menggagalkan penelusuran manual cepat.

Untuk para pemain bertahan:

  • Peninjauan registri dan dependensi. Perlakukan paket yang utama/bin Berakhir di direktori tersembunyi (dengan awalan titik) berisi kode pihak pertama yang disamarkan secara seragam, yang dianggap berisiko tinggi hanya berdasarkan strukturnya saja, terlepas dari apakah hook instalasinya terlihat bersih. Minifikasi bukanlah penyamaran — gerbang pada tanda tangan dekoder array string, bukan pada panjang baris.
  • Pengerasan keamanan Microsoft 365. Batasi alur otorisasi kode perangkat dengan Akses Bersyarat jika tidak diperlukan secara operasional; pemberian kode perangkat merupakan vektor AiTM yang dikenal dan jarang dibutuhkan oleh pengguna interaktif. Lakukan audit untuk masuk menggunakan kode perangkat, diikuti dengan enumerasi kotak surat Graph secara langsung.
  • Deteksi jaringan. Blokir dan beri peringatan pada api[.]nolimitent[.]xyzTelusuri log DNS dan proxy keluar untuk hal tersebut di seluruh infrastruktur pengembang dan pembangunan.
  • Deteksi jalur surat. The pengguna@host Formulir pemalsuan URL (trusted[.]com@…) dapat dideteksi di gateway email dan proxy; menandai tautan yang komponen otoritasnya mendahului sebuah @.

Paket tersebut sudah tersedia di npm pada saat analisis dilakukan. Karena kerangka kerja tersembunyi mencakup seluruh lini versi yang diterbitkan dan versi saat ini Terbaru tag (1.0.307) membawa kemampuan kode perangkat, penghapusan registri harus mencakup setiap versi, bukan hanya satu versi sebelumnya. 

perangkat lunak analisis komposisi sca
Prioritaskan, perbaiki, dan amankan risiko perangkat lunak Anda.
Dapatkan Akun Gratis Anda.
Tidak perlu kartu kredit.

Amankan Pengembangan dan Pengiriman Perangkat Lunak Anda

dengan Rangkaian Produk Xygeni