Vidéo: Black Ops 3 Beta: HACK ALL STREAKS! Black Hat + Engineer is OP! (Nerfed, yay!) (Novembre 2024)
Forristal a expliqué qu'en désassemblant, modifiant et réassemblant l'application, ils avaient changé sa signature de développeur. La nouvelle signature n'étant pas autorisée à utiliser Google Maps, elle a donc été rejetée. Leur nouvelle quête; changer le code sans changer la signature.
Forristal a parcouru la série détaillée d'événements qui se produisent lorsque Android vérifie une application signée. Chaque couche vérifie la précédente, en commençant par vérifier que les modèles de code n'ont pas été falsifiés et en terminant par une signature numérique du package dans son ensemble. Il a essayé d'attaquer le système à chaque étape, la plupart du temps sans chance.
"Les formats APK, JAR et ZIP sont fondamentalement les mêmes", a noté Forristal. "JAR et APK ont juste des composants supplémentaires." Son succès final a consisté à exploiter le format ZIP. Lorsqu'il a inséré un fichier "diabolique" portant le même nom qu'un fichier valide existant, le vérificateur a signé le fichier valide, mais le fichier "diabolique" a été lancé.
Pourquoi? Parce qu'Android utilise un code de gestion de fichier ZIP différent dans le vérificateur et dans le programme d'installation actuel. "Une divergence dans l'analyse des fichiers ZIP est à l'origine de cette erreur", a expliqué Forristal. "En fait, la base de code Android comporte huit implémentations d'analyse de fichiers ZIP distinctes."
Hors du bac à sable
"J'ai utilisé cette astuce pour de bon", a déclaré Forristal. "Maintenant, prenons ça pour génial." Comme iOS, Android exécute chaque application dans son propre bac à sable, de sorte qu'une application ne peut pas accéder aux ressources appartenant à une autre application. "Le seul moyen d'entrer dans le bac à sable est d'être signé par le même développeur", a-t-il expliqué. "C'est ce qui rend les mises à jour possibles."
"Le système dans son ensemble adhère à la même notion", a-t-il poursuivi. "Le bac à sable système applique tous les autres bacs à sable. Il contrôle tous vos paramètres. Ce n'est pas un système racine, mais il contient toutes vos données, applications, mots de passe et paramètres. Que reste-t-il? Le système est assez puissant." Les applications qui accèdent au sandbox du système sont généralement signées par le créateur de la plateforme. "Je devais juste obtenir une application signée par la plate-forme et faire mon petit truc, et je devrais avoir un accès au niveau du système. C'est plus cool que les cartes FourSquare", a-t-il conclu.
Il s'avère que les VPN tiers doivent être signés par la plate-forme et, en prime, ils doivent déjà demander l'accès au sandbox du système. Forristal a affiché les trois commandes simples qu'il utilisait pour insérer son code "diabolique" dans un VPN tiers, en plaisantant sur "des outils de piratage ultra sophistiqués". Le résultat? Cheval de Troie avec accès complet au niveau du système.
Exploitation facile
Le maître technologue en sécurité Saurik (Jay Freeman) a poussé le concept au niveau supérieur, a expliqué Forristal. Son outil Cydia Impactor fonctionne sous OSX et Windows et automatise l'exploit. "Connecter un appareil", a déclaré Forristal, "il identifie la bonne application, la construit, ajoute le bidouillage approprié pour obtenir un accès root et le fournit. J'allais publier quelques petites applications de concept géniales, mais c'est génial."
Forristal a noté que le type de processeur de l'appareil importait peu. L'attaque n'est pas affectée par ASLR (Randomisation de la disposition du système d'adresse) ou DEP (Prévention de l'exécution des données). Il a créé une version qui fonctionne sur quatre générations d’Android et la seule compétence nécessaire est la connaissance de Java. "J'ai soumis ceci pour Black Hat parce que c'est facile à comprendre et à exploiter", a déclaré Forristal.
Plus de clés maîtresses
Forristal a écrasé un certain nombre d'autres bogues récemment découverts qui pourraient être considérés comme des "clés maîtresses". En parcourant le code d'une fonctionnalité appelée Attributs authentifiés, les chercheurs de Bluebox ont trouvé une ligne commentée et marquée "TODO". En raison du code manquant, quelle que soit la modification apportée, le fichier passe avec succès la vérification. Peu de fichiers utilisent cette fonctionnalité, a noté Forristal. "Si vous en trouvez un, vous pouvez copier et coller le fichier de certificat et assumer l'identité du développeur. Si vous avez signé une application avec des attributs authentifiés, vous avez donné votre identité." Comme ce bogue a été corrigé avant que Bluebox le signale, ils ne prennent pas de crédit.
L’attaque de «cheval de Troie caché» rapportée par un chercheur chinois n’est en réalité qu’un des moyens possibles d’exploiter les multiples parseurs de fichiers ZIP d’Android. Ces attaques tirent parti du fait que l'un des utilisateurs de l'analyseur a signé des entiers et l'autre des entiers non signés.
"Il ne s'agit même pas de remplacer un fichier", s'enthousiasme Forristal. "Vous pouvez utiliser cette astuce pour alimenter un fichier ZIP complètement différent. L'un est vérifié, l'autre est exécuté. Quelques astuces et des friandises dans cet espace peuvent montrer encore plus de puissance pour cette approche."
Bien que les logiciels malveillants utilisant cette technique aient déjà été vus à l’état sauvage, il ne devrait pas être possible d’obtenir dans Google Play un fichier Trojanalisé comme ceux décrits ici. Vous serez probablement en sécurité si vous installez toujours et uniquement des applications ayant subi un contrôle officiel. Néanmoins, pour plus de sécurité, veillez à installer immédiatement toutes les mises à jour Android disponibles.