hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sip.md

145 lines
14 KiB
Markdown
Raw Normal View History

# macOS SIP
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2023-07-07 23:42:27 +00:00
* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション
* [**公式のPEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>
2023-07-07 23:42:27 +00:00
## **基本情報**
2023-07-07 23:42:27 +00:00
**System Integrity Protection (SIP)** は、macOSのセキュリティ技術であり、特定のシステムディレクトリを未承認のアクセスから保護します。これには、ルートユーザーでもこれらのディレクトリへの変更、ファイルの作成、変更、削除が含まれます。SIPが保護する主なディレクトリは次のとおりです
* **/System**
* **/bin**
* **/sbin**
* **/usr**
2023-07-07 23:42:27 +00:00
これらのディレクトリおよびサブディレクトリの保護ルールは、**`/System/Library/Sandbox/rootless.conf`** ファイルで指定されています。このファイルでは、アスタリスク(\*で始まるパスは、SIPの制限の例外を表します。
2023-07-07 23:42:27 +00:00
たとえば、次の設定:
```javascript
javascriptCopy code/usr
* /usr/libexec/cups
* /usr/local
* /usr/share/man
```
2023-07-07 23:42:27 +00:00
次のように示されています。**`/usr`**ディレクトリは一般的にSIPによって保護されています。ただし、指定された3つのサブディレクトリ`/usr/libexec/cups`、`/usr/local`、および`/usr/share/man`)では変更が許可されており、先頭にアスタリスク(\*)が付いてリストされています。
2023-07-07 23:42:27 +00:00
ディレクトリやファイルがSIPによって保護されているかどうかを確認するには、**`ls -lOd`**コマンドを使用して**`restricted`**または**`sunlnk`**フラグの存在をチェックします。例えば:
```bash
ls -lOd /usr/libexec/cups
drwxr-xr-x 11 root wheel sunlnk 352 May 13 00:29 /usr/libexec/cups
```
2023-07-07 23:42:27 +00:00
この場合、**`sunlnk`** フラグは、`/usr/libexec/cups` ディレクトリ自体は削除できないことを示していますが、その中のファイルは作成、変更、削除が可能です。
2023-07-07 23:42:27 +00:00
一方、
```bash
ls -lOd /usr/libexec
drwxr-xr-x 338 root wheel restricted 10816 May 13 00:29 /usr/libexec
```
2023-07-07 23:42:27 +00:00
ここでは、**`restricted`** フラグは、`/usr/libexec` ディレクトリがSIPによって保護されていることを示しています。SIPで保護されたディレクトリでは、ファイルの作成、変更、削除ができません。
2023-07-07 23:42:27 +00:00
### SIPの状態
2023-07-07 23:42:27 +00:00
次のコマンドを使用して、システムでSIPが有効かどうかを確認できます。
```bash
csrutil status
```
2023-07-07 23:42:27 +00:00
SIPを無効にする必要がある場合は、コンピュータをリカバリーモードで再起動する必要があります起動時にCommand+Rを押します。その後、次のコマンドを実行してください
```bash
csrutil disable
```
2023-07-07 23:42:27 +00:00
SIPを有効にしたままデバッグ保護を削除したい場合は、次の手順で行うことができます:
```bash
csrutil enable --without debug
```
2023-07-07 23:42:27 +00:00
### その他の制限
2023-07-07 23:42:27 +00:00
SIPは他にもいくつかの制限を課しています。たとえば、**署名されていないカーネル拡張kextsの読み込み**を禁止し、macOSシステムプロセスの**デバッグ**を防止します。また、dtraceのようなツールがシステムプロセスを検査するのを妨げます。
2023-07-07 23:42:27 +00:00
## SIPの回避方法
2023-07-07 23:42:27 +00:00
### 価格
2023-07-07 23:42:27 +00:00
攻撃者がSIPを回避することに成功した場合、以下のことが得られます
2023-07-07 23:42:27 +00:00
* すべてのユーザーのメール、メッセージ、Safariの履歴などを読むことができる
* ウェブカメラ、マイクなどの許可を付与することができるSIPで保護されたTCCデータベースに直接書き込むことによって
* 永続性SIPで保護された場所にマルウェアを保存し、誰も削除することができなくなります。また、MRTを改ざんすることもできます。
* カーネル拡張の簡単な読み込み(これには他の厳格な保護策もあります)。
2023-07-07 23:42:27 +00:00
### インストーラーパッケージ
2023-07-07 23:42:27 +00:00
**Appleの証明書で署名されたインストーラーパッケージ**は、SIPの保護を回避することができます。これは、標準の開発者によって署名されたパッケージでも、SIPで保護されたディレクトリを変更しようとする場合にはブロックされます。
2023-07-07 23:42:27 +00:00
### 存在しないSIPファイル
2023-07-07 23:42:27 +00:00
潜在的な抜け穴の1つは、**`rootless.conf`に指定されたファイルが現在存在しない場合**、作成することができるというものです。マルウェアはこれを利用してシステム上で**永続性を確立**することができます。たとえば、悪意のあるプログラムは、`rootless.conf`にリストされているが存在しない場合に、`/System/Library/LaunchDaemons`に.plistファイルを作成することができます。
### com.apple.rootless.install.heritable
{% hint style="danger" %}
2023-07-07 23:42:27 +00:00
権限 **`com.apple.rootless.install.heritable`** はSIPを回避することができます
{% endhint %}
2023-07-07 23:42:27 +00:00
[**このブログポストの研究者たち**](https://www.microsoft.com/en-us/security/blog/2021/10/28/microsoft-finds-new-macos-vulnerability-shrootless-that-could-bypass-system-integrity-protection/)は、macOSのシステム整合性保護SIPメカニズムである「Shrootless」という脆弱性を発見しました。この脆弱性は、SIPのファイルシステム制限を回避するために、`system_installd`デーモンに付与された権限である**`com.apple.rootless.install.heritable`**に関連しています。
2023-07-07 23:42:27 +00:00
研究者たちは、Appleの署名されたパッケージ.pkgファイルのインストール中に、パッケージに含まれる**post-installスクリプト**を**`system_installd`が実行**することを発見しました。これらのスクリプトはデフォルトのシェルである**`zsh`**によって実行され、非対話モードでも存在する場合は**`/etc/zshenv`**ファイルからコマンドが自動的に実行されます。この動作は攻撃者によって悪用される可能性があります。悪意のある`/etc/zshenv`ファイルを作成し、`system_installd`が`zsh`を呼び出すのを待つことで、デバイス上で任意の操作を実行することができます。
2023-07-07 23:42:27 +00:00
さらに、**`/etc/zshenv`はSIPの回避だけでなく、一般的な攻撃手法として使用できる**ことが発見されました。各ユーザープロファイルには`~/.zshenv`ファイルがあり、これは`/etc/zshenv`と同じように動作しますが、ルート権限は必要ありません。このファイルは永続性のメカニズムとして使用することができ、`zsh`が起動するたびにトリガーされるか、特権の昇格メカニズムとして使用することができます。管理者ユーザーが`sudo -s`または`sudo <command>`を使用してルートに昇格する場合、`~/.zshenv`ファイルがトリガーされ、実質的にルートに昇格します。
2023-07-07 23:42:27 +00:00
[**CVE-2022-22583**](https://perception-point.io/blog/technical-analysis-cve-2022-22583/)では、同じ**`system_installd`**プロセスが悪用される可能性があることが発見されました。なぜなら、**post-installスクリプトが`/tmp`内のSIPで保護されたランダムに名前が付けられたフォルダに配置**されていたからです。ただし、**`/tmp`自体はSIPで保護されていない**ため、**仮想イメージをマウント**することが可能であり、その後、**インストーラー**が**post-installスクリプト**をそこに配置し、**仮想イメージをアンマウント**し、**すべてのフォルダを再作成**し、**ペイロード**を実行するための**post-installationスクリプト**を追加することができました。
### **com.apple.rootless.install**
{% hint style="danger" %}
2023-07-07 23:42:27 +00:00
権限 **`com.apple.rootless.install`** はSIPを回避することができます
{% endhint %}
2023-07-07 23:42:27 +00:00
[**CVE-2022-26712**](https://jhftss.github.io/CVE-2022-26712-The-POC-For-SIP-Bypass-Is-Even-Tweetable/)では、システムのXPCサービスである`/System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc`には、**`com.apple.rootless.install`**という権限があり、プロセスにSIPの制限を回避する権限を与えます。また、**セキュリティチェックなしでファイルを移動する**ためのメソッドを公開しています。
## シールドされたシステムスナップショット
シールドされたシステムスナップショットは、Appleが**macOS Big SurmacOS 11**で導入した機能であり、**システム整合性保護SIP**メカニズムの一部として、追加のセキュリティとシステムの安定性を提供するものです。これらは、システムボリュームの読み取り専用バージョンです。
以下に詳細を示します:
1. **不変のシステム**シールドされたシステムスナップショットにより、macOSシステムボリュームは「不変」となり、変更することができなくなります。これにより、セキュリティやシステムの安定性に影響を及ぼす可能性のある不正な変更や誤った変更を防止します。
2. **システムソフトウェアの更新**macOSのアップデートやアップグ
| | スナップショットディスク: disk3s1s1
| | スナップショットマウントポイント: /
<strong>| | スナップショットシールド: はい
</strong>[...]
</code></pre>
2023-07-07 23:42:27 +00:00
前の出力では、**macOSシステムボリュームのスナップショットがシールされている**ことがわかりますOSによって暗号的に署名されています。したがって、SIPがバイパスされて変更された場合、**OSは起動しなくなります**。
2023-07-07 23:42:27 +00:00
シールが有効であることも確認できます。次のコマンドを実行してください。
```
csrutil authenticated-root status
Authenticated Root status: enabled
```
2023-07-07 23:42:27 +00:00
さらに、それは**読み取り専用**としてマウントされています。
```
mount
/dev/disk3s1s1 on / (apfs, sealed, local, read-only, journaled)
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2023-07-07 23:42:27 +00:00
* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>