-
TikTok은 가상 머신(VM) 을 사용하여 보안 및 난독화 계층을 강화함
- 이 프로젝트는 이 웹 기반 가상머신(VM)을 리버스 엔지니어링하여 보안 우회 및 요청 서명 생성 방식을 분석함
- 핵심 대상은 webmssdk.js로, 이는 X-Bogus 및 _signature 생성에 관여하는 VM 코드를 포함함
- 프로젝트는 자바스크립트 난독화를 해제하고, TikTok VM의 바이트코드를 분석 및 디컴파일하여 의미 있는 함수 수준으로 복원함
- 이를 통해 인증이 필요한 요청(예: 댓글 작성) 시 필요한 _signature 생성까지 가능해짐
- VM은 정교하게 설계되어 있으며, 루프, 예외 처리, 범위 관리 등 고급 바이트코드 구조를 갖춤
TikTok VM 리버스 엔지니어링 프로젝트 개요
- TikTok은 자바스크립트 기반의 난독화된 가상머신(VM)을 사용하여 클라이언트 요청 서명 생성, 데이터 보호, 보안 우회 방지를 수행함
- 이 프로젝트는 webmssdk.js 파일의 난독화 해제 및 디컴파일을 통해 서명 알고리즘(X-Bogus, _signature) 복원을 목표로 함
핵심 기능 및 구조 분석
난독화 해제
-
TikTok은 문자열을 배열과 브래킷 표기법으로 인덱싱하여 난독화함
r[Gb[301]](Gb[57], e)
-
Gb 배열의 복호화는 고정된 문자열 테이블을 사용하여 치환 처리됨
-
해당 패턴을 모두 디코딩한 후, 읽기 쉬운 점 표기법(dot notation) 으로 변환
함수 호출 난독화 제거
바이트코드 복호화
TikTok VM 특징
-
중첩 함수, 스코프 관리, 예외 처리, 조건 분기 등 일반적인 VM보다 고도화됨
- 각 명령어는 switch가 아닌 if-else 구조로 위장되어 있음 → 이를 switch case 형태로 복원
디컴파일 및 디버깅
- 각 바이트코드 함수는 일반 JS 함수 수준으로 디컴파일되어 VMxxx.js 형태로 저장됨
- 예: VM223는 랜덤 문자 생성기
- 디버깅은 Chrome의 Tampermonkey + CSP 우회 확장을 사용하여 원본 JS를 디컴파일 파일로 대체하며 수행
서명(Signing) 분석
요청 헤더 구조
- 서버 요청 시 3개의 추가 헤더가 포함됨
-
msToken : 서버에서 발급됨, 매 요청마다 재생성됨
-
X-Bogus : webmssdk.js에서 요청 기반으로 생성됨
-
_signature : 인증이 필요한 요청에서 사용됨, webmssdk.js 생성
- 일반적인 사용자 조회 요청은 X-Bogus만 필요
- 댓글 작성 같은 인증 요청은 _signature도 필요
VM 함수 흐름
-
VM86: 전체 서명 생성의 진입점
-
VM113: X-Bogus 생성
-
VM189: _signature 생성
-
signer.js로 이 흐름을 재현하여 URL 서명 가능
부가 보호 메커니즘
- 마우스 추적: VM120
- 환경 체크: VM265
- 그러나 이는 모두 클라이언트 측 보호이며 서버 통신 없음 → 서명 생성에는 무시 가능
주의 사항 및 유지보수
- TikTok VM은 지속적으로 업데이트됨 → 구조 변경 시 새로운 디컴파일 필요
- 이 프로젝트는 주로 보안 분석, 봇 방지 기술 연구, 교육 목적에 적합