iOS Testing Environment
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
프로비저닝 아이덴티티는 Apple 개발자 계정과 연결된 공개 및 개인 키의 모음입니다. 앱 서명을 하려면 99$/년을 지불하고 Apple Developer Program에 등록하여 프로비저닝 아이덴티티를 받아야 합니다. 이를 통해 소스 코드에서 실제 장치에서 애플리케이션을 실행할 수 있습니다. 또 다른 방법은 탈옥된 장치를 사용하는 것입니다.
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
**에 저장됩니다.
시뮬레이터는 에뮬레이터와 동일하지 않다는 점에 유의하세요. 시뮬레이터는 장치의 동작과 기능을 시뮬레이션할 뿐 실제로 사용하지는 않습니다.
가장 먼저 알아야 할 것은 시뮬레이터 내에서 펜테스트를 수행하는 것이 탈옥된 장치에서 수행하는 것보다 훨씬 더 제한적이라는 것입니다.
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를 찾는 빠른 방법은 시뮬레이터에서 앱을 실행하고 다음을 실행하는 것입니다:
Once you know the UID the apps installed within it can be found in /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에 의해 설정된 제한 및 기타 보안 제어를 우회하는 과정입니다. 따라서 장치가 탈옥되면 애플리케이션 설치를 확인하는 무결성 검사가 패치되어 우회됩니다.
Android와 달리, 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/) 도구를 설치할 수도 있습니다. 리포가 추가되면 앱이 ‘검색’ 탭에 나타나야 합니다.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)