背景
Fridaは基本的にUSB経由で実行することを前提とされているのですが、macOSでDev Containerを使うとホストマシンのUSBデバイスを上手くコンテナ内に繋げることができません。
多分、何らかのセキュリティ上の問題だと思うのですがそれでは困るのでLAN経由で繋げられるようにします。
環境
- Jailbreak済みのiOS/iPadOSデバイス
- Sileoでのみ検証
必要なものは脱獄されたデバイスだけです。
まず最初に、
- Fridaを追加
- Frida, openssh, NewTerm 3 Beta, gettext-localizationsをインストール
ルートパスワードを忘れてしまっている場合などはNewTerm 3 Betaを使って修正しましょう。
sudo passwd rootとやればルートパスワードを変更できます。
SSH接続
var/
└── jb/
├── Library/
│ └── LaunchDaemons/
│ └── re.frida.server.plist
└── usr/
└── lib/
├── frida/
│ └── frida-agent.dylib
└── sbin/
└── frida-sererルートパスワードが変更できたらssh root@192.168.XXX.YYYでデバイスに繋げることができるので繋ぎます
ディレクトリの構成は上のようになっているので、vi /var/jb/Library/LaunchDaemons/re.frida.server.plistとしてファイルを編集します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>re.frida.server</string>
<key>Program</key>
<string>/var/jb/usr/sbin/frida-server</string>
<key>ProgramArguments</key>
<array>
<string>/var/jb/usr/sbin/frida-server</string>
</array>
<key>UserName</key>
<string>root</string>
<key>POSIXSpawnType</key>
<string>Interactive</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>ThrottleInterval</key>
<integer>5</integer>
<key>ExecuteAllowed</key>
<true/>
</dict>
</plist>このうちProgramArgumentsを以下のように変更します。
<key>ProgramArguments</key>
<array>
<string>/var/jb/usr/sbin/frida-server</string>
<string>-l</string>
<string>0.0.0.0</string>
</array>保存したら以下のコマンドで設定ファイルを読み込ませます。
$ launchctl unload re.frida.server.plist
$ launchctl load re.frida.server.plistこれでps aux | grep fridaとすれば/var/jb/usr/sbin/frida-server -l 0.0.0.0のように起動するようになっています。
まとめ
LAN経由で繋がると便利です、Fridaについてもっと詳しくなりたいですね。
新年あけましておめでとうございます、かしこ。