1 điểm bởi GN⁺ 2024-08-08 | 1 bình luận | Chia sẻ qua WhatsApp

TONY HAWK’S PRO STRCPY

Tổng quan

  • Dự án bắt đầu vào năm 2016 nhằm tìm lỗi mới để hack Xbox
  • Các máy chơi game đầu những năm 2000 có ít biện pháp giảm thiểu bảo mật hơn nên phù hợp để học về hacking
  • Phân tích file lưu của Tony Hawk’s Pro Skater 4 và phát hiện lỗ hổng tràn bộ đệm

Part 1: Bắt đầu

  • Phát hiện lỗ hổng thông qua tính năng "Create-A-Park" của Tony Hawk’s Pro Skater 4
  • Tràn bộ đệm xảy ra trong quá trình sao chép chuỗi tên gap của file lưu bằng hàm strcpy
  • Tạo file lưu độc hại và chạy trên Xbox để giành quyền thực thi mã

Part 2: Thực thi mã từ xa

  • Tìm cách hack máy chơi game qua mạng mà không cần thẻ nhớ
  • Thử phương pháp truyền file lưu trong trận nhiều người chơi LAN để hack máy client
  • Tràn bộ đệm xảy ra khi máy client tải file lưu được gửi từ máy host
  • Viết trình xử lý thông điệp mạng để truyền tệp thực thi payload phụ sang máy client

Phân tích biến thể

  • Phát hiện lỗ hổng tương tự trong các game khác như Tony Hawk’s Pro Skater 3, Tony Hawk’s Underground 1 & 2, Tony Hawk’s American Wasteland
  • Một số game sử dụng stack cookie để ngăn chặn tràn bộ đệm

Kết quả cuối cùng

  • Khi máy client kết nối với máy host, file lưu độc hại được truyền qua mạng
  • Máy client nhận và thực thi tệp payload
  • Thực thi mã từ xa và truyền tệp bất đồng bộ thành công

Tóm tắt của GN⁺

  • Bài viết này trình bày quá trình khám phá và khai thác các lỗ hổng bảo mật trên máy chơi game đời cũ như Xbox
  • Các máy đời cũ có ít cơ chế giảm thiểu bảo mật nên phù hợp để học hacking, và có thể giành quyền thực thi mã thông qua nhiều loại lỗi khác nhau
  • Bài viết khám phá phương pháp thực thi mã từ xa qua mạng, cho thấy có thể hack máy chơi game mà không cần thẻ nhớ
  • Tác giả cũng tìm thấy và phân tích lỗ hổng trên các game khác có tính năng tương tự, từ đó học được nhiều kỹ thuật hacking khác nhau
  • Bài viết cung cấp thông tin hữu ích cho những người quan tâm đến hacking và nghiên cứu bảo mật, đồng thời giúp hiểu rõ hơn về lỗ hổng bảo mật trên các máy chơi game đời cũ

1 bình luận

 
GN⁺ 2024-08-08
Ý kiến trên Hacker News
  • Mô-đun khóa công khai của khóa habibi chỉ khác 4 byte so với khóa công khai RSA của Microsoft

    • Khóa MS là khóa RSA 2048 bit
    • Nếu đổi giá trị số mũ sang 3 thì có thể dễ dàng tìm được một khóa tương tự
    • Tuy nhiên, payload sử dụng khóa habibi không thay đổi số mũ trong quy trình xác minh chữ ký RSA
    • Có vẻ như việc xác minh vẫn được thực hiện với số mũ 65537
    • Vẫn chưa rõ điều này có thể xảy ra bằng cách nào
  • Một số nguyên 2048 bit có thể có khả năng bị phân tích thừa số khá dễ dàng

    • Có thể đoạn mã hoạt động bằng cách thay đổi ngẫu nhiên 4 byte rồi thử phân tích thừa số
    • Kết quả là có thể tạo ra một mô-đun công khai có nhiều thừa số nhỏ
    • Mô-đun RSA thường có hai thừa số nguyên tố, nhưng về mặt toán học thì việc có nhiều thừa số hơn cũng không có vấn đề gì
  • Softmod Xbox 360 từng khả thi thông qua tên công viên trong game Tony Hawk

    • Sử dụng chuỗi ROP 24 đoạn
    • Phần mô tả ngắn gọn về hypervisor và suy nghĩ về botnet x360 gợi lại cảm giác hoài niệm về Xbox 360
  • Đáng lẽ nên dùng strncpy thay vì strcpy

    • Tony Hawk nổi tiếng với việc ủng hộ đồ bảo hộ an toàn
    • Thật tiếc cho exploit nhắm vào bản mod THUG PRO
    • Bản mod này đã tồn tại hơn 10 năm và nhà phát triển ban đầu đã biến mất
    • Giờ bản mod không thể sử dụng được nữa, và không ai muốn dùng nó vì rủi ro của exploit toàn quyền
    • Hy vọng bài viết này sẽ đến được với ai đó quan tâm đến việc vá bản mod
  • Tony Hawk là vận động viên trượt ván chuyên nghiệp, không phải nhà phân tích bảo mật

    • Vào cuối thập niên 90 và đầu những năm 2000, anh ấy đã dành thời gian để làm cho loạt game trở nên tự nhiên thay vì đi audit mã nguồn
  • Tò mò không biết khóa riêng của khóa habibi đã bị lộ khi nào, ở đâu và bằng cách nào

    • OP có thể chạy tệp thực thi chưa được ký bằng cách vá chênh lệch 4 byte giữa khóa MS và khóa habibi
    • Điều đó có nghĩa là họ đã nắm trong tay khóa riêng
  • Khi decompile PSX, tôi đã thấy rất nhiều trường hợp tương tự

    • memmove được liên kết thông qua thư viện SDK, còn strcpy thì được cung cấp từ BIOS
    • Đến năm 1997, các phiên bản SDK sau đó đã có thể được vá sang phiên bản thư viện
  • Tôi đã đọc những bài phân tích exploit kiểu này nhiều lần, và hy vọng sau này còn có thể đọc thêm 100 lần nữa

    • Một bài viết tuyệt vời
  • Đây là một ví dụ điển hình về tư duy bảo mật sai lầm trong phát triển console

    • Tư duy kiểu "chỉ cần parse dữ liệu do chính chúng ta lưu" là sai
    • Console không nên coi người dùng là kẻ thù
    • Nhưng nếu đã làm vậy thì game cũng phải có tư duy bảo mật tương ứng
  • Hãy tưởng tượng một plugin VSCode tạo ra tên trick và chấm điểm combo cho các lần nhấn phím liên tiếp

    • Tony Hawk's Pro-grammer