
Collare est un outil d'ingénierie inverse collaborative qui vise à permettre aux équipes qui ont besoin d'utiliser plus d'un outil lors d'un projet pour collaborer sans avoir besoin de partager les fichiers sur un emplacement distinct. Il contient également une gestion des utilisateurs très simple et peut être utilisé pour un serveur multi-projets où différentes équipes travaillent sur différents projets. Le back-end de l'outil est une Flask app simple avec nginx devant elle en cours d'exécution dans Docker qui fonctionne avec des fichiers et des manifestes basés sur JSON qui contiennent les données pertinentes. Le frontal est un outil d'interface graphique basé sur PYQT avec une interface simple qui permet de gérer les projets et de travailler avec les fichiers binaires et leurs bases de données d'ingénierie inverse correspondantes. À partir de maintenant, l'outil prend en charge Binary Ninja , Cutter (Rizin) , Ghidra , Hopper Dissassembler , IDA , JEB et Android Studio (Decompiled by JADX) . L'implémentation est autant que possible du fonctionnement interne de ces outils pour éviter les problèmes avec les modifications de l'API et ne s'intègre donc pas directement à ces outils sous forme de plugin (à l'exception des plugins de migration de données décrits ci-dessous). Le travail est basé uniquement sur la gestion des fichiers produits par ces outils (littéralement uniquement basés sur les extensions de fichiers bien connues) et les opérations check-out et check-in de style SVN simples.
Saisissez la dernière version binaire de ce référentiel ou clonez le dépôt et exécutez sudo python3 setup.py install sur Linux ou utilisez la ligne de commande sur Windows et exécutez python3 setup.py install . Sur Linux, cela installera l'outil sur le PATH et vous pourrez l'exécuter simplement avec la commande collare . Sur Windows, cela mettra le fichier dans le C:Users<USERNAME>AppDataLocalProgramsPython<PYTHON_VERSION>Scriptscollare.exe (en fonction de la façon dont vous avez installé Python).
Pour les UIS de bureau basées sur GNOME, vous pouvez utiliser le fichier de bureau suivant (les chemins de main vers les fichiers peuvent varier en fonction de la version de Collaraire et Python):
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=CollaRE
Exec=/usr/local/bin/collare
Icon=/usr/local/lib/python3.8/dist-packages/collare-1.2-py3.8.egg/collare/icons/collare.png
Terminal=false
Pour activer la prise en charge de Cutter, ajoutez un Cutter de fichiers à votre chemin (lorsque vous ouvrez cmd / terminal Writing Cutter doit démarrer l'application). Lorsque vous enregistrez des projets Cutter (Rizin), vous devez ajouter manuellement .rzdb . Ne supprimez pas l'extension que le fichier dispose déjà ( exe ou so par exemple).
Pour permettre la prise en charge de Binary Ninja, ajoutez un fichier binaryninja à votre chemin (lorsque vous ouvrez cmd / terminal Writing binaryninja , devrait démarrer l'application). Le ninja binaire supprime les extensions de fichiers par défaut, mais l'outil explique cela, il n'est donc pas nécessaire de remettre l'extension de fichier d'origine manuellement. Enregistrer les projets tels quels sur un chemin par défaut suffit pour pouvoir pousser avec succès la base de données bndb locale.
Pour activer la prise en charge du désassembleur Hopper, ajoutez une Hopper de fichier à votre chemin (lorsque vous ouvrez la Hopper cmd / terminal Writing, devrait démarrer l'application). Hopper supprime les extensions de fichiers par défaut, mais l'outil explique cela, il n'est donc pas nécessaire de remettre l'extension de fichier d'origine manuellement. Enregistrer les projets simplement avec Ctrl+S suffit pour pouvoir pousser avec succès la base de données hop locale.
Pour activer la prise en charge de Jeb, ajoutez un fichier jeb à votre chemin (lorsque vous ouvrez cmd / terminal Writing, jeb devrait démarrer l'application). Cela peut être fait en renommant le fichier de script de coureur par défaut pour votre système d'exploitation à jeb (pour Windows, ce serait en fait jeb.bat ).
Pour activer la prise en charge de l'outil IDA, ajoutez un fichier ida64 et ida à votre chemin (lorsque vous ouvrez cmd / terminal Writing ida64 / ida devrait démarrer l'application).
Pour activer la prise en charge de cet outil, ajoutez un fichier ghidraRun et analyzeHeadless ( .bat pour Windows) à votre chemin (lorsque vous ouvrez cmd / terminal Writing ghidraRun devrait démarrer l'application). Notez analyzeHeadless est dans le dossier support dans le répertoire root Ghidra, alors assurez-vous de régler PATH pour accueillir les deux fichiers. Le processus d'initialisation de la base de données avec Ghidra est un peu plus compliqué car il n'y a aucun moyen que Ghidrea traite le fichier sans créer de projet. Donc, pour pouvoir pousser la base de données Ghidra (appelée ghdb ), vous serez invité à créer un projet manuellement chaque fois que le traitement automatique échoue (en gros chaque fois que le fichier que vous traitez n'est pas ELF / PE), puis spécifiez le chemin du fichier gpr (désolé pour cela).
Comme les fichiers APK et JAR sont souvent rencontrés pendant les efforts d'ingénierie inverse, l'outil Collaraire prend également en charge le travail avec ces types de fichiers. Pour permettre la prise en charge de ces outils, il est nécessaire de s'assurer que les fichiers android-studio et jadx sont tous deux sur le chemin (lorsque vous ouvrez cmd / terminal Writing android-studio / jadx devrait démarrer l'application). L'outil JADX est utilisé pour effectuer la décompilation du fichier JAR / APK et le studio Android est utilisé pour ouvrir les fichiers résultants. Notez que l'utilisation d'Android Studio est facultative car vous pouvez alias tout autre outil qui gère les projets Gradle sous la commande android-studio (comme IntelliJ Idea).
Après avoir déployé le côté serveur comme mentionné dans son propre fichier ReadMe, il est nécessaire de distribuer le fichier de certificat utilisé à tous les utilisateurs de l'application et d'utiliser le compte admin par défaut avec le mot de passe admin pour créer d'autres comptes d'utilisateurs (n'oubliez pas de modifier le mot de passe de l'utilisateur admin ) via l'onglet Admin . Lorsque les utilisateurs sont configurés, n'importe qui peut créer ses propres projets et commencer à travailler avec l'outil lui-même.
Pour créer un projet, l'utilisateur doit d'abord s'authentifier avec le serveur distant en entrant l'URL, les informations d'identification et fournir un certificat pour valider l'identité du serveur. Après cela, le statut changera en Connected et il est possible de sélectionner ou de supprimer les projets existants ou de créer un nouveau projet en entrant simplement le nom (caractères alphanumériques et _ uniquement) et en sélectionnant les utilisateurs qui participeront au projet (peuvent être modifiés plus tard dans l'onglet Admin ). Notez que l'utilisateur qui crée le projet est automatiquement ajouté à la liste d'utilisateurs afin que vous n'ayez pas à vous sélectionner.

Une fois que vous êtes sur l'onglet Project View vous pouvez créer de nouveaux dossiers (caractères alphanumériques et _ uniquement, désolé) et utiliser la glisser-déposer pour télécharger des fichiers (ou des dossiers).

Étant donné que l'outil n'a actuellement aucun plugins ou crochets natifs qui permettraient des téléchargements automatiques lorsque le projet est enregistré, il est nécessaire que la poussée de fichier DB locale soit déclenchée manuellement après la création des bases de données souhaitées. Cela peut être fait en cliquant avec le bouton droit sur le fichier binaire téléchargé et en choisissant l'outil rzdb lequel vous souhaitez traiter le binaire. Ne changez pas le chemin et le nom de fichier . Après avoir fait cela et fermé le désassembleur, vous pouvez cliquer avec le bouton droit sur le nom binaire et sélectionner l'option Push Local DBs . Cela téléchargera la base de données locale et à partir de maintenant lorsque vous souhaitez travailler avec le fichier DB, vous devez effectuer Check-out . Notez que chaque binaire peut être traité dans tous les outils séparément, mais qu'un seul fichier de base de données par binaire et outil peut exister.

Lorsque vous souhaitez simplement inspecter le fichier, vous pouvez cliquer avec le bouton droit sur le fichier DB souhaité et sélectionner l'option Open File (ou simplement double-cliquez). Si le fichier vous est consulté, cela ouvrira le fichier local et vous pouvez effectuer librement toutes les modifications du fichier DB. Une fois terminé (ou lorsque vous souhaitez simplement pousser les modifications), vous pouvez sélectionner l'option Check-in . Cela téléchargera les modifications du serveur et vous invitera si vous souhaitez garder le fichier vérifié pour d'autres modifications. Si vous souhaitez éliminer vos modifications locales, sélectionnez l'option Undo Check-out dans le menu contextuel. Cela éliminera vos modifications et vous permettra de continuer avec le fichier du serveur. L'ouverture d'un fichier sans effectuer d'abord une opération Check-out l'ouvrira en un faux mode en lecture seule (vous pouvez effectuer des modifications dans le fichier DB, mais celles-ci seront perdues la prochaine fois que vous découvrirez ou ouvrez le fichier).

L'outil prend également en charge le versioning des fichiers DB d'une manière que chaque action Check-in compte comme une nouvelle version du fichier db. Vous serez invité à insérer un commentaire pour la version qui est utilisée pour donner plus de contexte aux modifications appliquées dans cette version. Il est alors possible d'ouvrir ou de vérifier les versions précédentes des fichiers et de les travailler.

Le dossier Plugins de ce référentiel contient des plugins pour les outils pris en charge qui vous permettent de partager des commentaires et des noms de fonction entre les outils au cas où vous travaillez sur un binaire avec plusieurs outils. Suivez les instructions d'installation du plugin standard pour l'outil qui vous intéresse. Chaque plugin propose une fonction Import et Export . Lorsque vous prévoyez de partager les données entre les outils, assurez-vous toujours d' Import des données d'abord pour éviter de renommer les fonctions qui ont déjà été renommées par quelqu'un d'autre. Si le plugin est livré avec des captures, ceux-ci sont mentionnés dans le fichier ReadMe du plugin donné. Notez que les plugins visent à migrer les données vers un autre outil plutôt qu'à une collaboration simultanée de plusieurs personnes.
