Pentest d'Applications Mobile Android: Frida, MobSF et Lab Genymotion
Setup complet pour l'analyse dynamique de vos propres APK avec Frida, MobSF et Genymotion, hooks pratiques et checklist technique inclus.
Un APK est un fichier zip deguise, et c'est precisement ce qui rend le pentest mobile Android aussi amusant que chirurgical. Chez Basilisk OffSec, nous montons des labs ou nous ne testons que des binaires que nous possedons ou pour lesquels nous avons une autorisation ecrite, car retro-ingenierer une app tierce sans consentement reste un delit federal dans presque toutes les juridictions. Avant le moindre hook Frida, on definit perimetre, contrat et modele de menace, dans l'esprit de Threat Modeling STRIDE en Sprints : Exemple Complet sur un Microservice. Sans ca, ce n'est pas de la recherche, c'est une collection de convocations judiciaires.
La stack de base recommandee en 2026 est simple: Genymotion Personal pour l'emulation x86_64 avec Google Apps en option, MobSF en Docker pour l'analyse statique et dynamique automatisee, Frida 16.x avec frida-tools sur l'hote, objection pour accelerer les workflows et jadx-gui pour lire le smali decompile. Genymotion bat l'AVD en vitesse d'IO et expose ADB sur le port 5555 par defaut. Lancez une image Android 13 rootee, deployez Magisk via setup-frida et poussez frida-server-arm64 dans /data/local/tmp en 755. En moins de quinze minutes vous avez un environnement reproductible, isole de votre reseau de prod, dans la philosophie de Analyse de Malware en Lab Isole: Setup Securise avec FlareVM et REMnux.
MobSF est votre premier pivot. Lancez-le avec docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest, glissez l'APK dans l'interface et il extrait AndroidManifest, permissions dangereuses, secrets en dur, controles Janus, WebView avec setJavaScriptEnabled active et meme les domaines exposes dans network_security_config. Le scan statique remonte regulierement des tokens AWS oublies, des cles Firebase aux regles publiques et des endpoints de staging que personne ne devait voir. Servez-vous de cette cartographie pour guider vos hypotheses dynamiques, sans prendre le score numerique de MobSF pour parole d'evangile. Comme tout SAST il fait du bruit, comme on l'aborde dans AppSec Shift-Left: SAST, SCA et Secrets Scanning sans Bloquer l Equipe.
Surface cartographiee, ouvrez Frida. Exemple classique: contourner le SSL pinning pour inspecter le trafic TLS dans Burp ou mitmproxy. Chargez le script avec frida -U -f com.societe.app -l ssl-bypass.js --no-pause; le hook reecrit checkServerTrusted dans TrustManagerImpl et neutralise okhttp3 CertificatePinner. Sans pinning, vous devenez proxy man-in-the-middle dans l'emulateur, capturez des JSON authentifies et testez l'API back comme un pentest web classique, avec Burp configure comme dans Pentest Web depuis Zero: Construire un Lab Sur avec DVWA, Juice Shop et Burp Suite. Rappel: ce bypass n'est legitime que sur une app que vous avez le droit d'auditer.
Trafic propre, attaquez l'API. Les vecteurs classiques reviennent: mass assignment, IDOR sur /v2/users/{id}, JWT avec algorithme none, GraphQL avec introspection ouverte. Appliquez la methodologie de Pentest APIs REST et GraphQL : Checklist Technique pour Bug Bounty Legal et, pour l'injection backend, validez les candidats avec des payloads parametres comme dans SQL Injection en Pratique: Exploiter, Detecter et Mitiger dans un Lab Controle. Autre cible sous-estimee: le WebView interne. Si l'app charge du HTML distant sans allowlist, vous pouvez enchainer un XSS dans un contexte privilegie via addJavascriptInterface qui expose des methodes Java au JS, attaque detaillee dans XSS Moderne: DOM, Stored et Reflected avec Exemples Reels en Environnement de Test.
Les hooks sur mesure font la difference. Trois scripts Frida en or: dump des cles AES passees a Cipher.init en capturant le premier argument de SecretKeySpec; instrumentation de SharedPreferences.Editor.putString pour detecter les tokens stockes en clair; et hook sur java.io.File pour journaliser tout ce qui est ecrit sous /data/data/com.societe.app pendant le login. Combinez avec adb shell run-as com.societe.app pour extraire les bases sqlite et les ouvrir dans sqlitebrowser. Lors d'un audit recent, nous avons trouve un refresh_token persiste hors keystore, defaut qui s'est transforme en account takeover en une apres-midi.
Ne concluez pas sans passer en revue les defenses runtime. Verifiez la detection root via RootBeer, la detection Frida par scan des ports locaux (27042), la detection d'emulateur via Build.FINGERPRINT et l'integrite via Play Integrity API. Documentez precisement comment chaque controle a ete contourne et proposez une defense en profondeur, pas des solutions miracles. Cote serveur, durcissez SSH sur le bastion API selon Durcissement SSH 2026 : Algorithmes, Certificats et Bastion Hosts et nettoyez les artefacts avant d'envoyer le rapport, comme dans Hygiene des Metadonnees : Nettoyer EXIF, PDF et Office avant Publication. Takeaway pratique: faites tourner Genymotion, MobSF et Frida dans une VM dediee, avec un snapshot propre par mission, jamais reliee a votre identite personnelle.