Analyser le trafic sortant d’une application android (apk)

Récemment, j’ai lu un article sur frandoid qui expliquait que certains profitaient de promotions sur les téléphones Xiaomi en cumulant des points sur l’application MI Store. L’astuce consistait à cliquer sur un icone 1 fois chaque jours de l’année. N’ayant pas envie de faire cette tâche rébarbative, mais souhaitant quand même bénéficier de la promotion, je me suis lancé dans l’analyse des trames de l’application. Voyons ensemble comment ca fonctionne.

Comment fonctionne ce genre d’applications ?

En général, une application Android envoie des infos au serveur du genre + 50 points pour l’utilisateur X et le serveur rajoute les points en base de données. L’application masque ensuite l’icone pour éviter un nouveau clic. Si c’est mal fait, alors rejouer la requête rajoutera de nouveaux les points, et si c’est bien fait, alors il y aura un contrôle coté serveur pour bloquer cette nouvelle requête. Notre objectif est de nous poser entre l’application et le serveur et d’intercepter les requêtes pour voir ce qui est envoyé. On appelle cette technique : MITM (man in the middle).

Préparation du PC :

Un PC sous linux est bien plus simple à configurer, mais j’imagine que cela doit aussi fonctionner pour Windows, ou Mac.

On commence par télécharger l’apk d’origine via le site
https://m.apkpure.com/fr/mi-store/com.mi.global.shop (qu’on renomme mi.apk)
Puis on installe le SDK Android, et l’application MITM Proxy (il crééra automatiquement un certificat).

apt://android-sdk
apt-get install mitmproxy
ifconfig (pour récupérer l’ip du PC, on en aura besoin ensuite)
mitmproxy

Ensuite, il faut modifier l’application d’origine pour la signer numériquement avec un certificat à nous. Pour cela, on fera:
git clone https://github.com/levyitay/AddSecurityExceptionAndroid.git
cd AddSecurityExceptionAndroid
./addSecurityExceptions.sh mi.apk -b /usr/bin/ -k ~/.android/debug.keystore

Le fichier debug.keystore a été créé par mitmproxy. Normalement, si tout se passe bien, à ce stade, vous devriez avoir un fichier nommé mi_new.apk .

Préparation du téléphone:

On branche le téléphone en USB et on commence par autoriser l’installation d’applications de sources inconnues, ainsi que le mode debug. L’application d’origine (ici MI Store) doit avoir été désinstallée. On lance:

adb devices
Notre téléphone devrait apparaitre. Il va falloir lui envoyer/installer le certificat généré précédemment.
Copier le fichier ~/.mitmproxy/mitmproxy-ca-cert.pem ainsi que le mi_new.apk sur son google drive 
ou faire la manipulation suivante
adb push ~/.mitmproxy/mitmproxy-ca-cert.pem /sdcard/
adb push ~/.mitmproxy/mi_new.apk /sdcard/

Ensuite, aller dans Certificat > Certificat CA , et Installer le fichier mitmproxy-ca-cert.pem

On peut maintenant installer notre nouveau mi_new.apk, et préparer la config réseau.
Pour cela, il faut bloquer les données mobiles, et activer le wifi.
Modifier les paramètres réseaux du wifi en ajoutant un proxy sur l’ip du PC et sur le port 8080. Ca y’est, vous devriez voir toutes les requêtes passer via le PC !

Analyse des trames:

Voici ce qu’on peut observer:

analyse trame apk mi store
Liste des requêtes qui passent
analyse trame apk mi store
Détail de la requête pour gagner les points chaque jour
analyse trame apk mi store
Détail d’une requête

On voit par exemple que souvent on lance des requêtes qui sont du type ?taskId=11 ou ?taskId=12 pour ajouter les points au départ, ou encore getcoupons pour gagner les points quotidien.
Je comprends mieux comment Cocadmin avait fait son analyse des flux TikTok.

Conclusion:

Cet article complète un peu le précédent qui expliquait comment modifier un apk. Au final, l’application Xiaomi semble bien coder, et le fait de rejouer les requêtes n’a pas donné grand chose. Il va falloir que je creuse un peu plus profondément, et peut être qu’un jour, je trouverais quelque chose à exploiter. Merci à ce tutoriel qui m’a bien aiguillé pour en arriver là.

Au final, même si je sors bredouille de mes recherches, je peux maintenant observer chacune des applications et voir ce qui est envoyé, et cela me permet de mieux me rendre compte de comment marche le monde des APK et de mieux ajuster les urls à bloquer pour les trackings publicitaires.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.