iOS Pentesting without Jailbreak
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Main idea
get_task_allow
권한으로 서명된 애플리케이션은 타사 애플리케이션이 **task_for_pid()
**라는 함수를 실행할 수 있도록 허용하며, 이 함수는 초기 애플리케이션의 프로세스 ID를 인수로 받아 해당 작업 포트를 가져옵니다(제어하고 메모리에 접근할 수 있게 됨).
하지만 IPA를 가져와서 권한으로 재서명한 후 장치에 다시 플래시하는 것은 그리 간단하지 않습니다. 이는 FairPlay 보호 때문입니다. 앱의 서명이 변경되면 DRM(디지털 권리 관리) 키가 무효화되며 앱이 작동하지 않습니다.
구형 탈옥된 장치에서는 IPA를 설치하고, 좋아하는 도구(예: Iridium 또는 frida-ios-dump)를 사용하여 복호화한 후 장치에서 다시 가져올 수 있습니다. 가능하다면 복호화된 IPA를 클라이언트에게 요청하는 것이 좋습니다.
Obtain decrypted IPA
Get it from Apple
- iPhone에 펜테스트할 앱을 설치합니다.
- macOS에서 Apple Configurator를 설치하고 실행합니다.
- Mac에서
Terminal
을 열고/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
로 이동합니다. 나중에 이 폴더에 IPA가 나타납니다. - iOS 장치가 표시되어야 합니다. 더블 클릭한 후 상단 메뉴 바에서 Add + → Apps를 클릭합니다.
- Add를 클릭하면 Configurator가 Apple에서 IPA를 다운로드하고 장치에 푸시하려고 시도합니다. 이전에 제 추천을 따르고 IPA를 이미 설치했다면 앱을 재설치하라는 프롬프트가 나타납니다.
- IPA는
/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
에 다운로드되며, 여기서 가져올 수 있습니다.
이 프로세스에 대한 더 자세한 정보는 https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed를 확인하세요.
Decrypting the app
IPA를 복호화하기 위해 설치할 것입니다. 그러나 구형 탈옥된 iPhone이 있는 경우, 애플리케이션에서 지원하지 않을 가능성이 높습니다. 일반적으로 앱은 최신 버전만 지원합니다.
따라서 설치하기 위해 IPA를 압축 해제합니다:
unzip redacted.ipa -d unzipped
Info.plist
에서 최소 지원 버전을 확인하고, 기기가 그보다 오래된 경우 값을 변경하여 지원되도록 하십시오.
IPA를 다시 압축하십시오:
cd unzipped
zip -r ../no-min-version.ipa *
그런 다음, 예를 들어 다음과 같이 IPA를 설치합니다:
ideviceinstaller -i no-min-version.ipa -w
Cydia에서 AppSync Unified tweak가 필요할 수 있으니 invalid signature
오류를 방지하세요.
설치가 완료되면, Cydia에서 Iridium tweak를 사용하여 암호화 해제된 IPA를 얻을 수 있습니다.
권한 패치 및 재서명
get-task-allow
권한으로 애플리케이션을 재서명하기 위해 app-signer
, codesign
, iResign
과 같은 여러 도구가 있습니다. app-signer
는 재서명할 IPA 파일을 지정하고 **get-task-allow
**를 설정하며 사용할 인증서와 프로비저닝 프로필을 쉽게 지정할 수 있는 매우 사용자 친화적인 인터페이스를 제공합니다.
인증서 및 서명 프로필에 관해서는 Apple이 Xcode를 통해 모든 계정에 무료 개발자 서명 프로필을 제공합니다. 앱을 생성하고 하나를 구성하세요. 그런 다음, Settings
→ Privacy & Security
로 이동하여 개발자 앱을 신뢰하도록 iPhone을 구성하세요. Developer Mode
를 클릭합니다.
재서명된 IPA로 이제 장치에 설치하여 펜테스트를 진행할 시간입니다:
ideviceinstaller -i resigned.ipa -w
개발자 모드 활성화 (iOS 16+)
iOS 16부터 Apple은 개발자 모드를 도입했습니다: get_task_allow
를 포함하거나 개발 인증서로 서명된 이진 파일은 장치에서 개발자 모드가 활성화될 때까지 실행을 거부합니다. 이 플래그가 켜져 있지 않으면 Frida/LLDB를 연결할 수 없습니다.
- 임의의 개발자 서명 IPA를 전화기에 설치하거나 푸시합니다.
- 설정 → 개인 정보 보호 및 보안 → 개발자 모드로 이동하여 활성화합니다.
- 장치가 재부팅됩니다; 암호를 입력한 후 개발자 모드 켜기를 요청받습니다.
개발자 모드는 비활성화하거나 전화기를 초기화할 때까지 활성 상태로 유지되므로 이 단계는 장치당 한 번만 수행하면 됩니다. Apple 문서에서 보안 의미를 설명합니다.
현대적인 사이드로딩 옵션
이제 탈옥 없이 사이드로딩하고 재서명된 IPA를 최신 상태로 유지하는 몇 가지 성숙한 방법이 있습니다:
도구 | 요구 사항 | 강점 | 제한 사항 |
---|---|---|---|
AltStore 2 / SideStore | 매 7일마다 무료 개발 프로필로 IPA를 재서명하는 macOS/Windows/Linux 동반자 | Wi-Fi를 통한 자동 재로드, iOS 17까지 작동 | 동일 네트워크에 있는 컴퓨터 필요, Apple에서 부과한 3개 앱 제한 |
TrollStore 1/2 | CoreTrust 버그에 취약한 iOS 14 – 15.4.1 장치 | 영구 서명 (7일 제한 없음); 설치 후 컴퓨터 필요 없음 | iOS 15.5+에서 지원되지 않음 (버그 패치됨) |
현재 iOS 버전에서의 정기적인 펜테스트를 위해 Alt/Side-Store가 일반적으로 가장 실용적인 선택입니다.
후킹 / 동적 계측
get_task_allow
로 서명되고 개발자 모드가 활성화되면 탈옥된 장치에서처럼 앱을 후킹할 수 있습니다:
# Spawn & attach with objection
objection -g "com.example.target" explore
# Or plain Frida
frida -U -f com.example.target -l my_script.js --no-pause
최근 Frida 릴리스(>=16)는 포인터 인증 및 기타 iOS 17 완화 조치를 자동으로 처리하므로 대부분의 기존 스크립트가 즉시 작동합니다.
탈옥 없이 MobSF를 이용한 자동화된 동적 분석
MobSF는 실제 장치에서 동일한 기술(get_task_allow
)을 사용하여 개발자 서명된 IPA를 계측할 수 있으며, 파일 시스템 브라우저, 트래픽 캡처 및 Frida 콘솔이 포함된 웹 UI를 제공합니다【】. 가장 빠른 방법은 Docker에서 MobSF를 실행한 다음 USB를 통해 iPhone을 연결하는 것입니다:
docker pull opensecurity/mobile-security-framework-mobsf:latest
docker run -p 8000:8000 --privileged \
-v /var/run/usbmuxd:/var/run/usbmuxd \
opensecurity/mobile-security-framework-mobsf:latest
# Browse to http://127.0.0.1:8000 and upload your resigned IPA
MobSF는 이진 파일을 자동으로 배포하고, 앱 샌드박스 내에서 Frida 서버를 활성화하며, 대화형 보고서를 생성합니다.
iOS 17 및 잠금 모드 주의사항
- 잠금 모드 (설정 → 개인 정보 보호 및 보안)는 동적 링커가 서명되지 않거나 외부에서 서명된 동적 라이브러리를 로드하는 것을 차단합니다. 이 모드가 활성화된 장치를 테스트할 때는 비활성화되어 있는지 확인해야 하며, 그렇지 않으면 Frida/objection 세션이 즉시 종료됩니다.
- 포인터 인증(PAC)은 A12+ 장치에서 시스템 전반에 걸쳐 시행됩니다. Frida ≥16은 PAC 스트리핑을 투명하게 처리하므로, 새로운 주요 iOS 버전이 출시될 때 frida-server와 Python/CLI 툴체인을 모두 최신 상태로 유지해야 합니다.
참고문헌
- https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
- Apple 개발자 문서 – 장치에서 개발자 모드 활성화: https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device
- 모바일 보안 프레임워크 (MobSF): https://mobsf.github.io/Mobile-Security-Framework-MobSF/
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.