Vídeo: Broadpwn: Remotely Compromising Android and iOS via a Bug in Broadcom's Wi-Fi Chipsets (Novembro 2024)
Forristal explicou que ao desmontar, modificar e remontar o aplicativo, eles mudaram sua assinatura de desenvolvedor. A nova assinatura não foi licenciada para usar o Google Maps, por isso foi rejeitada. A nova missão deles; altere o código sem alterar a assinatura.
A Forristal percorreu a série detalhada de eventos que ocorrem quando o Android verifica um aplicativo assinado. Cada camada verifica a anterior, começando com a verificação de que os modelos de código não foram violados e terminando com uma assinatura digital do pacote como um todo. Ele tentou atacar o sistema em todas as etapas, principalmente sem sorte.
"Os formatos APK, JAR e ZIP são basicamente os mesmos", observou Forristal. "JAR e APK têm apenas componentes adicionais." Seu sucesso final envolveu alavancar o formato ZIP. Quando ele inseriu um arquivo "maligno" com o mesmo nome de um arquivo válido existente, o verificador assinou o arquivo válido, mas o arquivo "maligno" foi iniciado.
Por quê? Porque o Android usa um código de gerenciamento de arquivo ZIP diferente no verificador e no instalador real. "Uma discrepância na análise de arquivos ZIP é a fonte desse erro", explicou Forristal. "De fato, existem oito implementações de análise de arquivo ZIP separadas na base de código do Android".
Fora da caixa de areia
"Usei esse truque para sempre", disse Forristal. "Agora vamos ao que interessa." Como o iOS, o Android executa cada aplicativo em sua própria caixa de proteção; portanto, um aplicativo não pode acessar recursos pertencentes a outro aplicativo. "A única maneira de entrar na caixa de areia é ser assinado pelo mesmo desenvolvedor", explicou ele. "É isso que torna as atualizações possíveis."
"O sistema como um todo subscreve a mesma noção", continuou ele. "A caixa de proteção do sistema aplica todas as outras caixas de proteção. Controla todas as suas configurações. Não é raiz, mas possui todos os seus dados, aplicativos, senhas e configurações - o que resta? O sistema é bastante poderoso." Os aplicativos que acessam a caixa de proteção do sistema geralmente são assinados pelo fabricante da plataforma. "Eu só precisava de um aplicativo assinado por plataforma e fazer meu pequeno truque, e eu deveria ter acesso no nível do sistema. Isso é mais legal que os mapas do FourSquare", concluiu.
Acontece que as VPNs de terceiros precisam ser assinadas pela plataforma e, como bônus, elas já solicitam acesso à caixa de proteção do sistema. Forristal exibiu os três comandos simples que ele usou para inserir seu código "maligno" em uma VPN de terceiros, brincando sobre "über hacking tools". O resultado? Um Trojan com acesso total no nível do sistema.
Exploração fácil
O tecnólogo em segurança Saurik (Jay Freeman) levou o conceito ao próximo nível, explicou Forristal. Sua ferramenta Cydia Impactor é executada no OSX e no Windows e automatiza a exploração. "Conecte um dispositivo", disse Forristal, "ele descobre o aplicativo certo, o constrói, adiciona o hack apropriado para obter acesso root e o entrega. Eu lançaria uma pequena prova brega de aplicativos conceituais, mas isso é incrível."
Forristal observou que o tipo de processador do dispositivo não importa. O ataque não é afetado pelo ASLR (Address System Layout Randomization) ou DEP (Data Execution Prevention). Ele criou uma versão que funciona em quatro gerações do Android, e a única habilidade real necessária é o conhecimento de Java. "Enviei isso para a Black Hat porque é fácil de entender e explorar", disse Forristal.
Mais chaves mestras
A Forristal encontrou vários outros bugs descobertos recentemente que poderiam ser considerados "chaves mestras". Ao pesquisar o código de um recurso chamado Atributos autenticados, os pesquisadores do Bluebox encontraram uma linha comentada e marcada com "TODO". Como resultado do código ausente, independentemente das alterações que você fizer, o arquivo passa na verificação. Muitos arquivos não usam esse recurso, observou Forristal. "Se você encontrar um, poderá copiar e colar o arquivo de certificado e assumir a identidade do desenvolvedor. Se você assinou um aplicativo com Atributos autenticados, entregou sua identidade." Como esse bug foi corrigido antes do Bluebox relatá-lo, eles não recebem crédito.
O ataque "Trojan oculto" relatado por um pesquisador chinês acaba sendo apenas uma das várias maneiras possíveis de explorar os vários analisadores de arquivos ZIP do Android. Esses ataques aproveitam o fato de que um usuário do analisador assinou números inteiros e o outro usa números inteiros não assinados.
"Não se trata apenas de substituir um arquivo", entusiasmou Forristal. "Você pode usar esse truque para alimentar um arquivo ZIP completamente diferente. Um é verificado e o outro é executado. Alguns truques e detalhes desse espaço podem mostrar ainda mais poder nessa abordagem".
Embora o malware usando essa técnica já tenha sido visto em estado selvagem, não deve ser possível obter um arquivo Trojanizado como os descritos aqui no Google Play. Você provavelmente estará seguro se instalar sempre e somente aplicativos que passaram no exame oficial. Ainda assim, por segurança, instale as atualizações disponíveis para Android imediatamente.