| name | mobile-pentesting-android |
| description | Guide complet de pentest Android — APK reverse engineering, Frida, Objection, SSL pinning bypass, root detection, dynamic analysis |
| category | cybersecurite |
Mobile Pentesting Android — Guide Avancé
Configuration de l'Environnement
Émulateur Android
avdmanager create avd -n Pixel6_API33 -k "system-images;android-33;google_apis;x86_64"
emulator -avd Pixel6_API33 -writable-system -no-snapshot -qemu -enable-kvm
adb devices
adb connect 192.168.1.10:5555
Installation des Outils
pip install frida-tools
pip install objection
apt install apktool jadx dex2jar
pip install androguard
adb shell settings put global http_proxy 192.168.1.100:8080
adb push burp-ca.der /sdcard/
adb shell su -c "mount -o remount,rw /system"
adb shell su -c "cp /sdcard/burp-ca.der /system/etc/security/cacerts/9a5ba580.0"
adb shell su -c "chmod 644 /system/etc/security/cacerts/9a5ba580.0"
adb shell su -c "reboot"
Reverse Engineering d'APK
Extraction et Décompilation
adb shell pm path com.target.app
adb pull /data/app/com.target.app-*/base.apk
jadx-gui base.apk
apktool d base.apk -o app_smali/
d2j-dex2jar base.apk -o app.jar
jadx base.apk -d app_java/
Analyse Statique
Recherche de secrets:
grep -r "api_key\|apikey\|API_KEY\|secret\|password\|token" app_java/ | grep -v ".class"
grep -r "https\?://" app_java/ | sort -u
grep -r "\.com\|\.net\|\.io" app_java/ | sort -u
grep -r "AKIA[0-9A-Z]*" app_java/
grep -r "-----BEGIN RSA PRIVATE KEY-----" app_java/
Analyse du AndroidManifest.xml:
apktool d base.apk && cat AndroidManifest.xml | grep "android:exported"
grep "uses-permission" AndroidManifest.xml
grep "android:allowBackup" AndroidManifest.xml
grep "android:debuggable" AndroidManifest.xml
grep "android:scheme" AndroidManifest.xml
SSL Pinning Bypass
Frida — Universal SSL Unpin
Java.perform(function() {
var CertificateFactory = Java.use('java.security.cert.CertificateFactory');
CertificateFactory.getInstance.overload('java.lang.String').implementation = function(type) {
console.log('[+] CertificateFactory.getInstance called: ' + type);
return this.getInstance.call(this, type);
};
var X509TrustManager = Java.use('javax.net.ssl.X509TrustManager');
var TrustManagerImpl = Java.use('com.android.org.conscrypt.TrustManagerImpl');
TrustManagerImpl.verifyChain.implementation = function(untrusted, trustAnchor, chain) {
return untrusted;
};
var HostnameVerifier = Java.use();
.. = () {
.( + hostname);
;
};
= .();
..(, ). = () {
..(, host, port);
};
{
= .();
..(, ). = () {
.( + hostname);
};
} (e) { .(); }
});
Objection — SSL Pinning Bypass Automatique
objection -g com.target.app explore
objection> android sslpinning disable
objection> android sslpinning list
Frida Multi-Unpin Script
frida -U -l frida-multi-unpin.js -f com.target.app --no-pause
apktool d base.apk
cp /usr/lib/frida/frida-gadget-*.so ./lib/x86_64/
echo "interact" > lib/x86_64/frida-gadget.config.so
apktool b app/ -o patched.apk
jarsigner -keystore my.keystore patched.apk alias
adb install patched.apk
Root Detection Bypass
Methodes de détection communes
grep -r "ro.build.tags\|secure\|build.prop" app_java/
grep -r "su\|magisk\|superuser" app_java/
grep -r "test-keys" app_java/
strings lib/armeabi-v7a/libnative.so | grep -i "su\|root"
Frida — Root Detection Bypass
Java.perform(function() {
var RootBeer = Java.use('com.scottyab.rootbeer.RootBeer');
RootBeer.isRooted.implementation = function() {
console.log('[+] RootBeer bypassed');
return false;
};
var File = Java.use('java.io.File');
File.exists.implementation = function() {
var path = this.getAbsolutePath();
if (path.toLowerCase().contains('su') ||
path.toLowerCase().contains('magisk') ||
path.toLowerCase().contains('busybox')) {
console.log('[+] Blocked file check: ' + path);
return false;
}
return ..();
};
= .();
..(). = () {
( i = ; i < cmdarray.; i++) {
(cmdarray[i].().() ||
cmdarray[i].().()) {
.( + cmdarray[i]);
;
}
}
..(, cmdarray);
};
});
Analyse Dynamique
Network Monitoring
mitmproxy -p 8080 --mode transparent
adb shell su -c "tcpdump -i any -s 0 -w /sdcard/capture.pcap"
adb pull /sdcard/capture.pcap
frida -U -l network-dump.js com.target.app
Filesystem Analysis
adb shell
run-as com.target.app
cat /data/data/com.target.app/shared_prefs/*.xml
adb shell run-as com.target.app sqlite3 databases/app.db ".tables"
adb shell run-as com.target.app sqlite3 databases/app.db "SELECT * FROM accounts;"
adb shell ls -la /data/data/com.target.app/cache/
adb shell ls -la /data/data/com.target.app/app_webview/
Intent Spoofing / Deep Links
adb shell am start -a android.intent.action.VIEW -d "customscheme://reset_password?token=INJECTED"
adb shell am start -n com.target.app/.activities.AdminActivity
adb shell am broadcast -a com.target.app.ACTION_RESET -n com.target.app/.receivers.ResetReceiver
Frida Hooking Avancé
Cryptographic operations:
Java.perform(function() {
var Cipher = Java.use('javax.crypto.Cipher');
Cipher.doFinal.overload('[B').implementation = function(input) {
console.log('[+] Cipher.doFinal called');
console.log(hexdump(input));
return this.doFinal.call(this, input);
};
var SecretKeySpec = Java.use('javax.crypto.spec.SecretKeySpec');
SecretKeySpec.$init.overload('[B', 'java.lang.String').implementation = function(key, algo) {
console.log('[+] SecretKeySpec: ' + algo);
console.log('Key: ' + bytesToHex(key));
return this.$init.(, key, algo);
};
});
Outils Essentiels
| Outil | Description |
|---|
| Frida | Dynamic instrumentation framework |
| Objection | Mobile exploration tool (Frida-based) |
| JADX | DEX to Java decompiler |
| APKTool | APK reverse engineering tool |
| AndroGuard | Static/dynamic analysis |
| MobSF | Mobile Security Framework (automated) |
| Drozer | Android security assessment |
| RMS (Runtime Mobile Security) | Frida-based runtime security |
| Inspeckage | Dynamic analysis tool |
MobSF — Analyse Automatisée
git clone https://github.com/MobSF/Mobile-Security-Framework-MobSF
cd Mobile-Security-Framework-MobSF
./setup.sh
./run.sh
curl -F "file=@base.apk" http://localhost:8000/api/v1/upload
curl http://localhost:8000/api/v1/scan/<HASH>
Checklist Pentest Android
- APK reverse engineering (jadx, apktool)
- Analyse manifest (exported components, permissions)
- Hardcoded secrets (API keys, tokens)
- SSL pinning bypass
- Root detection bypass
- Data storage analysis (SQLite, SharedPrefs)
- Network traffic interception
- Intent injection / deep links
- WebView vulnerabilities
- Insecure random number generation
- Weak cryptography
- Tapjacking / Overlay attacks
- Backup exploitation (adb backup)
- Frida hooking for auth bypass
- Drozer attack surface assessment
Ressources