mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/ios-pentesting/ios-pentesting-without
This commit is contained in:
parent
1eccf413f7
commit
af987ba730
@ -4,11 +4,12 @@
|
||||
|
||||
## Main idea
|
||||
|
||||
**`get_task_allow`** 권한으로 서명된 애플리케이션은 타사 애플리케이션이 **`task_for_pid()`**라는 함수를 초기 애플리케이션의 프로세스 ID를 인수로 사용하여 실행할 수 있도록 하여 해당 작업 포트를 얻을 수 있게 합니다(제어하고 메모리에 접근할 수 있게 됨).
|
||||
**`get_task_allow`** 권한으로 서명된 애플리케이션은 타사 애플리케이션이 **`task_for_pid()`**라는 함수를 초기 애플리케이션의 프로세스 ID를 인수로 사용하여 실행할 수 있도록 허용하여 해당 작업 포트를 얻고(제어하고 메모리에 접근할 수 있음) 있습니다.
|
||||
|
||||
하지만 IPA를 가져와서 권한으로 재서명한 후 장치에 다시 플래시하는 것은 그리 간단하지 않습니다. 이는 FairPlay 보호 때문입니다. 앱의 서명이 변경되면 DRM(디지털 권리 관리) 키가 **무효화되고 앱이 작동하지 않습니다**.
|
||||
하지만 IPA를 가져와서 권한으로 재서명한 후 장치에 다시 플래시하는 것은 그리 간단하지 않습니다. 이는 FairPlay 보호 때문입니다. 앱의 서명이 변경되면 DRM(디지털 권리 관리) 키가 **무효화되어 앱이 작동하지 않습니다**.
|
||||
|
||||
구형 탈옥된 장치에서는 IPA를 설치하고, **좋아하는 도구를 사용하여 복호화한 후**(예: Iridium 또는 frida-ios-dump) 장치에서 다시 가져올 수 있습니다. 가능하다면 복호화된 IPA를 클라이언트에게 요청하는 것이 좋습니다.
|
||||
|
||||
구형 탈옥된 장치에서는 IPA를 설치하고, **좋아하는 도구**(예: Iridium 또는 frida-ios-dump)를 사용하여 복호화한 후 장치에서 다시 가져올 수 있습니다. 그러나 가능하다면 복호화된 IPA를 클라이언트에게 요청하는 것이 좋습니다.
|
||||
|
||||
## Obtain decrypted IPA
|
||||
|
||||
@ -18,14 +19,15 @@
|
||||
2. macOS에서 [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12)를 설치하고 실행합니다.
|
||||
3. Mac에서 `Terminal`을 열고 `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`로 이동합니다. 나중에 이 폴더에 IPA가 나타납니다.
|
||||
4. iOS 장치가 표시되어야 합니다. 더블 클릭한 후 상단 메뉴 바에서 Add + → Apps를 클릭합니다.
|
||||
5. Add를 클릭하면 Configurator가 Apple에서 IPA를 다운로드하고 장치에 푸시하려고 시도합니다. 이전에 제 권고를 따르고 IPA를 이미 설치했다면 앱을 재설치하라는 프롬프트가 나타납니다.
|
||||
5. Add를 클릭하면 Configurator가 Apple에서 IPA를 다운로드하고 장치에 푸시하려고 시도합니다. 이전에 제 권고를 따르고 IPA를 이미 설치했다면 앱을 재설치하라는 메시지가 나타납니다.
|
||||
6. 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](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)를 확인하세요.
|
||||
|
||||
|
||||
### Decrypting the app
|
||||
|
||||
IPA를 복호화하기 위해 설치할 것입니다. 그러나 구형 탈옥된 iPhone이 있는 경우, 애플리케이션에서 지원하지 않을 수 있는 버전일 가능성이 높습니다. 일반적으로 앱은 최신 버전만 지원합니다.
|
||||
IPA를 복호화하기 위해 설치할 것입니다. 그러나 구형 탈옥된 iPhone이 있는 경우, 애플리케이션에서 지원하지 않을 가능성이 높습니다. 일반적으로 앱은 최신 버전만 지원합니다.
|
||||
|
||||
따라서 설치하려면 IPA를 압축 해제하세요:
|
||||
```bash
|
||||
@ -49,25 +51,70 @@ Cydia에서 **AppSync Unified tweak**가 필요할 수 있으니 `invalid signat
|
||||
|
||||
### 권한 패치 및 재서명
|
||||
|
||||
`get-task-allow` 권한으로 애플리케이션을 재서명하기 위해 `app-signer`, `codesign`, `iResign`과 같은 여러 도구가 있습니다. `app-signer`는 재서명할 IPA 파일을 지정하고 **`get-task-allow`**를 설정하며 사용할 인증서와 프로비저닝 프로필을 쉽게 지정할 수 있는 매우 사용자 친화적인 인터페이스를 제공합니다.
|
||||
`get-task-allow` 권한으로 애플리케이션을 재서명하기 위해 `app-signer`, `codesign`, `iResign`과 같은 여러 도구가 있습니다. `app-signer`는 재서명할 IPA 파일을 지정하고 **`get-taks-allow`**를 설정하며 사용할 인증서와 프로비저닝 프로필을 쉽게 지정할 수 있는 매우 사용자 친화적인 인터페이스를 제공합니다.
|
||||
|
||||
인증서 및 서명 프로필에 관해서는 Apple이 Xcode를 통해 모든 계정에 **무료 개발자 서명 프로필**을 제공합니다. 앱을 생성하고 하나를 구성하세요. 그런 다음, `Settings` → `Privacy & Security`로 이동하여 **iPhone이 개발자 앱을 신뢰하도록** 설정하세요.
|
||||
인증서 및 서명 프로필에 관해서는 Apple이 Xcode를 통해 모든 계정에 **무료 개발자 서명 프로필**을 제공합니다. 앱을 생성하고 하나를 구성하세요. 그런 다음, `Settings` → `Privacy & Security`로 이동하여 **개발자 앱을 신뢰하도록 iPhone을 구성**하세요. `Developer Mode`를 클릭합니다.
|
||||
|
||||
|
||||
재서명된 IPA로 이제 장치에 설치하여 펜테스트를 진행할 시간입니다:
|
||||
재서명된 IPA로, 이제 장치에 설치하여 펜테스트를 진행할 시간입니다:
|
||||
```bash
|
||||
ideviceinstaller -i resigned.ipa -w
|
||||
```
|
||||
### Hook
|
||||
---
|
||||
|
||||
당신은 frida와 objection과 같은 일반적인 도구를 사용하여 쉽게 앱을 훅할 수 있습니다:
|
||||
### 개발자 모드 활성화 (iOS 16+)
|
||||
|
||||
iOS 16부터 Apple은 **개발자 모드**를 도입했습니다: `get_task_allow`를 포함하거나 개발 인증서로 서명된 이진 파일은 장치에서 개발자 모드가 활성화될 때까지 실행을 거부합니다. 이 플래그가 켜져 있지 않으면 Frida/LLDB를 연결할 수 없습니다.
|
||||
|
||||
1. **임의의** 개발자 서명 IPA를 전화기에 설치하거나 푸시합니다.
|
||||
2. **설정 → 개인 정보 보호 및 보안 → 개발자 모드**로 이동하여 활성화합니다.
|
||||
3. 장치가 재부팅됩니다; 암호를 입력한 후 **개발자 모드 켜기**를 요청받습니다.
|
||||
|
||||
개발자 모드는 비활성화하거나 전화기를 초기화할 때까지 활성 상태로 유지되므로 이 단계는 장치당 한 번만 수행하면 됩니다. [Apple 문서](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device)에서는 보안 의미를 설명합니다.
|
||||
|
||||
### 현대적인 사이드로딩 옵션
|
||||
|
||||
이제 탈옥 없이 사이드로딩하고 재서명된 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`로 서명되고 개발자 모드가 활성화되면 탈옥된 장치에서처럼 앱을 후킹할 수 있습니다:
|
||||
```bash
|
||||
objection -g [your app bundle ID] explore
|
||||
# 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
|
||||
```
|
||||
## References
|
||||
최근 Frida 릴리스(>=16)는 포인터 인증 및 기타 iOS 17 완화 조치를 자동으로 처리하므로 대부분의 기존 스크립트가 즉시 작동합니다.
|
||||
|
||||
### 탈옥 없이 MobSF를 이용한 자동화된 동적 분석
|
||||
|
||||
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/)는 동일한 기술(`get_task_allow`)을 사용하여 실제 장치에서 개발자 서명된 IPA를 계측할 수 있으며, 파일 시스템 브라우저, 트래픽 캡처 및 Frida 콘솔이 포함된 웹 UI를 제공합니다【turn6view0†L2-L3】. 가장 빠른 방법은 Docker에서 MobSF를 실행한 다음 USB를 통해 iPhone을 연결하는 것입니다:
|
||||
```bash
|
||||
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](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/>
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user