1P by neo 1달전 | favorite | 댓글 1개

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