Dexcalibur est une plate-forme d'ingénierie inverse Android Focus sur l'automatisation des instruments. Sa particularité est d'utiliser une analyse dynamique pour améliorer l'heuristique d'analyse statique. Il vise à automatiser les tâches ennuyeuses liées à l'instrumentation dynamique, comme:
Voulez-vous partager quelque chose ou avez-vous besoin d'aide? Rejoignez nos chats officiels:
Télégramme - La façon la plus rapide de donner une réponse
La documentation officielle est disponible ici (site Web - travail en cours).
Voir les dernières nouvelles ici: http://docs.dexcalibur.org/news.html
Afficher les vidéos de démonstration de Dexcalibur: Demo: moins d'une minute pour accrocher 61 méthodes? Pas un problème. (YouTube)
Contribuer !
N'hésitez pas! Il existe plusieurs façons de contribuer:
Aller pour installer doc
Alternative: utilisez Docker
adb (et un émulateur Android si approprié)docker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bashPour Linux et macOS
Installation de NPM: Si Dexcalibur a été installé global à l'aide de NPM (option -g ), alors Dexcalibur peut être lancé à partir de terminal en faisant $ dexcalibur , sinon l'emplacement qu'il peut être lancé par $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js .
Installation à partir de la source: du dossier dexcalibur , exécutez $ dexcalibur ou $ node dexcalibur.js .
Pour les fenêtres
NPM Install: Event Si Dexcalibur est installé Globaly à l'aide de NPM (option -g ), Dexcalibur doit être lancé à partir de terminal en exécutant la commande suivante à partir d'un node <NPM_ROOT>/dexcalibur/dexcalibur.js .
Installation à partir de la source: du dossier dexcalibur , dans le terminal, exécutez le node dexcalibur.js .
Vous utilisez une version précédente de Dexcalibur?
Suivez les mêmes étapes qu'une nouvelle installation et lorsque vous devez entrer le chemin d'accès à l'espace de travail, entrez votre emplacement actuel de l'espace de travail.
Juste en faisant:
$ npm install -g dexcalibur
La configuration et l'espace de travail existants seront détectés automatiquement.
Les captures d'écran suivantes illustrent la mise à jour automatique des Xrefs au moment de l'exécution.
En fait, la plus grande limitation est que Dexcalibur n'est pas en mesure de générer le code source de Hook ciblant la fonction native (dans la bibliothèque JNI). Cependant, vous pouvez déclarer manuellement l'intercepteur de Frida en modifiant un crochet.
En supposant que Dexcalibur ne fournit pas (pour le moment) des fonctionnalités d'analyser la partie native telle que la bibliothèque JNI ou JNA, seules les caractéristiques et les limitations liées à la partie Java ont été débordées.
La précision de l'analyse dépend de l'exhaustivité de l'image API Android utilisée pendant les premières étapes de l'analyse. Cela signifie que si vous utilisez un fichier dex généré à partir du fichier Android.jar à partir du SDK Android, certaines références à des méthodes internes, champs ou classes de l'API Android Java pourraient manquer. De meilleurs résultats sont obtenus lorsque l'analyse commence à partir d'un fichier "boot.oat" extrait directement d'un appareil réel exécutant la version Android attendue.
TODO: Écrivez du texte
TODO: Écrivez du texte
Comportements suivis
L'analyseur statique impliqué dans l'action "Run smali (VM)" est capable de découvrir et d'accepter, mais suivi les comportements suivants:
En fait, les gestionnaires / auditeurs pour une telle instruction invalide ne sont pas pris en charge, mais les événements sont suivis et rendus.
Dexcalibur ir
La machine virtuelle produit une représentation intermédiaire personnalisée et simplifiée (IR) qui est affichée uniquement pour aider les analystes à effectuer son analyse.
Selon la valeur de la profondeur et de la configuration de CallStack, IR peut inclure ou non des instructions exécutées en fonction appelée. Si l'exécution entre dans un bloc d'essai et continue de revenir, mais jamais d'exclure les captures, le bloc de capture ne sera pas rendu. En fait, l'objectif de Dexcalibur IR est de ne rendre que "ce qui est exécuté" ou "ce qui pourrait être exécuté en fonction de la valeur d'un symbole" dans le contexte de la machine virtuelle.
Dexcalibur IR aide à lire une version nettoyée de bytcode en supprimant un goto inutile et un prédicat opaque. Dexcalibur IR peut être généré par la machine virtuelle avec 2 niveaux de simplification:
1er niveau IR, pourrait être utilisé si vous ne faites pas confiance au 2e niveau IR:
2e niveau:
API Android Mock
FAIRE
Détails
Smali VM suit les étapes:
Comment VM gère l'instruction invoquée?
Analyse manifeste (limitée)
Avant la première exécution, le manifeste Android de l'application est analysé. En fait, les anomalies dans la configuration de tels manifestes d'une telle configuration sont vraiment détectées à ce niveau.
Le seul but de l'analyse Android manifeste est de remplir d'autres types d'analyseurs.
Analyse de l'autorisation
Chaque autorisation extraite du manifeste est répertoriée et identifiée et comparée à la spécification Android de la version Android cible.
Dexcalibur fournit - uniquement dans certains cas - une description de l'objectif d'autorisation, la version API Android minimale, ...
Analyse des activités
Analyse des fournisseurs
Analyse des services
Analyse des récepteurs
Surveillance du réseau
Surveillance de l'intention
Surveillance d'accès aux fichiers
Vous ne pouvez pas trouver le menu multi-utilisateurs? Pas un problème, il n'y a pas de menu mais un travail collaboratif minimaliste peut être réalisé.
Dexcalibur exécute un serveur Web. Ainsi, si plusieurs personnes sont sur le même réseau de ce serveur Web et que si le pare-feu d'hôte est bien configuré, vous pouvez être plusieurs pour travailler sur la même instance dexcalibur.
Les limitations réelles sont:
Un merci spécial aux contributeurs:
Avant d'aller plus loin:
dexcalibur --reinstall ? Si non, essayez-le. Tout d'abord, vérifiez si les paramètres globaux ont été enregistrés dans <user_directory>/.dexcalibur/
$ ls -la ~/.dexcalibur
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user staff 2784 29 avr 11:47 ..
-rw-r--r-- 1 test_user staff 204 29 avr 11:41 config.json
$ cat ~/.dexcalibur/config.json
{
"workspace":"/Users/test_user/dexcaliburWS3",
"registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
"registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}
Ensuite, vérifiez si la structure de Dexcalibur Workspace est ce qui suit (le contenu du dossier /api peut diffère).
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
drwxr-xr-x 8 test_user staff 256 29 avr 11:41 sdk_androidapi_29_google
/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x 4 test_user staff 128 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rwxr-xr-x 1 test_user staff 17661172 29 avr 11:41 apktool.jar
drwxr-xr-x 18 test_user staff 576 29 avr 11:41 platform-tools
/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rw-r--r-- 1 test_user staff 314 29 avr 11:41 config.json
/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
Si vous utilisez un périphérique physique connecté sur USB, assurez-vous que le mode de développement et le débogage USB sont activés.
Si vous utilisez un périphérique virtuel, accédez à /splash.html , sélectionnez Device Manager , cliquez sur Connect over TCP ... et suivez les instructions. Si vous ne connaissez pas l'adresse IP de votre appareil, laissez Dexcalibur le détecter en cochant automatic configuration de la boîte.
Vous devez inscrire le périphérique cible avant de pouvoir l'utiliser. Pendant l'inscription, Dexcalibur, rassemblez les métadonnées de l'appareil et poussez une version compatible de Frida Server.
Ces métadonnées sont utilisées pour sélectionner les cibles de Frida-Server et Frida-Gadget.
Si une exclamation rouge ! apparaît sur une ligne dans la liste des appareils, puis votre bureau n'est pas autorisé par l'appareil. Vous devez probablement confirmer
Si votre appareil est répertorié dans DeviceManager et que la colonne online est vérifiée, cliquez sur enroll
Si votre appareil est répertorié dans DeviceManager et que la colonne online est vérifiée, cliquez sur enroll
La version dexcalibur <V0.7 n'a pas été en mesure de détecter un périphérique émulé automatiquement et de l'utiliser en raison d'un analyse de sortie ADB incomplète.
Depuis la version> = v0.7, une fois votre appareil virtuel en cours d'exécution, accédez à /splash.html ou cliquez sur DEXCALIBUR en barre de navigation. Cliquez sur le bouton Device Manager dans le menu de gauche et cliquez sur le bouton Refresh en haut du tableau.
Vous devriez avoir une ligne à partir de l'ID BAD de votre appareil virtuel.
Tout d'abord, comme n'importe quel appareil cible, vous devez l'inscrire.
Cliquez Connect over TCP ... pour ajouter un nouvel appareil sur TCP ou pour connecter un périphérique inscrit via TCP.
Si l'appareil n'a jamais été inscrit, l'inscription sera effectuée via TCP. Dans certains cas, la connexion sur TCP est plus lente que sur USB. L'inscription peut donc prendre du temps supplémentaire.
Si l'appareil a été inscrit sur USB, le nouveau type de transport préféré pour cet appareil devient TCP.
Créez une demande de traction sur ce référentiel ou créez un problème.
Créez une demande de traction sur le référentiel dexcalibur-doc.
La documentation est disponible sur ici (site Web DOC) et ici (wiki)
![]() |
|---|
| Ils ont offert une licence pour tous les produits <3 |
Il y a en fait peu de ressources de documentation et de formation sur Dexcalibur. Si vous avez utilisé avec succès Dexcalibur pour remporter le défi CTF ou pour trouver une vulnérabilité, je vous encourage fortement à partager votre expérience.