Skip to content

MASTG-TECH-0090: Injetando Frida Gadget em um IPA Automaticamente

Se você deseja habilitar testes dinâmicos com o Frida, mas não tem acesso a um dispositivo com jailbreak, pode aplicar um patch e reempacotar o aplicativo alvo para carregar o Frida gadget. Dessa forma, você pode instrumentar o app e fazer tudo o que precisa para a análise dinâmica (claro, você não conseguirá escapar do sandbox dessa maneira). No entanto, essa técnica só funciona se o binário do aplicativo não estiver criptografado com FairPlay (ou seja, se não foi obtido da App Store).

Em um dispositivo com jailbreak, você pode executar o frida-server, que cuidará da injeção para você, mesmo em aplicativos criptografados. Porém, em um dispositivo sem jailbreak, temos que preparar o aplicativo manualmente. Existem duas abordagens que podemos tomar:

  • Instalar uma versão de debug do aplicativo e injetar durante a inicialização do aplicativo
  • Reempacotar o aplicativo para já incluir o Frida Gadget

Como alternativa a essa abordagem automatizada, consulte Injetando Bibliotecas em um IPA Manualmente.

Você pode injetar o Frida em um aplicativo usando Sideloadly ou objection.

Frida

Após seguir qualquer uma das técnicas de Iniciando um Repackaged App no Debug Mode, seu aplicativo estará sendo executado com a permissão get-task-allow, o que significa que ele pode ser depurado. Isso significa que a ferramenta CLI do frida pode iniciar o aplicativo e injetar o Frida Gadget automaticamente, mesmo em dispositivos sem jailbreak.

Primeiro, baixe a versão mais recente do Frida Gadget e mova-a para /Users/<USER>/.cache/frida/gadget-ios.dylib. O Frida é atualizado frequentemente, então encontre a versão mais recente disponível na página de releases do Github ou faça o download via linha de comando após obter a URL mais recente:

wget https://github.com/frida/frida/releases/download/X.Y.Z/frida-gadget-X.Y.Z-ios-universal.dylib.gz
gzip -d frida-gadget-X.Y.Z-ios-universal.dylib.gz
mv frida-gadget-X.Y.Z-ios-universal.dylib /Users/MAS/.cache/frida/gadget-ios.dylib

Em seguida, simplesmente execute o frida como faria normalmente:

$ frida -U -f org.mas.myapp
     ____
    / _  |   Frida 16.5.9 - A world-class dynamic instrumentation toolkit
   | (_| |
    > _  |   Commands:
   /_/ |_|       help      -> Displays the help system
   . . . .       object?   -> Display information about 'object'
   . . . .       exit/quit -> Exit
   . . . .
   . . . .   More info at https://frida.re/docs/home/
   . . . .
   . . . .   Connected to iPhone (id=123456789)
Spawned `org.mas.myapp`. Resuming main thread!
[iPhone::org.mas.myapp]->

Sideloadly

O Sideloadly pode ser usado para injetar automaticamente bibliotecas durante o reempacotamento e assinatura do app. Para fazer isso, clique em Advanced Options, seguido por Inject dylibs/frameworks e +dylib/deb/bundle:

Após a instalação, você não conseguirá iniciar o aplicativo a partir do SpringBoard. No entanto, você pode iniciar o aplicativo no modo de depuração e anexar o Frida conforme explicado em Iniciando um Repackaged App no Debug Mode.

Objection

O Objection pode injetar o Frida Gadget em um arquivo IPA fornecido. Use um computador com macOS para executar todas as etapas indicadas no artigo "Patching iOS Applications" da Wiki do objection. Quando terminar, você poderá aplicar um patch em um IPA chamando o comando do objection:

objection patchipa --source my-app.ipa --codesign-signature 0C2E8200Dxxxx