iOS Testing Environment
Reading time: 6 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Apple Developer Program
프로비저닝 아이덴티티는 Apple 개발자 계정과 연결된 공개 및 개인 키의 모음입니다. 앱 서명을 하려면 Apple Developer Program에 등록하기 위해 99$/년을 지불해야 프로비저닝 아이덴티티를 받을 수 있습니다. 이를 통해 소스 코드에서 실제 장치에서 애플리케이션을 실행할 수 있습니다. 또 다른 방법은 탈옥된 장치를 사용하는 것입니다.
Xcode 7.2부터 Apple은 실제 iPhone에서 애플리케이션을 작성하고 테스트할 수 있는 무료 iOS 개발 프로비저닝 프로필을 생성할 수 있는 옵션을 제공했습니다. Xcode --> Preferences --> Accounts --> + (자격 증명으로 새 Appli ID 추가) --> 생성된 Apple ID 클릭 --> Manage Certificates --> + (Apple Development) --> Done
__그런 다음 iPhone에서 애플리케이션을 실행하려면 먼저 iPhone이 컴퓨터를 신뢰하도록 지정해야 합니다. 그런 다음 _Xcode_에서 모바일에서 애플리케이션을 실행해 보십시오. 그러나 오류가 발생할 것입니다. 따라서 Settings --> General --> Profiles and Device Management --> 신뢰할 수 없는 프로필을 선택하고 "Trust"를 클릭하십시오.
같은 서명 인증서로 서명된 애플리케이션은 키체인 항목과 같은 리소스를 안전하게 공유할 수 있습니다.
프로비저닝 프로필은 전화기 내부의 **/Library/MobileDevice/ProvisioningProfiles
**에 저장됩니다.
Simulator
note
시뮬레이터는 에뮬레이터와 동일하지 않다는 점에 유의하십시오. 시뮬레이터는 장치의 동작과 기능을 시뮬레이션할 뿐 실제로 사용하지는 않습니다.
Simulator
가장 먼저 알아야 할 것은 시뮬레이터 내에서 펜테스트를 수행하는 것이 탈옥된 장치에서 수행하는 것보다 훨씬 더 제한적이라는 것입니다.
iOS 앱을 구축하고 지원하는 데 필요한 모든 도구는 Mac OS에서만 공식적으로 지원됩니다.
Apple의 사실상 도구는 iOS 애플리케이션을 생성/디버깅/계측하는 Xcode입니다. 이를 사용하여 시뮬레이터 및 애플리케이션을 구축하고 테스트하는 데 필요한 다양한 SDK 버전과 같은 다른 구성 요소를 다운로드할 수 있습니다.
공식 앱 스토어에서 Xcode를 다운로드하는 것이 강력히 권장됩니다. 다른 버전은 맬웨어를 포함할 수 있습니다.
시뮬레이터 파일은 /Users/<username>/Library/Developer/CoreSimulator/Devices
에 있습니다.
시뮬레이터를 열려면 Xcode를 실행한 다음 Xcode 탭 --> Open Developer tools --> _Simulator_를 누릅니다.
__다음 이미지에서 "iPod touch [...]"를 클릭하면 테스트할 다른 장치를 선택할 수 있습니다:
Applications in the Simulator
/Users/<username>/Library/Developer/CoreSimulator/Devices
내부에서 설치된 시뮬레이터를 모두 찾을 수 있습니다. 에뮬레이터 중 하나에 생성된 애플리케이션의 파일에 접근하려면 어느 것에 앱이 설치되었는지 아는 것이 어려울 수 있습니다. 올바른 UID를 찾는 빠른 방법은 시뮬레이터에서 앱을 실행하고 다음을 실행하는 것입니다:
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
한 번 UID를 알게 되면, 그 안에 설치된 앱은 /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application
에서 찾을 수 있습니다.
하지만 놀랍게도 여기에서 애플리케이션을 찾을 수 없습니다. /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/
에 접근해야 합니다.
그리고 이 폴더에서 애플리케이션의 패키지를 찾을 수 있습니다.
에뮬레이터
Corellium은 공개적으로 사용 가능한 유일한 iOS 에뮬레이터입니다. 이는 사용자 라이선스 모델을 가진 기업 SaaS 솔루션이며, 시험 라이선스를 제공하지 않습니다.
탈옥 필요 없음
탈옥되지 않은 장치에서 iOS 애플리케이션을 어떻게 펜테스트하는지에 대한 블로그 게시물을 확인하세요: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
탈옥
Apple은 iPhone에서 실행되는 코드가 Apple이 발급한 인증서로 서명되어야 한다고 엄격히 요구합니다. 탈옥은 OS에 의해 설정된 그러한 제한 및 기타 보안 통제를 우회하는 과정입니다. 따라서 장치가 탈옥되면, 설치된 앱을 확인하는 무결성 검사가 패치되어 우회됩니다.
note
Android와 달리, iOS에서 "개발자 모드"로 전환하여 서명되지 않거나 신뢰할 수 없는 코드를 실행할 수 없습니다.
Android 루팅 vs. iOS 탈옥
종종 비교되지만, Android의 루팅과 iOS의 탈옥은 근본적으로 다른 과정입니다. Android 장치의 루팅은 su
바이너리 설치 또는 루팅된 커스텀 ROM으로 시스템 교체를 포함할 수 있으며, 부트로더가 잠금 해제된 경우 반드시 익스플로잇이 필요하지는 않습니다. 커스텀 ROM 플래싱은 부트로더를 잠금 해제한 후 장치의 OS를 교체하며, 때때로 익스플로잇이 필요합니다.
반면, iOS 장치는 부트로더가 Apple 서명 이미지만 부팅하도록 제한되어 있어 커스텀 ROM을 플래시할 수 없습니다. iOS 탈옥은 서명되지 않은 코드를 실행하기 위해 Apple의 코드 서명 보호를 우회하는 것을 목표로 하며, 이는 Apple의 지속적인 보안 강화로 인해 복잡해집니다.
탈옥의 도전 과제
Apple이 취약점을 신속하게 패치함에 따라 iOS 탈옥은 점점 더 어려워지고 있습니다. iOS 다운그레이드는 릴리스 후 제한된 시간 동안만 가능하여 탈옥은 시간에 민감한 문제입니다. 보안 테스트에 사용되는 장치는 재탈옥이 보장되지 않는 한 업데이트하지 않아야 합니다.
iOS 업데이트는 챌린지-응답 메커니즘(SHSH 블롭)에 의해 제어되며, Apple 서명 응답에 대해서만 설치를 허용합니다. 이 메커니즘은 "서명 창"으로 알려져 있으며, OTA 펌웨어 패키지를 저장하고 나중에 사용할 수 있는 능력을 제한합니다. IPSW Downloads 웹사이트는 현재 서명 창을 확인하는 리소스입니다.
탈옥의 종류
- 테더드 탈옥은 각 재부팅 시 컴퓨터 연결이 필요합니다.
- 세미 테더드 탈옥은 컴퓨터 없이 비탈옥 모드로 부팅할 수 있습니다.
- 세미 언테더드 탈옥은 컴퓨터 없이 수동으로 재탈옥이 필요합니다.
- 언테더드 탈옥은 재적용 없이 영구적인 탈옥 솔루션을 제공합니다.
탈옥 도구 및 리소스
탈옥 도구는 iOS 버전 및 장치에 따라 다릅니다. Can I Jailbreak?, The iPhone Wiki, Reddit Jailbreak와 같은 리소스는 최신 정보를 제공합니다. 예시로는:
장치를 수정하는 것은 위험을 동반하며, 탈옥은 신중하게 접근해야 합니다.
탈옥의 이점과 위험
탈옥은 OS가 부과한 샌드박스를 제거하여 앱이 전체 파일 시스템에 접근할 수 있게 합니다. 이 자유는 승인되지 않은 앱을 설치하고 더 많은 API에 접근할 수 있게 합니다. 그러나 일반 사용자에게는 잠재적인 보안 위험과 장치 불안정성 때문에 탈옥이 권장되지 않습니다.
탈옥 후
탈옥 탐지
여러 애플리케이션이 모바일이 탈옥되었는지 감지하려고 시도하며, 이 경우 애플리케이션이 실행되지 않습니다.
- 탈옥된 iOS에서는 파일과 폴더가 일반적으로 설치되며, 이를 검색하여 장치가 탈옥되었는지 확인할 수 있습니다.
- 탈옥된 장치에서는 애플리케이션이 샌드박스 외부의 새 파일에 대한 읽기/쓰기 접근 권한을 얻습니다.
- 일부 API 호출은 다르게 동작합니다.
- OpenSSH 서비스의 존재
/bin/sh
를 호출하면 0 대신 1을 반환합니다.
탈옥 탐지 방법에 대한 더 많은 정보는 여기에서 확인할 수 있습니다.
objection의 ios jailbreak disable
을 사용하여 이러한 탐지를 피할 수 있습니다.
탈옥 탐지 우회
- objection의
ios jailbreak disable
을 사용하여 이러한 탐지를 피할 수 있습니다. - Liberty Lite 도구를 설치할 수도 있습니다 (https://ryleyangus.com/repo/). 리포가 추가되면 앱이 ‘검색’ 탭에 나타나야 합니다.
참고 문헌
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.