Aide-mémoire pour les tests d'intrusion d'applications mobiles
L'aide-mémoire Mobile App Pentest a été créé pour fournir une collection concise d'informations de grande valeur sur des sujets spécifiques de tests d'intrusion d'applications mobiles, ainsi qu'une checklist cartographiée avec l'OWASP Mobile Risk Top 10 pour mener à bien les tests d'intrusion.
Distributions de test de sécurité des applications mobiles
- Appie - Un ensemble logiciel portable pour les tests d'intrusion Android et une excellente alternative aux machines virtuelles existantes.
- Android Tamer - Android Tamer est une plateforme virtuelle / live pour les professionnels de la sécurité Android.
- Androl4b - Une machine virtuelle pour évaluer les applications Android, la rétro-ingénierie et l'analyse de malwares
- Vezir Project - Environnement de tests d'intrusion d'applications mobiles et d'analyse de malwares.
- Mobexler - Mobexler est une machine virtuelle personnalisée conçue pour aider aux tests d'intrusion d'applications Android et iOS.
Frameworks de sécurité mobile tout-en-un
- Mobile Security Framework - MobSF - Mobile Security Framework est un framework intelligent, tout-en-un et open source de tests d'intrusion automatisés pour applications mobiles (Android/iOS), capable d'effectuer des analyses statiques et dynamiques.
python manage.py runserver 127.0.0.1:1337
- Needle - Needle est un framework open source et modulaire qui rationalise le processus d'évaluation de la sécurité des applications iOS, notamment l'analyse binaire, l'analyse statique de code, la manipulation à l'exécution à l'aide de Cycript et le hooking avec Frida, etc.
- Objection - Objection est une boîte à outils d'exploration mobile à l'exécution, propulsée par Frida. Elle a été conçue pour aider à évaluer les applications mobiles et leur posture de sécurité sans avoir besoin d'un appareil jailbreaké ou rooté.
- RMS-Runtime-Mobile-Security - Runtime Mobile Security (RMS), propulsé par FRIDA, est une interface web puissante qui vous aide à manipuler les applications Android et iOS à l'exécution.
Tests d'intrusion d'applications Android
Rétro-ingénierie et analyse statique
- APKTool - Un outil de rétro-ingénierie pour les applications Android binaires fermées de tiers. Il peut décoder les ressources dans une forme presque originale et les reconstruire après quelques modifications.
- Désassemblage d'un fichier APK Android
- Reconstruction des ressources décodées en APK/JAR binaire avec signature de certificat
apktool b <modified folder>
keytool -genkey -v -keystore keys/test.keystore -alias Test -keyalg RSA -keysize 1024 -sigalg SHA1withRSA -validity 10000
jarsigner -keystore keys/test.keystore dist/test.apk -sigalg SHA1withRSA -digestalg SHA1 Test
- Bytecode Viewer - Bytecode Viewer est un visualiseur de bytecode Java avancé et léger. Il est entièrement écrit en Java et open source.
- Jadx - Décompilateur Dex vers Java : outils en ligne de commande et avec interface graphique pour produire du code source Java à partir de fichiers Android Dex et Apk.
- APK Studio - IDE open source, multiplateforme, basé sur Qt pour la rétro-ingénierie de paquets d'applications Android.
- Oat2dex - Un outil pour convertir les fichiers .oat en fichiers .dex.
- Déoptimiser les classes de démarrage (la sortie sera dans les dossiers « odex » et « dex »)
java -jar oat2dex.jar boot <boot.oat file>
Analyse dynamique et à l'exécution
- Cydia Substrate - Cydia Substrate pour Android permet aux développeurs de modifier des logiciels existants grâce à des extensions Substrate injectées dans la mémoire du processus cible.
- Xposed Framework - Le framework Xposed permet de modifier l'apparence et le comportement du système ou d'une application à l'exécution, sans modifier un quelconque paquet d'application Android (APK) ni réinstaller le firmware.
- PID Cat - Une mise à jour de l'excellent script coloré logcat de Jeff Sharkey qui n'affiche que les entrées de journal des processus d'un paquet d'application spécifique.
- Inspeckage - Inspeckage est un outil développé pour offrir une analyse dynamique des applications Android. En appliquant des hooks aux fonctions de l'API Android, Inspeckage vous aide à comprendre ce qu'une application Android fait à l'exécution.
- Frida - Cette boîte à outils fonctionne selon un modèle client-serveur et permet d'injecter du code dans des processus en cours d'exécution non seulement sous Android, mais aussi sous iOS, Windows et Mac.
- Diff-GUI - Un framework web pour commencer l'instrumentation avec les modules disponibles, le hooking natif, et l'injection de JavaScript à l'aide de Frida.
- Fridump - Fridump utilise le framework Frida pour extraire les adresses mémoire accessibles de toute plateforme prise en charge. Il peut être utilisé depuis un système Windows, Linux ou Mac OS X pour extraire la mémoire d'une application iOS, Android ou Windows.
- House - Une boîte à outils d'analyse d'applications mobiles à l'exécution avec une interface web, propulsée par Frida. Elle est conçue pour aider à évaluer les applications mobiles en implémentant le hooking et l'interception dynamiques de fonctions, et vise à rendre l'écriture de scripts Frida aussi simple que possible.
- AndBug - AndBug est un débogueur ciblant la machine virtuelle Dalvik de la plateforme Android, destiné aux rétro-ingénieurs et aux développeurs.
- Identification du processus de l'application à l'aide d'adb shell
adb shell ps | grep -i "App keyword"
Analyse réseau et tests côté serveur
- Tcpdump - Un utilitaire en ligne de commande pour la capture de paquets.
- Wireshark - Un analyseur de paquets open source.
- Captures de paquets en direct (temps réel)
adb shell "tcpdump -s 0 -w - | nc -l -p 4444"
adb forward tcp:4444 tcp:4444
nc localhost 4444 | sudo wireshark -k -S -i –
- Mallory - Un outil d'homme du milieu (MiTM) utilisé pour surveiller et manipuler le trafic sur les appareils et applications mobiles.
- Burp Suite - Burp Suite est une plateforme intégrée pour effectuer des tests de sécurité d'applications.
- Installation d'une autorité de certification (CA) de confiance au niveau du système d'exploitation Android (appareil rooté/émulateur) pour Android N+ comme suit :
openssl x509 -inform PEM -subject_hash -in BurpCA.pem | head -1
cat BurpCA.pem > 9a5ba580.0
openssl x509 -inform PEM -text -in BurpCA.pem -out /dev/null >> 9a5ba580.0
adb root
Contournement de la détection de root et de l'épinglage SSL
- Magisk - Les suites Magisk fournissent un accès root à votre appareil, la capacité de modifier les partitions en lecture seule en installant des modules, et de masquer Magisk aux détections de root / vérifications d'intégrité du système.
- Xposed Module: Just Trust Me - Module Xposed pour contourner l'épinglage de certificat SSL.
- Xposed Module: SSLUnpinning - Module Xposed Android pour contourner la validation des certificats SSL (épinglage de certificat).
- Cydia Substrate Module: Android SSL Trust Killer - Outil de type boîte noire pour contourner l'épinglage de certificat SSL pour la plupart des applications fonctionnant sur un appareil.
- Cydia Substrate Module: RootCoak Plus - Patche la détection de root pour les indicateurs de root couramment connus.
- Android-ssl-bypass - un outil de débogage Android qui peut être utilisé pour contourner SSL, même lorsque l'épinglage de certificat est implémenté, ainsi que pour d'autres tâches de débogage. L'outil fonctionne comme une console interactive.
- Apk-mitm - Une application CLI qui prépare automatiquement les fichiers APK Android pour l'inspection HTTPS
- Frida CodeShare - Le projet Frida CodeShare est composé de développeurs du monde entier travaillant ensemble avec un seul objectif : repousser les limites de Frida de manières nouvelles et innovantes.
- Contournement de la détection de root
frida --codeshare dzonerzy/fridantiroot -f YOUR_BINARY
- Contournement de l'épinglage SSL
frida --codeshare pcipolloni/universal-android-ssl-pinning-bypass-with-frida -f YOUR_BINARY
Bibliothèques de sécurité
- PublicKey Pinning - L'épinglage sur Android peut être réalisé via un X509TrustManager personnalisé. Le X509TrustManager doit effectuer les vérifications X509 habituelles en plus de la configuration de l'épinglage.
- Android Pinning - Un projet de bibliothèque autonome pour l'épinglage de certificats sur Android.
- Java AES Crypto - Une classe Android simple pour chiffrer et déchiffrer des chaînes de caractères, visant à éviter les erreurs classiques dont souffrent la plupart de ces classes.
- Proguard - ProGuard est un outil gratuit de réduction, d'optimisation, d'obfuscation et de prévérification des fichiers de classes Java. Il détecte et supprime les classes, champs, méthodes et attributs inutilisés.
- SQL Cipher - SQLCipher est une extension open source de SQLite qui fournit un chiffrement AES 256 bits transparent des fichiers de base de données.
- Secure Preferences - Wrapper Android pour Shared Preferences qui chiffre les clés et les valeurs des Shared Preferences.
- Trusted Intents - Bibliothèque pour des interactions de confiance flexibles entre les applications Android.
- RootBeer - Une bibliothèque de détection de root et une application d'exemple.
- End-to-end encryption - Capillary est une bibliothèque qui simplifie l'envoi de messages push chiffrés de bout en bout depuis des serveurs d'applications Java vers des clients Android.
Tests d'intrusion d'applications iOS
Accéder au système de fichiers sur un appareil iDevice
- FileZilla - Prend en charge FTP, SFTP, et FTPS (FTP sur SSL/TLS).
- Cyberduck - Navigateur libre FTP, SFTP, WebDAV, S3, Azure et OpenStack Swift pour Mac et Windows.
- itunnel - Utilisé pour transférer SSH via USB.
- iProxy - Vous permet de connecter votre ordinateur portable à l'iPhone pour naviguer sur le web.
- iFunbox - L'outil de gestion de fichiers et d'applications pour iPhone, iPad et iPod Touch.#### Rétro-ingénierie et analyse statique
- otool - La commande otool affiche les parties spécifiées des fichiers objets ou des bibliothèques.
- Clutch - Déchiffre l'application et extrait le bundleID spécifié dans un fichier binaire ou .ipa.
- Dumpdecrypted - Extrait les fichiers mach-o déchiffrés d'applications iPhone chiffrées, de la mémoire vers le disque. Cet outil est nécessaire aux chercheurs en sécurité pour pouvoir examiner les entrailles du chiffrement.
iPod:~ root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Applications/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Scan.app/Scan
- class-dump - Un utilitaire en ligne de commande pour examiner les informations d'exécution Objective-C stockées dans les fichiers Mach-O.
- dsdump - Un class-dump amélioré nm + objc/swift.
- Weak Classdump - Un script Cycript qui génère un fichier d'en-tête pour la classe passée à la fonction. Très utile lorsque vous ne pouvez pas utiliser classdump ou dumpdecrypted, lorsque les binaires sont chiffrés, etc.
iPod:~ root# cycript -p Skype weak_classdump.cy; cycript -p Skype
Analyse dynamique et à l'exécution
- cycript - Cycript permet aux développeurs d'explorer et de modifier des applications en cours d'exécution sur iOS ou Mac OS X en utilisant un hybride de syntaxe Objective-C++ et JavaScript via une console interactive dotée de la coloration syntaxique et de la complétion par tabulation.
- Afficher le contrôleur de vue actuellement visible
cy# UIApp.keyWindow.rootViewController.visibleViewController
- Afficher le contrôleur de vue en haut de la pile de navigation
cy# UIApp.keyWindow.rootViewController.topViewController
- Obtenir un tableau des objets existants d'une certaine classe
cy# choose(UIViewController)
- UI Dump, coupe beaucoup de descriptions des UIViews
cy# [[UIApp keyWindow] _autolayoutTrace].toString()
- Ignorer les UIViews et les nextResponders pour obtenir directement les ViewControllers
cy# [[[UIApp keyWindow] rootViewController] _printHierarchy].toString()
- Lister les méthodes à l'exécution
cy# classname.messages ou
cy# function printMethods(className, isa) { var count = new new Type("I"); var classObj = (isa != undefined) ? objc_getClass(className)->isa : objc_getClass(className); var methods = class_copyMethodList(classObj, count); var methodsArray = []; for(var i = 0; i < *count; i++) { var method = methods[i]; methodsArray.push({selector:method_getName(method), implementation:method_getImplementation(method)}); } free(methods); return methodsArray; }
Analyse réseau et tests côté serveur
- Mallory - Un outil d'homme du milieu (MiTM) utilisé pour surveiller et manipuler le trafic sur les appareils et applications mobiles.
- Burp Suite - Burp Suite est une plateforme intégrée pour effectuer des tests de sécurité des applications.
- OWASP ZAP - OWASP Zed Attack Proxy Project est un scanner de sécurité open-source pour applications web. Il est destiné à la fois aux novices en sécurité des applications et aux testeurs d'intrusion professionnels.
- Charles Proxy - Proxy HTTP / moniteur HTTP / proxy inverse qui permet à un développeur de visualiser tout le trafic HTTP et SSL / HTTPS entre sa machine et Internet.
Contournement de la détection de root et de l'épinglage SSL
- SSL Kill Switch 2 - Outil blackbox pour désactiver la validation des certificats SSL - y compris l'épinglage de certificats - dans les applications iOS et OS X.
- iOS TrustMe - Désactive les vérifications de confiance des certificats sur les appareils iOS.
- tsProtector - Un autre outil pour contourner la détection de jailbreak.
- JailProtect - Outre le contournement de la détection de jailbreak, il vous permet également de falsifier facilement la version de votre firmware iOS.
- Shadow - Shadow est un tweak pour contourner la détection de jailbreak qui neutralise les méthodes de détection de base utilisées par de nombreuses applications App Store.
- Frida CodeShare - Le projet Frida CodeShare est composé de développeurs du monde entier travaillant ensemble avec un objectif commun - repousser les limites de Frida de manière nouvelle et innovante.
- Contournement de l'épinglage SSL
frida --codeshare lichao890427/ios-ssl-bypass -f YOUR_BINARY
frida --codeshare dki/ios10-ssl-bypass -f YOUR_BINARY
Bibliothèques de sécurité
- PublicKey Pinning - L'épinglage iOS est effectué via un NSURLConnectionDelegate. Le délégué doit implémenter connection:canAuthenticateAgainstProtectionSpace: et connection:didReceiveAuthenticationChallenge:. Dans connection:didReceiveAuthenticationChallenge:, le délégué doit appeler SecTrustEvaluate pour effectuer les vérifications X509 habituelles.
- Swiftshield - SwiftShield est un outil qui génère des noms irréversibles et chiffrés pour les objets de votre projet iOS (y compris vos Pods et Storyboards) afin de protéger votre application contre les outils de rétro-ingénierie iOS, comme class-dump et Cycript.
- IOSSecuritySuite - iOS Security Suite est une bibliothèque avancée et facile à utiliser pour la sécurité de la plateforme et la protection contre l'altération, écrite en Swift pur ! Si vous développez pour iOS et souhaitez protéger votre application conformément à la norme OWASP MASVS, chapitre v8, cette bibliothèque pourrait vous faire gagner beaucoup de temps.
- OWASP iMAS - iMAS est un projet de recherche collaboratif de la MITRE Corporation axé sur les contrôles de sécurité iOS open source.
Laboratoire de tests d'intrusion mobile
- WaTF Bank - What-a-Terrible-Failure Mobile Banking Application (WaTF-Bank), écrite en Java, Swift 4, Objective-C et Python (framework Flask) comme serveur backend, est conçue pour simuler une application bancaire mobile réelle compatible avec les services web et contenant plus de 30 vulnérabilités basées sur les risques du Top 10 Mobile OWASP.
- InsecureBankv2 - Cette application Android vulnérable s'appelle « InsecureBankv2 » et est conçue pour les passionnés de sécurité et les développeurs afin d'apprendre les failles Android en testant cette application vulnérable. Son composant serveur back-end est écrit en Python.
- DVIA-v2 - Damn Vulnerable iOS App (DVIA) est une application iOS extrêmement vulnérable. Son objectif principal est de fournir une plateforme aux passionnés/professionnels de la sécurité mobile ou aux étudiants pour tester leurs compétences en tests d'intrusion iOS dans un environnement légal.
- DIVA Android - DIVA (Damn insecure and vulnerable App) est une application volontairement conçue pour être non sécurisée. L'objectif de l'application est d'enseigner aux développeurs/QA/professionnels de la sécurité les défauts généralement présents dans les applications en raison de mauvaises pratiques de codage ou de pratiques non sécurisées.
- DVHMA - Damn Vulnerable Hybrid Mobile App (DVHMA) est une application mobile hybride (pour Android) qui contient volontairement des vulnérabilités. Son but est de permettre aux professionnels de la sécurité de tester leurs outils et techniques légalement, et d'aider les développeurs à mieux comprendre les pièges courants lors du développement sécurisé d'applications mobiles hybrides.
- MSTG Hacking Playground - Il s'agit d'une collection d'applications mobiles iOS et Android, volontairement conçues comme non sécurisées. Ces applications servent d'exemples pour illustrer les différentes vulnérabilités expliquées dans l'OWASP Mobile Security Testing Guide.
- UnCrackable Mobile Apps - UnCrackable Apps pour Android et iOS, une collection de défis de rétro-ingénierie mobile. Ces défis sont utilisés comme exemples tout au long du Mobile Security Testing Guide.
- OWASP iGoat - Goat est un outil d'apprentissage pour les développeurs iOS (iPhone, iPad, etc.) et les pentesters d'applications mobiles. Il s'inspire du projet WebGoat et en suit un flux conceptuel similaire.
Contribution
Vos contributions et suggestions sont les bienvenues.
Licence

Ce travail est sous licence Creative Commons Attribution 4.0 International License.