GN⁺: 토니 호크의 프로 Strcpy 게임
(icode4.coffee)TONY HAWK’S PRO STRCPY
개요
- 2016년에 Xbox 해킹을 위한 새로운 버그를 찾기 위해 시작한 프로젝트
- 2000년대 초반의 게임 콘솔은 보안 완화가 적어 해킹 학습에 적합
- Tony Hawk’s Pro Skater 4의 게임 저장 파일을 분석하여 버퍼 오버플로우 취약점을 발견
Part 1: 시작하기
- Tony Hawk’s Pro Skater 4의 "Create-A-Park" 기능을 통해 취약점 발견
- 게임 저장 파일의 갭 이름 문자열을 strcpy 함수로 복사하는 과정에서 버퍼 오버플로우 발생
- 악의적인 저장 파일을 만들어 Xbox에서 실행하여 코드 실행 권한 획득
Part 2: 원격 코드 실행
- 메모리 카드 없이 네트워크를 통해 콘솔을 해킹할 수 있는 방법 탐색
- 멀티플레이어 LAN 게임에서 저장 파일을 전송하여 클라이언트 콘솔을 해킹하는 방법 시도
- 클라이언트 콘솔이 호스트로부터 전송된 저장 파일을 로드할 때 버퍼 오버플로우 발생
- 클라이언트 콘솔에 보조 페이로드 실행 파일을 전송하기 위해 네트워크 메시지 핸들러 작성
Variant 분석
- Tony Hawk’s Pro Skater 3, Tony Hawk’s Underground 1 & 2, Tony Hawk’s American Wasteland 등 다른 게임에서도 유사한 취약점 발견
- 일부 게임은 스택 쿠키를 사용하여 버퍼 오버플로우 방지
최종 결과
- 클라이언트 콘솔이 호스트 콘솔에 연결되면 악의적인 저장 파일을 네트워크를 통해 전송
- 클라이언트 콘솔에서 페이로드 실행 파일을 전송받아 실행
- 원격 코드 실행 및 비동기 파일 전송 성공
GN⁺의 정리
- 이 글은 Xbox와 같은 구형 게임 콘솔의 보안 취약점을 탐구하고 악용하는 과정을 다룸
- 구형 콘솔은 보안 완화가 적어 해킹 학습에 적합하며, 다양한 버그를 통해 코드 실행 권한을 획득할 수 있음
- 네트워크를 통한 원격 코드 실행 방법을 탐구하여 메모리 카드 없이도 콘솔을 해킹할 수 있는 방법을 제시
- 유사한 기능을 가진 다른 게임에서도 취약점을 발견하고 분석하여 다양한 해킹 기법을 학습할 수 있음
- 이 글은 해킹 및 보안 연구에 관심 있는 사람들에게 유용한 정보를 제공하며, 구형 콘솔의 보안 취약점을 이해하는 데 도움을 줄 수 있음
Hacker News 의견
-
habibi 키의 공개 키 모듈러스가 Microsoft RSA 공개 키와 4바이트 차이만 있음
- MS 키는 2048비트 RSA 키임
- 지수 값을 3으로 변경하면 유사한 키를 쉽게 찾을 수 있음
- 그러나 habibi 키를 사용하는 페이로드는 RSA 서명 검증 루틴의 지수를 변경하지 않음
- 여전히 지수 65537을 사용하여 검증을 수행하는 것으로 보임
- 이 작업이 어떻게 가능한지 확실하지 않음
-
2048비트 정수는 간단하게 인수분해될 가능성이 있음
- 코드가 4바이트를 무작위로 변경하고 인수분해를 시도하는 방식으로 작동할 수 있음
- 결과적으로 작은 인수를 많이 가지는 공개 모듈러스가 생성될 수 있음
- RSA 모듈러스는 일반적으로 두 개의 소인수를 가지지만, 더 많은 인수를 가져도 수학적으로 문제없음
-
Xbox 360 소프트모드가 Tony Hawk 게임의 공원 이름을 통해 가능했음
- 24 세그먼트 ROP 체인 사용
- 하이퍼바이저에 대한 간결한 기능 설명과 x360 봇넷에 대한 생각이 Xbox 360 향수를 자극함
-
strcpy 대신 strncpy를 사용했어야 했음
- Tony Hawk는 안전 장비를 옹호하는 것으로 유명함
- THUG PRO 모드에 대한 익스플로잇이 아쉬움
- 모드는 10년 이상 되었고, 원래 개발자는 사라졌음
- 이제 모드는 사용 불가능하며, 전체 권한 익스플로잇의 위험 때문에 아무도 사용하지 않으려 함
- 이 기사가 모드 패치에 관심 있는 사람에게 도달하길 바람
-
Tony Hawk는 보안 분석가가 아닌 프로 스케이터임
- 90년대 후반과 2000년대 초반에 코드를 감사하는 대신 게임 시리즈를 자연스럽게 만드는 데 시간을 보냈음
-
habibi 키의 비공개 키가 언제, 어디서, 어떻게 유출되었는지 궁금함
- OP는 MS 키와 habibi 키의 4바이트 차이를 패치하여 서명되지 않은 실행 파일을 실행할 수 있었음
- 이는 비공개 키를 손에 넣었음을 의미함
-
PSX 디컴파일링을 하면서 유사한 사례를 많이 발견했음
-
memmove
는 SDK 라이브러리를 통해 연결되지만,strcpy
는 BIOS에서 제공됨 - 1997년까지 SDK의 후속 버전이 라이브러리 버전으로 패치될 수 있었음
-
-
이와 같은 익스플로잇 분석을 여러 번 읽었고, 앞으로 100번 더 읽을 수 있기를 바람
- 훌륭한 기사임
-
콘솔 개발에서 잘못된 보안 사고방식의 좋은 예임
- "우리가 저장한 데이터만 파싱하면 된다"는 사고방식은 잘못된 것임
- 콘솔은 사용자를 적으로 간주하지 말아야 함
- 그러나 그렇게 한다면, 게임은 그에 맞는 보안 사고방식을 가져야 함
-
VSCode 플러그인이 트릭 이름을 만들어내고 연속적인 키 입력에 대해 콤보 포인트 점수를 주는 것을 상상해보라
- Tony Hawk's Pro-grammer