탈옥 이해하기

iPhone에 관해서 "탈옥"이라는 용어(최초의 iOS 버전이 "iOS"라는 이름이 붙기 전에 만들어짐)는 기술과 제한으로부터 벗어나는 개념을 결합한 것입니다.

  1. 교도소: 원래는 은유적인 감옥이나 감금을 의미합니다. iPhone의 경우, Apple이 iOS 운영 체제에서 실행되는 타사 앱에 부과하는 제한과 제약을 나타냅니다. Apple은 App Store 정책 및 시스템 보안 조치를 통해 사용자가 기기에서 할 수 있는 것과 할 수 없는 것을 엄격하게 통제합니다. 이러한 제한에는 App Store 이외의 출처에서 앱을 설치하는 것, 기기의 디자인과 기능을 사용자 지정하는 것, 그리고 운영 체제의 내부 작동 방식에 접근하는 것에 대한 제한이 포함됩니다.
  2. Break : 탈옥은 감금 상태에서 벗어나는 것을 의미합니다. iPhone 탈옥의 맥락에서 이는 Apple iOS가 설정한 제한을 우회하는 것을 의미합니다. 이 과정은 iOS 시스템의 취약점을 악용하여 루트 접근 권한 또는 관리자 권한을 획득하는 것을 포함하며, 이를 통해 사용자는 Apple이 일반적으로 허용하지 않는 방식으로 기기를 수정할 수 있습니다.

아이폰 탈옥은 최종 사용자에게 완전한 실행 및 쓰기 권한을 부여합니다. 따라서 아이폰에서 "탈옥"은 본질적으로 애플 iOS가 부과하는 제약과 제한에서 벗어나 사용자가 기기를 더 자유롭게 제어하고 원하는 대로 설정할 수 있도록 하는 것을 의미합니다. 이 용어는 애플의 제약이라는 은유적인 "감옥"에서 아이폰을 해방시켜 기기를 더 자유롭고 유연하게 사용할 수 있도록 한다는 의미를 담고 있습니다.

휴대폰을 해방하려는 욕구는 해커, 호기심 많은 사용자로 구성된 Jailbreak "커뮤니티"를 탄생시켰습니다. 위협 행위자. 자존심이 강한 커뮤니티와 마찬가지로 Reddit 그룹(r/탈옥)가 형성되었고, YouTube 채널이 생성(및 삭제)되었으며, 다크/그레이 웹(Dark/Grey Web)은 커뮤니티 구성원 간의 탈옥 팁, 기술 및 절차 공유를 지원합니다. 탈옥은 오랫동안 추구되어 왔으며, 탈옥을 발견하고 실행하고 공유하는 사람들은 탈옥 커뮤니티에서 명성과 악명을 얻습니다.

탈옥은 보증을 무효화하고 법적 영향을 미칠 수 있으므로 Apple이 공식적으로 지원하거나 장려하는 사항이 아닙니다. 또한 Apple 정책에서 "탈옥"하면 Apple의 보증이 무효화되지만, 그 자체로 불법은 아니며, 탈옥 커뮤니티의 많은 사람들은 탈옥에 참여하는 것을 자신의 권리 또는 의무로 여기며, 반드시 악의적인 목적이 아니더라도 마찬가지입니다. 해커, 위협 행위자, 그리고 장난꾸러기들이 Apple의 OS 잠금 시도를 저지하기 위해 느슨하게 풀뿌리 탈옥 커뮤니티를 형성해 온 반면, iOS를 크랙하는 영리 산업 또한 뿌리를 내리고 있습니다. NSO, Cellebrite, Paragon과 같은 회사들은 유료로 정교한 탈옥 기술을 제공하고 있으며, 전 세계 법 집행 기관과 정부도 이를 공개적으로 인정하기를 꺼려하지만, 거의 확실히 이러한 서비스를 이용하세요.

의 세계에서 응용 프로그램 보안탈옥은 매우 중요한 의미를 지닙니다. 위협 행위자가 애플리케이션을 변조(수정)하려고 할 때 가장 먼저 해야 할 일 중 하나는 휴대폰을 탈옥하여 수정된 애플리케이션이 실행될 수 있도록 하는 것입니다. 다시 말해, 휴대폰 탈옥은 불법이거나 비윤리적인 행위는 아니지만, 대부분의 경우 변조된 앱을 실제로 사용하기 위한 필수적인 단계입니다. 따라서 탈옥된 휴대폰을 감지하는 것은 모든 보안 조치에 필수적입니다. 애플리케이션 강화 솔루션입니다.

동시에 애플은 탈옥을 완전히 막기 위해 꾸준히 시간, 비용, 노력, 그리고 독창성을 투자해 왔습니다. 시간이 지남에 따라 탈옥은 더욱 복잡해졌고, 애플의 보안 강화로 인해 기기를 완전히 탈옥하려면 여러 번의 익스플로잇 공격이 필요한 경우가 많았습니다. 탈옥을 막기 위한 애플의 노력은 오랜 세월에 걸쳐 발전해 왔습니다. 마치 고양이와 쥐의 게임처럼, 탈옥 "커뮤니티"와 애플 내부에서 혁신을 촉진해 왔습니다.

공개적으로 사용 가능한 애플리케이션의 보안을 보장하는 데 탈옥 감지가 필수적이기는 하지만, 모든 탈옥이 동일하게 만들어진 것은 아닙니다. 심지어 심각한 보안 위협을 초래하지 않는 탈옥도 있습니다.

이 글에서는 1) iPhone 탈옥의 발전 과정을 설명하고, 2) 어떤 유형의 탈옥이 원래 의미 그대로 시스템 리소스에 대한 전체 접근 권한을 제공하는지, 그리고 어떤 유형의 탈옥이 기존 탈옥보다 덜 강력한지 자세히 설명합니다.

iOS와 탈옥의 공동 진화

탈옥수

그림 1: DEF CON에 참여한 즐거운 탈옥수들 (2011년 8월). 사진 제공: Dreamyshade – 본인 저작물, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=38871495

초기: BootROM 익스플로잇

초창기 탈옥은 주로 iOS 기기 부팅 프로세스의 기본 구성 요소인 bootROM에 집중되었습니다. bootROM은 하드웨어에 영구적으로 내장된 저수준 소프트웨어로, 이 수준의 익스플로잇은 특히 강력합니다. bootROM에 대한 공격은 부트로더, 커널, 그리고 궁극적으로 사용자 환경까지 이어지는 신뢰 체인 전체에 영향을 미칩니다. bootROM 익스플로잇이 성공하면 기기에 대한 전례 없는 접근 권한을 얻어 소프트웨어 업데이트 및 재설정에도 살아남는 영구적인 수정이 가능해졌습니다. 이 시대는 다음과 같은 유명한 익스플로잇으로 점철되었습니다. 리 메라 1n Pwnagetool대량으로 iPhone을 잠금 해제하여 사용자 정의 펌웨어 설치와 심층적인 시스템 수정이 가능해졌습니다.

iBoot으로의 전환: 부트로더 취약점

Apple이 bootROM을 강화함에 따라 공격자들은 iOS 부팅 프로세스의 다음 단계인 iBoot으로 시선을 돌렸습니다. redsn0w 및 Sn0wbreeze와 같은 부트로더의 익스플로잇은 bootROM 취약점만큼 영구적이지는 않지만 여전히 기기에 대한 광범위한 제어권을 제공했습니다. iBoot를 침해함으로써 공격자는 커널과 사용자 환경 환경에 영향을 미쳐 상당한 수준의 사용자 정의를 가능하게 하고 Apple의 생태계 제한을 우회할 수 있었습니다. 이러한 취약점은 소프트웨어 업데이트를 통해 패치할 수 있었기 때문에 내구성은 떨어지지만 여전히 효과적인 탈옥 수단이었습니다.

커널 시대: 패치 및 보호

커널 익스플로잇으로의 발전은 탈옥 전략에 있어 상당한 발전을 가져왔습니다. 다음과 같은 도구에 의해 악용되는 커널 수준 취약점은 Pangu, 태그글렌데일 압록강, 부팅 프로세스를 변경하지 않고도 서명되지 않은 코드 실행과 심층적인 시스템 수정이 가능해졌습니다. 이 시대는 Apple 보안 아키텍처 내에서 운영상의 유연성에 초점을 맞춰 더욱 정교한 탈옥 접근 방식을 확립했습니다. 탈옥은 다음과 같습니다. 일렉트라 폭로하다 iOS 보안 프로토콜을 준수하는 척하면서 Apple의 방어 시스템을 탐색하여 시스템을 수정함으로써 이 전략을 더욱 잘 보여주었습니다.

최신 탈옥: 정밀성과 프로세스별 공격

2015년은 탈옥 역사에 있어 전환점이었습니다. bootROM과 iBoot 모두의 방어를 효과적으로 강화한 애플은 더 이상 커널의 다양한 익스플로잇에 주기적인 패치만으로 대응할 생각이 없었고, 탈옥 커뮤니티를 상대로 일련의 혁신을 통해 공세를 펼쳤습니다. 이는 탈옥 커뮤니티뿐 아니라 Cellebrite와 NSO 같은 회사들을 사실상 쫓아내는 결과를 가져왔습니다.

Apple은 iOS 9(2015년 9월)에서 가장 중요한 보안 업데이트인 커널 패치 보호(KPP)를 도입했습니다. KPP는 커널 캐시의 읽기-실행 메모리와 읽기 전용 메모리를 보호하기 위해 커널에 구현된 코드를 의미합니다. KPP는 주기적으로 무작위 검사를 수행하여 이를 수행합니다.

2015년 9월 이후 탈옥은 KPPLess와 KPP 우회로 나뉘었습니다. KPPLess는 KPP가 계속 실행되도록 하는 기술로, KPP 검사를 우회하는 것을 의미합니다. KPP 우회는 KPP를 완전히 비활성화합니다. KPP 이전에는 공격자가 보안 코드를 패치하려면 커널 쓰기 권한이 필요했습니다.

2016년 6월 iOS 10과 함께 출시된 A10 칩에서 Apple은 런타임 시 iOS 커널 수정을 방지하는 KTRR(Kernel Text Read Only Region)을 도입했습니다. 이전 칩들은 EL3에 내장된 모니터링 프로그램을 통해 이를 시도했지만, 이 방식에는 근본적인 결함이 있었고, 탈옥 커뮤니티는 오랫동안 이 모니터링 프로그램을 우회하는 방법을 알아냈습니다. A10 칩부터 Apple은 보안 검사를 하드웨어 자체에 효과적으로 적용하여 탈옥자(탈옥 커뮤니티와 영리 기업 모두)의 삶을 더욱 어렵게 만들었습니다.

2018년 6월, iOS 12 출시와 함께 Apple은 포인터 인증 구현 방식인 PAC(Pointer Authentication Code)를 도입했습니다. PAC는 포인터의 상위 비트를 활용하여 암호화 서명을 저장하고, 포인터 값과 추가 컨텍스트를 검증하여 보안을 강화합니다. 포인터에 인증 코드를 추가하고, 인증된 포인터의 PAC를 검증하고, 원래 포인터 값을 복원하는 특수 명령어가 도입되었습니다. 이를 통해 시스템은 공격자가 특정 포인터를 변조했을 가능성을 암호학적으로 강력하게 보장할 수 있으며, 이를 통해 애플리케이션 보안을 크게 향상시킬 수 있습니다.

그해 말(2018년 9월) A12 칩이 출시되면서 Apple은 페이지 보호 계층(PPL)을 도입했습니다. PPL의 목표는 커널 읽기/쓰기/실행 권한을 획득한 후에도 위협 행위자가 프로세스의 실행 코드나 페이지 테이블을 수정하지 못하도록 하는 것입니다. 이는 공격 연계를 더욱 어렵게 만드는 또 다른 악용 완화책입니다. APRR을 활용하여 페이지 테이블을 보호하는 "커널 내부 커널"을 생성함으로써 이를 구현합니다. 커널이 페이지 테이블을 수정할 수 있는 유일한 방법은 "PPL 루틴"을 호출하여 PPL에 진입하는 것입니다. 이는 XNU에서 PPL로 시스템 호출을 하는 것과 유사합니다. 이렇게 하면 페이지 테이블을 수정할 수 있는 커널 코드 진입점이 해당 PPL 루틴으로만 제한됩니다. 이 A12 변경 사항이 탈옥 커뮤니티에 중요한 이유를 요약해 보겠습니다.

탈옥 커뮤니티는 2021년 6월 Apple이 iOS 15를 출시하기 전까지 비교적 평온한 시기를 보냈습니다. iOS 15는 SSV(Sealed System Volume)를 도입하여 탈옥 커뮤니티에 활력을 불어넣었습니다. 이 메커니즘은 Apple만 알고 있는 암호화 서명으로 볼륨을 봉인하는 커널 수준의 보안 기능으로, 시스템 콘텐츠를 수정하려는 모든 코드를 차단하여 iOS 부팅 전에 무단 변경을 방지합니다. 이 방식으로 인해 탈옥 커뮤니티는 이전 탈옥 아키텍처의 전체 구조를 변경해야 했습니다. 그 이후로 탈옥은 루트리스(rootless)와 루트풀(rootful)로 나뉘었습니다.

루트 없는 탈옥은 일반적으로 루트 외부에 모든 파일과 수정 사항을 보관합니다. / var /개인/사전부트. Rootful 탈옥은 실제로 "가짜" 루트를 생성하는 바인드 마운트를 사용하며 이는 실제 루트처럼 작동합니다. rootfs하지만 bootROM 익스플로잇이 필요합니다.

커널 코드 패치 없이 탈옥이 이루어졌기 때문에, 그 효과는 이제 시스템 전체가 아닌 프로세스별로 나타납니다. 즉, 운영 체제를 탈옥하는 대신 프로세스별로 탈옥이 이루어진다는 의미입니다.

이렇게 생각해 볼 수 있습니다. "근대 이전" 탈옥 시대에는 커널 패치만으로도 충분했고, 이로 인해 전체 시스템이 영향을 받았습니다. 지금은 많은 탈옥(키메라, checkra1n)는 커널 코드를 직접 패치하는 대신 커널 데이터 구조를 변조하고 있으며, 변조는 프로세스별로 발생합니다. 이러한 상태는 탈옥 감지를 복잡하게 만듭니다. 시스템 무결성은 대부분 손상되지 않은 것처럼 보이지만, 프로세스의 탈옥 여부를 판별하는 로직이 구현되어 있습니다. 즉, 의도하지 않은 한 프로세스는 탈옥 상태로 유지됩니다. 즉, 이러한 유형의 탈옥이 Apple이 의도하지 않은 리소스에 대한 접근 권한을 부여하더라도 모든 프로세스에 대한 접근 권한을 부여하는 것은 아닙니다. 이는 탈옥 자체가 휴대폰의 모든 앱(또는 일부 앱)에 반드시 위험한 것은 아니라는 것을 의미하기 때문에 중요합니다.

이 새로운 탈옥 방법은 기술적으로 복잡합니다. 런칭 모든 프로세스가 호출되고, execve 후크가 실행되고, 프로세스 생성 직후 모든 새 프로세스 탈옥이 삽입됩니다. 그리고 안타깝게도 (탈옥 커뮤니티의 관점에서 볼 때) 이러한 모든 기술적 창의성은 "자유"의 감소로 이어집니다.

에 대한 시사점 Application Security 엔지니어와 DevSecOps 관리자

그렇다면 이 모든 것이 애플리케이션 보안 엔지니어인 당신에게는 어떤 의미일까요? 저희가 제공하는 최고의 방어 메커니즘 중 하나는 바로 "런타임 애플리케이션 자체 보호(RASP)RASP를 통해 고객은 앱이 가드 및 보호 기능이 활성화될 때 자동으로 반응하도록 프로그래밍할 수 있습니다. 일부 고객은 탈옥이 활성화될 때 RASP를 사용하여 조치를 취해 왔습니다.

하지만 애플과 탈옥 커뮤니티 사이의 오랜 쫓고 쫓기는 싸움의 역사가 우리에게 가르쳐준 것이 있다면, 모든 탈옥이 똑같이 만들어지는 것은 아니라는 것입니다. 어떤 탈옥은 컴퓨터에 "테더링"해야 하기 때문에 호기심 많은 사용자나 가장 집요한 위협 행위자나 학자를 제외한 누구에게도 기능적 가치를 거의 제공하지 못합니다. "반테더링", "루트리스", "루트풀" 등 다양한 유형이 존재합니다. 어떤 탈옥은 작동 범위가 제한적이어서 "탈옥"이라는 명칭을 붙이기에는 적합하지 않을 수 있습니다. 제대로 작동하는 "제품"이라기보다는 해커의 실험에 더 가깝습니다. 애플이 탈옥을 억제하기 위해 지속적으로 노력하면서 탈옥 커뮤니티의 혁신이 촉진되었지만, 동시에 현대 탈옥의 위력은 시간이 지남에 따라 약화되었습니다. 다시 말해, 애플이 탈옥 커뮤니티를 궁지로 몰아넣으려는 끈질긴 노력은 "탈옥"이라는 용어가 이러한 작은 업적을 달성하는 데 필요한 기술적 통찰력이 커졌음에도 불구하고, 이러한 해킹이 제공하는 이점을 언급하기에는 너무 거창하게 들리게 만들었습니다.

이러한 이유로, 고객을 위한 애플리케이션을 개발하는 회사는 탈옥 징후에 대응하기 위해 망치 대신 메스를 사용하는 것이 좋습니다. 예를 들어, 탈옥 발생 사실을 기록하는 것만으로도 충분할 수 있으며, 탈옥에만 대응하도록 프로그래밍할 필요가 없을 수도 있습니다. 만약 대응 프로그래밍이 필요하다고 판단된다면, 런타임 애플리케이션 자가 보호(RASP) 전략을 수립할 때 탈옥과 함께 어떤 다른 가드가 작동하는지 고려해야 합니다. 탈옥은 공격의 조력자입니다. 탈옥 탐지에만 의존하여 공격자를 차단하는 것이 아니라, 탈옥으로 인해 활성화된 공격을 탐지하는 것이 중요합니다.

 

자세한 내용을 읽으려면 Digital.ai Application Security (다른 많은 트릭들 중에서 탈옥을 감지하여) iOS 앱을 보호할 수 있습니다. 제품 개요.

당신은 또한 좋아할 거라