macOS Dirty NIB
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
For further detail about the technique check the original post from: https://blog.xpnsec.com/dirtynib/ and the following post by https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/. Here is a summary:
Nib(NeXT Interface Builderの略)ファイルは、Appleの開発エコシステムの一部であり、アプリケーション内のUI要素とその相互作用を定義するために使用されます。これらはウィンドウやボタンなどのシリアライズされたオブジェクトを含み、ランタイムで読み込まれます。現在も使用されていますが、Appleはより包括的なUIフローの視覚化のためにStoryboardを推奨しています。
主要なNibファイルは、アプリケーションのInfo.plist
ファイル内の**NSMainNibFile
の値で参照され、アプリケーションのmain
関数で実行されるNSApplicationMain
**関数によって読み込まれます。
初期設定:
XCodeを使用して新しいNIBファイルを作成します。
インターフェースにオブジェクトを追加し、そのクラスをNSAppleScript
に設定します。
ユーザー定義のランタイム属性を介して初期のsource
プロパティを設定します。
コード実行ガジェット:
この設定により、必要に応じてAppleScriptを実行できます。
Apple Script
オブジェクトをアクティブにするボタンを統合し、特にexecuteAndReturnError:
セレクタをトリガーします。
テスト:
テスト用のシンプルなApple Script:
XCodeデバッガーで実行し、ボタンをクリックしてテストします。
準備:
ターゲットアプリ(例:Pages)を別のディレクトリ(例:/tmp/
)にコピーします。
Gatekeeperの問題を回避し、アプリをキャッシュするためにアプリを起動します。
NIBファイルの上書き:
既存のNIBファイル(例:About Panel NIB)を作成したDirtyNIBファイルで置き換えます。
実行:
アプリと対話して実行をトリガーします(例:About
メニュー項目を選択)。
ユーザーの同意なしに、AppleScriptを修正して写真などのユーザーデータにアクセスし、抽出します。
任意のコードを実行することを示す悪意のある.xibファイルのサンプルにアクセスして確認します。
投稿https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/では、ダーティNibの作成方法に関するチュートリアルを見つけることができます。
起動制約は、予期しない場所(例:/tmp
)からのアプリの実行を妨げます。
起動制約によって保護されていないアプリを特定し、NIBファイルインジェクションのターゲットにすることが可能です。
macOS Sonoma以降、アプリバンドル内の変更が制限されています。ただし、以前の方法は次のように行われました:
アプリを別の場所(例:/tmp/
)にコピーします。
初期の保護を回避するために、アプリバンドル内のディレクトリの名前を変更します。
Gatekeeperに登録するためにアプリを実行した後、アプリバンドルを変更します(例:MainMenu.nibをDirty.nibに置き換えます)。
ディレクトリの名前を元に戻し、アプリを再実行してインジェクトされたNIBファイルを実行します。
注意: 最近のmacOSのアップデートにより、Gatekeeperキャッシュ後にアプリバンドル内のファイル変更が防止され、この脆弱性は無効化されました。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)