
boko.pyは、macOS用のアプリケーションスキャナーで、アプリケーションの実行ファイルにおけるdylibハイジャックや脆弱なdylibの脆弱性、さらにアプリケーションが使用するスクリプトでバックドア化される可能性があるものを検索・特定します。また、手動でファイルシステムをブラウズして分析する代わりに、注目すべきファイルを呼び出して一覧表示します。アクティブディスカバリー機能により、実行ファイルがdylibハイジャックに対して脆弱かどうかを推測する必要はもうありません。
このツールを作成した理由は、Dylib Hijack Scannerが発見したデータをより細かく制御したかったからです。ほとんどの公開スキャナーは、脆弱なdylibの最初のケースを発見するとそこで止まり、残りのrpathを拡張しません。最初の結果がSIPで保護された領域内の存在しないファイルに展開されることがあるため、残りの展開済みパスも取得したかったのです。そのため、誤検出が発生するので、ツールは各項目に確実性フィールドを割り当てます。
| 確実性 | 説明 |
|---|---|
| 確実 | 脆弱性は100%悪用可能 |
| 高 | 脆弱性がメイン実行ファイルに関連し、rpathがロード順序で2番目の場合、悪用される可能性が高い |
| 可能性あり | dylibやバックドア可能なスクリプトに割り当てられる。調査する価値はあるが、悪用できない可能性もある |
| 低 | ロード順序が遅いため悪用の可能性は低いが、知識は力である |
このツールの基盤は、Patrick Wardle(@synack)によるDylibHijackのscan.pyに基づいています。
bokoの使い方やクラスとしての活用方法の詳細については、Wikiをご覧ください。
boko.py [-h] (-r | -i | -p /path/to/app) (-A | -P | -b) [-oS outputfile | -oC outputfile | -oA outputfile] [-s] [-v]
アクティブモード(-A)は、-pフラグと特定のプログラムを選択した場合にのみ使用することを推奨します。また、確実な脆弱性のみを探している場合を除き、-vを-oSまたは-oAと一緒に使用することをお勧めします。
警告:
このツールを-iと(-Aまたは-b)フラグを一緒に実行することは強く推奨されません。この組み合わせは、システム上のすべての実行ファイルを一度に3秒間開きます。その結果、システムがクラッシュしたり速度低下が発生しても、一切の責任を負いません。さらに、システムに休眠中のマルウェアがある場合、それが実行されます。また、Xcodeがインストールされている場合は/Applicationsディレクトリ全体をスキャンしないことをお勧めします。非常に時間がかかるためです。
python -m pip install psutil| 引数 | 説明 |
|---|
| -h, --help | このヘルプメッセージを表示して終了 |
| -r, --running | 現在実行中のプロセスを確認 |
| -i, --installed | インストール済みの全アプリケーションを確認 |
| -p /file.app | 特定のアプリケーションを確認(例:/Application/Safari.app) |
| -A, --active | 発見された実行可能バイナリを実行し、ハイジャック可能なdylibを能動的に特定 |
| -P, --passive | ファイルヘッダーのみを確認してチェックを実行(デフォルト) |
| -b, --both | 両方の脆弱性テスト方法を実行 |
| -oS outputfile | 標準出力を.logファイルに出力 |
| -oC outputfile | 結果を.csvファイルに出力 |
| -oA outputfile | 結果を.csvファイルと標準ログに出力 |
| -s, --sipdisabled | SIPが無効なシステムで使用し、通常は読み取り専用のパスを検索 |
| -v, --verbose | スクリプト実行中にすべての結果を詳細モードで出力。指定しない場合は「確実」の脆弱性のみコンソールに表示 |