8 poin oleh GN⁺ 2025-04-22 | 1 komentar | Bagikan ke WhatsApp
  • TikTok menggunakan mesin virtual (VM) untuk memperkuat lapisan keamanan dan obfuscation
  • Proyek ini merekayasa balik mesin virtual (VM) berbasis web tersebut untuk menganalisis cara bypass keamanan dan pembuatan tanda tangan permintaan
  • Target utamanya adalah webmssdk.js, yang berisi kode VM yang terlibat dalam pembuatan X-Bogus dan _signature
  • Proyek ini membongkar obfuscation JavaScript, lalu menganalisis dan mendekompilasi bytecode VM TikTok untuk memulihkannya ke tingkat fungsi yang bermakna
  • Dengan ini, pembuatan _signature yang diperlukan untuk permintaan yang memerlukan autentikasi (misalnya menulis komentar) juga menjadi memungkinkan
  • VM ini dirancang dengan canggih dan memiliki struktur bytecode tingkat lanjut seperti loop, penanganan pengecualian, dan manajemen scope

Gambaran umum proyek reverse engineering VM TikTok

  • TikTok menggunakan mesin virtual (VM) terobfuscasi berbasis JavaScript untuk menghasilkan tanda tangan permintaan klien, melindungi data, dan mencegah bypass keamanan
  • Proyek ini bertujuan memulihkan algoritme penandatanganan (X-Bogus, _signature) melalui deobfuscation dan dekompilasi file webmssdk.js

Analisis fitur inti dan struktur

Deobfuscation

  • TikTok melakukan obfuscation string dengan mengindeksnya melalui array dan notasi bracket

    r[Gb[301]](Gb[57], e)  
    
  • Dekripsi array Gb ditangani dengan substitusi menggunakan tabel string tetap

  • Setelah semua pola terkait didekode, hasilnya diubah ke notasi titik (dot notation) yang lebih mudah dibaca

Menghapus obfuscation pemanggilan fungsi

  • Fungsi-fungsi disimpan dalam array Ab dan dipanggil melalui indeks

    Ab[31](args) → Ab31(args)  
    
  • Dengan memanfaatkan parser AST, fungsi-fungsi ini dipisahkan menjadi fungsi individual, diberi nama, lalu cara pemanggilannya juga diperbaiki

Dekripsi bytecode

  • Bytecode disusun secara kompleks dengan enkripsi base64 + gzip + leb128 + XOR

    r = perhitungan kunci XOR  
    dekompresi dan decoding leb128 untuk merekonstruksi set instruksi  
    
  • Setiap fungsi dibangun berbasis bytecode, lalu struktur fungsinya dipulihkan melalui proses dekompilasi

Karakteristik VM TikTok

  • Lebih canggih daripada VM biasa, dengan fungsi bertingkat, manajemen scope, penanganan pengecualian, dan percabangan kondisional
  • Setiap instruksi disamarkan dalam struktur if-else, bukan switch → lalu dipulihkan ke bentuk switch case

Dekompilasi dan debugging

  • Setiap fungsi bytecode didekompilasi hingga setara fungsi JS biasa dan disimpan dalam bentuk VMxxx.js
  • Contoh: VM223 adalah generator karakter acak
  • Debugging dilakukan dengan mengganti JS asli menggunakan file hasil dekompilasi melalui Tampermonkey + ekstensi bypass CSP di Chrome

Analisis penandatanganan (Signing)

Struktur header permintaan

  • Saat meminta ke server, ada 3 header tambahan yang disertakan
    • msToken : diterbitkan oleh server dan dibuat ulang pada setiap permintaan
    • X-Bogus : dibuat di webmssdk.js berdasarkan permintaan
    • _signature : digunakan pada permintaan yang memerlukan autentikasi, dibuat oleh webmssdk.js
  • Permintaan umum seperti melihat pengguna hanya memerlukan X-Bogus
  • Permintaan autentikasi seperti menulis komentar juga memerlukan _signature

Alur fungsi VM

  • VM86: titik masuk untuk seluruh pembuatan tanda tangan
  • VM113: pembuatan X-Bogus
  • VM189: pembuatan _signature
  • Alur ini direproduksi melalui signer.js sehingga URL dapat ditandatangani

Mekanisme perlindungan tambahan

  • Pelacakan mouse: VM120
  • Pemeriksaan lingkungan: VM265
  • Namun semuanya adalah perlindungan sisi klien tanpa komunikasi dengan server → dapat diabaikan untuk pembuatan tanda tangan

Catatan dan pemeliharaan

  • VM TikTok terus diperbarui → jika strukturnya berubah, dekompilasi baru diperlukan
  • Proyek ini terutama cocok untuk analisis keamanan, riset teknologi anti-bot, dan tujuan pendidikan

1 komentar

 
GN⁺ 2025-04-22
Komentar Hacker News
  • Saya menggunakan situs web streaming yang sering terputus dan menampilkan pesan kesalahan. Saya menganalisis kode JavaScript untuk mencari solusinya, dan asisten AI sangat membantu dalam memahami kode yang diobfuskasi

    • Dengan AI, fungsi JavaScript yang rumit dapat ditulis ulang agar lebih mudah dipahami dan diberi komentar
    • AI membantu memahami perilaku kode pada tingkat tinggi dengan menebak nama variabel atau fungsi
    • Sangat merekomendasikan penggunaan agen AI sebagai alat bagi orang-orang yang mengerjakan hal serupa
  • Anda dapat menggunakan TikTok secara normal dengan mengganti file JavaScript yang berjalan di web dengan file yang sudah dideobfuskasi

    • Dengan menggunakan Tampermonkey dan ekstensi CSP, file dapat diambil dari sumber yang diblokir
    • Efek yang sama juga bisa diperoleh tanpa ekstensi pihak ketiga dengan menggunakan Local Overrides di Chrome DevTools
  • Tampaknya banyak upaya dilakukan untuk menyembunyikan kode. Ini dapat menghambat optimasi program, menambah kompleksitas, dan berpotensi menyebabkan lebih banyak kesalahan

    • Memahami niat untuk mencegah bot, tetapi dibutuhkan metode yang lebih efektif
    • Kloning tidak bisa dicegah, dan klon dapat merekayasa balik dengan gaya black-box dengan mengamati cara kerjanya
  • Menemukan contoh rekayasa balik TikTok VM di bookmark

  • Selalu senang membaca tulisan tentang upaya rekayasa balik, dan tulisan kali ini mudah diikuti

    • Banyak situs web dan layanan perlindungan bot menjadikan pemeriksaan lingkungan dan pelacakan gerakan mouse sebagai dasar
    • Selalu menarik melihat berapa lama layanan membutuhkan waktu untuk mengubah mekanismenya setelah langkah-langkah tersebut dinetralisasi
  • Tidak ada alasan yang sah bagi platform media sosial untuk menggunakan obfuskasi sampai sejauh ini

  • Pertanyaan tentang apa itu VM

    • Pernah punya pengalaman menggunakan VM untuk membangun lingkungan pengujian di berbagai sistem operasi
    • JavaScript Virtual Machine berjalan sebagai sistem operasinya sendiri di atas OS host
    • VM yang dibahas dalam TFA bukan jenis VM seperti itu
    • Belakangan ini "VM" digunakan dalam berbagai konteks sehingga membingungkan
  • Pertanyaan apakah ini VM yang terkait dengan Lynx

  • Pertanyaan apakah aplikasi iOS juga memiliki VM

    • Berpikir bahwa VM akan bertentangan dengan kebijakan Apple
  • Pernah mengerjakan bot TikTok sebentar, dan itu sangat sulit