Dans ce référentiel, nous trouverons un guide étape par étape sur la façon de procéder à l'ingénierie inverse d'un APK.
L'ingénierie inverse peut nous aider dans plusieurs aspects, comme l'identification de logiciels ou de codes malveillants , la découverte de failles de sécurité , la recherche de fonctionnalités inattendues /la violation des règles métier... Cela dit, approfondissons l'univers Android.
En commençant par les bases, nous pouvons diviser notre package Android (APK) en plusieurs parties :
Smali est la version lisible par l'homme du bytecode Dalvik, en termes simples, il fonctionne comme un assemblage/désassemblage. Format exécutable Dalvik (.dex)
En termes de code, regardons la différence entre Java et Smali :
public static void printHelloWorld() {
System.out.println("Hello World")
}
Et notre même code en Smali :
.method public static printHelloWorld()V
.registers 2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "Hello World"
invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method
Nous avons passé en revue les concepts de base nécessaires et maintenant nous nous mettons au travail !
Étape 1 :
Choisissez l’APK que vous souhaitez inverser.
Si vous ne parvenez pas à le trouver facilement via l'App Store lui-même, vous pouvez le faire directement sur des sites comme APKCombo ou APKMonk.
Une fois ici, faites attention à certaines choses qui peuvent être intéressantes :
- Qual é o URL da API? (geralmente emos algo como api.domain.com)
- Qual é método de autenticação utilizado? Eu preciso criar um login para acessar?
- Quais são as chamadas que eu posso encontrar e quais são os parâmetros eles esperam?
Une fois que nous avons l’APK, il est temps de le décompiler pour pouvoir analyser le code.
(Des outils d'analyse dynamique tels que MOBSF permettent de télécharger directement le code, que ce soit en Java ou SMALI).
Nous allons maintenant utiliser des outils, dont le premier est APKTOOL, vous verrez plus de détails ci-dessous, mais en général, il se chargera de décompiler les fichiers, en créant un dossier, au même endroit, avec tous les fichiers décompilés. . De là, vous pourrez analyser tous les codes nécessaires.
La commande utilisée ici sera la suivante :
- apktool d ~/Desktop/aplicativo_app.apk
Extraction du fichier « classes.dex » de l'APK.
Utilisez l'outil dex2jar pour convertir en fichiers de classe Java. Résultat: un fichier jar.
- sh d2j-dex2jar.sh classes.dex
Utilisez JD-GUI pour extraire le code source du fichier jar.
- Arraste o arquivo classes-dex2jar.jar pro JD-GUI
Mobile Security Framework est un outil qui automatise l'analyse des APK. À l’intérieur, nous obtenons plus de détails sur les parties qui composent les APK, comme nous l’avons vu précédemment.
dex2jar
dédexeur
outil apk
apktool est un outil Java open source pour la rétro-ingénierie des applications Android. Il peut décoder les fichiers APK selon leur code d'origine dans un XML lisible par l'homme. Diviser également toutes les classes et méthodes contenues dans le fichier en Smali. De cette façon, vous pouvez modifier des fonctionnalités ou des exécutions de programmes. En utilisant le code Smali, vous pouvez ajouter de nouvelles fonctionnalités au sein de cette application ou modifier le comportement attendu.
Couramment utilisé pour l’épinglage SSL.
adb (pont de débogage Android)
androgarde
Cadre Xposed
Commandes : //bientôt
Contourner le SSL Android
Frida
Maintenant que nous avons une base sur la façon dont cela fonctionne, il est temps de s’entraîner ! Voici une liste de quelques ateliers que vous pouvez utiliser comme exercice :
Testez les types d'attaques suivants :
Merci d'être venu ici ! Passe une bonne journée.