Touch/Face ID Bypass
Last updated
Last updated
L'idée pour bypass l'authentification du Touch ID est de trouver la classe et la méthode utilisé lorsqu'on appuie sur le touch id. D'après ce site :
La classe LAContext est au coeur de l'identification faisant appel au touchID. En allant sur la documentation de Apple on trouve :
Avec ceci il nous suffit de trace la classe LAContext utilisant la méthode :
Ce qui nous donne :
La méthode reply est responsable de l'authentification, elle renvoie true si l'auth est un succès sinon false :
On remarque que args[4] qui est l'argument de cette fonction est un __NSGlobalBlock__ en gros un objet qui se compose d'attribut.
L'idée est donc de modifier cet argument pour qu'il renvoie true mais le type de celui-ci est assez special donc go documentation frida :
Une fois avoir compris comment changer la valeur d'un block, il suffit d'écrire un script pour hook l'appel à la classe et à la méthode :
Le script précedemment utilisait fonctionne, Objection implémente lui aussi le bypass seulement avec objective C car qu'on appelle la méthode en objective C ou en Swift ça revient au même on appel la fonction de l'api d'apple. J'ai essayé de tracer avec frida la méthode en swift mais impossible de la tracer. L'hypothèse serai que la fonction swift est remplacé pendant le run de l'app par la methode en objective C puisque Swift tourne dans une sorte de "jvm" objective C