
Kit de test d'intrusion et d'audit pour applications Android.
Un outil Java qui aide à pentester les applications Android plus rapidement, plus facilement et plus efficacement. AndroTickler offre de nombreuses fonctionnalités de collecte d'informations, de vérifications statiques et dynamiques qui couvrent la plupart des aspects du pentesting d'applications Android. Il offre également plusieurs fonctionnalités dont les pentesteurs ont besoin lors de leurs pentests. AndroTickler s'intègre également avec Frida pour fournir le traçage et la manipulation de méthodes. Il a été précédemment publié sous le nom de Tickler.
AndroTickler nécessite un hôte Linux et un appareil Android rooté connecté à son port USB. L'outil n'installe rien sur l'appareil Android, il crée seulement un répertoire Tickler sur /sdcard. AndroTickler dépend du SDK Android pour exécuter des commandes sur l'appareil et copier les données de l'application dans le répertoire TicklerWorkspace sur l'hôte pour une analyse plus approfondie. TicklerWorkspace est le répertoire de travail d'AndroTickler et chaque application possède un sous-répertoire séparé dans TicklerWorkspace qui peut contenir les éléments suivants (selon les actions de l'utilisateur) :
Le répertoire libs et le fichier de configuration Tickler.conf se trouvent dans le même répertoire que le fichier jar. Le fichier de configuration définit l'emplacement du répertoire TicklerDir sur l'hôte et Tickler sur /sdcard de l'appareil Android. Si le fichier de configuration n'existe pas ou si ces deux répertoires ne sont pas définis, les valeurs par défaut seront utilisées (Tickler_workspace dans le répertoire courant et /sdcard/Tickler respectivement). Le répertoire Tickler_lib contient certaines bibliothèques Java et outils externes utilisés par AndroTickler, tels que apktool et dex2jar.
AndroTickler dépend fortement des outils suivants, ils doivent donc exister sur votre machine avant de l'utiliser :
D'autres outils sont nécessaires pour certaines fonctionnalités, mais AndroTickler peut toujours fonctionner sans eux :
Construire l'outil à partir du code
gradle build
Déplacer AndroTickler.jar dans le même répertoire que le répertoire Tickler_lib et le fichier Tickler.conf (créé automatiquement dans build/libs)
Rendre dex2jar exécutable (libs/notJars//dex2jar-2.1/d2j-dex2jar.sh et libs/notJars//dex2jar-2.1/d2j_invoke.sh)
Connectez votre appareil Android avec l'application à tester installée
Remarque : Si la construction du code source échoue, vous pouvez télécharger la dernière version compilée depuis l'onglet releases
La version actuelle fait ce qui suit :
java -jar AndroTickler.jar -h
Lister les applications installées sur l'appareil :
java -jar AndroTickler.jar -pkgs
Recherche une application (package) installée sur l'appareil, dont le nom du package contient le searchKey
java -jar AndroTickler.jar -findPkg <searchKey>
java -jar AndroTickler.jar -pkg <package> [other options]
Toute commande avec une option -pkg (qu'elle soit utilisée avec l'une des options suivantes ou non), effectue les actions suivantes si elles n'ont pas déjà été faites :
java -jar AndroTickler.jar -pkg <package> -info
Renvoie les informations suivantes :
java -jar AndroTickler.jar -pkg <package> -squeeze [short | <codeLocation> ]
Récupère les éléments suivants à partir du code Java décompilé de l'application :
Sans surprise, sa sortie est généralement volumineuse, il est donc recommandé de rediriger la sortie de la commande vers un fichier
short Extrait uniquement le code décompilé qui appartient au développeur. Par exemple, si une application a un nom de package com.notEnaf.myapp, alors squeeze short extrait uniquement le code dans le répertoire com/notEnaf.
Extrait le code uniquement dans le répertoire codeLocation. Utile pour limiter votre recherche ou extraire le code source s'il est disponible.
java -jar AndroTickler.jar -pkg <package> -l [-exp] [-v]
Liste tous les composants de l'application
-exp Affiche uniquement les composants exportés
-v Donne des informations plus détaillées pour chaque composant :
java -jar AndroTickler.jar -pkg <package> -l [-act | -ser | -rec | -prov ] [-exp] [-v]
java -jar AndroTickler.jar -pkg <package> -db [|e|l|d] [nu]
Par défaut, toutes les commandes -db mettent à jour le répertoire de stockage de données de l'application sur l'hôte avant d'exécuter la vérification.
aucun attribut OU e Teste si les bases de données de l'application sont cryptées. C'est l'action par défaut si aucune option n'est donnée après le flag -db. l Liste toutes les bases de données de l'application. Les bases de données cryptées peuvent ne pas être détectées. d Effectue un dump sqlite de l'une des bases de données non cryptées. nu noUpdate : exécute l'une des options ci-dessus sans mettre à jour le répertoire de données de l'application sur l'hôte.
java -jar AndroTickler.jar -pkg <package> -diff [d|detailed]
Copie le répertoire de stockage de données de l'application (dans DataDirOld) puis demande à l'utilisateur d'effectuer l'action souhaitée et d'appuyer sur Entrée lorsqu'il a terminé. Ensuite, il copie à nouveau le répertoire de stockage de données (dans DataDir) et exécute un diff entre eux pour montrer quels fichiers ont été ajoutés, supprimés ou modifiés.
d|detailed Fait la même chose que la commande -diff normale, montre également ce qui a exactement changé dans les fichiers texte et les bases de données non cryptées.
java -jar AndroTickler.jar -pkg <package> -sc <key> [<customLocation>]
Recherche la clé dans les emplacements suivants :
La recherche est insensible à la casse.
Remplace l'emplacement du code Java décompilé par l'emplacement personnalisé.
java -jar AndroTickler.jar -pkg <package> -sd <key>
Recherche la clé donnée dans le répertoire de stockage de données de l'application
Déclenche les composants de l'application, par toutes les combinaisons possibles d'intents. Par exemple, si une activité possède un filtre d'intent avec 2 actions possibles et 3 schémas d'URI de données, alors AndroTickler déclenchera cette activité avec toutes les combinaisons possibles de cet intent. De plus, AndroTickler capture les extras d'intent mentionnés dans la classe Java correspondant au composant, leur attribue des valeurs factices et les ajoute aux combinaisons d'intent possibles. Seuls les extras de type boolean, string, int et float sont pris en charge.
Si l'option -exp est utilisée, les composants seront déclenchés sans privilèges root ni permissions spéciales. Sinon, les composants seront déclenchés avec les privilèges root. Cela permet de tester l'application dans 2 scénarios différents : contre des attaquants à privilèges normaux ou à privilèges élevés.
Avant de déclencher les composants, AndroTickler affiche toutes les commandes à exécuter. Ensuite, pour chaque commande, il déclenche le composant, affiche la commande puis attend l'utilisateur. Cela donne à l'utilisateur suffisamment de temps pour effectuer des vérifications supplémentaires après l'exécution de la commande. Avant de passer à la commande suivante, l'utilisateur a la possibilité de prendre une capture d'écran de l'appareil pour la documentation de la preuve de concept.
java -jar AndroTickler.jar -pkg <package> -t [-all | -exp] [target] [-log]
target comme expliqué avec la commande list, peut être :
si aucune valeur, alors la cible est tout ce qui précède
[-comp] <component_name> Spécifie un seul composant. Vous pouvez également utiliser <component_name> directement sans le flag -comp. -exp AndroTickler utilise les privilèges normaux pour déclencher uniquement les cibles exportées. -all L'option par défaut. AndroTickler utilise les privilèges root pour déclencher les cibles exportées. -log Capture tous les messages logcat générés pendant la session de déclenchement. Le fichier journal est enregistré dans le sous-répertoire logs.
Frida doit être installé sur votre machine hôte. De plus, l'emplacement du serveur Frida sur l'appareil Android doit être ajouté au fichier Tickler.conf dans l'entrée Frida_server_path
java -jar AndroTickler.jar -pkg <package> -frida vals <ClassName> <MethodName> <NumberOfArgs> [-reuse]
Affiche les arguments et la valeur de retour de cette méthode (uniquement les types de données primitifs et String)
reuse En cas d'options vals et set, Frida crée/met à jour un script Frida de cette fonctionnalité. Vous pouvez modifier le script créé comme vous le souhaitez, puis si vous voulez l'exécuter via AndroTickler, utilisez l'option -reuse pour qu'il ne soit pas écrasé.
java -jar AndroTickler.jar -pkg <package> -frida set <ClassName> <MethodName> <NumberOfArgs> <NumberOfArgToModify> <newValue>[-reuse]
Définit le numéro d'argument NumberOfArgToModify à newValue (uniquement les types de données primitifs et String). NumberOfArgToModify commence à 0 : Premier argument --> NumberOfArgToModify = 0, ...etc Pour modifier la valeur de retour, définissez NumberOfArgToModify sur ret
java -jar AndroTickler.jar -pkg <package> -frida script <scriptPath>
Exécute un script Frida JS situé à scriptPath sur votre hôte
Énumérer les classes chargées :
java -jar AndroTickler.jar -pkg <package> -frida enum
java -jar AndroTickler.jar -pkg <package> -dbg
Crée une version débogable de l'application, qui peut être installée sur l'appareil et déboguée à l'aide de n'importe quel outil externe. AndroTickler est livré avec un keystore pour signer l'apk débogable, mais nécessite l'outil jarsigner sur l'hôte.
java -jar AndroTickler.jar -pkg <package> -apk <decompiledDirectory>
Construit un fichier apk à partir d'un répertoire, le signe et l'installe.
java -jar AndroTickler.jar [-pkg <package>] [-bg|--bgSnapshots]
Copie les instantanés d'arrière-plan pris par l'appareil (fonctionne avec et sans l'option -pkg) dans le sous-répertoire bgSnapshots.
Copier le répertoire de stockage de données :
java -jar AndroTickler.jar -pkg <package> -dataDir [dest]
Copie le répertoire de stockage de données dans DataDir dest Nom facultatif du répertoire de destination, qui sera de toute façon situé dans le sous-répertoire transfers.
Copier n'importe quel fichier / répertoire :
java -jar AndroTickler.jar -pkg <package> -cp2host <source_path> [dest]
Copie des fichiers / répertoires depuis les appareils Android.
Si l'option dest n'est pas donnée, le nom du répertoire sera l'horodatage de la transaction.
java -jar AndroTickler.jar [-pkg <package>] -screen
Pour les options qui ne nécessitent pas l'option -pkg, leurs données seront sauvegardées dans Tickler_Dir/NoPackage
java -jar AndroTickler.jar -pkg <package> -t -act -exp
Déclenche les activités exportées
java -jar AndroTickler.jar -pkg <package> -t -prov -log
Interroge tous les fournisseurs de contenu et enregistre les messages logcat jusqu'à ce que l'outil arrête l'exécution
java -jar AndroTickler.jar -pkg <package> -t <component_name>
Déclenche le composant, le type de déclenchement dépend du type du composant
java -jar AndroTickler.jar -pkg de.not3naf.myApp -frida set de.not3naf.myApp.myActivity myMethod 2 0 "newValue"
Se branche sur la méthode "myMethod" qui a 2 arguments et change la valeur du premier argument (args[0]) en "newValue"
java -jar AndroTickler.jar -pkg de.not3naf.myApp -frida set de.not3naf.myApp.myActivity myMethod 2 2 false
Se branche sur la méthode "myMethod" qui a 2 arguments et change la valeur de retour en booléen false