# 토니 호크의 프로 Strcpy 게임

> Clean Markdown view of GeekNews topic #16219. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=16219](https://news.hada.io/topic?id=16219)
- GeekNews Markdown: [https://news.hada.io/topic/16219.md](https://news.hada.io/topic/16219.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-08-08T09:49:37+09:00
- Updated: 2024-08-08T09:49:37+09:00
- Original source: [icode4.coffee](https://icode4.coffee/?p=954)
- Points: 1
- Comments: 1

## Topic Body

### 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와 같은 구형 게임 콘솔의 보안 취약점을 탐구하고 악용하는 과정을 다룸
- 구형 콘솔은 보안 완화가 적어 해킹 학습에 적합하며, 다양한 버그를 통해 코드 실행 권한을 획득할 수 있음
- 네트워크를 통한 원격 코드 실행 방법을 탐구하여 메모리 카드 없이도 콘솔을 해킹할 수 있는 방법을 제시
- 유사한 기능을 가진 다른 게임에서도 취약점을 발견하고 분석하여 다양한 해킹 기법을 학습할 수 있음
- 이 글은 해킹 및 보안 연구에 관심 있는 사람들에게 유용한 정보를 제공하며, 구형 콘솔의 보안 취약점을 이해하는 데 도움을 줄 수 있음

## Comments



### Comment 27860

- Author: neo
- Created: 2024-08-08T09:49:37+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41183115) 
- 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
