Pour les développeurs Android, r0capture est un outil puissant permettant d'intercepter tout le trafic applicatif, y compris les communications chiffrées, sans avoir besoin de contourner manuellement les épinglages SSL ou d'installer des certificats.
Fonctionnalités clés
- Cible : Exclusivement Android (testé sur les versions 7 à 10)
- Décryptage transparent : Ignore toutes les vérifications de certificat, même les épinglages SSL
- Protocoles pris en charge : HTTP(S), WebSocket, FTP, XMPP, IMAP, SMTP, Protobuf, etc.
- Frameworks compatibles : HttpURLConnection, OkHttp (v1/3/4), Retrofit, Volley, etc.
Principe de fonctionnement
L’outil s’appuie sur Frida pour intercepter les appels aux fonctions SSL_read() et SSL_write() dans les processus ciblés. Il déchiffre les données en temps réel et peut les exporter au format PCAP pour analyse ultérieure.
Configuration initiale
pip install frida hexdump
git clone https://gitcode.com/gh_mirrors/r0/r0capture
cd r0capture
Commandes de base
# Capture simple vers un fichier PCAP
python r0capture.py -pcap traffic.pcap com.mon.app
# Sortie détaillée + PCAP
python r0capture.py -verbose -pcap debug.pcap com.mon.app
# Spécifier une bibliothèque SSL personnalisée
python r0capture.py -ssl "*libssl.so*" com.mon.app
Paramètres avancés
| Option | Description | Exemple |
|---|---|---|
-pcap |
Chemin du fichier PCAP de sortie | -pcap trace.pcap |
-host |
Connexion à un serveur Frida distant | -host 192.168.1.1:27042 |
-U |
Utiliser un périphérique USB | -U |
-f |
Lancer l’application avant capture | -f |
-wait |
Délai d’attente avant capture (en secondes) | -wait 5 |
Scénarios d’utilisation avancés
Contournement automatique de l’épinglage SSL
python r0capture.py -U -pcap bypassed.pcap com.app.securisee
Extraction de certificats clients
Si l’application utilise un certificat client, r0capture l’extrait automatiquement et le sauvegarde sur le périphérique sous /sdcard/Download/ au format P12 (mot de passe : r0ysue).
Localisation du code d’épinglage
L’outil identifie parfois l’emplacement du certificat épinglé, par exemple :
SSLpinning position locator => /data/data/com.mon.app/certs/bundle.pem
Dépannage courant
- Pas de connexion : Vérifiez
adb deviceset quefrida-servertourne sur le périphérique. - Aucune donnée capturée : Confirmez le nom du package, essayez
-ssl "*libssl.so*", ou vérifiez si une bibliothèque réseau non standard est utilisée. - Permissions : Certaines applciations nécessitent un accès root ou une version spécifique de Frida.
Intégrations avancées
Analyse avec Wireshark
adb pull /sdcard/traffic.pcap ~/Desktop/
# Ouvrir avec Wireshark pour une inspection approfondie
Personnalisation du traitement des messages
function on_message(msg, data) {
if (msg.type === 'send') {
const { payload } = msg;
// Filtrer ou transformer les données ici
console.log('Données interceptées:', payload);
}
}
Automatisatino via script Python
import subprocess
import time
def monitor_app(pkg, pcap_file):
proc = subprocess.Popen([
'python', 'r0capture.py', '-pcap', pcap_file, pkg
])
time.sleep(30) # Capture pendant 30s
proc.terminate()
return pcap_file
monitor_app("com.mon.app", "session_1.pcap")
Bonnes pratiques
- Adaptez les paramètres selon le framework réseau utilisé par l’application.
- Utilisez Wireshark pour analyser les fichiers PCAP complexes.
- Respectez les lois locales et n’utilisez l’outil que sur des applications autorisées.
- Suivez les mises à jour du projet pour bénéficier des correctifs et nouvelles fonctionnalités.
Pour aller plus loin
- Étudiez l’architecture de Frida pour mieux comprendre les mécanismes d’interception.
- Explorez le code source de
r0capturepour ajouter vos propres hooks ou filtres. - Expérimentez avec d’autres bibliothèques réseau comme Cronet ou Netty.