14 KiB
macOS SIP
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- あなたはサイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください、私たちの独占的なNFTのコレクション
- 公式のPEASS&HackTricksのグッズを手に入れましょう
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm.
- ハッキングのトリックを共有するために、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
基本情報
System Integrity Protection (SIP) は、macOSのセキュリティ技術であり、特定のシステムディレクトリを未承認のアクセスから保護します。これには、ルートユーザーでもこれらのディレクトリへの変更、ファイルの作成、変更、削除が含まれます。SIPが保護する主なディレクトリは次のとおりです:
- /System
- /bin
- /sbin
- /usr
これらのディレクトリおよびサブディレクトリの保護ルールは、/System/Library/Sandbox/rootless.conf
ファイルで指定されています。このファイルでは、アスタリスク(*)で始まるパスは、SIPの制限の例外を表します。
たとえば、次の設定:
/usr
* /usr/libexec/cups
* /usr/local
* /usr/share/man
次のように示されています。/usr
ディレクトリは一般的にSIPによって保護されています。ただし、3つのサブディレクトリ(/usr/libexec/cups
、/usr/local
、および/usr/share/man
)では変更が許可されており、先頭にアスタリスク(*)が付いてリストされています。
ディレクトリやファイルがSIPによって保護されているかどうかを確認するには、ls -lOd
コマンドを使用して restricted
または sunlnk
フラグの存在をチェックできます。例えば:
ls -lOd /usr/libexec/cups
drwxr-xr-x 11 root wheel sunlnk 352 May 13 00:29 /usr/libexec/cups
この場合、sunlnk
フラグは、/usr/libexec/cups
ディレクトリ自体は削除できないことを示していますが、その中のファイルは作成、変更、削除が可能です。
一方、
ls -lOd /usr/libexec
drwxr-xr-x 338 root wheel restricted 10816 May 13 00:29 /usr/libexec
ここでは、restricted
フラグは /usr/libexec
ディレクトリがSIPによって保護されていることを示しています。SIPで保護されたディレクトリでは、ファイルの作成、変更、削除ができません。
SIPの状態
次のコマンドを使用して、システムでSIPが有効かどうかを確認できます。
csrutil status
SIPを無効にする必要がある場合は、コンピュータをリカバリーモードで再起動する必要があります(起動時にCommand+Rを押します)。その後、次のコマンドを実行してください:
csrutil disable
SIPを有効にしたままデバッグ保護を削除したい場合は、次の手順で行うことができます。
csrutil enable --without debug
その他の制限
SIPは他にもいくつかの制限を課しています。たとえば、署名されていないカーネル拡張(kexts)の読み込みを禁止し、macOSシステムプロセスのデバッグを防止します。また、dtraceのようなツールがシステムプロセスを検査するのを妨げます。
SIPの回避方法
価格
攻撃者がSIPを回避することに成功した場合、以下のことが得られます:
- すべてのユーザーのメール、メッセージ、Safariの履歴などを読むことができる
- ウェブカメラ、マイクなどの許可を付与することができる(SIPで保護されたTCCデータベースに直接書き込むことにより)
- 永続性:SIPで保護された場所にマルウェアを保存し、誰も削除することができなくなります。また、MRTを改ざんすることもできます。
- カーネル拡張の簡単な読み込み(これには他の厳格な保護策もあります)。
インストーラーパッケージ
Appleの証明書で署名されたインストーラーパッケージは、SIPの保護を回避することができます。これは、標準の開発者によって署名されたパッケージでも、SIPで保護されたディレクトリを変更しようとする場合にはブロックされます。
存在しないSIPファイル
潜在的な抜け穴の1つは、rootless.conf
に指定されたファイルが現在存在しない場合、作成することができるというものです。マルウェアはこれを利用してシステム上で永続性を確立することができます。たとえば、悪意のあるプログラムがrootless.conf
にリストされているが存在しない場合、/System/Library/LaunchDaemons
に.plistファイルを作成することができます。
com.apple.rootless.install.heritable
{% hint style="danger" %}
権限 com.apple.rootless.install.heritable
はSIPを回避することができます
{% endhint %}
このブログポストの研究者たちは、macOSのシステム整合性保護(SIP)メカニズムである「Shrootless」という脆弱性を発見しました。この脆弱性は、SIPのファイルシステム制限を回避するために、system_installd
デーモンに付与された権限である**com.apple.rootless.install.heritable
**に関連しています。
研究者たちは、Appleの署名されたパッケージ(.pkgファイル)のインストール中に、パッケージに含まれるpost-installスクリプトを**system_installd
が実行することを発見しました。これらのスクリプトはデフォルトのシェルであるzsh
によって実行され、非対話モードでも存在する場合は/etc/zshenv
**ファイルからコマンドが自動的に実行されます。この動作は攻撃者によって悪用される可能性があります。悪意のある/etc/zshenv
ファイルを作成し、system_installd
がzsh
を呼び出すのを待つことで、デバイス上で任意の操作を実行することができます。
さらに、/etc/zshenv
はSIPの回避だけでなく、一般的な攻撃手法として使用できることが発見されました。各ユーザープロファイルには~/.zshenv
ファイルがあり、これは/etc/zshenv
と同じように動作しますが、ルート権限は必要ありません。このファイルは永続性のメカニズムとして使用することができ、zsh
が起動するたびにトリガーされるか、特権の昇格メカニズムとして使用することができます。管理者ユーザーがsudo -s
またはsudo <command>
を使用してルートに昇格する場合、~/.zshenv
ファイルがトリガーされ、実質的にルートに昇格します。
CVE-2022-22583では、同じ**system_installd
プロセスが悪用される可能性があることが発見されました。なぜなら、post-installスクリプトが/tmp
内のSIPで保護されたランダムに名前が付けられたフォルダに配置されていたからです。ただし、/tmp
自体はSIPで保護されていないため、仮想イメージをマウントすることが可能であり、その後、インストーラーがpost-installスクリプトをそこに配置し、仮想イメージをアンマウントし、すべてのフォルダを再作成し、ペイロードを実行するためのpost-installationスクリプト**を追加することができました。
com.apple.rootless.install
{% hint style="danger" %}
権限 com.apple.rootless.install
はSIPを回避することができます
{% endhint %}
CVE-2022-26712では、システムのXPCサービスである/System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc
には、**com.apple.rootless.install
**という権限があり、プロセスにSIPの制限を回避する権限を与えます。また、セキュリティチェックなしでファイルを移動するためのメソッドを公開しています。
シールドされたシステムスナップショット
シールドされたシステムスナップショットは、Appleが**macOS Big Sur(macOS 11)**で導入した機能であり、**システム整合性保護(SIP)**メカニズムの一部として、追加のセキュリティとシステムの安定性を提供するものです。これらは、システムボリュームの読み取り専用バージョンです。
以下に詳細を示します:
- 不変のシステム:シールドされたシステムスナップショットにより、macOSシステムボリュームは「不変」となり、変更することができなくなります。これにより、セキュリティやシステムの安定性に影響を及ぼす可能性のある不正な変更や誤った変更を防止します。
- システムソフトウェアの更新:macOSのアップデートやアップグレードを
| | スナップショットディスク: disk3s1s1
| | スナップショットマウントポイント: /
| | スナップショットシールド: はい
[...]
+-> ボリューム disk3s5 281959B7-07A1-4940-BDDF-6419360F3327 APFSボリュームディスク(役割): disk3s5(データ) 名前: Macintosh HD - Data(大文字と小文字を区別しない) FileVault: はい(ロック解除済み)
前の出力では、ユーザーがアクセス可能な場所が/System/Volumes/Data
の下にマウントされていることがわかります。
さらに、macOSシステムボリュームのスナップショットは/
にマウントされており、シールド(OSによって暗号的に署名されている)されています。したがって、SIPがバイパスされて変更された場合、OSは起動しなくなります。
また、シールドが有効であることを確認するには、次のコマンドを実行します:
csrutil authenticated-root status
Authenticated Root status: enabled
さらに、スナップショットディスクは読み取り専用としてマウントされます。
mount
/dev/disk3s1s1 on / (apfs, sealed, local, read-only, journaled)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm.
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。