macOS Dirty NIB
この技術の詳細については、元の投稿を確認してください: https://blog.xpnsec.com/dirtynib/**。以下は要約です:
NIBファイルは、Appleの開発エコシステムの一部であり、アプリケーション内のUI要素とそれらの相互作用を定義するために意図されています。ウィンドウやボタンなどのシリアライズされたオブジェクトを含み、実行時に読み込まれます。Appleは現在、より包括的なUIフローの視覚化のためにStoryboardsを推奨していますが、NIBファイルは引き続き使用されています。
NIBファイルのセキュリティ上の懸念
NIBファイルはセキュリティリスクであることに注意することが重要です。これらは任意のコマンドを実行する可能性があり、アプリ内のNIBファイルの変更はGatekeeperがアプリを実行するのを妨げないため、重大な脅威となります。
Dirty NIB注入プロセス
NIBファイルの作成とセットアップ
初期セットアップ:
XCodeを使用して新しいNIBファイルを作成します。
インターフェースにオブジェクトを追加し、そのクラスを
NSAppleScript
に設定します。User Defined Runtime Attributesを介して初期の
source
プロパティを構成します。
コード実行ガジェット:
このセットアップにより、必要に応じてAppleScriptを実行できます。
ボタンを統合して
Apple Script
オブジェクトをアクティブにし、特にexecuteAndReturnError:
セレクタをトリガーします。
テスト:
テスト目的の簡単なAppleScript:
XCodeデバッガで実行してボタンをクリックしてテストします。
アプリケーションのターゲティング(例: Pages)
準備:
ターゲットアプリ(例: Pages)を別のディレクトリ(例:
/tmp/
)にコピーします。Gatekeeperの問題を回避し、アプリをキャッシュするためにアプリを起動します。
NIBファイルの上書き:
既存のNIBファイル(例: About Panel NIB)を作成したDirtyNIBファイルで置き換えます。
実行:
アプリと対話して実行をトリガーします(例:
About
メニューアイテムを選択)。
概念の証明: ユーザーデータへのアクセス
ユーザーの同意なしに写真などのユーザーデータにアクセスして抽出するためにAppleScriptを変更します。
コードサンプル: 悪意のある.xibファイル
任意のコードを実行することを示す悪意のある.xibファイルのサンプルにアクセスしてレビューします。
起動制約の対処
起動制約は、予期しない場所(例:
/tmp
)からのアプリの実行を妨げます。起動制約で保護されていないアプリを特定し、NIBファイルの注入の対象にすることが可能です。
追加のmacOS保護
macOS Sonoma以降、Appバンドル内の変更が制限されています。ただし、以前の方法は次のとおりです:
アプリを別の場所(例:
/tmp
)にコピーします。最初の保護をバイパスするためにアプリバンドル内のディレクトリの名前を変更します。
Gatekeeperに登録するためにアプリを実行した後、アプリバンドルを変更します(例: MainMenu.nibをDirty.nibに置き換えます)。
ディレクトリの名前を元に戻し、注入されたNIBファイルを実行するためにアプリを再実行します。
注意: 最近のmacOSのアップデートにより、Gatekeeperのキャッシュ後にアプリバンドル内のファイルの変更が防止され、この脆弱性が無効化されました。
Last updated