iOS Pentesting without Jailbreak
Reading time: 5 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Ideia principal
Aplicativos assinados com a entitlement get_task_allow
permitem que aplicativos de terceiros executem uma função chamada task_for_pid()
com o ID do processo do aplicativo inicial como argumento para obter a porta da tarefa sobre ele (ser capaz de controlá-lo e acessar sua memória).
No entanto, não é tão fácil quanto apenas puxar o IPA, re-assiná-lo com a entitlement e reinstalá-lo no seu dispositivo. Isso se deve à proteção FairPlay. Quando a assinatura do aplicativo muda, a chave DRM (Digital Rights Management) é invalidada e o aplicativo não funcionará.
Com um dispositivo antigo com jailbreak, é possível instalar o IPA, descriptografá-lo usando sua ferramenta favorita (como Iridium ou frida-ios-dump) e retirá-lo do dispositivo. Embora, se possível, é recomendado pedir ao cliente o IPA descriptografado.
Obter IPA descriptografado
Obtenha da Apple
- Instale o aplicativo para pentest no iPhone
- Instale e inicie o Apple Configurator no seu macos
- Abra o
Terminal
no seu Mac e vá para/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
. O IPA aparecerá nesta pasta mais tarde. - Você deve ver seu dispositivo iOS. Clique duas vezes nele e, em seguida, clique em Adicionar + → Apps na barra de menu superior.
- Após clicar em Adicionar, o Configurator fará o download do IPA da Apple e tentará enviá-lo para o seu dispositivo. Se você seguiu minha recomendação anterior e já instalou o IPA, um aviso pedindo para reinstalar o aplicativo aparecerá.
- O IPA deve ser baixado dentro de
/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
, de onde você pode pegá-lo.
Verifique https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed para mais informações detalhadas sobre esse processo.
Descriptografando o aplicativo
Para descriptografar o IPA, vamos instalá-lo. No entanto, se você tiver um iPhone antigo com jailbreak, potencialmente sua versão não será suportada pelo aplicativo, pois geralmente os aplicativos só suportam as versões mais recentes.
Portanto, para instalá-lo, basta descompactar o IPA:
unzip redacted.ipa -d unzipped
Verifique o Info.plist
para a versão mínima suportada e, se o seu dispositivo for mais antigo do que isso, altere o valor para que seja suportado.
Compacte novamente o IPA:
cd unzipped
zip -r ../no-min-version.ipa *
Então, instale o IPA, por exemplo, com:
ideviceinstaller -i no-min-version.ipa -w
Note que você pode precisar do AppSync Unified tweak do Cydia para evitar erros de invalid signature
.
Uma vez instalado, você pode usar o Iridium tweak do Cydia para obter o IPA descriptografado.
Patch de permissões & re-assinatura
Para re-assinar o aplicativo com a permissão get-task-allow
, existem várias ferramentas disponíveis, como app-signer
, codesign
e iResign
. O app-signer
possui uma interface muito amigável que permite re-assinar um arquivo IPA de forma muito fácil, indicando o IPA a ser re-assinado, para colocá-lo como get-task-allow
e o certificado e perfil de provisionamento a serem usados.
Quanto ao certificado e perfis de assinatura, a Apple oferece perfis de assinatura de desenvolvedor gratuitos para todas as contas através do Xcode. Basta criar um aplicativo e configurar um. Em seguida, configure o iPhone para confiar nos aplicativos do desenvolvedor navegando até Settings
→ Privacy & Security
, e clique em Developer Mode
.
Com o IPA re-assinado, é hora de instalá-lo no dispositivo para pentestá-lo:
ideviceinstaller -i resigned.ipa -w
Hook
Você pode facilmente hook seu aplicativo usando ferramentas comuns como frida e objection:
objection -g [your app bundle ID] explore
Referências
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.