Pentesting des Applications Android

Reading time: 40 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Bases des Applications Android

Il est fortement recommandé de commencer par lire cette page pour connaßtre les parties les plus importantes liées à la sécurité Android et les composants les plus dangereux d'une application Android :

Android Applications Basics

ADB (Android Debug Bridge)

C'est l'outil principal dont vous avez besoin pour vous connecter à un appareil Android (émulé ou physique).
ADB permet de contrÎler les appareils soit via USB soit via réseau depuis un ordinateur. Cette utilité permet le copie de fichiers dans les deux sens, installation et désinstallation d'applications, exécution de commandes shell, sauvegarde de données, lecture de journaux, entre autres fonctions.

Jetez un Ɠil à la liste suivante de Commandes ADB pour apprendre à utiliser adb.

Smali

Parfois, il est intĂ©ressant de modifier le code de l'application pour accĂ©der Ă  des informations cachĂ©es (peut-ĂȘtre des mots de passe ou des drapeaux bien obfusquĂ©s). Ensuite, il pourrait ĂȘtre intĂ©ressant de dĂ©compiler l'apk, de modifier le code et de le recompiler.
Dans ce tutoriel, vous pouvez apprendre Ă  dĂ©compiler un APK, modifier le code Smali et recompiler l'APK avec la nouvelle fonctionnalitĂ©. Cela pourrait ĂȘtre trĂšs utile comme alternative pour plusieurs tests lors de l'analyse dynamique qui vont ĂȘtre prĂ©sentĂ©s. Ensuite, gardez toujours Ă  l'esprit cette possibilitĂ©.

Autres astuces intéressantes

bash
adb shell pm list packages
com.android.insecurebankv2

adb shell pm path com.android.insecurebankv2
package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk

adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
  • Fusionnez tous les splits et les apks de base avec APKEditor:
bash
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits
java -jar ../APKEditor.jar m -i splits/ -o merged.apk

# after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner
java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed

Analyse Statique

Tout d'abord, pour analyser un APK, vous devriez jeter un Ɠil au code Java en utilisant un dĂ©compilateur.
Veuillez, lire ici pour trouver des informations sur les différents décompilateurs disponibles.

Recherche d'informations intéressantes

En jetant simplement un Ɠil aux chaĂźnes de l'APK, vous pouvez rechercher des mots de passe, des URLs (https://github.com/ndelphit/apkurlgrep), des clĂ©s api, des chiffrements, des UUIDs bluetooth, des tokens et tout ce qui est intĂ©ressant... cherchez mĂȘme des backdoors d'exĂ©cution de code ou des backdoors d'authentification (identifiants administrateurs codĂ©s en dur dans l'application).

Firebase

Faites particuliÚrement attention aux URLs Firebase et vérifiez si elles sont mal configurées. Plus d'informations sur ce qu'est Firebase et comment l'exploiter ici.

Compréhension de base de l'application - Manifest.xml, strings.xml

L'examen des fichiers _Manifest.xml** et **strings.xml_** d'une application peut rĂ©vĂ©ler des vulnĂ©rabilitĂ©s de sĂ©curitĂ© potentielles**. Ces fichiers peuvent ĂȘtre accessibles en utilisant des dĂ©compilateurs ou en renommant l'extension du fichier APK en .zip puis en le dĂ©compressant.

Les vulnérabilités identifiées dans le Manifest.xml incluent :

  • Applications dĂ©bogables : Les applications dĂ©finies comme dĂ©bogables (debuggable="true") dans le fichier Manifest.xml posent un risque car elles permettent des connexions qui peuvent mener Ă  une exploitation. Pour une comprĂ©hension plus approfondie sur la façon d'exploiter les applications dĂ©bogables, rĂ©fĂ©rez-vous Ă  un tutoriel sur la recherche et l'exploitation des applications dĂ©bogables sur un appareil.
  • ParamĂštres de sauvegarde : L'attribut android:allowBackup="false" doit ĂȘtre explicitement dĂ©fini pour les applications traitant des informations sensibles afin d'empĂȘcher les sauvegardes de donnĂ©es non autorisĂ©es via adb, surtout lorsque le dĂ©bogage USB est activĂ©.
  • SĂ©curitĂ© rĂ©seau : Les configurations de sĂ©curitĂ© rĂ©seau personnalisĂ©es (android:networkSecurityConfig="@xml/network_security_config") dans res/xml/ peuvent spĂ©cifier des dĂ©tails de sĂ©curitĂ© comme les certificats et les paramĂštres de trafic HTTP. Un exemple est de permettre le trafic HTTP pour des domaines spĂ©cifiques.
  • ActivitĂ©s et services exportĂ©s : Identifier les activitĂ©s et services exportĂ©s dans le manifeste peut mettre en Ă©vidence des composants qui pourraient ĂȘtre mal utilisĂ©s. Une analyse plus approfondie lors des tests dynamiques peut rĂ©vĂ©ler comment exploiter ces composants.
  • Fournisseurs de contenu et FileProviders : Les fournisseurs de contenu exposĂ©s pourraient permettre un accĂšs ou une modification non autorisĂ©s des donnĂ©es. La configuration des FileProviders doit Ă©galement ĂȘtre examinĂ©e.
  • Receveurs de diffusion et schĂ©mas d'URL : Ces composants pourraient ĂȘtre exploitĂ©s, en prĂȘtant une attention particuliĂšre Ă  la façon dont les schĂ©mas d'URL sont gĂ©rĂ©s pour les vulnĂ©rabilitĂ©s d'entrĂ©e.
  • Versions SDK : Les attributs minSdkVersion, targetSDKVersion et maxSdkVersion indiquent les versions Android prises en charge, soulignant l'importance de ne pas prendre en charge des versions Android obsolĂštes et vulnĂ©rables pour des raisons de sĂ©curitĂ©.

À partir du fichier strings.xml, des informations sensibles telles que des clĂ©s API, des schĂ©mas personnalisĂ©s et d'autres notes de dĂ©veloppeur peuvent ĂȘtre dĂ©couvertes, soulignant la nĂ©cessitĂ© d'un examen attentif de ces ressources.

Tapjacking

Le Tapjacking est une attaque oĂč une application malveillante est lancĂ©e et se positionne au-dessus d'une application victime. Une fois qu'elle obscurcit visiblement l'application victime, son interface utilisateur est conçue de maniĂšre Ă  tromper l'utilisateur pour qu'il interagisse avec elle, tout en transmettant l'interaction Ă  l'application victime.
En effet, cela aveugle l'utilisateur sur le fait qu'il effectue réellement des actions sur l'application victime.

Trouvez plus d'informations dans :

Tapjacking

DĂ©tournement de tĂąche

Une activitĂ© avec le launchMode dĂ©fini sur singleTask sans aucune taskAffinity dĂ©finie est vulnĂ©rable au dĂ©tournement de tĂąche. Cela signifie qu'une application peut ĂȘtre installĂ©e et si elle est lancĂ©e avant la vĂ©ritable application, elle pourrait dĂ©tourner la tĂąche de la vĂ©ritable application (de sorte que l'utilisateur interagira avec l'application malveillante en pensant qu'il utilise la vĂ©ritable).

Plus d'infos dans :

Android Task Hijacking

Stockage de données non sécurisé

Stockage interne

Dans Android, les fichiers stockĂ©s dans le stockage interne sont conçus pour ĂȘtre accessibles exclusivement par l'application qui les a crĂ©Ă©s. Cette mesure de sĂ©curitĂ© est appliquĂ©e par le systĂšme d'exploitation Android et est gĂ©nĂ©ralement adĂ©quate pour les besoins de sĂ©curitĂ© de la plupart des applications. Cependant, les dĂ©veloppeurs utilisent parfois des modes tels que MODE_WORLD_READABLE et MODE_WORLD_WRITABLE pour permettre le partage de fichiers entre diffĂ©rentes applications. Pourtant, ces modes ne restreignent pas l'accĂšs Ă  ces fichiers par d'autres applications, y compris celles potentiellement malveillantes.

  1. Analyse statique :
  • Assurez-vous que l'utilisation de MODE_WORLD_READABLE et MODE_WORLD_WRITABLE est soigneusement examinĂ©e. Ces modes peuvent potentiellement exposer des fichiers Ă  un accĂšs non intentionnel ou non autorisĂ©.
  1. Analyse dynamique :
  • VĂ©rifiez les permissions dĂ©finies sur les fichiers crĂ©Ă©s par l'application. En particulier, vĂ©rifiez si des fichiers sont dĂ©finis comme lisibles ou modifiables par tous. Cela peut poser un risque de sĂ©curitĂ© significatif, car cela permettrait Ă  n'importe quelle application installĂ©e sur l'appareil, quelle que soit son origine ou son intention, de lire ou modifier ces fichiers.

Stockage externe

Lorsqu'il s'agit de fichiers sur le stockage externe, comme les cartes SD, certaines prĂ©cautions doivent ĂȘtre prises :

  1. Accessibilité :
  • Les fichiers sur le stockage externe sont globalement lisibles et modifiables. Cela signifie que n'importe quelle application ou utilisateur peut accĂ©der Ă  ces fichiers.
  1. Préoccupations de sécurité :
  • Étant donnĂ© la facilitĂ© d'accĂšs, il est conseillĂ© de ne pas stocker d'informations sensibles sur le stockage externe.
  • Le stockage externe peut ĂȘtre retirĂ© ou accessible par n'importe quelle application, ce qui le rend moins sĂ©curisĂ©.
  1. Gestion des données provenant du stockage externe :
  • Toujours effectuer une validation des entrĂ©es sur les donnĂ©es rĂ©cupĂ©rĂ©es du stockage externe. Cela est crucial car les donnĂ©es proviennent d'une source non fiable.
  • Il est fortement dĂ©conseillĂ© de stocker des exĂ©cutables ou des fichiers de classe sur le stockage externe pour un chargement dynamique.
  • Si votre application doit rĂ©cupĂ©rer des fichiers exĂ©cutables Ă  partir du stockage externe, assurez-vous que ces fichiers sont signĂ©s et vĂ©rifiĂ©s cryptographiquement avant d'ĂȘtre chargĂ©s dynamiquement. Cette Ă©tape est vitale pour maintenir l'intĂ©gritĂ© de la sĂ©curitĂ© de votre application.

Le stockage externe peut ĂȘtre accĂ©dĂ© dans /storage/emulated/0, /sdcard, /mnt/sdcard

note

À partir d'Android 4.4 (API 17), la carte SD a une structure de rĂ©pertoire qui limite l'accĂšs d'une application au rĂ©pertoire qui est spĂ©cifiquement pour cette application. Cela empĂȘche une application malveillante d'obtenir un accĂšs en lecture ou en Ă©criture aux fichiers d'une autre application.

Données sensibles stockées en texte clair

  • PrĂ©fĂ©rences partagĂ©es : Android permet Ă  chaque application de facilement sauvegarder des fichiers xml dans le chemin /data/data/<packagename>/shared_prefs/ et il est parfois possible de trouver des informations sensibles en texte clair dans ce dossier.
  • Bases de donnĂ©es : Android permet Ă  chaque application de facilement sauvegarder des bases de donnĂ©es sqlite dans le chemin /data/data/<packagename>/databases/ et il est parfois possible de trouver des informations sensibles en texte clair dans ce dossier.

TLS cassé

Accepter tous les certificats

Pour une raison quelconque, parfois les dĂ©veloppeurs acceptent tous les certificats mĂȘme si, par exemple, le nom d'hĂŽte ne correspond pas Ă  des lignes de code comme celle-ci :

java
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

Une bonne façon de tester cela est d'essayer de capturer le trafic en utilisant un proxy comme Burp sans autoriser le certificat CA de Burp sur l'appareil. De plus, vous pouvez générer avec Burp un certificat pour un nom d'hÎte différent et l'utiliser.

Cryptographie cassée

Mauvais processus de gestion des clés

Certains dĂ©veloppeurs enregistrent des donnĂ©es sensibles dans le stockage local et les cryptent avec une clĂ© codĂ©e en dur/prĂ©visible dans le code. Cela ne devrait pas ĂȘtre fait car un certain reverse engineering pourrait permettre aux attaquants d'extraire les informations confidentielles.

Utilisation d'algorithmes non sécurisés et/ou obsolÚtes

Les dĂ©veloppeurs ne devraient pas utiliser d'algorithmes obsolĂštes pour effectuer des vĂ©rifications d'autorisation, stocker ou envoyer des donnĂ©es. Certains de ces algorithmes sont : RC4, MD4, MD5, SHA1... Si des hashs sont utilisĂ©s pour stocker des mots de passe par exemple, des hashs rĂ©sistants Ă  la force brute devraient ĂȘtre utilisĂ©s avec du sel.

Autres vérifications

  • Il est recommandĂ© de d'obfusquer l'APK pour rendre le travail de reverse engineering plus difficile pour les attaquants.
  • Si l'application est sensible (comme les applications bancaires), elle devrait effectuer ses propres vĂ©rifications pour voir si le mobile est rootĂ© et agir en consĂ©quence.
  • Si l'application est sensible (comme les applications bancaires), elle devrait vĂ©rifier si un Ă©mulateur est utilisĂ©.
  • Si l'application est sensible (comme les applications bancaires), elle devrait vĂ©rifier sa propre intĂ©gritĂ© avant de s'exĂ©cuter pour vĂ©rifier si elle a Ă©tĂ© modifiĂ©e.
  • Utilisez APKiD pour vĂ©rifier quel compilateur/emballeur/obfuscateur a Ă©tĂ© utilisĂ© pour construire l'APK.

Application React Native

Lisez la page suivante pour apprendre à accéder facilement au code javascript des applications React :

React Native Application

Applications Xamarin

Lisez la page suivante pour apprendre à accéder facilement au code C# des applications xamarin :

Xamarin Apps

Applications Superpackées

Selon ce post de blog, superpacké est un algorithme Meta qui compresse le contenu d'une application en un seul fichier. Le blog parle de la possibilité de créer une application qui décompresse ce type d'applications... et d'une méthode plus rapide qui consiste à exécuter l'application et à rassembler les fichiers décompressés à partir du systÚme de fichiers.

Analyse statique automatisée du code

L'outil mariana-trench est capable de trouver des vulnĂ©rabilitĂ©s en scannant le code de l'application. Cet outil contient une sĂ©rie de sources connues (qui indiquent Ă  l'outil les endroits oĂč l'entrĂ©e est contrĂŽlĂ©e par l'utilisateur), des sinks (qui indiquent Ă  l'outil les endroits dangereux oĂč une entrĂ©e malveillante pourrait causer des dommages) et des rĂšgles. Ces rĂšgles indiquent la combinaison de sources-sinks qui indique une vulnĂ©rabilitĂ©.

Avec cette connaissance, mariana-trench examinera le code et trouvera les vulnérabilités possibles.

Secrets divulgués

Une application peut contenir des secrets (clĂ©s API, mots de passe, URLs cachĂ©es, sous-domaines...) Ă  l'intĂ©rieur que vous pourriez ĂȘtre en mesure de dĂ©couvrir. Vous pourriez utiliser un outil tel que https://github.com/dwisiswant0/apkleaks.

Contournement de l'authentification biométrique

Bypass Biometric Authentication (Android)

Autres fonctions intéressantes

Autres astuces

content:// protocol



Analyse dynamique

Tout d'abord, vous avez besoin d'un environnement oĂč vous pouvez installer l'application et tout l'environnement (certificat CA de Burp, Drozer et Frida principalement). Par consĂ©quent, un appareil rootĂ© (Ă©mulĂ© ou non) est fortement recommandĂ©.

Analyse dynamique en ligne

Vous pouvez créer un compte gratuit sur : https://appetize.io/. Cette plateforme vous permet de télécharger et d'exécuter des APK, ce qui est utile pour voir comment un apk se comporte.

Vous pouvez mĂȘme voir les journaux de votre application sur le web et vous connecter via adb.

Grùce à la connexion ADB, vous pouvez utiliser Drozer et Frida à l'intérieur des émulateurs.

Analyse dynamique locale

Utilisation d'un Ă©mulateur

  • Android Studio (Vous pouvez crĂ©er des appareils x86 et arm, et selon ceci, les derniĂšres versions x86 supportent les bibliothĂšques ARM sans avoir besoin d'un Ă©mulateur arm lent).
  • Apprenez Ă  le configurer sur cette page :

AVD - Android Virtual Device

  • Genymotion (Version gratuite : Édition personnelle, vous devez crĂ©er un compte. _Il est recommandĂ© de tĂ©lĂ©charger la version AVEC _ VirtualBox pour Ă©viter des erreurs potentielles.)
  • Nox (Gratuit, mais il ne supporte pas Frida ou Drozer).

note

Lors de la création d'un nouvel émulateur sur n'importe quelle plateforme, rappelez-vous que plus l'écran est grand, plus l'émulateur fonctionnera lentement. Donc, sélectionnez de petits écrans si possible.

Pour installer les services Google (comme l'AppStore) dans Genymotion, vous devez cliquer sur le bouton marqué en rouge de l'image suivante :

De plus, notez que dans la configuration de la VM Android dans Genymotion, vous pouvez sélectionner le mode réseau Bridge (ce qui sera utile si vous vous connectez à la VM Android depuis une autre VM avec les outils).

Utiliser un appareil physique

Vous devez activer les options de débogage et il serait bien si vous pouviez le rooter :

  1. ParamĂštres.
  2. (À partir d'Android 8.0) SĂ©lectionnez SystĂšme.
  3. SĂ©lectionnez À propos du tĂ©lĂ©phone.
  4. Appuyez sur Numéro de build 7 fois.
  5. Revenez en arriÚre et vous trouverez les options de développeur.

Une fois que vous avez installĂ© l'application, la premiĂšre chose que vous devriez faire est de l'essayer et d'enquĂȘter sur ce qu'elle fait, comment elle fonctionne et vous y habituer.
Je vous suggérerai de réaliser cette analyse dynamique initiale en utilisant l'analyse dynamique MobSF + pidcat, afin que nous puissions apprendre comment l'application fonctionne pendant que MobSF capture beaucoup de données intéressantes que vous pourrez examiner plus tard.

Fuite de données non intentionnelle

Journalisation

Les dĂ©veloppeurs doivent ĂȘtre prudents de ne pas exposer des informations de dĂ©bogage publiquement, car cela peut entraĂźner des fuites de donnĂ©es sensibles. Les outils pidcat et adb logcat sont recommandĂ©s pour surveiller les journaux d'application afin d'identifier et de protĂ©ger les informations sensibles. Pidcat est privilĂ©giĂ© pour sa facilitĂ© d'utilisation et sa lisibilitĂ©.

warning

Notez qu'à partir de versions plus récentes qu'Android 4.0, les applications ne peuvent accéder qu'à leurs propres journaux. Donc, les applications ne peuvent pas accéder aux journaux d'autres applications.
Quoi qu'il en soit, il est toujours recommandé de ne pas enregistrer d'informations sensibles.

Mise en cache du tampon Copier/Coller

Le cadre basé sur le presse-papiers d'Android permet la fonctionnalité de copier-coller dans les applications, mais pose un risque car d'autres applications peuvent accéder au presse-papiers, exposant potentiellement des données sensibles. Il est crucial de désactiver les fonctions de copier/coller pour les sections sensibles d'une application, comme les détails de carte de crédit, afin de prévenir les fuites de données.

Journaux de plantage

Si une application plante et enregistre des journaux, ces journaux peuvent aider les attaquants, en particulier lorsque l'application ne peut pas ĂȘtre inversĂ©e. Pour attĂ©nuer ce risque, Ă©vitez de journaliser lors des plantages, et si des journaux doivent ĂȘtre transmis sur le rĂ©seau, assurez-vous qu'ils sont envoyĂ©s via un canal SSL pour des raisons de sĂ©curitĂ©.

En tant que pentester, essayez de jeter un Ɠil à ces journaux.

Données analytiques envoyées à des tiers

Les applications intĂšgrent souvent des services comme Google Adsense, ce qui peut involontairement fuir des donnĂ©es sensibles en raison d'une mise en Ɠuvre incorrecte par les dĂ©veloppeurs. Pour identifier les fuites de donnĂ©es potentielles, il est conseillĂ© de intercepter le trafic de l'application et de vĂ©rifier toute information sensible envoyĂ©e Ă  des services tiers.

Bases de données SQLite

La plupart des applications utiliseront des bases de donnĂ©es SQLite internes pour enregistrer des informations. Lors du pentest, jetez un Ɠil aux bases de donnĂ©es crĂ©Ă©es, aux noms des tables et des colonnes et Ă  toutes les donnĂ©es enregistrĂ©es car vous pourriez trouver des informations sensibles (ce qui constituerait une vulnĂ©rabilitĂ©).
Les bases de donnĂ©es devraient ĂȘtre situĂ©es dans /data/data/the.package.name/databases comme /data/data/com.mwr.example.sieve/databases.

Si la base de données enregistre des informations confidentielles et est cryptée, mais que vous pouvez trouver le mot de passe à l'intérieur de l'application, c'est toujours une vulnérabilité.

ÉnumĂ©rez les tables en utilisant .tables et Ă©numĂ©rez les colonnes des tables en faisant .schema <table_name>.

Drozer (Exploitation des activités exportées, des fournisseurs de contenu et des services)

D'aprÚs Drozer Docs : Drozer vous permet d'assumer le rÎle d'une application Android et d'interagir avec d'autres applications. Il peut faire tout ce qu'une application installée peut faire, comme utiliser le mécanisme de communication inter-processus (IPC) d'Android et interagir avec le systÚme d'exploitation sous-jacent.
Drozer est un outil utile pour exploiter les activités exportées, les services exportés et les fournisseurs de contenu comme vous l'apprendrez dans les sections suivantes.

Exploitation des activités exportées

Lisez ceci si vous voulez rafraßchir ce qu'est une activité Android.
Rappelez-vous également que le code d'une activité commence dans la méthode onCreate.

Contournement de l'autorisation

Lorsqu'une activité est exportée, vous pouvez invoquer son écran depuis une application externe. Par conséquent, si une activité contenant des informations sensibles est exportée, vous pourriez contourner les mécanismes d'authentification pour y accéder.

Apprenez à exploiter les activités exportées avec Drozer.

Vous pouvez également démarrer une activité exportée depuis adb :

  • PackageName est com.example.demo
  • Exported ActivityName est com.example.test.MainActivity
bash
adb shell am start -n com.example.demo/com.example.test.MainActivity

NOTE: MobSF détectera comme malveillant l'utilisation de singleTask/singleInstance comme android:launchMode dans une activité, mais en raison de cela, apparemment cela n'est dangereux que sur les anciennes versions (versions API < 21).

note

Notez qu'un contournement d'autorisation n'est pas toujours une vulnérabilité, cela dépend de la maniÚre dont le contournement fonctionne et des informations qui sont exposées.

Fuite d'informations sensibles

Les activités peuvent également renvoyer des résultats. Si vous parvenez à trouver une activité exportée et non protégée appelant la méthode setResult et renvoyant des informations sensibles, il y a une fuite d'informations sensibles.

Tapjacking

Si le tapjacking n'est pas prévenu, vous pourriez abuser de l'activité exportée pour faire en sorte que l'utilisateur effectue des actions inattendues. Pour plus d'informations sur ce qu'est le Tapjacking, suivez le lien.

Exploitation des Content Providers - Accéder et manipuler des informations sensibles

Lisez ceci si vous voulez rafraĂźchir ce qu'est un Content Provider.
Les content providers sont essentiellement utilisĂ©s pour partager des donnĂ©es. Si une application a des content providers disponibles, vous pourriez ĂȘtre en mesure d'extraire des donnĂ©es sensibles d'eux. Il est Ă©galement intĂ©ressant de tester d'Ă©ventuelles injections SQL et Path Traversals car elles pourraient ĂȘtre vulnĂ©rables.

Apprenez Ă  exploiter les Content Providers avec Drozer.

Exploitation des Services

Lisez ceci si vous voulez rafraĂźchir ce qu'est un Service.
Rappelez-vous que les actions d'un Service commencent dans la méthode onStartCommand.

Un service est essentiellement quelque chose qui peut recevoir des données, les traiter et renvoyer (ou non) une réponse. Ensuite, si une application exporte certains services, vous devriez vérifier le code pour comprendre ce qu'il fait et le tester dynamiquement pour extraire des informations confidentielles, contourner des mesures d'authentification...
Apprenez Ă  exploiter les Services avec Drozer.

Exploitation des Broadcast Receivers

Lisez ceci si vous voulez rafraĂźchir ce qu'est un Broadcast Receiver.
Rappelez-vous que les actions d'un Broadcast Receiver commencent dans la méthode onReceive.

Un broadcast receiver attendra un type de message. Selon la maniĂšre dont le rĂ©cepteur gĂšre le message, il pourrait ĂȘtre vulnĂ©rable.
Apprenez Ă  exploiter les Broadcast Receivers avec Drozer.

Exploitation des Schémas / Liens profonds

Vous pouvez rechercher des liens profonds manuellement, en utilisant des outils comme MobSF ou des scripts comme celui-ci.
Vous pouvez ouvrir un schéma déclaré en utilisant adb ou un navigateur :

bash
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]

Remarque que tu peux omettre le nom du package et le mobile appellera automatiquement l'application qui devrait ouvrir ce lien.

html
<!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a>
<!-- fallback in your url you could try the intent url -->
<a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>

Code exécuté

Pour trouver le code qui sera exécuté dans l'App, allez à l'activité appelée par le deeplink et recherchez la fonction onNewIntent.

Informations sensibles

Chaque fois que vous trouvez un deep link, vérifiez qu'il ne reçoit pas de données sensibles (comme des mots de passe) via des paramÚtres d'URL, car toute autre application pourrait usurper le deep link et voler ces données !

ParamĂštres dans le chemin

Vous devez également vérifier si un deep link utilise un paramÚtre à l'intérieur du chemin de l'URL comme : https://api.example.com/v1/users/{username}, dans ce cas, vous pouvez forcer un parcours de chemin en accédant à quelque chose comme : example://app/users?username=../../unwanted-endpoint%3fparam=value.
Notez que si vous trouvez les bons points de terminaison Ă  l'intĂ©rieur de l'application, vous pourriez ĂȘtre en mesure de provoquer un Open Redirect (si une partie du chemin est utilisĂ©e comme nom de domaine), prise de contrĂŽle de compte (si vous pouvez modifier les dĂ©tails des utilisateurs sans token CSRF et que le point de terminaison vulnĂ©rable utilise la bonne mĂ©thode) et toute autre vulnĂ©rabilitĂ©. Plus d'infos Ă  ce sujet ici.

Plus d'exemples

Un rapport de bug bounty intéressant concernant des liens (/.well-known/assetlinks.json).

Échecs d'inspection et de vĂ©rification de la couche de transport

  • Les certificats ne sont pas toujours inspectĂ©s correctement par les applications Android. Il est courant que ces applications ignorent les avertissements et acceptent des certificats auto-signĂ©s ou, dans certains cas, reviennent Ă  utiliser des connexions HTTP.
  • Les nĂ©gociations lors de la poignĂ©e de main SSL/TLS sont parfois faibles, utilisant des suites de chiffrement non sĂ©curisĂ©es. Cette vulnĂ©rabilitĂ© rend la connexion susceptible aux attaques de type homme du milieu (MITM), permettant aux attaquants de dĂ©chiffrer les donnĂ©es.
  • La fuite d'informations privĂ©es est un risque lorsque les applications s'authentifient via des canaux sĂ©curisĂ©s mais communiquent ensuite par des canaux non sĂ©curisĂ©s pour d'autres transactions. Cette approche ne protĂšge pas les donnĂ©es sensibles, telles que les cookies de session ou les dĂ©tails des utilisateurs, contre l'interception par des entitĂ©s malveillantes.

VĂ©rification des certificats

Nous allons nous concentrer sur la vĂ©rification des certificats. L'intĂ©gritĂ© du certificat du serveur doit ĂȘtre vĂ©rifiĂ©e pour amĂ©liorer la sĂ©curitĂ©. Cela est crucial car des configurations TLS non sĂ©curisĂ©es et la transmission de donnĂ©es sensibles par des canaux non chiffrĂ©s peuvent poser des risques significatifs. Pour des Ă©tapes dĂ©taillĂ©es sur la vĂ©rification des certificats de serveur et la rĂ©solution des vulnĂ©rabilitĂ©s, cette ressource fournit des conseils complets.

SSL Pinning

Le SSL Pinning est une mesure de sĂ©curitĂ© oĂč l'application vĂ©rifie le certificat du serveur par rapport Ă  une copie connue stockĂ©e dans l'application elle-mĂȘme. Cette mĂ©thode est essentielle pour prĂ©venir les attaques MITM. Il est fortement recommandĂ© de mettre en Ɠuvre le SSL Pinning pour les applications traitant des informations sensibles.

Inspection du trafic

Pour inspecter le trafic HTTP, il est nĂ©cessaire d'installer le certificat de l'outil proxy (par exemple, Burp). Sans l'installation de ce certificat, le trafic chiffrĂ© pourrait ne pas ĂȘtre visible via le proxy. Pour un guide sur l'installation d'un certificat CA personnalisĂ©, cliquez ici.

Les applications ciblant API Level 24 et supérieur nécessitent des modifications de la configuration de sécurité réseau pour accepter le certificat CA du proxy. Cette étape est cruciale pour inspecter le trafic chiffré. Pour des instructions sur la modification de la configuration de sécurité réseau, reportez-vous à ce tutoriel.

Contournement du SSL Pinning

Lorsque le SSL Pinning est mis en Ɠuvre, le contournement devient nĂ©cessaire pour inspecter le trafic HTTPS. Plusieurs mĂ©thodes sont disponibles Ă  cet effet :

  • Modifiez automatiquement l'apk pour contourner le SSL Pinning avec apk-mitm. Le meilleur avantage de cette option est que vous n'aurez pas besoin de root pour contourner le SSL Pinning, mais vous devrez supprimer l'application et rĂ©installer la nouvelle, et cela ne fonctionnera pas toujours.
  • Vous pourriez utiliser Frida (discutĂ© ci-dessous) pour contourner cette protection. Voici un guide pour utiliser Burp+Frida+Genymotion : https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/
  • Vous pouvez Ă©galement essayer de contourner automatiquement le SSL Pinning en utilisant objection: objection --gadget com.package.app explore --startup-command "android sslpinning disable"
  • Vous pouvez Ă©galement essayer de contourner automatiquement le SSL Pinning en utilisant l'analyse dynamique MobSF (expliquĂ© ci-dessous)
  • Si vous pensez toujours qu'il y a du trafic que vous ne capturez pas, vous pouvez essayer de rediriger le trafic vers burp en utilisant iptables. Lisez ce blog : https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62

Recherche de vulnérabilités web courantes

Il est également important de rechercher des vulnérabilités web courantes au sein de l'application. Des informations détaillées sur l'identification et l'atténuation de ces vulnérabilités dépassent le cadre de ce résumé mais sont largement couvertes ailleurs.

Frida

Frida est un outil d'instrumentation dynamique pour les développeurs, les ingénieurs en rétro-ingénierie et les chercheurs en sécurité.
Vous pouvez accéder à l'application en cours d'exécution et accrocher des méthodes en temps réel pour changer le comportement, changer des valeurs, extraire des valeurs, exécuter différents codes...
Si vous souhaitez effectuer un pentesting sur des applications Android, vous devez savoir comment utiliser Frida.

Dump de mémoire - Fridump

Vérifiez si l'application stocke des informations sensibles dans la mémoire qu'elle ne devrait pas stocker, comme des mots de passe ou des mnémoniques.

En utilisant Fridump3, vous pouvez dumper la mémoire de l'application avec :

bash
# With PID
python3 fridump3.py -u <PID>

# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"

Cela va vider la mémoire dans le dossier ./dump, et là-dedans, vous pourriez grep avec quelque chose comme :

bash
strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"

Données sensibles dans le Keystore

Dans Android, le Keystore est le meilleur endroit pour stocker des donnĂ©es sensibles, cependant, avec suffisamment de privilĂšges, il est toujours possible d'y accĂ©der. Comme les applications ont tendance Ă  y stocker des donnĂ©es sensibles en texte clair, les pentests devraient vĂ©rifier cela en tant qu'utilisateur root ou quelqu'un ayant un accĂšs physique Ă  l'appareil pourrait ĂȘtre en mesure de voler ces donnĂ©es.

MĂȘme si une application stocke des donnĂ©es dans le keystore, les donnĂ©es devraient ĂȘtre chiffrĂ©es.

Pour accéder aux données à l'intérieur du keystore, vous pouvez utiliser ce script Frida : https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js

bash
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js

Contour/Contournement Biométrique

En utilisant le script Frida suivant, il pourrait ĂȘtre possible de contourner l'authentification par empreinte digitale que les applications Android pourraient effectuer afin de protĂ©ger certaines zones sensibles :

bash
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>

Images de Fond

Lorsque vous mettez une application en arriÚre-plan, Android stocke un instantané de l'application afin que, lorsqu'elle est récupérée au premier plan, elle commence à charger l'image avant l'application, ce qui donne l'impression que l'application a été chargée plus rapidement.

Cependant, si cet instantané contient des informations sensibles, quelqu'un ayant accÚs à l'instantané pourrait voler ces informations (notez que vous avez besoin de root pour y accéder).

Les instantanés sont généralement stockés autour de : /data/system_ce/0/snapshots

Android fournit un moyen de prĂ©venir la capture d'Ă©cran en dĂ©finissant le paramĂštre de mise en page FLAG_SECURE. En utilisant ce drapeau, le contenu de la fenĂȘtre est traitĂ© comme sĂ©curisĂ©, empĂȘchant son apparition dans les captures d'Ă©cran ou d'ĂȘtre visualisĂ© sur des affichages non sĂ©curisĂ©s.

bash
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);

Analyseur d'Application Android

Cet outil peut vous aider à gérer différents outils lors de l'analyse dynamique : https://github.com/NotSoSecure/android_application_analyzer

Injection d'Intent

Les dĂ©veloppeurs crĂ©ent souvent des composants proxy comme des activitĂ©s, des services et des rĂ©cepteurs de diffusion qui gĂšrent ces Intents et les transmettent Ă  des mĂ©thodes telles que startActivity(...) ou sendBroadcast(...), ce qui peut ĂȘtre risquĂ©.

Le danger réside dans le fait de permettre aux attaquants de déclencher des composants d'application non exportés ou d'accéder à des fournisseurs de contenu sensibles en détournant ces Intents. Un exemple notable est le composant WebView qui convertit les URL en objets Intent via Intent.parseUri(...) et les exécute ensuite, ce qui peut entraßner des injections d'Intent malveillantes.

Points Essentiels

  • Injection d'Intent est similaire au problĂšme de Redirection Ouverte sur le web.
  • Les exploits impliquent de passer des objets Intent en tant qu'extras, qui peuvent ĂȘtre redirigĂ©s pour exĂ©cuter des opĂ©rations non sĂ©curisĂ©es.
  • Cela peut exposer des composants non exportĂ©s et des fournisseurs de contenu aux attaquants.
  • La conversion d'URL en Intent de WebView peut faciliter des actions non intentionnelles.

Injections CÎté Client Android et autres

Vous connaissez probablement ce type de vulnĂ©rabilitĂ©s sur le Web. Vous devez ĂȘtre particuliĂšrement prudent avec ces vulnĂ©rabilitĂ©s dans une application Android :

  • Injection SQL : Lors de la gestion de requĂȘtes dynamiques ou de Content-Providers, assurez-vous d'utiliser des requĂȘtes paramĂ©trĂ©es.
  • Injection JavaScript (XSS) : VĂ©rifiez que le support JavaScript et Plugin est dĂ©sactivĂ© pour tous les WebViews (dĂ©sactivĂ© par dĂ©faut). Plus d'infos ici.
  • Inclusion de Fichiers Locaux : Les WebViews ne devraient pas avoir accĂšs au systĂšme de fichiers (activĂ© par dĂ©faut) - (webview.getSettings().setAllowFileAccess(false);). Plus d'infos ici.
  • Cookies Ă©ternels : Dans plusieurs cas, lorsque l'application android termine la session, le cookie n'est pas rĂ©voquĂ© ou peut mĂȘme ĂȘtre enregistrĂ© sur le disque.
  • Drapeau SĂ©curisĂ© dans les cookies

Analyse Automatique

MobSF

Analyse statique

Évaluation de la vulnĂ©rabilitĂ© de l'application Ă  l'aide d'une belle interface web. Vous pouvez Ă©galement effectuer une analyse dynamique (mais vous devez prĂ©parer l'environnement).

bash
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest

Remarque que MobSF peut analyser des applications Android(apk), IOS(ipa) et Windows(apx) (Les applications Windows doivent ĂȘtre analysĂ©es depuis un MobSF installĂ© sur un hĂŽte Windows).
De plus, si vous créez un fichier ZIP avec le code source d'une application Android ou IOS (allez dans le dossier racine de l'application, sélectionnez tout et créez un fichier ZIP), il pourra également l'analyser.

MobSF permet également d'effectuer une analyse diff/Compare et d'intégrer VirusTotal (vous devrez définir votre clé API dans MobSF/settings.py et l'activer : VT_ENABLED = TRUE VT_API_KEY = <Votre clé API> VT_UPLOAD = TRUE). Vous pouvez également définir VT_UPLOAD sur False, alors le hash sera téléchargé au lieu du fichier.

Analyse dynamique assistée avec MobSF

MobSF peut Ă©galement ĂȘtre trĂšs utile pour l'analyse dynamique sur Android, mais dans ce cas, vous devrez installer MobSF et genymotion sur votre hĂŽte (une VM ou Docker ne fonctionnera pas). Remarque : Vous devez d'abord dĂ©marrer une VM dans genymotion et ensuite MobSF.
L'analyseur dynamique MobSF peut :

  • Extraire les donnĂ©es de l'application (URLs, journaux, presse-papiers, captures d'Ă©cran rĂ©alisĂ©es par vous, captures d'Ă©cran rĂ©alisĂ©es par "Exported Activity Tester", e-mails, bases de donnĂ©es SQLite, fichiers XML et autres fichiers crĂ©Ă©s). Tout cela se fait automatiquement sauf pour les captures d'Ă©cran, vous devez appuyer lorsque vous souhaitez une capture d'Ă©cran ou vous devez appuyer sur "Exported Activity Tester" pour obtenir des captures d'Ă©cran de toutes les activitĂ©s exportĂ©es.
  • Capturer le trafic HTTPS
  • Utiliser Frida pour obtenir des informations d'exĂ©cution

À partir des versions Android > 5, il dĂ©marrera automatiquement Frida et dĂ©finira les paramĂštres de proxy globaux pour capturer le trafic. Il ne capturera que le trafic de l'application testĂ©e.

Frida

Par défaut, il utilisera également certains scripts Frida pour contourner le SSL pinning, la détection de root et la détection de débogueur et pour surveiller des API intéressantes.
MobSF peut également invoquer des activités exportées, prendre des captures d'écran de celles-ci et les enregistrer pour le rapport.

Pour démarrer le test dynamique, appuyez sur le bouton vert : "Start Instrumentation". Appuyez sur "Frida Live Logs" pour voir les journaux générés par les scripts Frida et "Live API Monitor" pour voir toutes les invocations aux méthodes accrochées, les arguments passés et les valeurs retournées (cela apparaßtra aprÚs avoir appuyé sur "Start Instrumentation").
MobSF vous permet également de charger vos propres scripts Frida (pour envoyer les résultats de vos scripts Frida à MobSF, utilisez la fonction send()). Il dispose également de plusieurs scripts pré-écrits que vous pouvez charger (vous pouvez en ajouter d'autres dans MobSF/DynamicAnalyzer/tools/frida_scripts/others/), il suffit de les sélectionner, d'appuyer sur "Load" et d'appuyer sur "Start Instrumentation" (vous pourrez voir les journaux de ces scripts dans "Frida Live Logs").

De plus, vous avez quelques fonctionnalités auxiliaires de Frida :

  • ÉnumĂ©rer les classes chargĂ©es : Il imprimera toutes les classes chargĂ©es
  • Capturer les chaĂźnes : Il imprimera toutes les chaĂźnes capturĂ©es lors de l'utilisation de l'application (trĂšs bruyant)
  • Capturer les comparaisons de chaĂźnes : Pourrait ĂȘtre trĂšs utile. Il montrera les 2 chaĂźnes comparĂ©es et si le rĂ©sultat Ă©tait vrai ou faux.
  • ÉnumĂ©rer les mĂ©thodes de classe : Mettez le nom de la classe (comme "java.io.File") et il imprimera toutes les mĂ©thodes de la classe.
  • Rechercher un motif de classe : Rechercher des classes par motif
  • Tracer les mĂ©thodes de classe : Tracer une classe entiĂšre (voir les entrĂ©es et sorties de toutes les mĂ©thodes de la classe). N'oubliez pas qu'en mode par dĂ©faut, MobSF trace plusieurs mĂ©thodes d'API Android intĂ©ressantes.

Une fois que vous avez sélectionné le module auxiliaire que vous souhaitez utiliser, vous devez appuyer sur "Start Instrumentation" et vous verrez toutes les sorties dans "Frida Live Logs".

Shell

Mobsf vous propose également un shell avec quelques commandes adb, des commandes MobSF, et des commandes shell courantes en bas de la page d'analyse dynamique. Quelques commandes intéressantes :

bash
help
shell ls
activities
exported_activities
services
receivers

Outils HTTP

Lorsque le trafic http est capturĂ©, vous pouvez voir une vue peu attrayante du trafic capturĂ© sur "HTTP(S) Traffic" en bas ou une vue plus agrĂ©able dans "Start HTTPTools" en bas vert. À partir de la deuxiĂšme option, vous pouvez envoyer les requĂȘtes capturĂ©es Ă  des proxies comme Burp ou Owasp ZAP.
Pour ce faire, allumez Burp --> dĂ©sactivez Intercept --> dans MobSB HTTPTools, sĂ©lectionnez la requĂȘte --> appuyez sur "Send to Fuzzer" --> sĂ©lectionnez l'adresse du proxy (http://127.0.0.1:8080\).

Une fois que vous avez terminĂ© l'analyse dynamique avec MobSF, vous pouvez appuyer sur "Start Web API Fuzzer" pour fuzz les requĂȘtes http et rechercher des vulnĂ©rabilitĂ©s.

note

AprĂšs avoir effectuĂ© une analyse dynamique avec MobSF, les paramĂštres du proxy peuvent ĂȘtre mal configurĂ©s et vous ne pourrez pas les corriger depuis l'interface graphique. Vous pouvez corriger les paramĂštres du proxy en faisant :

adb shell settings put global http_proxy :0

Analyse Dynamique Assistée avec Inspeckage

Vous pouvez obtenir l'outil depuis Inspeckage.
Cet outil utilisera des Hooks pour vous informer de ce qui se passe dans l'application pendant que vous effectuez une analyse dynamique.

Yaazhini

C'est un excellent outil pour effectuer une analyse statique avec une interface graphique

Qark

Cet outil est conçu pour rechercher plusieurs vulnérabilités liées à la sécurité des applications Android, que ce soit dans le code source ou les APKs empaquetés. L'outil est également capable de créer un APK déployable "Proof-of-Concept" et des commandes ADB, pour exploiter certaines des vulnérabilités trouvées (Activités exposées, intents, tapjacking...). Comme avec Drozer, il n'est pas nécessaire de rooter l'appareil de test.

bash
pip3 install --user qark  # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
qark --java path/to/parent/java/folder
qark --java path/to/specific/java/file.java

ReverseAPK

  • Affiche tous les fichiers extraits pour une rĂ©fĂ©rence facile
  • DĂ©compile automatiquement les fichiers APK en format Java et Smali
  • Analyse AndroidManifest.xml pour des vulnĂ©rabilitĂ©s et comportements courants
  • Analyse statique du code source pour des vulnĂ©rabilitĂ©s et comportements courants
  • Informations sur l'appareil
  • et plus encore
bash
reverse-apk relative/path/to/APP.apk

SUPER Android Analyzer

SUPER est une application en ligne de commande qui peut ĂȘtre utilisĂ©e sous Windows, MacOS X et Linux, qui analyse les fichiers .apk Ă  la recherche de vulnĂ©rabilitĂ©s. Elle le fait en dĂ©compressant les APK et en appliquant une sĂ©rie de rĂšgles pour dĂ©tecter ces vulnĂ©rabilitĂ©s.

Toutes les rÚgles sont centrées dans un fichier rules.json, et chaque entreprise ou testeur peut créer ses propres rÚgles pour analyser ce dont ils ont besoin.

Téléchargez les derniers binaires sur la page de téléchargement

super-analyzer {apk_file}

StaCoAn

StaCoAn est un outil multiplateforme qui aide les développeurs, les chasseurs de bugs et les hackers éthiques à effectuer une analyse de code statique sur des applications mobiles.

Le concept est que vous faites glisser et déposer votre fichier d'application mobile (un fichier .apk ou .ipa) sur l'application StaCoAn et elle générera un rapport visuel et portable pour vous. Vous pouvez ajuster les paramÚtres et les listes de mots pour obtenir une expérience personnalisée.

Télécharger derniÚre version:

./stacoan

AndroBugs

AndroBugs Framework est un systÚme d'analyse de vulnérabilités Android qui aide les développeurs ou les hackers à trouver des vulnérabilités de sécurité potentielles dans les applications Android.
Windows releases

python androbugs.py -f [APK file]
androbugs.exe -f [APK file]

Androwarn

Androwarn est un outil dont le principal objectif est de détecter et d'avertir l'utilisateur des comportements malveillants potentiels développés par une application Android.

La détection est effectuée par l'analyse statique du bytecode Dalvik de l'application, représenté sous forme de Smali, avec la bibliothÚque androguard.

Cet outil recherche des comportements courants des applications "malveillantes" tels que : exfiltration d'identifiants de téléphonie, interception de flux audio/vidéo, modification de données PIM, exécution de code arbitraire...

python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3

MARA Framework

MARA est un Mobile Application Reverse engineering et Analysis Framework. C'est un outil qui regroupe des outils couramment utilisés pour l'ingénierie inverse et l'analyse des applications mobiles, afin d'aider à tester les applications mobiles contre les menaces de sécurité mobile OWASP. Son objectif est de rendre cette tùche plus facile et plus conviviale pour les développeurs d'applications mobiles et les professionnels de la sécurité.

Il est capable de :

Koodous

Utile pour détecter les malwares : https://koodous.com/

Obfuscating/Deobfuscating code

Notez qu'en fonction du service et de la configuration que vous utilisez pour obfusquer le code, les secrets peuvent ou non ĂȘtre obfusquĂ©s.

ProGuard

De Wikipedia: ProGuard est un outil en ligne de commande open source qui réduit, optimise et obfusque le code Java. Il est capable d'optimiser le bytecode ainsi que de détecter et de supprimer les instructions inutilisées. ProGuard est un logiciel libre et est distribué sous la licence publique générale GNU, version 2.

ProGuard est distribué dans le cadre du SDK Android et s'exécute lors de la construction de l'application en mode release.

DexGuard

Trouvez un guide étape par étape pour déobfusquer l'apk sur https://blog.lexfo.fr/dexguard.html

(D'aprÚs ce guide) La derniÚre fois que nous avons vérifié, le mode de fonctionnement de Dexguard était :

  • charger une ressource en tant qu'InputStream ;
  • alimenter le rĂ©sultat Ă  une classe hĂ©ritant de FilterInputStream pour le dĂ©chiffrer ;
  • faire une obfuscation inutile pour faire perdre quelques minutes Ă  un reverseur ;
  • alimenter le rĂ©sultat dĂ©chiffrĂ© Ă  un ZipInputStream pour obtenir un fichier DEX ;
  • enfin, charger le DEX rĂ©sultant en tant que ressource en utilisant la mĂ©thode loadDex.

DeGuard

DeGuard inverse le processus d'obfuscation effectué par les outils d'obfuscation Android. Cela permet de nombreuses analyses de sécurité, y compris l'inspection du code et la prédiction des bibliothÚques.

Vous pouvez télécharger un APK obfusqué sur leur plateforme.

Deobfuscate android App

C'est un outil LLM pour trouver d'éventuelles vulnérabilités de sécurité dans les applications android et déobfusquer le code des applications android. Utilise l'API publique Gemini de Google.

Simplify

C'est un déobfuscateur android générique. Simplify exécute virtuellement une application pour comprendre son comportement et ensuite essaie d'optimiser le code afin qu'il se comporte de maniÚre identique mais soit plus facile à comprendre pour un humain. Chaque type d'optimisation est simple et générique, donc peu importe le type spécifique d'obfuscation utilisé.

APKiD

APKiD vous donne des informations sur comment un APK a été créé. Il identifie de nombreux compilateurs, packers, obfuscateurs, et d'autres choses étranges. C'est PEiD pour Android.

Manual

Lire ce tutoriel pour apprendre quelques astuces sur comment inverser une obfuscation personnalisée

Labs

Androl4b

AndroL4b est une machine virtuelle de sécurité Android basée sur ubuntu-mate qui inclut la collection des derniers frameworks, tutoriels et laboratoires de différents geeks et chercheurs en sécurité pour l'ingénierie inverse et l'analyse de malware.

References

Yet to try

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks