iOS Pentesting without Jailbreak

Reading time: 4 minutes

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 지원하기

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

  1. iPhone에 펜테스트할 앱을 설치합니다.
  2. macOS에서 Apple Configurator를 설치하고 실행합니다.
  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를 이미 설치했다면 앱을 재설치하라는 프롬프트가 나타납니다.
  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를 확인하세요.

Decrypting the app

IPA를 복호화하기 위해 설치할 것입니다. 그러나 구형 탈옥된 iPhone이 있는 경우, 애플리케이션에서 지원하지 않을 수 있는 버전일 가능성이 높습니다. 일반적으로 앱은 최신 버전만 지원합니다.

따라서 설치하려면 IPA를 압축 해제하세요:

bash
unzip redacted.ipa -d unzipped

Info.plist에서 최소 지원 버전을 확인하고, 기기가 그보다 오래된 경우 값을 변경하여 지원되도록 하십시오.

IPA를 다시 압축하십시오:

bash
cd unzipped
zip -r ../no-min-version.ipa *

그런 다음, 예를 들어 다음과 같이 IPA를 설치합니다:

bash
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를 통해 모든 계정에 무료 개발자 서명 프로필을 제공합니다. 앱을 생성하고 하나를 구성하세요. 그런 다음, SettingsPrivacy & Security로 이동하여 iPhone이 개발자 앱을 신뢰하도록 설정하세요.

재서명된 IPA로 이제 장치에 설치하여 펜테스트를 진행할 시간입니다:

bash
ideviceinstaller -i resigned.ipa -w

Hook

당신은 frida와 objection과 같은 일반적인 도구를 사용하여 쉽게 앱을 훅할 수 있습니다:

bash
objection -g [your app bundle ID] explore

References

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 지원하기