Frida を使用する¶
FIRERPA には最新バージョンの Frida が内蔵されており、ユーザー自身で frida-server を起動する必要はありません。内蔵の Frida には、各種のオープンソースの隠蔽パッチに加え、弊社独自の隠蔽機能も追加されており、Frida が検出される心配はありません。万が一、内蔵の Frida が検出された場合でも、それはダウンロード可能なほとんどの frida-server が同様に検出される運命にあることを意味します。
注目
9.0 バージョン以降、内蔵の Frida 17.x では、frida-java-bridge をスクリプトにバンドルする必要があります。そうしないと、「Java not defined」関連のエラーが発生します。この変更は Frida 公式のものです。公式の変更説明に従い、新しい Node.js プロジェクトを作成して frida-java-bridge を導入する必要があります。詳細は https://github.com/oleavr/frida-agent-example を参照するか、当方が提供する frida_script_generate.py を使用して js スクリプトをパッケージ化してください。
コードによる使用¶
d.frida を使用することで、frida-server に既に接続されたインスタンスを取得できます。frida ライブラリを使って自分で接続を構築する必要はありません。
conn = d.frida
conn.enumerate_processes()
もちろん、その低レベルの実装を理解したい場合は、次のコードも参考にできます。
# 動的トークンを取得
token = d._get_session_token()
manager = frida.get_device_manager()
conn = manager.add_remote_device("192.168.0.2:65000", token=token)
conn.enumerate_processes()
コマンドによる使用¶
frida コマンドラインを使用する必要がある場合は、リモートデスクトップ を介して frida、frida-trace、frida-ps などの関連コマンドを使用することを強くお勧めします。この環境では、何も操作する必要はなく、単に frida を実行するだけで済みます。-U や -H などの接続パラメータを指定する必要は一切ありません。内蔵環境がすべてデフォルトで設定済みです。

ここまでお読みいただいたということは、依然としてPC上でこのコマンドを使用したいということを意味します。今から、サービスのインストール/実行状況に応じていくつかの必要な情報を整理する必要があります。サービス証明書 を使用している場合は、その証明書ファイルを用意する必要があります。また、対象デバイスのIPアドレスとFIRERPAサービスポート(デフォルトは65000)も必要です。注意:このポートはFridaの27042ポートではありません。
次に、API を使用して現在のトークンを取得する必要があります。このトークンは16桁の固定文字列で、例:czvpyqg82dk0xrnj となります。この方法は少し面倒かもしれませんが、デバイスのセキュリティがより重要です。
token = d._get_session_token()
print(token)
これで、上記のAPIからトークンを取得しました。それを czvpyqg82dk0xrnj と仮定します。次にFridaコマンドを作成します。すべてのFrida公式コマンドラインツールでは、デフォルトで -H 192.168.0.2:65000 と --token xxxxxxxxxxxxxxxx のパラメータを追加するだけです。例えば以下のようになります。
frida -H 192.168.0.2:65000 -f com.android.settings --token xxxxxxxxxxxxxxxx
FIRERPA サーバーをサービス証明書付きで起動している場合は、コマンドに --certificate パラメータも追加する必要があります。
frida -H 192.168.0.2:65000 -f com.android.settings --certificate /path/to/lamda.pem --token xxxxxxxxxxxxxxxx
お気づきかもしれませんが、主な違いは以下の点です:-U が -H に変わります(USBではなくネットワーク接続のため)。また、--token パラメータが追加されます。サーバー側でサービス証明書が有効な場合、さらに --certificate パラメータも必要です。これにより、デバイスのセキュリティが確保され、不正なアクセスから保護されます。
コマンドによる使用(objection)¶
他のツール(例:objection)でも通常、上記の同様のパラメータが提供されますが、非公式ツールの多くはこれらを完全には追加していません。現時点では、当方では objection に対してのみパッチを適用しており、既存の使用に影響はありません。しかし、objection は長期間更新されていないため、上流へのプッシュは行っていません。提供している objection-1.11.0-command-patch.diff をダウンロードし、インストール済みの objection コードディレクトリ(pip3 show objection コマンドでインストールパスを確認できます)にこのパッチを適用してください。
その後、以下のように使用できます。--token パラメータが増えただけであることがわかります。
objection -N -h 192.168.0.2 -p 65000 --token xxxxxxxxxxxxxxxx explore
また、サーバー起動時にサービス証明書が使用されている場合は、同様に --certificate を追加します。
objection -N -h 192.168.0.2 -p 65000 --certificate /path/to/lamda.pem --token xxxxxxxxxxxxxxxx explore
アプリケーションインターフェースの公開¶
このセクションは Frida エクスポートインターフェース の章に移行されました。