macOS Installers Abuse
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)
macOSのインストーラーパッケージ(.pkg
ファイルとも呼ばれる)は、macOSがソフトウェアを配布するために使用するファイル形式です。これらのファイルは、ソフトウェアが正しくインストールおよび実行するために必要なすべてを含む箱のようなものです。
パッケージファイル自体は、ターゲットコンピュータにインストールされるファイルとディレクトリの階層を保持するアーカイブです。また、インストール前後にタスクを実行するためのスクリプトを含むこともでき、設定ファイルのセットアップや古いバージョンのソフトウェアのクリーンアップなどを行います。
Distribution (xml): カスタマイズ(タイトル、ウェルカムテキスト…)およびスクリプト/インストールチェック
PackageInfo (xml): 情報、インストール要件、インストール場所、実行するスクリプトへのパス
Bill of materials (bom): インストール、更新、または削除するファイルのリストとファイル権限
Payload (CPIOアーカイブgzip圧縮): PackageInfoからinstall-location
にインストールするファイル
Scripts (CPIOアーカイブgzip圧縮): インストール前後のスクリプトおよび実行のために一時ディレクトリに抽出されたその他のリソース。
インストーラーの内容を手動で解凍せずに視覚化するには、無料ツールSuspicious Packageを使用することもできます。
DMGファイル、またはAppleディスクイメージは、AppleのmacOSでディスクイメージに使用されるファイル形式です。DMGファイルは本質的にマウント可能なディスクイメージ(独自のファイルシステムを含む)であり、生のブロックデータを含んでおり、通常は圧縮され、時には暗号化されています。DMGファイルを開くと、macOSはそれを物理ディスクのようにマウントし、その内容にアクセスできるようにします。
.dmg
インストーラーは非常に多くの形式をサポートしており、過去には脆弱性を含むものが悪用されてカーネルコード実行を取得されました。
DMGファイルの階層は、内容に基づいて異なる場合があります。ただし、アプリケーションDMGの場合、通常は次の構造に従います:
トップレベル:これはディスクイメージのルートです。通常、アプリケーションと、場合によってはアプリケーションフォルダへのリンクが含まれています。
アプリケーション(.app):これは実際のアプリケーションです。macOSでは、アプリケーションは通常、アプリケーションを構成する多くの個別のファイルとフォルダを含むパッケージです。
アプリケーションリンク:これはmacOSのアプリケーションフォルダへのショートカットです。これにより、アプリケーションを簡単にインストールできるようになります。このショートカットに.appファイルをドラッグすることで、アプリをインストールできます。
例えば、事前または事後インストールスクリプトが**/var/tmp/Installerutil
**から実行されている場合、攻撃者がそのスクリプトを制御できれば、実行されるたびに特権を昇格させることができます。あるいは、別の類似の例:
これは、いくつかのインストーラーやアップデーターがrootとして何かを実行するために呼び出す公開関数です。この関数は、実行するファイルのパラメータとしてパスを受け入れますが、攻撃者がこのファイルを変更できれば、rootとしての実行を悪用して特権を昇格させることができます。
For more info check this talk: https://www.youtube.com/watch?v=lTOItyjTTkw
インストーラーが /tmp/fixedname/bla/bla
に書き込む場合、noowners で /tmp/fixedname
上に マウントを作成 することが可能で、インストール中に 任意のファイルを変更 してインストールプロセスを悪用できます。
これの例が CVE-2021-26089 で、定期的なスクリプトを上書き して root として実行を得ることに成功しました。詳細については、こちらのトークを参照してください: OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl
プレインストールおよびポストインストールスクリプトを持つ**.pkg
**ファイルを生成することが可能で、スクリプト内のマルウェア以外に実際のペイロードはありません。
パッケージの配布xmlファイルに**<script>
タグを追加することが可能で、そのコードは実行され、system.run
を使用してコマンドを実行**できます。
dist.xml内のスクリプトとJSコードを使用した悪意のあるインストーラー
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、練習する:HackTricks Training GCP Red Team Expert (GRTE)