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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


