제 Xbox 360을 해킹하는 데 9년이 걸렸습니다

It took me nine years to hack my Xbox 360

kennedn.com ▲ 171 댓글 47 kennedn

요약

9년 전 접었던 Xbox 360 해킹이 5파운드짜리 Raspberry Pi Pico로 훨씬 쉬워졌습니다.

kennedn.com 블로그 작성자는 2017년 Xbox 360에 글리칭 모드칩(전원이나 신호를 순간적으로 교란하는 개조 칩) Matrix CoolRunner Rev D를 달려다 실패해 계획을 접었습니다. 올해 값싼 마이크로컨트롤러로 다시 도전하면서 이 공격이 왜 통하는지 풀어 썼습니다.

왜 중요한가

  • 소프트웨어로는 뚫기 힘든 서명 검증도 전원이 안정적이라는 물리적 가정이 깨지면 무너진다는 점을 보여 줍니다.
  • 결함 주입(전원이나 신호를 흔들어 칩 오작동을 일으키는 공격)은 ESP32 보안 부팅, Apple AirTag, Nintendo Switch에도 통했습니다.
  • 작성자는 보안이 단단해질수록 이런 공격의 매력이 커지고, 값싼 장비 덕에 시도하기도 쉬워졌다고 봤습니다.

핵심 내용

  • Xbox 360은 CPU에 내장된 1단계 부트로더가 다음 부팅 단계의 마이크로소프트 서명을 확인해 소프트웨어 공격을 막았습니다.
  • 연구자들은 CPU 리셋 신호를 아주 짧게 흔들면 CPU가 재시작하지 않고 실행 중인 명령을 잘못 처리한다는 점을 찾아냈습니다.
  • 서명 검증 중 값을 옮기는 mr 명령이 0을 옮기도록 타이밍을 맞추면 임의의 코드를 실행할 수 있습니다.
  • 2017년에는 낸드(콘솔 펌웨어가 담긴 플래시 메모리)를 읽을 장비를 직접 만들다 실패했지만, 올해는 Pico로 몇 초 만에 읽었습니다.
  • 글을 올리기 한 주 전 소프트웨어만으로 되는 해킹이 공개되어, 작성자는 그간의 노력이 다소 무의미해졌다고 털어놨습니다.

HN 반응

  • 소프트웨어만으로 되는 영구 개조 Peer Pressure로 해킹이 끝났다는 평가에, 모든 기판에서 되지는 않고 글리칭이 더 이른 부팅 단계를 장악한다는 반론이 붙었습니다.
  • 글리칭은 2010년대 중반 이전 칩에 잘 통하고 최신 칩은 감지하면 재부팅해 막는다는 지적과 함께, 내 기기를 다룰 자유가 줄어든다는 아쉬움도 나왔습니다.

댓글

30개 표시 · 전체 47개
  1. MayeulC HN

    이 블로그 글은 Raspberry Pi 마이크로컨트롤러가 등장하면서 다양한 하드웨어와 연동하기가 쉬워졌다고 주장합니다.

    맞는 말이긴 하지만, 그런 기능은 2017년과 그 이전에도 이미 꽤 저렴했습니다. 예를 들어 fx2 칩으로도 꽤 많은 걸 할 수 있습니다.

    버니의 Baochip BIO 방식이 마이크로컨트롤러 분야에서 자리 잡아서 이런 기능이 더 널리 보급되면 좋겠습니다. 예컨대 ESP32로도 많은 걸 할 수 있지만, I/O 면에서는 여전히 RP2040이 우위에 있습니다.

    또 RP2350 자체도 오류 주입(fault injection)으로 보호가 뚫렸다는 점을 언급할 기회를 놓쳤습니다.

    마지막으로, 2010년대 중반 이전의 하드웨어에는 사이드 채널 공격과 오류 주입 공격이 여전히 아주 잘 먹히지만, 칩 설계는 이런 공격에 맞서 점점 단단해지고 있습니다. 예를 들어 글리치가 감지되면 강제로 재부팅하는 식입니다. 그래서 현재와 차세대 칩은 공격하기가 더 어렵습니다(RP2350에 대한 레이저 오류 주입을 보세요. 이쪽도 대비가 진행되고 있긴 합니다). 어느 정도는 좋은 일이겠지만(제 신용카드를 복제하기 어려워지니까요), 제 하드웨어에 대한 통제권을 잃는 것은 안타깝습니다.

    그건 그렇고, 어릴 때 1세대 Xbox(보안 면에서는 스위스 치즈나 다름없는 물건이죠)를 만지작거리며 소프트웨어, 네트워킹, 전자공학에 대해 많이 배웠습니다. 앞으로의 세대도 그렇게 마음껏 만지작거려 볼 수 있기를 바랍니다.

  2. monocasa HN

    한동안은 BeagleBone SoC에 들어 있는 PRU 블록도 비슷한 이유로 인기가 있었습니다. 다만 가격이 열 배는 비쌌습니다.

  3. mips_avatar HN

    엔비디아 같은 벤더가 BIOS를 계속 독점적이고 암호화된 상태로 지킬 수 있을까요? 소비자용 코어에서 nvlink 같은 걸 켤 수 있게 되면 멋질 텐데요.

  4. skinfaxi HN

    라즈베리 파이/아두이노 이전에도 TI LaunchPad 같은 보드가 취미 개발자들이 더 쉽게 접근하도록 노력했던 걸로 기억하는데, 그래도 Raspberry Pi는 그 면에서 훨씬 큰 도약이었죠.

  5. merpkz HN

    마이크로슬롭이 Xbox One에서 뭘 바꿨길래 같은 방식으로 뚫리지 않은 걸까요? 제가 알기로 Xbone은 보안 면에서 여전히 무패인데, 보안이 정말 좋아서일 수도 있고 그냥 가질 만한 가치가 없는 콘솔이라서일 수도 있겠네요.

  6. Gigachad HN

    Xbox의 가장 강력한 보안 기능은 브랜드를 죽여버린 거였죠. 그러니 아무도 굳이 해킹하려 들지 않았어요. 게임도 거의 전부 어차피 윈도로 나왔고요.

    보안 기술을 새로 많이 넣긴 했지만, 해킹할 동기만 있었다면 훨씬 훨씬 일찍 뚫렸을 거예요.

  7. xav_authentique HN

    뚫리긴 했어요. 다만 하드웨어 공격(주로 전압 글리칭)으로요. 글쓴이가 reverseconf에서 그 과정을 발표했는데 정말 흥미로워요: https://www.youtube.com/watch?v=FTFn4UZsA5U&t

  8. MayeulC HN

    사용자가 직접 만든 홈브루를 실행하게 허용했고, 스토어에 Kodi(예전 이름은 XBMC, 즉 XBox Media Center이고 XBMP에서 발전한 것) 같은 서드파티 앱도 더 많이 들어오게 했습니다.

    과거에 콘솔이 해킹된 원동력은 홈브루 소프트웨어였습니다. 콘솔이 더 안전해진 건 분명하지만, 해킹할 동기도 일부 없애 버린 셈입니다.

  9. david-gpu HN

    곁가지 역사 이야기를 하나 하자면, Xbox 360의 Xenos GPU의 DNA는 지금도 모든 Snapdragon GPU(Adreno) 안에 남아 있습니다.

    2008년쯤, AMD는 ATI를 인수한 뒤로 돈이 줄줄 새고 있었습니다. 그래서 스마트폰용 칩을 만들던 사업부인 핸드헬드 부문을 처분하고 싶어 했죠. 소문으로 듣기로는 퀄컴은 그중 일부, 특히 GPU IP에만 관심이 있었는데 AMD는 통째로 팔고 싶어 했고, 결국 가격을 충분히 깎아 주자 퀄컴이 계약을 확정했다고 합니다. 저는 일개 말단이었으니 감안해서 들어 주세요.

    2009년 인수가 마무리될 당시 그 GPU는 Xbox 360의 Xenos GPU를 소형화한 버전이었습니다. 기본 구성은 다 갖춰져 있었고, 타일 메모리(GMem)가 별도 칩에 있지 않고 나머지 GPU와 같은 곳에 있다는 점만 달랐죠. 이것이 Adreno 200 GPU로 마케팅된 제품입니다. 셰이더 아키텍처는 꽤 별났는데, 클럭마다 SIMD vec4 명령 하나와 스칼라 명령 하나, 이렇게 두 개를 VLIW 방식으로 발행했습니다(슈퍼스칼라가 아닙니다). 컴파일러가 쓸모 있는 명령 두 개를 그렇게 묶어 낼 방법을 못 찾는 경우가 많아서 활용률이 낮을 때가 많았습니다. 얘기가 샜네요.

    다시 퀄컴 인수 이야기로 돌아가겠습니다. 직원들에게는 무척 긴장되는 시기였습니다. AMD에서 우리 급여는 한동안 동결된 상태였는데 퀄컴은 급여 인상을 거부했습니다. 우리 직원들이 공동전선을 꾸려 협상했으면 좋았겠지만 그러지 못했습니다. 계약 조건상 AMD는 우리를 다시 채용할 수 없었고, 그래서 대부분은 마지못해 따라가 퀄컴에 흡수되었습니다.

    퀄컴은 몇 년째 자체 GPU 설계를 해 오고 있었는데, 제 기억이 맞다면 주로 S3 그래픽스에서 데려온 사람들이 주축이었습니다. 어쨌든 자체 IP를 실제로 출시하지는 못했고 여전히 AMD의 GPU 설계에 전적으로 의존하고 있었으니, 퀄컴으로서는 이번 인수가 아주 합리적이었습니다. 퀄컴의 최신 GPU IP는 QShader라고 불렸는데, 놀랄 만큼 합리적인 스칼라 기반 통합 아키텍처를 갖추고 있었습니다. 프로그래밍 용이성이 크게 개선된 설계였죠.

    인수 후에는 QShader와 AMD의 Xenos 파생 설계를 천천히 합치는 작업이 이어졌고, 목표는 나중에 Adreno 300으로 출시될 하이브리드를 만드는 것이었습니다. 본질적으로는 커맨드 프로세서부터 텍스처 유닛까지 Xenos의 고정 기능 블록을 가져오고, 셰이딩 프로세서는 QShader에서 가져왔습니다. 최초의 Adreno 300(코드명 "Oxili")은 관여한 모두가 엄청난 노력을 쏟은 결과물이었고, 초기 진통도 좀 있었지만 이후 Snapdragon 칩에 들어가는 모든 Adreno GPU의 토대가 되었습니다. 게다가 화성에까지 갔다고요! [0]

    20년이 지난 지금도 Adreno GPU는 그 Xenos 방식의 타일 기반 렌더링 아키텍처를 그대로 탑재해 출시되고 있습니다. 그 설계를 이끈 수석 아키텍트 앤디 그루버에게 위키백과 문서가 없다는 게 믿기지 않습니다.

    [0] https://en.wikipedia.org/wiki/Ingenuity_(helicopter) [1]

  10. saturn8601 HN

    흥미로운 이야기 공유해 주셔서 감사합니다.

    GPU 개발자 시장은 엔지니어가 한 회사나 몇몇 회사에 갇힐 만큼 전문화되어 있나요? 그때 직원들이 불안해했던 것도 그 기술을 쓸 만한 일자리가 마땅치 않아서였나요? 서로 다 아는 좁은 바닥일 것 같은데, 맞나요?

    이 유산 덕분에 Xbox 360 소프트웨어를 디컴파일해서 Adreno GPU에서 돌리기도 더 쉬워질까요? 이런 걸 묻는 이유는 PS2 데모씬 같은 소프트웨어를 맥처럼 아주 다른 플랫폼으로 포팅하려다 정말 고생했기 때문이에요. 그래픽은 특정 용도에 맞춰 얼마나 맞춤형으로 만들어지는지를 이제야 절감했거든요. 대상 플랫폼이 같은 GPU 설계를 쓰는 것처럼 난이도를 조금이라도 낮춰 주는 요소는 포팅/디컴파일이 성공할 가능성을 높이기만 할 거라고 봅니다.

  11. david-gpu HN

    > GPU 개발자 시장은 엔지니어가 한 회사나 몇몇 회사에 갇힐 만큼 전문화되어 있나요?

    솔직히 말하면, 그렇습니다. 좋은 점은 사람들이 오래 머물러서 동료들을 잘 알게 되고, 서로 잘 대해 준다는 겁니다.

    > 그때 직원들이 불안해했던 것도 그 기술을 쓸 만한 일자리가 마땅치 않아서였나요?

    분명히 그렇습니다. 일이 불만스러워도 옮기고 싶지 않은 사람들이 있습니다. 그래서 마음에 들지 않는 일을 계속하거나 GPU 분야를 떠나게 됩니다. 요즘은 원격 근무가 늘어서 예전보다 이동이 잦아지긴 했지만, 현실적으로 일하고 싶은 곳은 여전히 아주 적어서 사람들이 웬만하면 관계를 끊지 않습니다.

    > 서로 다 아는 좁은 바닥일 것 같은데, 맞나요?

    네, 꽤 좁은 세계입니다. 보통 대학을 졸업하자마자 채용되거나 경쟁사에서 스카우트됩니다.

    전문 지식이 많이 필요해서 제 몫을 하려면 몇 년이 걸립니다. 저는 AMD/퀄컴에서 9년을 일하고 나서야 그 GPU가 어떻게 동작하는지 이해하기 시작했습니다. 그 뒤 엔비디아에서 5년을 보냈는데, 그 거대한 회사에 대해 배운 게 너무 적다는 좌절감을 안고 떠났습니다. 정말 엄청나게 복잡한 시스템들입니다.

    > 이 유산 덕분에 Xbox 360 소프트웨어를 디컴파일해서 Adreno GPU에서 돌리기도 더 쉬워질까요?

    아, 정말 좋은 질문입니다! 생각해 보겠습니다.

    Xbox 360에서 하드웨어가 얼마나 노출되었는지는 잘 모릅니다. 전부 표준 DirectX였다면 밑바탕 하드웨어는 (성능을 빼면) 중요하지 않습니다. 하지만 앞서 말한 GMem 같은 내부의 특이점을 일부 노출했다면, 같은 계열의 하드웨어에서 에뮬레이션하기가 더 쉬울 수 있습니다. 다만 새 하드웨어도 그 기능을 노출해야 하는데, 그게 당연한 건 아닙니다.

  12. jacquesm HN

    훌륭한 댓글이네요, 감사합니다. 일부는 알고 있었지만 이렇게 자세히는 몰랐고, 제가 안다고 생각했던 몇 가지는 바로잡혔습니다. ATI가 인수되기 전 이야기도 따로 한 챕터를 할애할 만합니다(그리고 간접적으로는 셍 랩스도요).

  13. david-gpu HN

    네, 저는 AMD의 ATI 인수에 대해서는 아는 게 거의 없습니다. 그리고 제 말은 뭐든 감안해서 들어 주세요. 제가 일개 말단이었던 탓도 있지만, 20년이 지나 제 뇌가 스위스 치즈처럼 구멍투성이가 됐기 때문이기도 합니다.

  14. saturn8601 HN

    이 발표는 관련 없는 이유로 방금 플래그된 댓글에 링크되어 있었는데, 혹시 놓친 분이 있을까 봐 여기에도 올립니다: https://www.youtube.com/watch?v=U7VwtOrwceo

    (적어도 소프트웨어 스택 기준으로) Xbox의 보안이 왜 그렇게 좋은지를 플랫폼 보안 아키텍트 본인이 설명하는 훌륭한 발표입니다. 꼭 한번 보시길 강력히 추천합니다.

  15. qingcharles HN

    이제 영구적으로 동작하는 소프트모드까지 나왔네요. Xbox 360 해킹 씬은 이 시점에서 사실상 완성된 셈이에요.

  16. landr0id HN

    저는 JTAG 해킹이 나오기 전, 그러니까 한창 때 Xbox 360 씬에 있었습니다. 세이브 파일을 수정하고, 데브킷을 구하고, 저만의 비공개 홈브루를 직접 만들었죠. 2013년쯤 대부분 씬을 떠났습니다.

    이번 소프트모드를 계기로 지금 씬이 어떤 상태인지 살펴봤는데, 상황이... 좋지 않습니다.

    JTAG 해킹 이후 17년이 지나서야, 바로 며칠 전에 누군가 비독점 SDK를 드디어 바이브코딩으로 만들었습니다. 대중에게 보이는 씬은(적어도 가장 목소리 큰 집단은) 대체로 홈브루를 '스텔스' 서버와 동일시합니다. 스텔스 서버란 콘솔이 접속하는 서버로, 개조된 콘솔을 탐지하는 Xbox LIVE의 챌린지를 우회하도록 도와주는 서버입니다. 이런 서버는 여러 게임용 모드 메뉴(기본적으로 트레이너)와 구버전 대시보드를 쓸 수 있는 기능을 제공합니다.

    더 어이없는 건 커스텀 서버가 필요하지도 않다는 겁니다. 챌린지를 우회하는 코드는 오래전에 유출됐는데도 사람들은 여전히 스텔스 서버 이용권에 돈을 냅니다! 지금 개조된 콘솔을 가진 사람 말고 누가 Xbox LIVE에서 Xbox 360 게임을 하고 있을지 상상도 안 됩니다.

    콘솔 해킹은 끝났습니다. 하지만 씬의 상태는 좀 슬픕니다.

    그래도 이제는 생태계에서 빠진 부분을 바이브코딩으로 채울 수 있게 됐습니다(저도 지금 데브킷 디버그 모니터를 말 그대로 리버스 엔지니어링해서 다시 구현하고 있으니 하는 말입니다).

  17. saturn8601 HN

    하드웨어 모드를 작업하는 사람이 있는지 아세요? 이를테면 GaN 기반의 새 전원 어댑터 같은 거요. 저는 콘솔 전원 어댑터가 늘 마음에 안 들었어요. 대체 왜 그렇게 큰 걸까요? 효율을 따지는 제 머리가 돌아버릴 지경이에요. Barracuda/Winchester 보드에서는 마침내 그럭저럭 잡아 놓긴 했지만 그래도요. 누군가 밀어붙여서 미니 PSU를 만들어 줬으면 좋겠어요.

  18. ZenoArrow HN

    콘솔 해킹은 끝났습니다.

    아니요, 그렇지 않습니다. 우선 최근 공개된 소프트모드는 모든 Xbox 360 리비전에서 동작하지 않습니다.

  19. landr0id HN

    BadUpdate는 모든 리비전에서 동작합니다. 다만 영구적이지(persistent) 않을 뿐입니다.

    BadAvatar를 쓰면 별다른 조작 없이 콘솔을 익스플로잇할 수 있고, 대부분의 사람에게는 이 정도면 충분합니다.

  20. motownphilly HN

    시간만 충분하면 누군가 어떻게든 동작하게 만들 방법을 찾아낼 거예요.

  21. ChrisRR HN

    Rock Band Blitz가 스토어에서 내려가지만 않는다면요.

  22. landr0id HN

    Rock Band Blitz 데모는 로밍 가능한(roamable) 패키지로 배포되었습니다. 즉 특정 콘솔에 묶는 라이선스가 없습니다(잡지 CD 같은 데 담아 배포하는 데모를 위한 방식이었습니다).

    파일 시스템에 그냥 넣으면 콘솔이 받아들입니다. 실행 파일을 폐기 목록에 추가하려면 시스템 업데이트가 필요할 텐데, 마이크로소프트가 그럴 가능성은 낮다고 봅니다. 그리고 초기 코드 실행을 얻는 방법이 이것만 있는 것도 아닙니다.

  23. qingcharles HN

    동의해요. 마이크로소프트가 지금 시점에서 20년 된 콘솔의 피해 수습까지 할 만큼 신경 쓰지는 않을 것 같아요.

  24. Pfhortune HN

    이제는 프로필/아바타만 쓰는 진입 방법이 있어서 그럴 필요조차 없어요. 페이로드가 들어 있는 USB 스틱으로 콘솔을 부팅하기만 하면 바로 시작이에요.

    저는 이번 주에 처음 360 해킹을 파 보기 시작했는데, GitHub 저장소 몇 군데에서 파일을 이것저것 긁어모으기만 하면 이렇게 간단하다는 데 놀랐어요...

  25. hizlikovboy27 HN

    글리칭 장비가 아직도 장점이 있는지 확인해 보셨나요? 예를 들어 소프트웨어 익스플로잇이 지원하지 않는 콘솔에서요.

  26. landr0id HN

    소프트웨어 익스플로잇은 모든 콘솔 리비전에서 동작하지만, 영구적인 소프트모드는 그렇지 않습니다.

    Xbox 360 소프트웨어 해킹 분야에는 크게 세 가지가 있습니다.

    1. BadUpdate(Grimdoomer)는 Xbox 360 유일의 소프트웨어 하이퍼바이저 익스플로잇입니다. 누군가 코드 실행을 얻을 수 있는 상황에서 실행하도록 만들어진 것입니다. BadUpdate를 실행하는 주된 방법은 Rock Band Blitz(ihateccompvir와 InvoxiPlayGames 제작)를 통하는 것이었습니다. 순수 소프트웨어이고 모든 하드웨어 리비전의 Xbox에서 동작합니다.

    2. ABadAvatar(shutterbug2000)는 Xbox 대시보드의 아바타 로딩 코드에 있는 메모리 손상 취약점을 이용해 대시보드가 로드된 뒤 코드 실행을 얻고, 이어서 BadUpdate를 실행해 콘솔을 익스플로잇합니다. 순수 소프트웨어이고 모든 하드웨어 리비전의 Xbox에서 동작합니다.

    3. Peer Pressure(Grimdoomer)는 먼저 위의 방법 중 하나로 콘솔을 장악한 다음 SMC 펌웨어를 수정해 사우스브리지를 공격합니다. JTAG 해킹에서도 SMC가 비슷한 방식으로 악용되었기 때문에, 마이크로소프트가 이후 하드웨어 리비전에서 SMC를 강화했을 가능성이 높고, 그 때문에 Grimdoomer가 여기서 쓴 공격이 막혔을 겁니다.

    #3에 대한 자세한 정보는 여기 있습니다: https://youtu.be/ftEuor1asBM?t=96

    어쨌든 #1과 #2는 초기 부팅 단계의 익스플로잇을 제공하지 않습니다.

    #3은 제공합니다. 하드 드라이브 보안 섹터가 관여하는데 이를 로드하는 건 커널이므로, 이 단계에서는 이미 2BL, 하이퍼바이저, 커널 초기화를 거친 뒤입니다. 그래서 부트로더를 장악할 수는 없지만, 부팅 애니메이션을 커스텀 애니메이션으로 바꾸는 것 같은 재미있는 일을 하기에는 충분히 이른 부팅 체인 단계입니다.

    JTAG 해킹은 솔직히 다른 하드웨어에서 재현된 걸 본 적이 없는 이상한 짓을 합니다. 요약하면, 콘솔이 다운그레이드 퓨즈가 끊어지지 않은 취약한 소프트웨어 버전이어야 하고, 하이퍼바이저 버그가 있는 다른 버전의 OS가 들어 있는 별도의 하드웨어 플래시 칩을 써서 콘솔을 그쪽으로 부팅시킨 뒤, SMC 흑마술로 익스플로잇을 발동시키고, 다시 업그레이드된 버전의 OS로 재부팅합니다.

    이 글에 설명된 RGH 해킹은 2BL을 교체할 수 있게 해 주므로, 부팅 체인에서 더 이른 단계에서 콘솔을 장악하는 셈입니다.

  27. Markoff HN

    한 줄 요약: 모드칩이 필요하고, PS3 전부가 그랬던 것처럼 소프트웨어만으로는 안 된다는 얘기네요. PS 게임을 할 수 있는데 누가 굳이 Xbox에 매달리겠어요?

  28. nvme0n1p1 HN

    https://github.com/grimdoomer/Xbox360PeerPressure

    Peer Pressure는 Xbox 360용 영구 소프트모드 익스플로잇입니다.

  29. asimovDev HN

    이게 나오기까지 거의 20년이 걸렸다는 게 아직도 믿기지 않아요.

    SSD로 익스플로잇을 써 볼 수도 있지만, 최적의 부팅 속도와 안정성을 위해서는 기계식 HDD를 쓰는 것을 권장합니다

    이것도 읽다 보면 참 웃겨요.

  30. Markoff HN

    그럼 이 글이 왜 있는지, 글쓴이가 왜 이 정보를 뺐는지 모르겠네요.

Hacker News에서 보기 ↗