Ingeniería inversa de la VM ofuscada de TikTok
(github.com/LukasOgunfeitimi)- TikTok usa una máquina virtual (VM) para reforzar su capa de seguridad y ofuscación
- Este proyecto hace ingeniería inversa de esta VM basada en web para analizar cómo se elude la seguridad y cómo se generan las firmas de las solicitudes
- El objetivo principal es
webmssdk.js, que contiene el código de la VM involucrado en la generación de X-Bogus y _signature - El proyecto desofusca JavaScript y analiza y decompila el bytecode de la VM de TikTok para restaurarlo a un nivel significativo de funciones
- Con esto, incluso es posible generar la
_signaturenecesaria para solicitudes que requieren autenticación, como publicar comentarios - La VM está diseñada de forma sofisticada y cuenta con estructuras avanzadas de bytecode como bucles, manejo de excepciones y gestión de alcance
Resumen del proyecto de ingeniería inversa de la VM de TikTok
- TikTok usa una máquina virtual (VM) ofuscada basada en JavaScript para generar firmas de solicitudes del cliente, proteger datos y evitar la evasión de seguridad
- Este proyecto busca restaurar los algoritmos de firma (X-Bogus, _signature) mediante la desofuscación y decompilación del archivo
webmssdk.js
Funciones clave y análisis de estructura
Desofuscación
-
TikTok ofusca cadenas indexándolas con arreglos y notación con corchetes
r[Gb[301]](Gb[57], e) -
El descifrado del arreglo
Gbse procesa mediante sustitución usando una tabla fija de cadenas -
Después de decodificar todos esos patrones, se convierten a una notación con punto (dot notation) más legible
Eliminación de la ofuscación de llamadas a funciones
-
Las funciones se almacenan en el arreglo
Aby se invocan por índiceAb[31](args) → Ab31(args) -
Con un parser de AST, se separan como funciones individuales, se les asigna nombre y también se ajusta la forma de invocarlas
Descifrado del bytecode
-
El bytecode tiene una composición compleja con cifrado base64 + gzip + leb128 + XOR
r = cálculo de la clave XOR descompresión y decodificación leb128 para reconstruir el conjunto de instrucciones -
Cada función está construida sobre bytecode y, mediante el proceso de decompilación, se restaura la estructura de las funciones
Características de la VM de TikTok
- Está más avanzada que una VM común, con funciones anidadas, manejo de alcance, manejo de excepciones y bifurcaciones condicionales
- Cada instrucción está disfrazada con una estructura
if-elseen lugar deswitch→ esto se restaura a una forma de switch case
Decompilación y depuración
- Cada función de bytecode se decompila a nivel de una función JS normal y se guarda en formato VMxxx.js
- Ejemplo: VM223 es un generador de caracteres aleatorios
- La depuración se realiza usando Tampermonkey + una extensión para evadir CSP en Chrome, reemplazando el JS original por los archivos decompilados
Análisis de firmas (Signing)
Estructura de los headers de la solicitud
- Al enviar solicitudes al servidor, se incluyen 3 headers adicionales
msToken: emitido por el servidor, se regenera en cada solicitudX-Bogus: se genera enwebmssdk.jscon base en la solicitud_signature: se usa en solicitudes que requieren autenticación; lo generawebmssdk.js
- Una solicitud común de consulta de usuario solo requiere
X-Bogus - Una solicitud autenticada, como publicar un comentario, también requiere
_signature
Flujo de funciones de la VM
- VM86: punto de entrada de toda la generación de firmas
- VM113: genera
X-Bogus - VM189: genera
_signature - Este flujo puede reproducirse con signer.js para firmar URLs
Mecanismos adicionales de protección
- Seguimiento del mouse: VM120
- Verificación del entorno: VM265
- Sin embargo, todo esto es protección del lado del cliente y no hay comunicación con el servidor → puede ignorarse para la generación de firmas
Precauciones y mantenimiento
- La VM de TikTok se actualiza continuamente → si cambia la estructura, se requiere una nueva decompilación
- Este proyecto es adecuado principalmente para análisis de seguridad, investigación de tecnologías anti-bots y fines educativos
1 comentarios
Opiniones de Hacker News
Uso un sitio web de streaming que se corta con frecuencia y muestra mensajes de error. Estoy analizando el código JavaScript para encontrar una solución, y un asistente de IA me ayudó mucho a entender el código ofuscado
Se puede reemplazar el archivo JavaScript que se ejecuta en la web por una versión desofuscada para usar TikTok con normalidad
Parece que ponen mucho esfuerzo en ocultar el código. Eso puede obstaculizar la optimización del programa, aumentar la complejidad y generar más errores
Encontré en mis marcadores un ejemplo de ingeniería inversa de la VM de TikTok
Siempre disfruto leer textos sobre esfuerzos de ingeniería inversa, y este fue fácil de seguir
No hay una razón legítima para que una plataforma de redes sociales use este nivel de ofuscación
Pregunta sobre qué es una VM
Pregunta sobre si está relacionada con la VM de Lynx
Pregunta sobre si también hay una VM en la app de iOS
Trabajé un tiempo con bots para TikTok y fue muy difícil