# Pentesting des Applications Android {% hint style="success" %} Apprenez et pratiquez le Hacking AWS :[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Apprenez et pratiquez le Hacking GCP : [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Soutenir HackTricks * Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) ! * **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous sur** **Twitter** 🐩 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Partagez des astuces de hacking en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dĂ©pĂŽts github.
{% endhint %}
Rejoignez le [**serveur Discord HackenProof**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expĂ©rimentĂ©s et des chasseurs de bugs ! **Aperçus du Hacking**\ Engagez-vous avec du contenu qui explore le frisson et les dĂ©fis du hacking **ActualitĂ©s de Hacking en Temps RĂ©el**\ Restez Ă  jour avec le monde du hacking en rapide Ă©volution grĂące Ă  des nouvelles et des aperçus en temps rĂ©el **DerniĂšres Annonces**\ Restez informĂ© des nouveaux programmes de bug bounty lancĂ©s et des mises Ă  jour cruciales des plateformes **Rejoignez-nous sur** [**Discord**](https://discord.com/invite/N3FrSbmwdy) et commencez Ă  collaborer avec les meilleurs hackers dĂšs aujourd'hui ! ## 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** : {% content-ref url="android-applications-basics.md" %} [android-applications-basics.md](android-applications-basics.md) {% endcontent-ref %} ## 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 par **USB** soit par **rĂ©seau** depuis un ordinateur. Cet utilitaire 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**](adb-commands.md) 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Ă©](smali-changes.md). 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 * [Usurpation de votre emplacement dans le Play Store](spoofing-your-location-in-play-store.md) * **TĂ©lĂ©charger des APK** : [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) * Extraire l'APK de l'appareil : ```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](https://github.com/REAndroid/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**](apk-decompilers.md). ### Recherche d'informations intĂ©ressantes En regardant simplement les **chaĂźnes** de l'APK, vous pouvez rechercher des **mots de passe**, des **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), des clĂ©s **api**, des **chiffrements**, des **bluetooth uuids**, 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 administratifs 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.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) ### 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 pouvant 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 **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 : {% content-ref url="tapjacking.md" %} [tapjacking.md](tapjacking.md) {% endcontent-ref %} ### 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 : {% content-ref url="android-task-hijacking.md" %} [android-task-hijacking.md](android-task-hijacking.md) {% endcontent-ref %} ### 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** aux fichiers d'ĂȘtre **partagĂ©s** 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Ă©**. 2. **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 dans le monde entier**. 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 de 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. 2. **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Ă©. 3. **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` {% hint style="info" %} À 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 spĂ©cifiquement destinĂ© Ă  cette application**. Cela empĂȘche une application malveillante d'obtenir un accĂšs en lecture ou en Ă©criture aux fichiers d'une autre application. {% endhint %} **DonnĂ©es sensibles stockĂ©es en texte clair** * **PrĂ©fĂ©rences partagĂ©es** : Android permet Ă  chaque application de sauvegarder facilement des fichiers xml dans le chemin `/data/data//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 sauvegarder facilement des bases de donnĂ©es sqlite dans le chemin `/data/data//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); ``` A good way to test this is to try to capture the traffic using some proxy like Burp without authorising Burp CA inside the device. Also, you can generate with Burp a certificate for a different hostname and use it. ### 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 un 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**](https://github.com/rednaga/APKiD) pour vĂ©rifier quel compilateur/emballeur/obfuscateur a Ă©tĂ© utilisĂ© pour construire l'APK. ### Application React Native Read the following page to learn how to easily access javascript code of React applications: {% content-ref url="react-native-application.md" %} [react-native-application.md](react-native-application.md) {% endcontent-ref %} ### Applications Xamarin Read the following page to learn how to easily access C# code of a xamarin applications: {% content-ref url="../xamarin-apps.md" %} [xamarin-apps.md](../xamarin-apps.md) {% endcontent-ref %} ### Applications SuperpackĂ©es According to this [**blog post**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked is a Meta algorithm that compress the content of an application into a single file. The blog talks about the possibility of creating an app that decompress these kind of apps... and a faster way which involves to **execute the application and gather the decompressed files from the filesystem.** ### Analyse statique automatisĂ©e The tool [**mariana-trench**](https://github.com/facebook/mariana-trench) is capable of finding **vulnerabilities** by **scanning** the **code** of the application. This tool contains a series of **known sources** (that indicates to the tool the **places** where the **input** is **controlled by the user**), **sinks** (which indicates to the tool **dangerous** **places** where malicious user input could cause damages) and **rules**. These rules indicates the **combination** of **sources-sinks** that indicates a vulnerability. With this knowledge, **mariana-trench will review the code and find possible vulnerabilities on it**. ### Secrets leaked An application may contain secrets (API keys, passwords, hidden urls, subdomains...) inside of it that you might be able to discover. You could us a tool such as [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) ### Bypass Biometric Authentication {% content-ref url="bypass-biometric-authentication-android.md" %} [bypass-biometric-authentication-android.md](bypass-biometric-authentication-android.md) {% endcontent-ref %} ### Autres fonctions intĂ©ressantes * **ExĂ©cution de code** : `Runtime.exec(), ProcessBuilder(), native code:system()` * **Envoyer des SMS** : `sendTextMessage, sendMultipartTestMessage` * **Fonctions natives** dĂ©clarĂ©es comme `native` : `public native, System.loadLibrary, System.load` * [Read this to learn **how to reverse native functions**](reversing-native-libraries.md) ### **Autres astuces** {% content-ref url="content-protocol.md" %} [content-protocol.md](content-protocol.md) {% endcontent-ref %} ***
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters! **Hacking Insights**\ Engage with content that delves into the thrill and challenges of hacking **Real-Time Hack News**\ Keep up-to-date with fast-paced hacking world through real-time news and insights **Latest Announcements**\ Stay informed with the newest bug bounties launching and crucial platform updates **Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today! *** ## Analyse dynamique > First of all, you need an environment where you can install the application and all the environment (Burp CA cert, Drozer and Frida mainly). Therefore, a rooted device (emulated or not) is extremely recommended. ### Analyse dynamique en ligne You can create a **free account** in: [https://appetize.io/](https://appetize.io). This platform allows you to **upload** and **execute** APKs, so it is useful to see how an apk is behaving. You can even **see the logs of your application** in the web and connect through **adb**. ![](<../../.gitbook/assets/image (831).png>) Thanks to the ADB connection you can use **Drozer** and **Frida** inside the emulators. ### Analyse dynamique locale #### Utilisation d'un Ă©mulateur * [**Android Studio**](https://developer.android.com/studio) (You can create **x86** and **arm** devices, and according to [**this** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**latest x86** versions **support ARM libraries** without needing an slow arm emulator). * Learn to set it up in this page: {% content-ref url="avd-android-virtual-device.md" %} [avd-android-virtual-device.md](avd-android-virtual-device.md) {% endcontent-ref %} * [**Genymotion**](https://www.genymotion.com/fun-zone/) **(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**](https://es.bignox.com) (Gratuit, mais il ne prend pas en charge Frida ou Drozer). {% hint style="info" %} When creating a new emulator on any platform remember that the bigger the screen is, the slower the emulator will run. So select small screens if possible. {% endhint %} To **install google services** (like AppStore) in Genymotion you need to click on the red marked button of the following image: ![](<../../.gitbook/assets/image (277).png>) Also, notice that in the **configuration of the Android VM in Genymotion** you can select **Bridge Network mode** (this will be useful if you will be connecting to the Android VM from a different VM with the tools). #### Utiliser un appareil physique You need to activate the **debugging** options and it will be cool if you can **root** it: 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 pour les dĂ©veloppeurs**. > Once you have installed the application, the first thing you should do is to try it and investigate what does it do, how does it work and get comfortable with it.\ > I will suggest to **perform this initial dynamic analysis using MobSF dynamic analysis + pidcat**, so we will be able to **learn how the application works** while MobSF **captures** a lot of **interesting** **data** you can review later on. ### 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**](https://github.com/JakeWharton/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Ă©. {% hint style="warning" %} Note that from **later newer than Android 4.0**, **applications are only able to access their own logs**. So applications cannot access other apps logs.\ Anyway, it's still recommended to **not log sensitive information**. {% endhint %} **Mise en cache du presse-papiers** 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 reverse-engineered. 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 la sĂ©curitĂ©. As pentester, **try to take a look to these logs**. **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 `. ### Drozer (Exploitation des activitĂ©s exportĂ©es, des fournisseurs de contenu et des services) From [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** allows you to **assume the role of an Android app** and interact with other apps. It can do **anything that an installed application can do**, such as make use of Android’s Inter-Process Communication (IPC) mechanism and interact with the underlying operating system. .\ Drozer is s useful tool to **exploit exported activities, exported services and Content Providers** as you will learn in the following sections. ### Exploitation des activitĂ©s exportĂ©es [**Read this if you want to refresh what is an Android Activity.**](android-applications-basics.md#launcher-activity-and-other-activities)\ Also remember that the code of an activity starts in the **`onCreate`** method. **Bypass d'autorisation** When an Activity is exported you can invoke its screen from an external app. Therefore, if an activity with **sensitive information** is **exported** you could **bypass** the **authentication** mechanisms **to access it.** [**Learn how to exploit exported activities with Drozer.**](drozer-tutorial/#activities) You can also start an exported activity from adb: * PackageName is com.example.demo * Exported ActivityName is 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](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), apparemment cela n'est dangereux que sur les anciennes versions (versions API < 21). {% hint style="info" %} 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. {% endhint %} **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**](./#tapjacking). ### Exploitation des Content Providers - AccĂ©der et manipuler des informations sensibles [**Lisez ceci si vous voulez rafraĂźchir ce qu'est un Content Provider.**](android-applications-basics.md#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** Ă  partir 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.**](drozer-tutorial/#content-providers) ### **Exploitation des Services** [**Lisez ceci si vous voulez rafraĂźchir ce qu'est un Service.**](android-applications-basics.md#services)\ 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. Donc, 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.**](drozer-tutorial/#services) ### **Exploitation des Broadcast Receivers** [**Lisez ceci si vous voulez rafraĂźchir ce qu'est un Broadcast Receiver.**](android-applications-basics.md#broadcast-receivers)\ 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.**](./#exploiting-broadcast-receivers) ### **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](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ Vous pouvez **ouvrir** un **schĂ©ma** dĂ©clarĂ© en utilisant **adb** ou un **navigateur** : {% code overflow="wrap" %} ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` {% endcode %} _Remarque que vous pouvez **omettre le nom du package** et le mobile appellera automatiquement l'application qui devrait ouvrir ce lien._ {% code overflow="wrap" %} ```markup Click me with alternative ``` {% endcode %} **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`**. ![](<../../.gitbook/assets/image (436) (1) (1) (1).png>) **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 **imiter 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](http://dphoeniixx.com/2020/12/13-2/). **Plus d'exemples** Un [rapport de bug bounty intĂ©ressant](https://hackerone.com/reports/855618) 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 le traitement des vulnĂ©rabilitĂ©s, [**cette ressource**](https://manifestsecurity.com/android-application-security-part-10/) 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**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine). 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**](make-apk-accept-ca-certificate.md). #### Contournement du SSL Pinning Lorsque le SSL Pinning est mis en Ɠuvre, le contournement devient nĂ©cessaire pour inspecter le trafic HTTPS. Diverses mĂ©thodes sont disponibles Ă  cet effet : * Modifiez automatiquement l'**apk** pour **contourner** le SSL Pinning avec [**apk-mitm**](https://github.com/shroudedcode/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/](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**](frida-tutorial/objection-tutorial.md)**:** `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](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](https://www.frida.re) 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, modifier des valeurs, extraire des valeurs, exĂ©cuter un code diffĂ©rent...**\ Si vous souhaitez effectuer un pentesting sur des applications Android, vous devez savoir comment utiliser Frida. * Apprenez Ă  utiliser Frida : [**Tutoriel Frida**](frida-tutorial/) * Une "GUI" pour les actions avec Frida : [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) * Ojection est excellent pour automatiser l'utilisation de Frida : [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) * Vous pouvez trouver des scripts Frida intĂ©ressants ici : [**https://codeshare.frida.re/**](https://codeshare.frida.re) * Essayez de contourner les mĂ©canismes anti-debugging / anti-frida en chargeant Frida comme indiquĂ© dans [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (outil [linjector](https://github.com/erfur/linjector-rs)) ### **Dump 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**](https://github.com/rootbsd/fridump3), vous pouvez dumper la mĂ©moire de l'application avec : ```bash # With PID python3 fridump3.py -u # With name frida-ps -Uai python3 fridump3.py -u "" ``` Cela va vider la mĂ©moire dans le dossier ./dump, et lĂ -dedans, vous pourriez grep avec quelque chose comme : {% code overflow="wrap" %} ```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]+$" ``` {% endcode %} ### **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 Ă  stocker ici **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](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 ``` ### **Contourner l'authentification par empreinte digitale/BiomĂ©trie** 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 :** {% code overflow="wrap" %} ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` {% endcode %} ### **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](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 du 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](webview-attacks.md#javascript-enabled). * **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](webview-attacks.md#javascript-enabled). * **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](../../pentesting-web/hacking-with-cookies/#cookies-flags) ***
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expĂ©rimentĂ©s et des chasseurs de bugs ! **Aperçus de Hacking**\ Engagez-vous avec du contenu qui plonge dans le frisson et les dĂ©fis du hacking. **ActualitĂ©s de Hacking en Temps RĂ©el**\ Restez Ă  jour avec le monde du hacking en rapide Ă©volution grĂące Ă  des nouvelles et des aperçus en temps rĂ©el. **DerniĂšres Annonces**\ Restez informĂ© des nouvelles primes de bugs lancĂ©es et des mises Ă  jour cruciales de la plateforme. **Rejoignez-nous sur** [**Discord**](https://discord.com/invite/N3FrSbmwdy) et commencez Ă  collaborer avec les meilleurs hackers dĂšs aujourd'hui ! ## Analyse Automatique ### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF) **Analyse statique** ![](<../../.gitbook/assets/image (866).png>) **É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 ``` Notice that MobSF can analyse **Android**(apk)**, IOS**(ipa) **and Windows**(apx) applications (_Les applications Windows doivent ĂȘtre analysĂ©es depuis un MobSF installĂ© sur un hĂŽte Windows_).\ Also, if you create a **ZIP** file with the source code if an **Android** or an **IOS** app (allez dans le dossier racine de l'application, sĂ©lectionnez tout et crĂ©ez un fichier ZIP), it will be able to analyse it also. MobSF also allows you to **diff/Compare** analysis and to integrate **VirusTotal** (vous devrez dĂ©finir votre clĂ© API dans _MobSF/settings.py_ et l'activer : `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). You can also set `VT_UPLOAD` to `False`, then the **hash** will be **upload** instead of the file. ### Assisted Dynamic analysis with MobSF **MobSF** can also be very helpful for **dynamic analysis** in **Android**, but in that case you will need to install MobSF and **genymotion** in your host (une VM ou Docker ne fonctionnera pas). _Note : Vous devez **d'abord dĂ©marrer une VM dans genymotion** et **ensuite MobSF.**_\ The **MobSF dynamic analyser** can: * **Dump application data** (URLs, logs, clipboard, screenshots made by you, screenshots made by "**Exported Activity Tester**", emails, SQLite databases, XML files, and other created files). All of this is done automatically except for the screenshots, you need to press when you want a screenshot or you need to press "**Exported Activity Tester**" to obtain screenshots of all the exported activities. * Capture **HTTPS traffic** * Use **Frida** to obtain **runtime** **information** From android **versions > 5**, it will **automatically start Frida** and will set global **proxy** settings to **capture** traffic. It will only capture traffic from the tested application. **Frida** By default, it will also use some Frida Scripts to **bypass SSL pinning**, **root detection** and **debugger detection** and to **monitor interesting APIs**.\ MobSF can also **invoke exported activities**, grab **screenshots** of them and **save** them for the report. To **start** the dynamic testing press the green bottom: "**Start Instrumentation**". Press the "**Frida Live Logs**" to see the logs generated by the Frida scripts and "**Live API Monitor**" to see all the invocation to hooked methods, arguments passed and returned values (this will appear after pressing "Start Instrumentation").\ MobSF also allows you to load your own **Frida scripts** (to send the results of your Friday scripts to MobSF use the function `send()`). It also has **several pre-written scripts** you can load (you can add more in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), just **select them**, press "**Load**" and press "**Start Instrumentation**" (you will be able to see the logs of that scripts inside "**Frida Live Logs**"). ![](<../../.gitbook/assets/image (419).png>) Moreover, you have some Auxiliary Frida functionalities: * **Enumerate Loaded Classes**: It will print all the loaded classes * **Capture Strings**: It will print all the capture strings while using the application (super noisy) * **Capture String Comparisons**: Could be very useful. It will **show the 2 strings being compared** and if the result was True or False. * **Enumerate Class Methods**: Put the class name (like "java.io.File") and it will print all the methods of the class. * **Search Class Pattern**: Search classes by pattern * **Trace Class Methods**: **Trace** a **whole class** (see inputs and outputs of all methods of th class). Remember that by default MobSF traces several interesting Android Api methods. Once you have selected the auxiliary module you want to use you need to press "**Start Intrumentation**" and you will see all the outputs in "**Frida Live Logs**". **Shell** Mobsf also brings you a shell with some **adb** commands, **MobSF commands**, and common **shell** **commands** at the bottom of the dynamic analysis page. Some interesting commands: ```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Ă© en bas sur "**HTTP(S) Traffic**" ou une vue plus agrĂ©able dans le bouton vert "**Start HTTPTools**". À 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\\](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 **fuzzer les requĂȘtes http** et rechercher des vulnĂ©rabilitĂ©s. {% hint style="info" %} 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 ``` {% endhint %} ### Analyse Dynamique AssistĂ©e avec Inspeckage Vous pouvez obtenir l'outil depuis [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\ Cet outil utilise des **Hooks** pour vous informer **de ce qui se passe dans l'application** pendant que vous effectuez une **analyse dynamique**. ### [Yaazhini](https://www.vegabird.com/yaazhini/) C'est un **excellent outil pour effectuer une analyse statique avec une interface graphique** ![](<../../.gitbook/assets/image (741).png>) ### [Qark](https://github.com/linkedin/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**](https://github.com/1N3/ReverseAPK.git) * 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 ```bash reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) 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](https://superanalyzer.rocks/download.html) ``` super-analyzer {apk_file} ``` ### [StaCoAn](https://github.com/vincentcox/StaCoAn) ![](<../../.gitbook/assets/image (297).png>) StaCoAn est un outil **multiplateforme** qui aide les dĂ©veloppeurs, les chasseurs de bugs et les hackers Ă©thiques Ă  effectuer une [analyse de code statique](https://en.wikipedia.org/wiki/Static\_program\_analysis) 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Ă©chargez [la derniĂšre version](https://github.com/vincentcox/StaCoAn/releases) : ``` ./stacoan ``` ### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework) 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.\ [Versions Windows](https://github.com/AndroBugs/AndroBugs\_Framework/releases) ``` python androbugs.py -f [APK file] androbugs.exe -f [APK file] ``` ### [Androwarn](https://github.com/maaaaz/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`](https://github.com/androguard/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](https://github.com/xtiankisutsa/MARA\_Framework) ![](<../../.gitbook/assets/image (595).png>) **MARA** est un **M**obile **A**pplication **R**everse engineering et **A**nalysis 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'assister dans le test des 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 : * Extraire du code Java et Smali en utilisant diffĂ©rents outils * Analyser des APKs en utilisant : [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs\_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD) * Extraire des informations privĂ©es de l'APK en utilisant des regexps. * Analyser le Manifest. * Analyser les domaines trouvĂ©s en utilisant : [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) et [whatweb](https://github.com/urbanadventurer/WhatWeb) * DĂ©obfusquer l'APK via [apk-deguard.com](http://www.apk-deguard.com) ### Koodous Utile pour dĂ©tecter les malwares : [https://koodous.com/](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](https://en.wikipedia.org/wiki/ProGuard\_\(software\)) De [Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\)) : **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 GNU General Public License, 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](https://www.guardsquare.com/dexguard) Trouvez un guide Ă©tape par Ă©tape pour dĂ©obfusquer l'apk sur [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) (De 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](http://apk-deguard.com) **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. ### [Simplify](https://github.com/CalebFenton/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](https://github.com/rednaga/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_](https://www.aldeid.com/wiki/PEiD) pour Android. ### Manual [Lisez ce tutoriel pour apprendre quelques astuces sur **comment inverser une obfuscation personnalisĂ©e**](manual-deobfuscation.md) ## Labs ### [Androl4b](https://github.com/sh4hin/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 de la sĂ©curitĂ© et chercheurs pour l'ingĂ©nierie inverse et l'analyse des malwares. ## References * [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/) * [https://appsecwiki.com/#/](https://appsecwiki.com/#/) C'est une excellente liste de ressources * [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Cours rapide sur Android * [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/) * [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh) * [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec) ## Yet to try * [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/) * [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit)
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de bugs ! **Hacking Insights**\ Engagez-vous avec du contenu qui plonge dans le frisson et les défis du hacking **Real-Time Hack News**\ Restez à jour avec le monde du hacking en rapide évolution grùce à des nouvelles et des insights en temps réel **Latest Announcements**\ Restez informé des nouveaux bug bounties lancés et des mises à jour cruciales de la plateforme **Rejoignez-nous sur** [**Discord**](https://discord.com/invite/N3FrSbmwdy) et commencez à collaborer avec les meilleurs hackers aujourd'hui ! {% hint style="success" %} Apprenez et pratiquez le Hacking AWS :[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Apprenez et pratiquez le Hacking GCP : [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) ! * **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐩 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Partagez des astuces de hacking en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dĂ©pĂŽts github.
{% endhint %}