1 poin oleh GN⁺ 5 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Seorang pengembang di Kanada menjadi sasaran serangan yang memancing backdoor dengan menyamar sebagai wawancara VC palsu, dan alur serangannya disesuaikan dengan pekerjaan pengembang hingga dicurigai menargetkan pengelola paket crates.io
  • Repositori umpan tampak seperti aplikasi TypeScript bernama “Ticket Harbor”, tetapi menyembunyikan kode berbahaya di jalur eksekusi TypeScript lewat patch-package dan typescript+5.9.2.patch
  • Stub yang disisipkan membuka obfuscation base64 dan XOR lalu menjalankannya dengan new Function(...), kemudian melalui chunk tersembunyi di operators/3.png dan stub WASM untuk meluncurkan payload tahap kedua berukuran 1.68MB dalam proses Node terpisah
  • Payload akhir “PinpinRAT” membuat pasangan kunci RSA-2048 dan kunci sesi AES-256-CBC, serta mendukung pengumpulan sidik jari host, unggah·unduh file, eksekusi proses, manipulasi filesystem, kueri DNS, dan penghapusan diri
  • Jika repositori itu sempat dijalankan, jaringan harus segera diputus dan kredensial diganti dari perangkat lain, dengan asumsi bahwa cookie dan rahasia yang dilindungi kata sandi mungkin sudah dicuri

Serangan Bertarget ke Pengembang yang Dimulai dari Wawancara Palsu

  • Penyerang mendekati korban dengan mengaku sebagai tokoh palsu dari “Lua Ventures”
    • Lua Ventures diperkenalkan sebagai VC bidang DeFi yang berbasis di Singapura, tetapi sebenarnya sudah tidak lagi aktif
    • Nama orangnya tidak diungkap karena bisa membingungkan dengan orang nyata yang memiliki nama sama
  • Emailnya tampak meyakinkan, dan juga menyertakan tautan profil LinkedIn yang biasa saja tetapi terlihat normal
  • Sebagai firma investasi yang mencari penasihat, mereka menyebut Lyrasing dan Roadpay
    • Kedua perusahaan punya jejak web dasar sehingga terlihat seperti perusahaan tahap awal, bukan sekadar palsu
    • Snapshot archive.org untuk situs Roadpay juga masih ada
  • Setelah saling berkirim email, percakapan berlanjut sampai panggilan Google Meet
    • Lawan bicara di panggilan adalah pria dengan aksen Jerman dan mengatakan dirinya sedang bepergian
    • Panggilan itu sendiri tidak memiliki kejanggalan yang jelas

Pemicu Eksekusi yang Disamarkan sebagai “Tugas Tes”

  • Setelah panggilan, penyerang mengusulkan sebuah “tes” dan mengirimkan repositori
  • Repositori itu disamarkan sebagai aplikasi pemesanan tiket feri bernama “Ticket Harbor”
  • task.txt yang disertakan berisi daftar tugas yang membosankan tetapi masuk akal, dan di bagian akhir ada instruksi untuk menjalankannya
    • Isinya meminta korban menjalankan typecheck repositori, test suite, serta perintah build desktop/server terkait
  • Instruksi inilah yang menjadi pemicu infeksi sebenarnya
    • Saat TypeScript dijalankan seperti npm run typecheck, build, dev, atau ketika typescript.js di-import, payload dapat dieksekusi

Rantai Eksekusi yang Tersembunyi dalam Patch TypeScript

  • Sinyal peringatan pertama adalah bahwa repositori itu tampak seperti tugas TypeScript
    • Permintaannya terasa lebih dekat ke tugas rekrutmen TypeScript daripada analisis arsitektur
    • Setelah repositori dicek cepat dengan Claude, muncul kejanggalan terkait patch-package
  • Direktori patches/ berisi patch dalam jumlah yang tidak normal
    • Sebagian patch tampak wajar dan berfungsi sebagai noise untuk menyembunyikan payload sebenarnya
    • Contohnya termasuk sumchecker+3.0.1.patch, @electron+get+2.0.3.patch, extract-zip+2.0.1.patch
  • Kode berbahaya inti ada di typescript+5.9.2.patch
    • Patch itu menyisipkan stub yang langsung dieksekusi di bagian paling atas typescript.js dan _tsc.js
    • Stub tersebut mendekode string base64, lalu mendekripsi XOR tiap byte dengan kunci 73, dan menjalankannya dengan new Function(...)
    • require, Buffer, WebAssembly, process, __dirname diteruskan ke fungsi eksekusi
  • Rantai eksekusinya melewati beberapa tahap
    • Empat hook postinstall menjalankan patch-package
    • Salah satunya menerapkan git update-index --skip-worktree ke file patch agar tersembunyi dari git status
    • Loader membaca chunk tersembunyi yang ditempel di belakang file operators/3.png
    • Ia menjalankan stub WASM kecil dari chunk wAsm kustom
    • Payload tahap kedua yang di-obfuscate berukuran 1.68MB dijalankan diam-diam dalam proses Node terpisah
  • Kode serangan dirancang untuk meminimalkan jejak setelah dijalankan
    • Patch disembunyikan dengan git skip-worktree
    • Dropper menghapus baris yang disisipkannya sendiri dari file patch setelah eksekusi pertama
    • Direktori sementara tahap kedua menghapus dirinya sendiri saat dijalankan

Kemampuan PinpinRAT

  • Payload akhir disebut “PinpinRAT”
    • Nama ini diberikan karena string internalnya, dan tidak menutup kemungkinan bahwa ia dikenal dengan nama lain
    • Tidak ditemukan referensi lain secara online
  • Payload dibungkus dalam beberapa lapisan obfuscation
    • obfuscator.io
    • dua lapisan base64 tambahan
  • Saat mulai berjalan, RAT mengumpulkan sidik jari host dan mengekfiltrasinya
    • alamat IP utama dan daftar lengkap IP
    • username dari os.userInfo().username
    • hostname
    • jenis OS, release, platform, arsitektur
    • PID proses dan seluruh process.argv
    • versi Node
  • Ia juga menyertakan struktur enkripsi
    • membuat pasangan kunci RSA-2048 secara lokal
    • membuat kunci sesi AES-256 acak aes_psk
    • lalu trafik berikutnya dienkripsi dengan AES-256-CBC dan diberi tag integritas HMAC-SHA256
  • Perintah yang didukung menyediakan kemampuan setingkat remote access trojan
    • env: mengubah process.env menjadi string JSON lalu mengirimkannya
    • upload: membaca jalur file arbitrer dan mengekfiltrasinya
    • download: menulis byte yang diberikan penyerang ke jalur yang dapat ditulisi
    • spawn: menjalankan proses arbitrer dengan perluasan shell opsional
    • ls, cd, pwd, cp, mv: manipulasi filesystem umum
    • dns: melakukan resolusi nama arbitrer lewat resolver yang ditentukan
    • dismantle: menghapus diri sendiri

Indikator Kompromi dan Respons Segera

  • Gambar yang membawa payload tidak terdeteksi oleh mesin AV mana pun di VirusTotal
  • Jika sempat dijalankan, sistem harus segera dipisahkan dari jaringan
  • Kredensial harus diganti dari perangkat lain
    • Cookie dan rahasia yang dilindungi kata sandi juga harus dianggap telah dikompromikan
  • Indikator kompromi terkait PinpinRAT adalah sebagai berikut
    • C2: 89.124.107.161:80
    • Scheduled task Windows: PinpinWrappedJs
    • Penyamaran proses macOS: com.apple.WebKit.Networking
    • Variabel lingkungan: NODT_PAYLOAD_PATH, NODT_PAYLOAD_ARGS
    • Guard chunk PNG: WASMPACK (wAsm)
    • PINPIN_NO_AUTOSTART=1: menghentikan persistence
    • Cronjob yang menyertakan mutex.js: mungkin hanya ada saat RAT memiliki hak yang cukup, dan bisa jadi tidak ada di macOS
    • String anchor typescript.js: 12ff4b51, ticket-harbor-tsc-shim-anchor
    • typescript+5.9.2.patch yang memuat payload
    • Direktori artefak:
      • macOS: ~/Library/Caches/runtime-cache/.cache-<randomhex>/
      • Linux: /tmp/.cache-<randomhex>/
      • Windows: %TEMP%\\.cache-<randomhex>\\
      • Di dalamnya ada payload.js dan mutex.js

Sinyal Peringatan yang Baru Terlihat Belakangan

  • Dalam pesannya, jika dilihat lebih saksama ada ungkapan yang tampak seperti jejak LLM
  • Profil LinkedIn itu pada pandangan pertama terlihat normal, tetapi daftar gelar·kualifikasinya terasa janggal dan tidak menunjukkan aktivitas nyata
  • Tautan media sosial di situs web memang punya riwayat nyata, tetapi namanya diubah pada November 2025
    • Postingan-postingannya kurang spesifik dan lebih mirip pujian samar terhadap perusahaan-perusahaan itu
  • Situs web perusahaan tampak mewah, tetapi hampir tidak punya kehadiran nyata
  • Penyerang tidak mengirim undangan kalender resmi, hanya menyampaikan waktu dan Google Meet
    • Selama panggilan, kamera terus dimatikan dan ia mengatakan sedang bepergian
  • Muncul bersamaan: VC berbasis Singapura, aktivitas di zona waktu CEST, pendekatan ke pengembang Kanada, dan domain .cc yang menyasar pelanggan AS
    • Ini membuat verifikasi kredibilitas organisasi yang jauh menjadi lebih sulit
  • Sinyal-sinyal individualnya memang tidak tegas, tetapi bila beberapa lampu kuning menumpuk bersama, polanya bisa dipandang sebagai lampu merah

Pelaku di Balik Serangan dan Cakupannya

  • Pelakunya tidak bisa dipastikan
  • Serangan ini menargetkan pengembang dan mencakup tokoh palsu, cerita sampul yang meyakinkan, beberapa situs web palsu, penjadwalan yang sabar, dan jebakan git yang canggih
  • Serangan ini sejalan dengan alur “penipuan wawancara palsu” yang digunakan oleh beberapa pelaku pada 2026
  • Di komunitas Rust di Reddit juga disebutkan kasus serupa yang menyasar target
  • Pendekatannya sangat melekat pada workflow pengembang, sampai-sampai jika metode yang sama dikemas sebagai jebakan skrip build.rs di repositori Rust, korban mungkin saja akan terkecoh

1 komentar

 
GN⁺ 5 jam lalu
Opini di Lobste.rs
  • Agak membingungkan bahwa judulnya berspekulasi ini mungkin ulah aktor yang didukung negara. Di sini tampaknya tidak ada bagian yang benar-benar memerlukan tingkat persiapan atau kompleksitas sebesar itu
    Kemungkinannya bisa dibayangkan, tetapi rasanya masuk akal hanya setara dengan skenario-skenario lain

    • Sepertinya karena penipuan canggih seperti ini membutuhkan banyak sumber daya, jadi cukup jarang. Saat melihat penipuan yang canggih, mudah merasa bahwa ini mungkin didukung negara
      Meski begitu, hampir pasti ini bukan aktor yang didukung negara. Serangan seperti ini sekarang sudah tidak terlalu sulit
  • Benar-benar kebetulan bahwa serangan ini mirip dengan contoh hipotetis yang saya jelaskan di posting blog saya seminggu lalu: the hypothetical I describe in my blog post from a week ago
    Saya hanya memilih salah satu dari beberapa serangan yang terdengar masuk akal sebagai contoh bahwa bahkan pakar yang paham teknologi pun bisa tertipu. Saya memang melihat semakin banyak penipuan canggih yang menyasar manusia, tetapi saya tidak tahu bahwa tren penipuan wawancara kerja sedang berlangsung. Jadi mengetahui serangan kali ini terasa agak menyeramkan

    • Benar-benar menyeramkan. Ada juga tautan ke diskusi Lobsters tentang tulisan itu
  • Minggu lalu saya menerima ajakan wawancara kerja dengan pola yang sama dari D____ S_____ di Lua Ventures. Saya mengabaikannya seperti sebagian besar spam perekrut, dan ternyata itu keputusan yang tepat

    • Penasaran apakah ini orang dari kubu Rust. Tokoh-tokoh penting di komunitas Rust menjadi sasaran Lua, jadi saya ingin tahu apakah ini hanya terbatas pada Rust atau lebih luas
  • Sepertinya ada kiriman seperti ini beberapa hari atau beberapa minggu lalu

  • Yang mengejutkan adalah klaim “terlihat seperti email sungguhan”. Buat saya ini sangat jelas berupa kalimat buatan LLM, jadi saya rasa saya sudah akan curiga sejak kalimat kedua

    • Buat saya tidak sejelas itu. Rasanya hanya seperti gaya bahasa LinkedIn. Memang itu juga kadang terdengar seperti ditulis LLM, tetapi nuansanya sangat mirip sampai saya tidak yakin bisa membedakan keduanya