
Solitude is a privacy analysis tool that enables anyone to conduct their own privacy investigations. Whether a curious novice or a more advanced researcher, Solitude makes the process of evaluating user privacy within an app accessible for everyone.
Solitude est un outil d'analyse de la vie privée qui permet à chacun de mener ses propres investigations en matière de confidentialité. Que vous soyez un novice curieux ou un chercheur plus avancé, Solitude rend le processus d'évaluation de la vie privée des utilisateurs au sein d'une application accessible à tous.
Avant d'installer Solitude, il convient de noter que Solitude doit être exécuté sur un réseau privé de confiance. L'interface web de Solitude est actuellement conçue en partant du principe que les utilisateurs exécuteront l'outil sur un réseau privé et fiable.
Si vous utilisez Solitude pour tester des applications mobiles (nous l'espérons !), sachez que si vous utilisez un appareil non jailbreaké, vous ne pourrez peut-être pas capturer tout le trafic HTTP si l'application ou les SDK tiers intégrés à l'application utilisent l'épinglage de certificats. L'épinglage de certificats est un mécanisme de sécurité qui garantit que le serveur avec lequel l'application communique est bien celui attendu. Les applications et les SDK utilisent souvent l'épinglage de certificats pour protéger leurs applications au cas où une autorité de certification serait compromise et où des certificats malveillants seraient émis par un attaquant, ce qui pourrait permettre à l'attaquant d'observer ou de modifier le trafic TLS entre l'application et les serveurs de l'application. Solitude ne prend pas en charge les contournements de l'épinglage de certificats. Nous laissons cela aux utilisateurs de Solitude. Cela dit, nous ne recommandons jamais au grand jamais de jailbreaker ou de rooter votre appareil mobile personnel. Si vous souhaitez utiliser un téléphone jailbreaké ou rooté, vous devriez utiliser un appareil de test avec des données de test pour tester les applications.
git clone https://github.com/nccgroup/Solitudedocker-compose -f docker-compose-prod.yml builddocker-compose -f docker-compose-prod.yml upbrew install mysqldocker run -p 3306:3306 -d --name mysql -e MYSQL_ROOT_PASSWORD=solitude mysql (modifiez ici le mot de passe par défaut et consultez les instructions ci-dessous pour modifier les configurations de la base de données)
git clone https://github.com/nccgroup/Solitudecd Solitude && python3 -m venv venvsource venv/bin/activatepip3 install -r requirements.txtpython3 run.pydocker-compose -f docker-compose-prod.yml builddocker-compose -f docker-compose-prod.yml updocker run -p 3306:3306 -d --name mysql -e MYSQL_ROOT_PASSWORD=solitude mysql (modifiez ici le mot de passe par défaut et consultez les instructions ci-dessous pour modifier les configurations de la base de données)
git clone https://github.com/nccgroup/Solitudecd Solitude && python3 -m venv venvsource venv/bin/activatesudo apt-get install libmysqlclient-devpip3 install -r requirements.txtpython3 run.pyPour modifier le mot de passe par défaut de la base de données. Modifiez le fichier .env avec le mot de passe de votre choix.
Configurez toutes les données que vous souhaitez tracer dans le fichier myrules.json. Si une correspondance est trouvée dans le trafic HTTP émis par l'application web ou l'application mobile, les données configurées seront affichées dans l'interface web ainsi que le domaine avec lequel ces données sont partagées.
Solitude exécute un serveur OpenVPN dans un conteneur docker qui transmet ensuite tout le trafic HTTP à un proxy d'interception HTTP (mitmproxy) grâce à une fonctionnalité qui utilise l'API d'extension de mitmproxy.
Solitude utilise des règles Yara pour rechercher dans tout le trafic HTTP que vous faites passer par l'outil. Les règles Yara, bien que relativement faciles à écrire, peuvent être fastidieuses, c'est pourquoi Solitude fait une partie du travail à votre place. Dans le fichier myrules.json, définissez une paire clé-valeur pour le type de données que vous souhaitez rechercher. Quelques exemples sont fournis dans le fichier myrules.json, mais n'hésitez pas à ajouter vos propres données. La clé doit être le type de données que vous recherchez, par exemple « Mon numéro de téléphone ». Cette clé est utilisée pour la sortie générée lorsqu'une correspondance est trouvée. La valeur doit être les données exactes que vous souhaitez faire correspondre. Tenez compte des différents formats de données ; il peut donc être nécessaire de créer plusieurs entrées pour chaque donnée. Par exemple, un numéro de téléphone ou une date d'anniversaire peuvent avoir plusieurs formats : 03-03-1991 ou March, 3rd 1991. Si vous souhaitez ajouter de nouvelles règles dans le fichier JSON, Solitude générera des règles Yara pour vous à chaque démarrage du proxy.
Exemple : "phoneNumber": "555-555-5555", "Address": "123 Sutter Street, San Francisco 94105"
* décodage récursif base64 et url (les requêtes encodées, par exemple base64>url>base64, peuvent être décodées et analysées par la recherche)
* prise en charge de protobuf (décode la première couche de toute requête protobuf)
* recherche des MD5, SHA1, SHA256 de toutes les données définies dans myrules.json
* recherches intégrées par expressions régulières pour le GPS, l'adresse IP interne et l'adresse Mac