8 Punkte von GN⁺ 2025-04-22 | 1 Kommentare | Auf WhatsApp teilen
  • TikTok verwendet eine virtuelle Maschine (VM), um Sicherheits- und Obfuskationsschichten zu verstärken
  • Dieses Projekt reverse-engineert diese webbasierte virtuelle Maschine (VM), um Methoden zur Sicherheitsumgehung und zur Erzeugung von Request-Signaturen zu analysieren
  • Das zentrale Ziel ist webmssdk.js, das VM-Code enthält, der an der Erzeugung von X-Bogus und _signature beteiligt ist
  • Das Projekt hebt die JavaScript-Obfuskation auf, analysiert und dekompiliert den Bytecode der TikTok-VM und stellt ihn auf einer sinnvollen Funktionsebene wieder her
  • Dadurch wird sogar die Erzeugung von _signature möglich, die für Requests mit Authentifizierung erforderlich ist, etwa beim Schreiben von Kommentaren
  • Die VM ist ausgefeilt konzipiert und verfügt über fortgeschrittene Bytecode-Strukturen wie Schleifen, Ausnahmebehandlung und Scope-Verwaltung

Überblick über das Reverse-Engineering-Projekt der TikTok-VM

  • TikTok verwendet eine obfuskierte virtuelle Maschine (VM) auf JavaScript-Basis, um Client-Request-Signaturen zu erzeugen, Daten zu schützen und die Umgehung von Sicherheitsmechanismen zu verhindern
  • Dieses Projekt zielt darauf ab, durch Deobfuskation und Dekompilierung der Datei webmssdk.js den Signaturalgorithmus (X-Bogus, _signature) zu rekonstruieren

Analyse der Kernfunktionen und Struktur

Deobfuskation

  • TikTok obfuskiert Strings, indem sie über Arrays und Klammernotation indiziert werden

    r[Gb[301]](Gb[57], e)  
    
  • Die Entschlüsselung des Arrays Gb erfolgt durch Ersetzung anhand einer festen String-Tabelle

  • Nachdem dieses Muster vollständig dekodiert wurde, wird es in besser lesbare Punktnotation (dot notation) umgewandelt

Entfernung der Obfuskation von Funktionsaufrufen

  • Funktionen werden im Array Ab gespeichert und per Index aufgerufen

    Ab[31](args) → Ab31(args)  
    
  • Mithilfe eines AST-Parsers werden diese in einzelne Funktionen aufgeteilt, benannt und auch die Aufrufweise entsprechend angepasst

Entschlüsselung des Bytecodes

  • Der Bytecode ist komplex aufgebaut und mit base64 + gzip + leb128 + XOR verschlüsselt

    r = XOR-Schlüssel berechnen  
    Dekomprimierung und leb128-Dekodierung zur Rekonstruktion des Befehlssatzes  
    
  • Jede Funktion basiert auf Bytecode; über den Dekompilierungsprozess wird die Funktionsstruktur wiederhergestellt

Merkmale der TikTok-VM

  • Verschachtelte Funktionen, Scope-Verwaltung, Ausnahmebehandlung und bedingte Verzweigungen machen sie fortgeschrittener als gewöhnliche VMs
  • Jede Instruktion ist nicht mit switch, sondern als if-else-Struktur getarnt → dies wird in eine switch-case-Form zurückgeführt

Dekompilierung und Debugging

  • Jede Bytecode-Funktion wird auf das Niveau normaler JS-Funktionen dekompiliert und in Form von VMxxx.js gespeichert
  • Beispiel: VM223 ist ein Zufallszeichengenerator
  • Das Debugging erfolgt in Chrome mit Tampermonkey + einer CSP-Bypass-Erweiterung, wobei das ursprüngliche JS durch dekompilierte Dateien ersetzt wird

Analyse der Signaturerzeugung

Struktur der Request-Header

  • Bei Server-Requests werden drei zusätzliche Header eingebunden
    • msToken: wird vom Server ausgegeben und bei jedem Request neu erzeugt
    • X-Bogus: wird in webmssdk.js requestbasiert erzeugt
    • _signature: wird für Requests benötigt, die Authentifizierung erfordern, und von webmssdk.js erzeugt
  • Für gewöhnliche Requests zum Abrufen von Benutzerinformationen wird nur X-Bogus benötigt
  • Authentifizierte Requests wie das Schreiben von Kommentaren benötigen zusätzlich _signature

Ablauf der VM-Funktionen

  • VM86: Einstiegspunkt für die gesamte Signaturerzeugung
  • VM113: Erzeugung von X-Bogus
  • VM189: Erzeugung von _signature
  • Mit signer.js lässt sich dieser Ablauf nachbilden, um URLs zu signieren

Zusätzliche Schutzmechanismen

  • Maus-Tracking: VM120
  • Umgebungsprüfung: VM265
  • Dies sind jedoch allesamt clientseitige Schutzmechanismen ohne Serverkommunikation → für die Signaturerzeugung können sie ignoriert werden

Hinweise und Wartung

  • Die TikTok-VM wird fortlaufend aktualisiert → bei Strukturänderungen ist eine neue Dekompilierung erforderlich
  • Dieses Projekt eignet sich vor allem für Sicherheitsanalyse, Forschung zu Bot-Abwehrtechniken und Bildungszwecke

1 Kommentare

 
GN⁺ 2025-04-22
Hacker-News-Kommentare
  • Ich nutze häufig eine Streaming-Website, die oft stockt und Fehlermeldungen anzeigt. Ich analysiere den JavaScript-Code, um eine Lösung zu finden, und ein KI-Assistent war eine große Hilfe dabei, obfuskierten Code zu verstehen

    • Mit KI kann man schwer verständliche JavaScript-Funktionen in leichter verständliche Form umschreiben und mit Kommentaren versehen
    • KI kann Variablen- oder Funktionsnamen erraten und so helfen, das Verhalten des Codes auf hoher Ebene zu verstehen
    • Ich empfehle Leuten mit ähnlichen Aufgaben nachdrücklich, KI-Agenten als Werkzeug zu nutzen
  • Man kann TikTok normal verwenden, indem man die im Web ausgeführten JavaScript-Dateien durch deobfuskierte Dateien ersetzt

    • Mit Tampermonkey und einer CSP-Erweiterung kann man Dateien von einer gesperrten Quelle laden
    • Mit Local Overrides in den Chrome DevTools lässt sich derselbe Effekt auch ohne Drittanbieter-Erweiterungen erzielen
  • Es wirkt, als würde sehr viel Aufwand betrieben, um den Code zu verbergen. Das behindert die Optimierung des Programms, erhöht die Komplexität und kann zu mehr Fehlern führen

    • Ich verstehe die Absicht, Bots zu verhindern, aber es braucht wirksamere Methoden
    • Klone lassen sich nicht verhindern; sie können die Funktionsweise beobachten und im Blackbox-Stil rückentwickeln
  • Ich habe in meinen Lesezeichen Beispiele für Reverse Engineering der TikTok-VM gefunden

  • Ich lese immer gern Beiträge über Reverse-Engineering-Bemühungen, und dieser Artikel war leicht nachzuvollziehen

    • Viele Websites und Bot-Schutzdienste setzen standardmäßig auf Umgebungsprüfungen und das Tracking von Mausbewegungen
    • Es ist immer interessant zu sehen, wie lange ein Dienst braucht, um seine Mechanismen zu ändern, nachdem solche Maßnahmen ausgehebelt wurden
  • Es gibt keinen legitimen Grund dafür, dass eine Social-Media-Plattform ein solches Maß an Obfuskation einsetzt

  • Frage dazu, was mit VM gemeint ist

    • Ich habe Erfahrung damit, mit VMs Testumgebungen für verschiedene Betriebssysteme aufzubauen
    • Eine JavaScript Virtual Machine arbeitet mit einem eigenen Betriebssystem auf dem Host-OS
    • Die im TFA diskutierte VM ist nicht diese Art von VM
    • In letzter Zeit wird „VM“ in verschiedenen Kontexten verwendet, was verwirrend ist
  • Frage, ob es sich um eine mit Lynx zusammenhängende VM handelt

    • LynxJS-Link bereitgestellt
    • Auf Hacker News diskutiert Link
  • Frage, ob es auch in der iOS-App eine VM gibt

    • Ich denke, dass eine VM gegen Apples Richtlinien verstoßen würde
  • Ich habe eine Zeit lang an TikTok-Bots gearbeitet, und es war sehr schwierig