11 KiB
iOS 테스트 환경
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
- HackTricks에서 회사 광고를 보거나 HackTricks를 PDF로 다운로드하려면 SUBSCRIPTION PLANS를 확인하세요!
- 공식 PEASS & HackTricks 스웨그를 얻으세요.
- The PEASS Family를 발견하세요. 독점적인 NFTs 컬렉션입니다.
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @carlospolopm를 팔로우하세요.
- HackTricks와 HackTricks Cloud github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
Apple 개발자 프로그램
프로비저닝 ID는 Apple 개발자 계정과 연결된 공개 및 개인 키의 모음입니다. 앱에 서명하기 위해 99달러/년을 지불하여 Apple 개발자 프로그램에 등록하여 프로비저닝 ID를 받아야 합니다. 이를 통해 소스 코드에서 애플리케이션을 실제 기기에서 실행할 수 있습니다. 이를 위한 다른 옵션은 jailbroken 기기를 사용하는 것입니다.
Xcode 7.2부터 Apple은 실제 iPhone에서 애플리케이션을 작성하고 테스트할 수 있는 무료 iOS 개발 프로비저닝 프로필을 생성할 수 있는 옵션을 제공합니다. Xcode --> Preferences --> Accounts --> + (새로운 Appli ID 추가) --> 생성된 Apple ID를 클릭 --> Manage Certificates --> + (Apple Development) --> _완료_로 이동하세요.
__그런 다음, iPhone에서 애플리케이션을 실행하기 위해 먼저 컴퓨터를 신뢰할 iPhone으로 지정해야 합니다. 그런 다음, Xcode에서 모바일에서 애플리케이션을 실행해 볼 수 있지만 오류가 발생합니다. 따라서 Settings --> General --> _Profiles and Device Management_로 이동하여 신뢰되지 않은 프로필을 선택하고 "Trust"를 클릭하세요.
동일한 서명 인증서로 서명된 애플리케이션은 키체인 항목과 같은 보안 방식으로 리소스를 공유할 수 있습니다.
프로비저닝 프로필은 **/Library/MobileDevice/ProvisioningProfiles
**에 저장됩니다.
시뮬레이터
{% hint style="info" %} 시뮬레이터는 에뮬레이터와 같지 않습니다. 시뮬레이터는 기기와 기능을 시뮬레이트하지만 실제로 사용하지는 않습니다. {% endhint %}
시뮬레이터
시뮬레이터에서 수행하는 펜테스트는 jailbroken 기기에서 수행하는 것보다 제한적일 수 있습니다.
iOS 앱을 빌드하고 지원하기 위해 필요한 모든 도구는 공식적으로 Mac OS에서만 지원됩니다.
Apple의 iOS 애플리케이션 생성/디버깅/기기에 연결하는 기본 도구는 Xcode입니다. 이를 사용하여 다른 시뮬레이터 및 다른 SDK 버전을 다운로드하여 앱을 빌드하고 테스트할 수 있습니다.
공식 앱 스토어에서 Xcode를 다운로드하는 것이 권장됩니다. 다른 버전에는 악성 소프트웨어가 포함될 수 있습니다.
시뮬레이터 파일은 /Users/<username>/Library/Developer/CoreSimulator/Devices
에서 찾을 수 있습니다.
시뮬레이터를 열려면 Xcode를 실행한 다음 _Xcode 탭_을 누르고 Open Developer tools --> _Simulator_를 선택하세요.
__다음 이미지에서 "iPod touch [...]"를 클릭하여 테스트할 다른 기기를 선택할 수 있습니다:
시뮬레이터 내 애플리케이션
/Users/<username>/Library/Developer/CoreSimulator/Devices
에서 설치된 시뮬레이터를 찾을 수 있습니다. 시뮬레이터 내에서 생성된 애플리케이션의 파일에 액세스하려면 어느 시뮬레이터에 앱이 설치되었는지 알기 어려울 수 있습니다. 올바른 UID를 찾는 빠른 방법은 시뮬레이터에서 앱을 실행하고 다음을 실행하는 것입니다:
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
한 번 UID를 알게 되면 해당 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 솔루션으로, 평가판 라이선스를 제공하지 않습니다.
탈옥
애플은 iPhone에서 실행되는 코드가 반드시 애플이 발급한 인증서로 서명되어야 한다고 엄격히 요구합니다. 탈옥은 OS에 의해 설정된 이러한 제한과 다른 보안 제어를 적극적으로 우회하는 과정입니다. 따라서 기기가 탈옥되면 설치되는 앱을 확인하는 무결성 검사가 패치되어 우회됩니다.
{% hint style="info" %} Android와 달리 iOS에서는 장치에서 미인증/신뢰할 수 없는 코드를 실행하기 위해 "개발자 모드"로 전환할 수 없습니다. {% endhint %}
Android 루팅 vs. iOS 탈옥
Android에서의 루팅과 iOS에서의 탈옥은 근본적으로 다른 프로세스입니다. Android 장치의 루팅은 su
바이너리 설치 또는 루팅된 사용자 정의 ROM으로 시스템을 대체하는 것을 포함할 수 있으며, 부트로더가 잠금 해제된 경우에는 반드시 공격을 사용할 필요가 없습니다. 사용자 정의 ROM 플래싱은 부트로더를 잠금 해제한 후 장치의 운영 체제를 대체하는 것으로, 때로는 공격을 필요로 합니다.
반면에 iOS 장치는 부트로더가 애플이 서명한 이미지만 부팅할 수 있도록 제한되어 있기 때문에 사용자 정의 ROM을 플래싱할 수 없습니다. iOS 탈옥은 애플의 코드 서명 보호를 우회하여 미인증 코드를 실행하는 것을 목표로 하며, 애플의 지속적인 보안 강화로 인해 이 과정이 복잡해집니다.
탈옥의 어려움
애플은 취약점을 빠르게 패치하기 때문에 iOS 탈옥은 점점 어려워지고 있습니다. iOS의 다운그레이드는 출시 후 제한된 시간 동안만 가능하므로, 탈옥은 시간에 민감한 문제입니다. 보안 테스트용으로 사용되는 장치는 다시 탈옥이 보장될 때까지 업데이트해서는 안 됩니다.
iOS 업데이트는 도전-응답 메커니즘 (SHSH 블롭)에 의해 제어되며, 애플이 서명한 응답에 대해서만 설치가 가능합니다. 이 메커니즘은 "서명 창"이라고도 불리며, OTA 펌웨어 패키지를 저장하고 나중에 사용하는 능력을 제한합니다. IPSW Downloads 웹사이트는 현재 서명 창을 확인하기 위한 리소스입니다.
탈옥 종류
- 테더드 탈옥은 각 재부팅마다 컴퓨터 연결이 필요합니다.
- 세미-테더드 탈옥은 컴퓨터 없이 비탈옥 모드로 부팅할 수 있습니다.
- 세미-언테더드 탈옥은 컴퓨터 없이 수동으로 다시 탈옥해야 합니다.
- 언테더드 탈옥은 다시 적용할 필요 없이 영구적인 탈옥 솔루션을 제공합니다.
탈옥 도구와 리소스
탈옥 도구는 iOS 버전과 장치에 따라 다릅니다. Can I Jailbreak?, The iPhone Wiki 및 Reddit Jailbreak과 같은 리소스는 최신 정보를 제공합니다. 예를 들어:
장치를 수정하는 것은 위험을 수반하며, 탈옥은 주의를 기울여 접근해야 합니다.
탈옥의 이점과 위험
탈옥은 OS에 의해 부과된 샌드박싱을 제거하여 앱이 전체 파일 시스템에 액세스할 수 있게 합니다. 이 자유로움은 비승인 앱의 설치와 더 많은 API에 액세스할 수 있게 합니다. 그러나 일반 사용자에게는 잠재적인 보안 위험과 장치의 불안정성 때문에 탈옥을 권장하지 않습니다.
탈옥 후
{% content-ref url="basic-ios-testing-operations.md" %} basic-ios-testing-operations.md {% endcontent-ref %}
탈옥 탐지
몇 가지 애플리케이션은 모바일이 탈옥되었는지 감지하려고 시도하고, 그런 경우 애플리케이션이 실행되지 않습니다.
- iOS를 탈옥한 후 일반적으로 파일과 폴더가 설치됩니다. 이를 통해 장치가 탈옥되었는지 여부를 확인할 수 있습니다.
- 탈옥된 장치에서 애플리케이션은 샌드박스 외부의 새로운 파일에 대한 읽기/쓰기 액세스를 얻습니다.
- 일부 API 호출은 다르게 작동할 수 있습니다.
- OpenSSH 서비스의 존재
/bin/sh
를 호출하면 0 대신 1이 반환됩니다.
탈옥 탐지 방법에 대한 자세한 정보는 여기를 참조하십시오.**
objection의 ios jailbreak disable
를 사용하여 이러한 탐지를 피해볼 수 있습니다.
탈옥 탐지 우회
- objection의
ios jailbreak disable
를 사용하여 이러한 탐지를 피해볼 수 있습니다. - 도구 Liberty Lite (https://ryleyangus.com/repo/)를 설치할 수도 있습니다. 리포지토리가 추가되면 앱이 '검색' 탭에 나타날 것입니다.
참고 자료
htARTE (HackTricks AWS Red Team Expert) 로 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하려면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 상품을 구매하세요.
- 독점적인 NFT 컬렉션인 The PEASS Family를 발견하세요.
- 💬 [Discord 그룹