
Fridaを搭載したPython製のWeb GUI付きランタイムモバイルアプリケーション解析ツールキット。
/ | \ ____ __ __ ______ ____
/ ~ \/ _ \| | \/ ___// __ \
\ Y ( <_> ) | /\___ \ ___/
\___|_ / \____/|____//____ >\___ >
\/ House \/ \/
Dynamic Mobile Analysis Tool
Contact: [email protected]
House: ランタイムモバイルアプリケーション分析ツールキット。Web GUIを備え、Fridaを搭載し、Pythonで記述されています。動的な関数フックとインターセプトを実装することでモバイルアプリケーションの評価を支援するために設計されており、Fridaスクリプトの作成を可能な限りシンプルにすることを目的としています。
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>
デフォルトでは、Houseはhttp://127.0.0.1:8000にバインドします。
Houseの機能の概要については、ユーザーマニュアルをご覧ください。


注意: dex/jar関数フックには、Fridaバージョンを12.8.3以上に更新してください。
このセクションでは、Houseの基本的な使用法を示す小さな例を提供します。デモケースは、小さなテスト用Androidアプリケーションcom.ha0k3.overloadsに対して実行されます。
AndroidデバイスがUSBで接続され、Fridaサーバーがデバイス上で実行されていることを確認してください。次のコマンドを使用してFridaサーバーが正常に起動しているか確認します: frida-ps -U。
app.pyを実行してHouseアプリケーションを起動します: python app.py <PORT>。
ブラウザを開き、http://127.0.0.1:PORTにアクセスします。
デバイス情報がページに表示されることを確認します。表示されない場合は、更新ボタンをクリックするか、アプリケーションとFridaサーバーを再起動してください。


サイドロードをサポートするようになりました。現時点ではstethoのサイドローディングをサポートしており、UIやストレージなどを調査するのが容易になります。





スクリプトレンダリングと関数トレース

動的にロードされたdex/jarファイル内の関数のフック

ミニスクリプトオプション

履歴スクリプト管理

Houseを介して、研究者はターゲット関数に渡される引数を動的に変更し、転送することができます。

Houseが引数情報を完全に解析できない場合があります。例えば、引数が特殊な型である場合などです。サンプルアプリでは、カスタマイズされたオブジェクトを引数として受け取るisLit関数が実装されています。このような状況に対処するために、Houseはシンプルな「REPL」を提供しています。セキュリティ研究者はREPLでFridaスクリプトを動的に入力し、関数の動作を変更できます。

テストを容易にするために、HouseはいくつかのREPL関数を提供しています:
inspectObject(obj)はjava.lang.reflectを使用してオブジェクト内のフィールド情報を検査します。setRetval(ret)はパラメータを取り、元の戻り値のコンストラクタを使用して正しい戻り値の型にキャストしようとします。getStackTrace()はスタックトレースを出力します。
注意: コンストラクタメソッドのフック/インターセプトには、メソッド名として$initを入力してください。
Houseを動作させるには、以下が必要です:
また、fridaサーバーとHouseの両方を再起動してみてください。それでも動作しない場合は、問題を報告してください。
複数のUSBデバイスが接続されている場合によく発生します。ターゲットアプリケーションを再起動してみてください。
HouseはFridaバージョン12.8.6を使用してテストされています。一部の他のバージョンでは問題が発生する可能性があります。また、frida-pythonがfrida-serverのバージョンと一致していることを確認してください。それでも動作しない場合は、生成されたFridaスクリプトを手動で実行して動作するかどうか試してください。
Houseにインスピレーションを与えてくれた以下のオープンソースプロジェクトに特別な感謝を捧げます:
Houseに関するご質問や、拡張にご協力いただける場合は、お気軽にご連絡ください:
またはメールを送信してください:Hao Ke