
Un kit d'analyse d'applications mobiles en runtime avec une interface Web, propulsé par Frida, écrit en Python.
___ ___
/ | \ ____ __ __ ______ ____
/ ~ \/ _ \| | \/ ___// __ \
\ Y ( <_> ) | /\___ \ ___/
\___|_ / \____/|____//____ >\___ >
\/ House \/ \/
Outil d'analyse mobile dynamique
Contact: [email protected]
House : Un kit d'analyse d'applications mobiles en runtime avec une interface Web, propulsé par Frida, écrit en Python. Il est conçu pour aider à évaluer les applications mobiles en mettant en œuvre le hooking et l'interception dynamiques de fonctions, et vise à rendre l'écriture de scripts Frida aussi simple que possible.
git clone https://github.com/nccgroup/house
cd house
pip3 install -r requirements.txt
pip3 install pipenv
pipenv --python=/usr/bin/python3 install
pipenv --python=/usr/bin/python3 shell
python3 app.py <PORT>
# or:
mkvirtualenv --python=/usr/local/bin/python3 house
workon house
pip install -r requirements.txt
python app.py <PORT>
# or: (only for Mac OS)
git clone https://github.com/nccgroup/house
cd house
pip3 install -r requirements.txt
pip3 install pipenv
pipenv --python=/usr/local/bin/python3 install
pipenv --python=/usr/local/bin/python3 shell
python3 app.py <PORT>
Par défaut, House se lie à http://127.0.0.1:8000.
Pour obtenir un aperçu des capacités de House, vous pouvez consulter le manuel d'utilisation pour plus de détails.


Note : Assurez-vous de mettre à jour votre version de Frida vers >= 12.8.3 pour le hooking de fonctions /dex/jar
Dans cette section, un petit exemple est fourni pour illustrer l'utilisation de base de House. Le cas de démonstration est réalisé sur une petite application Android de test : com.ha0k3.overloads.
Assurez-vous qu'un appareil Android est branché en USB et que le serveur Frida est en cours d'exécution sur l'appareil. Vérifiez que le serveur Frida a bien été lancé à l'aide de la commande suivante : frida-ps -U.
Lancez l'application House en exécutant app.py : python app.py <PORT>.
Ouvrez un navigateur et rendez-vous sur http://127.0.0.1:PORT.
Observez que les informations de l'appareil s'affichent sur la page ; sinon, cliquez sur le bouton Refresh ou redémarrez l'application et le serveur Frida.

Génération dynamique de scripts de hook à partir de modèles basés sur le fichier de configuration, surveille les opérations clés comme FILEIO, IPC, etc.

C'est expérimental pour le moment. Si vous trouvez d'autres fonctions qui doivent être hookées, n'hésitez pas à me le faire savoir ou à soumettre une PR.
sideload. Il supporte le chargement latéral de stetho pour le moment, ce qui facilite l'examen de l'interface utilisateur, du stockage, etc.





Rendu des scripts et traçage de fonctions :

Hooks pour les fonctions dans des fichiers dex/jar chargés dynamiquement :

Option Mini Script :

Gestion des scripts d'historique :

Via House, les chercheurs peuvent modifier dynamiquement les arguments passés aux fonctions cibles et les transmettre.

Parfois, House ne peut pas analyser parfaitement les informations sur les arguments. Par exemple, un argument peut être d'un type spécial. Dans l'application d'exemple, elle implémente la fonction isLit qui prend un objet personnalisé comme argument. Pour faire face à ces situations, un simple « REPL » est fourni par House. Les chercheurs en sécurité peuvent taper dynamiquement un script Frida dans le REPL et modifier le comportement de la fonction.

Plusieurs fonctions REPL sont fournies par House pour faciliter les tests :
inspectObject(obj) utilise java.lang.reflect pour inspecter les informations des champs d'un objet.setRetval(ret) prend un paramètre et essaiera de le convertir en type de retour correct en utilisant le constructeur de la valeur de retour d'origine.getStackTrace() affichera la trace de la pile.
Note : Pour le hooking/l'interception des méthodes constructeur, saisissez $init comme nom de méthode.
Pour faire fonctionner House, vous aurez besoin :
Veuillez également essayer de redémarrer à la fois le serveur frida et House, si cela ne fonctionne toujours pas, veuillez soumettre un problème.
Se produit souvent lorsque plusieurs périphériques USB sont connectés, essayez de redémarrer l'application cible.
House a été testé avec la version 12.8.6 de Frida ; il peut y avoir des problèmes avec d'autres versions, assurez-vous également que la version de frida-python correspond à celle du serveur frida. Si cela ne fonctionne toujours pas, essayez d'exécuter manuellement les scripts Frida générés pour voir s'ils fonctionnent.
Un grand merci aux projets open-source suivants pour les inspirations de House :
Si vous avez d'autres questions sur House, ou si vous souhaitez aider à l'étendre, n'hésitez pas à contacter :
Ou envoyez un email à : Hao Ke