Publicado: 6 de agosto de 2024
Pense como um ator de ameaça: uma série
Motivação por trás desta série
Dar os primeiros passos na segurança de aplicações pode ser intimidante. Existem inúmeros blogs sobre cibersegurança e dezenas de ferramentas de ataque gratuitas e de código aberto disponíveis. No entanto, há pouca informação que ajude a desvendar os pontos cruciais que representam uma ameaça real para os desenvolvedores de aplicações. Grande parte da informação existente consiste em pesquisas ou provas de conceito.
Esta série irá abordar as ameaças mais significativas, explicar como reproduzir os ataques aos aplicativos, fornecer os fundamentos que um testador de penetração utiliza ao testar seu aplicativo e oferecer recomendações para proteção contra as ameaças mais importantes. Aprender os melhores métodos para deter agentes maliciosos começa com a compreensão de seu comportamento e objetivos. Esta série se concentrará na segurança de aplicativos iOS. Todos os sistemas operacionais têm ameaças e vetores de ataque semelhantes. No entanto, o iOS possui características únicas devido ao seu sandbox de aplicativos restritivo, e o hardware e o código-fonte do sistema operacional são mais protegidos do que em muitos outros sistemas. Este primeiro artigo revisará o contexto geral do que torna a segurança de aplicativos iOS única e abordará os formatos de arquivo IPA do iOS, a assinatura de aplicativos e o sideloading de aplicativos, que são elementos fundamentais para acompanhar os ataques descritos nas partes posteriores desta série.
Motivações do agente da ameaça
Os agentes maliciosos podem ter diversas motivações para atacar uma aplicação. Podem simplesmente querer escrever sobre ela em um blog e divulgar informações. Podem estar fazendo isso para demonstrar suas habilidades. Em geral, o objetivo dos agentes maliciosos é obter lucro financeiro ou prejudicar financeiramente seus alvos. Como ponto de partida, um agente malicioso pode querer fazer engenharia reversa e compreender algoritmos sensíveis, protocolos de comunicação, APIs ou lógica de negócios para reimplementá-los em suas aplicações. No entanto, esse processo pode rapidamente escalar para a burla de mecanismos de DRM ou licenciamento, potencialmente levando à distribuição gratuita da aplicação. Os fundamentos de engenharia reversaA modificação de código e a análise de aplicativos para esses ataques são as mesmas. Entendendo os ataques, e os agentes da ameaça, leva a uma melhor defesa contra eles.
Diferença entre desktop e celular Application Security
Cada plataforma e sistema operacional expõe diferentes vetores de ataque. Sistemas operacionais para desktop, como Windows, Linux e macOS, oferecem a menor segurança em nível de sistema operacional. Isso facilita o desenvolvimento de ferramentas de ataque ou a modificação de aplicativos para explorar essa vulnerabilidade. Aplicativos que rodam em sistemas operacionais móveis, como iOS e Android, tendem a ter um ambiente de segurança (sandbox) mais restrito do que os aplicativos típicos para desktop. No entanto, o fato de o sistema operacional possuir recursos de segurança integrados não significa que os aplicativos que rodam sobre ele estarão sempre protegidos. safeAinda existem ataques contra aplicativos que funcionam em todos os sistemas operacionais.
Vamos analisar o que torna o iOS diferente para agentes maliciosos:
- O iOS não fornece aos usuários acesso root ou de nível administrador. Sistemas operacionais para desktop permitem que os usuários elevem seus privilégios.
- Muitas ferramentas de ataque precisam ser executadas no mesmo dispositivo que o software alvo do ataque. Criar e executar ferramentas de ataque em alvos móveis pode ser mais difícil.
- As ferramentas de ataque contra o iOS geralmente são executadas em um computador desktop emparelhado, em vez de no próprio dispositivo iOS, o que torna seu uso e desenvolvimento mais difíceis.
- A Apple dificulta ativamente a obtenção de permissões elevadas. A Apple corrige vulnerabilidades de segurança que levam a jailbreaks e enfraqueceu e restringiu os jailbreaks ao longo do tempo. Veja blog Para um histórico mais detalhado. O sistema operacional Android, na maioria dos dispositivos, não fornece permissões de root por padrão, mas é menos difícil para um invasor obter privilégios de administrador.
- Existem menos recursos de depuração de software no iOS. O desenvolvimento é feito principalmente no Xcode ou usando as ferramentas de compilação do Xcode internamente. A maioria das ferramentas de depuração está vinculada ao Xcode e tem capacidade limitada para um aplicativo já compilado.
- Os dispositivos iOS não possuem SSH ou conexão direta com o terminal por padrão.
- Os usuários finais atualizam rapidamente seus dispositivos iOS devido às constantes mudanças nos sistemas operacionais, hardware e aplicativos, incluindo patches de segurança. Isso torna ineficazes ferramentas de ataque e malware, forçando os agentes maliciosos a gastarem mais com manutenção.
- Os dispositivos iOS são mais caros, exigem contas de desenvolvedor da Apple e têm recursos limitados de simulador ou emulador para reduzir custos.
Empacotamento binário do iOS
Os arquivos IPA do iOS são compactados em formato ZIP e contêm tudo o que é necessário para executar o aplicativo. Os arquivos IPA podem ser facilmente descompactados para acessar os arquivos binários do aplicativo. Este é o primeiro passo para realizar a engenharia reversa do aplicativo por meio de análise estática. O exemplo abaixo analisa o aplicativo Job Dispatcher, que será o aplicativo de exemplo atacado em partes posteriores desta série. O aplicativo está disponível em [link para o aplicativo]. https://github.com/digitalai-opensource/job-dispatcher.
% descompactar Job\ Dispatcher.ipa Arquivo: Job Dispatcher.ipa criando: Payload/ criando: Payload/Job Dispatcher.app/ criando: Payload/Job Dispatcher.app/_CodeSignature/ descompactando: Payload/Job Dispatcher.app/_CodeSignature/CodeResources descompactando: Payload/Job Dispatcher.app/AppIcon60x60@2x.png descompactando: Payload/Job Dispatcher.app/Assets.car descompactando: Payload/Job Dispatcher.app/AppIcon76x76@2x~ipad.png descompactando: Payload/Job Dispatcher.app/Job Dispatcher descompactando: Payload/Job Dispatcher.app/embedded.mobileprovision descompactando: Payload/Job Dispatcher.app/Info.plist descompactando: Payload/Job Dispatcher.app/PkgInfo
Este é um aplicativo pequeno, enquanto aplicativos grandes contêm muitos arquivos de código binário e inúmeros recursos, frameworks e outros conteúdos. Este aplicativo contém apenas um único arquivo binário executável com o mesmo nome do IPA de nível superior, "Job Dispatcher". Podemos verificar se este é um arquivo executável usando o comando "file".
% arquivo Job\ Dispatcher Job Dispatcher: Mach-O executável de 64 bits arm64
Mach-O é o formato de arquivo binário usado pelos sistemas operacionais da Apple, e todos os dispositivos iOS recentes utilizam CPUs ARM64.
Agora temos acesso ao arquivo que queremos analisar por engenharia reversa e modificar em futuras partes desta série. Quando terminarmos de atacar o aplicativo, podemos compactar todo o seu conteúdo em um arquivo ZIP e renomear o arquivo ZIP de volta para .ipa para criar o arquivo IPA. Se os arquivos forem alterados, devemos assinar novamente o aplicativo ou fazer um sideload para instalá-lo.
Assinatura de aplicativos iOS modificados
A assinatura de aplicativos para iOS geralmente é feita pela interface gráfica do Xcode durante a compilação ou usando a ferramenta de linha de comando codesign. Essas ferramentas têm limitações ao renovar a assinatura de um aplicativo após a modificação de binários compilados e assinados, o que é o caso de uso típico de um agente malicioso. Para renovar a assinatura de um aplicativo modificado, uma ferramenta como o iOS App Signer pode percorrer recursivamente todos os arquivos em um arquivo IPA e renová-los. Essa abordagem requer uma conta de desenvolvedor da Apple, e o Xcode exibirá um erro ao instalar um aplicativo que foi renovado com um certificado diferente em um dispositivo bloqueado (jailed). Observe que atacar aplicativos iOS geralmente envolve baixar e executar código potencialmente perigoso. Cuidado!
Instalação de aplicativos iOS modificados por sideloading
Uma abordagem alternativa para assinar e instalar aplicativos modificados é usar uma ferramenta de sideloading. O sideloading contorna as restrições de segurança da assinatura de aplicativos e pode ser usado para contornar limitações de dispositivos suportados e versões do iOS. Uma ferramenta poderosa para sideloading de aplicativos iOS é o Sideloadly. Tenha cuidado ao baixar e instalar aplicativos pré-compilados cujo código-fonte você não pode revisar.
Tirar
Compreender os agentes de ameaças e seus vetores de ataque ajudará você a entender como criar aplicativos mais seguros. Nos próximos meses, acompanhe esta página para uma série de artigos detalhando diferentes vetores de ataque. Em muitos casos, os ataques se complementam. Por exemplo, os agentes de ameaças precisam de Façam jailbreak no dispositivo deles Antes de poderem instalar e executar todas as funcionalidades do Frida, os agentes de ameaças também precisam se desvincular do programa ou instalar aplicativos por fora da pasta para testar as modificações. O primeiro artigo ofensivo (em breve!) mostrará como modificar um aplicativo de exemplo para burlar uma função de autenticação.
Clique aqui. Para uma avaliação gratuita de ameaças ao seu aplicativo.
Também recomendamos
A segurança do seu hardware está funcionando. Esse não é o problema.
Ouvimos uma versão dessa objeção com frequência: “Já estamos…
Conformidade com a Lei de Resiliência Cibernética e Application Security
A maioria das organizações que se aproximam da Lei de Resiliência Cibernética (CRA) está investindo…
Da App Store ao Clone: Como a IA transforma seu arquivo .ipa em um modelo.
IA – Acelerando a Engenharia Reversa de todos os aplicativos iOS que você lança…