8 puan yazan GN⁺ 2025-04-22 | 1 yorum | WhatsApp'ta paylaş
  • TikTok, güvenlik ve obfuscation katmanını güçlendirmek için sanal makineyi (VM) kullanıyor
  • Bu proje, güvenlik aşma ve istek imzalama üretiminin nasıl çalıştığını analiz etmek için bu web tabanlı sanal makineyi (VM) tersine mühendislikle inceliyor
  • Ana hedef webmssdk.js; bu dosya X-Bogus ve _signature üretiminde yer alan VM kodunu içeriyor
  • Proje, JavaScript obfuscation’ını çözüyor ve TikTok VM’in bytecode’unu analiz edip decompile ederek anlamlı işlev düzeyine geri kazandırıyor
  • Bu sayede yorum yazma gibi kimlik doğrulama gerektiren istekler için gerekli olan _signature üretimi de mümkün hale geliyor
  • VM son derece gelişmiş tasarlanmış; döngüler, istisna işleme, kapsam yönetimi gibi ileri bytecode yapıları içeriyor

TikTok VM tersine mühendislik projesine genel bakış

  • TikTok, istemci istek imzası üretimi, veri koruması ve güvenlik aşımını önlemek için JavaScript tabanlı, obfuscate edilmiş bir sanal makine (VM) kullanıyor
  • Bu proje, webmssdk.js dosyasını deobfuscate edip decompile ederek imzalama algoritmalarını (X-Bogus, _signature) geri kazanmayı amaçlıyor

Temel özellikler ve yapı analizi

Deobfuscation

  • TikTok, string’leri dizi ve köşeli parantez gösterimiyle indeksleyerek obfuscate ediyor

    r[Gb[301]](Gb[57], e)  
    
  • Gb dizisinin çözülmesi, sabit bir string tablosu kullanılarak yapılan yer değiştirme işlemiyle gerçekleştiriliyor

  • Bu kalıpların tamamı decode edildikten sonra, daha okunabilir dot notation biçimine dönüştürülüyor

Fonksiyon çağrısı obfuscation’ını kaldırma

  • Fonksiyonlar Ab dizisinde tutuluyor ve indeksle çağrılıyor

    Ab[31](args) → Ab31(args)  
    
  • AST parser kullanılarak bunlar ayrı fonksiyonlara ayrılıyor, adlandırılıyor ve çağrı biçimi de buna göre değiştiriliyor

Bytecode çözme

  • Bytecode, base64 + gzip + leb128 + XOR şifrelemesiyle karmaşık şekilde yapılandırılmış

    r = XOR anahtarının hesaplanması  
    sıkıştırmayı açma ve leb128 decode ile komut setinin yeniden oluşturulması  
    
  • Her fonksiyon bytecode tabanlı olarak oluşturulmuş ve decompile süreciyle işlev yapısı geri kazanılıyor

TikTok VM’in özellikleri

  • İç içe fonksiyonlar, kapsam yönetimi, istisna işleme, koşullu dallanma gibi açılardan sıradan VM’lere göre daha gelişmiş
  • Her komut switch yerine if-else yapısı olarak gizlenmiş → bu yapı switch case biçimine geri dönüştürülüyor

Decompile ve debugging

  • Her bytecode fonksiyonu, normal JS fonksiyonu düzeyine decompile edilip VMxxx.js biçiminde kaydediliyor
  • Örnek: VM223 bir rastgele karakter üreticisi
  • Debugging, Chrome’da Tampermonkey + CSP bypass eklentisi kullanılarak, özgün JS’nin decompile edilmiş dosyalarla değiştirilmesi üzerinden yapılıyor

İmzalama(Signing) analizi

İstek başlığı yapısı

  • Sunucu isteklerinde 3 ek başlık yer alıyor
    • msToken: sunucu tarafından veriliyor, her istekte yeniden üretiliyor
    • X-Bogus: webmssdk.js içinde istek temel alınarak üretiliyor
    • _signature: kimlik doğrulama gerektiren isteklerde kullanılıyor, webmssdk.js tarafından üretiliyor
  • Normal kullanıcı sorgulama isteklerinde yalnızca X-Bogus gerekiyor
  • Yorum yazma gibi kimlik doğrulamalı isteklerde _signature da gerekiyor

VM fonksiyon akışı

  • VM86: tüm imza üretiminin giriş noktası
  • VM113: X-Bogus üretimi
  • VM189: _signature üretimi
  • Bu akış signer.js ile yeniden uygulanarak URL imzalama yapılabiliyor

Ek koruma mekanizmaları

  • Fare takibi: VM120
  • Ortam kontrolü: VM265
  • Ancak bunların tamamı istemci tarafı korumalar ve sunucuyla iletişim yok → imza üretimi için göz ardı edilebilir

Dikkat edilmesi gerekenler ve bakım

  • TikTok VM sürekli güncelleniyor → yapı değiştiğinde yeniden decompile etmek gerekiyor
  • Bu proje ağırlıklı olarak güvenlik analizi, bot önleme teknolojisi araştırması ve eğitim amaçları için uygun

1 yorum

 
GN⁺ 2025-04-22
Hacker News görüşleri
  • Sık sık kesilen ve hata mesajları gösteren bir yayın akışı web sitesini kullanıyorum. Çözüm bulmak için JavaScript kodunu analiz ediyorum ve yapay zeka yardımcıları, karmaşıklaştırılmış kodu anlamada çok yardımcı oldu

    • Yapay zeka sayesinde anlaşılması zor JavaScript fonksiyonlarını daha anlaşılır biçimde yeniden yazıp yorum ekleyebiliyorum
    • Yapay zeka, değişken veya fonksiyon adlarını tahmin ederek kodun üst düzey davranışını anlamaya yardımcı oluyor
    • Benzer işler yapanlara, araç olarak yapay zeka ajanlarını kullanmalarını güçlü biçimde tavsiye ediyorum
  • Web'de çalışan JavaScript dosyalarını karmaşıklaştırması çözülmüş dosyalarla değiştirerek TikTok'u normal şekilde kullanmak mümkün

    • Tampermonkey ve CSP uzantılarını kullanarak dosyaları engellenmiş bir kaynaktan getirebilirsiniz
    • Chrome DevTools içindeki Local Overrides kullanılarak üçüncü taraf uzantılar olmadan da aynı etki elde edilebilir
  • Kodu gizlemek için çok fazla çaba harcanıyor gibi görünüyor. Bu, programın optimizasyonunu engelleyip karmaşıklığı artırarak daha fazla hataya yol açabilir

    • Botları engelleme niyetini anlıyorum, ancak daha etkili bir yönteme ihtiyaç var
    • Klonları engellemek mümkün değil; klonlar, nasıl çalıştığını gözlemleyip kara kutu tarzında tersine mühendislik yapabilir
  • TikTok VM'inin tersine mühendisliğine dair bir örneği yer imlerimde buldum

  • Tersine mühendislik çabalarıyla ilgili yazıları okumaktan her zaman keyif alırım ve bu yazının takibi kolaydı

    • Birçok web sitesi ve bot koruma hizmeti, ortam denetimlerini ve fare hareketi takibini temel alıyor
    • Bu önlemler etkisiz hale getirildikten sonra hizmetin mekanizmaları değiştirmesinin ne kadar sürdüğünü görmek her zaman ilginç oluyor
  • Sosyal medya platformlarının bu düzeyde karmaşıklaştırma kullanması için meşru bir gerekçe yok

  • VM'in ne olduğuna dair soru

    • VM kullanarak farklı işletim sistemlerinde test ortamları kurma deneyimim oldu
    • JavaScript Virtual Machine, ana işletim sisteminin üzerinde kendi işletim sistemi gibi çalışır
    • TFA'da tartışılan VM bu tür bir VM değil
    • Son zamanlarda "VM" farklı bağlamlarda kullanıldığı için kafa karıştırıcı geliyor
  • Bunun Lynx ile ilgili VM olup olmadığına dair soru

  • iOS uygulamasında da VM olup olmadığına dair soru

    • VM'in Apple'ın politikalarına aykırı olacağını düşünüyorum
  • Bir süre TikTok botları üzerinde çalıştım ve çok zordu