Translated ['macos-hardening/macos-security-and-privilege-escalation/mac

This commit is contained in:
Translator 2023-10-16 12:51:56 +00:00
parent 7274926404
commit 9b4e720269
2 changed files with 30 additions and 32 deletions

View file

@ -178,7 +178,7 @@
* [macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES](macos-hardening/macos-security-and-privilege-escalation/macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
* [macOS .Net Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md)
* [macOS Security Protections](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/README.md)
* [macOS Gatekeeper](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-gatekeeper.md)
* [macOS Gatekeeper / Quarantine / XProtect](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-gatekeeper.md)
* [macOS Launch/Environment Constraints](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-launch-environment-constraints.md)
* [macOS Sandbox](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md)
* [macOS Default Sandbox Debug](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md)

View file

@ -1,4 +1,4 @@
# macOS Gatekeeper
# macOS Gatekeeper / Quarantine / XProtect
<details>
@ -7,7 +7,7 @@
* **サイバーセキュリティ企業**で働いていますか? **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)**フォロー**してください。
* [**💬**](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) **に提出してください。**
*
* .
@ -16,11 +16,11 @@
## Gatekeeper
**Gatekeeper**は、Macオペレーティングシステム向けに開発されたセキュリティ機能で、ユーザーがシステム上で信頼できるソフトウェアのみを実行することを保証するために設計されています。これは、ユーザーがアプリ、プラグイン、またはインストーラーパッケージなどの**App Store以外のソース**からダウンロードして開こうとするソフトウェアを**検証**することによって機能します。
**Gatekeeper(ゲートキーパー)**は、Macオペレーティングシステム向けに開発されたセキュリティ機能で、ユーザーがシステム上で**信頼できるソフトウェアのみを実行**することを保証するために設計されています。これは、ユーザーがアプリ、プラグイン、またはインストーラーパッケージなどの**App Store以外のソースからダウンロードして開こうとするソフトウェアを検証**することによって機能します。
Gatekeeperの主要なメカニズムは、**検証**プロセスにあります。ダウンロードしたソフトウェアが**認識された開発者によって署名されているかどうか**をチェックし、ソフトウェアの信頼性を確認します。さらに、ソフトウェアが**Appleによって公証**されているかどうかも確認し、既知の悪意のあるコンテンツが含まれていないこと、および公証後に改ざんされていないことを確認します。
Gatekeeperの主要なメカニズムは、**検証**プロセスにあります。ダウンロードしたソフトウェアが**認識された開発者によって署名**されているかどうかをチェックし、ソフトウェアの信頼性を確認します。さらに、ソフトウェアが**Appleによって公証**されているかどうかも確認し、既知の悪意のあるコンテンツが含まれていないこと、および公証後に改ざんされていないことを確認します。
さらに、Gatekeeperは、ユーザーがダウンロードしたソフトウェアの初回の開封を**承認するようユーザーに促す**ことで、ユーザーの制御とセキュリティを強化します。この保護機能により、ユーザーは無害なデータファイルと間違えて害を及ぼす可能性のある実行可能なコードを誤って実行することを防ぐことができます。
さらに、Gatekeeperは、ユーザーがダウンロードしたソフトウェアの初回の実行を承認するようユーザーに**プロンプトを表示**することで、ユーザーの制御とセキュリティを強化します。この保護機能により、ユーザーが無害なデータファイルと間違えて実行する可能性のある潜在的に有害な実行可能コードを誤って実行することを防ぎます。
### アプリケーションの署名
@ -28,17 +28,17 @@ Gatekeeperの主要なメカニズムは、**検証**プロセスにあります
以下は、その動作方法です。
1. **アプリケーションの署名:** 開発者がアプリケーションを配布する準備ができたら、**開発者の秘密鍵を使用してアプリケーションに署名**します。この秘密鍵は、開発者がApple Developer Programに登録する際にAppleから発行される**証明書**と関連付けられています。署名プロセスでは、アプリのすべての部分の暗号ハッシュを作成し、このハッシュを開発者の秘密鍵で暗号化ます。
1. **アプリケーションの署名:** 開発者がアプリケーションを配布する準備ができたら、**開発者が秘密鍵を使用してアプリケーションに署名**します。この秘密鍵は、Apple Developer Programに登録するとAppleが開発者に発行する**証明書**に関連付けられています。署名プロセスでは、アプリのすべての部分の暗号ハッシュを作成し、このハッシュを開発者の秘密鍵で暗号化することが含まれます。
2. **アプリケーションの配布:** 署名されたアプリケーションは、開発者の証明書と共にユーザーに配布されます。この証明書には、対応する公開鍵が含まれています。
3. **アプリケーションの検証:** ユーザーがアプリケーションをダウンロードして実行しようとすると、Macオペレーティングシステムは開発者の証明書から公開鍵を使用してハッシュを復号化します。その後、アプリケーションの現在の状態に基づいてハッシュを再計算し、これを復号化されたハッシュと比較します。一致する場合、開発者が署名した後にアプリケーションが**変更されていない**ことを意味し、システムはアプリケーションの実行を許可します。
アプリケーションの署名は、AppleのGatekeeperテクロジーの重要な部分です。ユーザーが**インターネットからダウンロードしたアプリケーションを開こうとする**と、Gatekeeperはアプリケーションの署名を検証します。Appleが既知の開発者に発行した証明書で署名されており、コードが改ざんされていない場合、Gatekeeperはアプリケーションの実行を許可します。それ以外の場合、Gatekeeperはアプリケーションをブロックし、ユーザーに警告します。
アプリケーションの署名は、AppleのGatekeeperテクロジーの重要な部分です。ユーザーが**インターネットからダウンロードしたアプリケーションを開こうとする**と、Gatekeeperはアプリケーションの署名を検証します。Appleが既知の開発者に発行した証明書で署名されており、コードが改ざんされていない場合、Gatekeeperはアプリケーションの実行を許可します。それ以外の場合、Gatekeeperはアプリケーションをブロックし、ユーザーに警告を表示します。
macOS Catalina以降、**GatekeeperはアプリケーションがAppleによって公証されているかどうかもチェック**します。公証プロセスでは、アプリケーションが既知のセキュリティの問題や悪意のあるコードを含んでいないかどうかをチェックし、これらのチェックに合格した場合、AppleはGatekeeperが検証できるアプリケーションにチケットを追加します。
#### 署名の確認
**マルウェアサンプル**をチェックする際には、常にバイナリの**署名を確認**する必要があります。署名した**開発者**が既に**マルウェアに関連している**可能性があるためです。
**マルウェアサンプル**をチェックする場合は、常にバイナリの**署名を確認**する必要があります。署名した**開発者**が既に**マルウェアに関連している**可能性があるためです。
```bash
# Get signer
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
@ -59,7 +59,7 @@ codesign -s <cert-name-keychain> toolsdemo
Appleの公証プロセスは、ユーザーを潜在的に有害なソフトウェアから保護するための追加の安全策として機能します。これは、開発者が自分のアプリケーションをAppleの公証サービスに提出することを含みます。このサービスは、App Reviewとは異なるものであり、提出されたソフトウェアを悪意のあるコンテンツやコード署名の潜在的な問題から検査する自動化システムです。
ソフトウェアがこの検査を通過し、懸念事項がない場合、公証サービスは公証チケットを生成します。その後、開発者はこのチケットをソフトウェアに添付する必要があります。このプロセスは「ステープリング」と呼ばれます。さらに、公証チケットはオンラインで公開され、GatekeeperAppleのセキュリティ技術がアクセスできるようになります。
ソフトウェアがこの検査を通過し、懸念事項がない場合、公証サービスは公証チケットを生成します。その後、開発者はこのチケットをソフトウェアに添付する必要があります。このプロセスは「ステープリング」と呼ばれます。さらに、公証チケットはオンラインで公開され、GatekeeperAppleのセキュリティ技術がアクセスできるようになります。
ユーザーがソフトウェアを初めてインストールまたは実行する際、実行可能ファイルにステープルされているか、オンラインで見つかるかにかかわらず、公証チケットの存在はGatekeeperにソフトウェアがAppleによって公証されたことを通知します。その結果、Gatekeeperは初回起動ダイアログに説明的なメッセージを表示し、ソフトウェアがAppleによって悪意のあるコンテンツのチェックを受けたことを示します。このプロセスにより、ユーザーは自分のシステムにインストールまたは実行するソフトウェアのセキュリティに対する信頼性が向上します。
@ -73,14 +73,14 @@ GateKeeperの状態を確認するには、次のコマンドを使用します
spctl --status
```
{% hint style="danger" %}
GateKeeperの署名チェックは、**Quarantine属性を持つファイル**にのみ実行されます。
GateKeeperの署名チェックは、**Quarantine属性を持つファイル**にのみ実行されます。すべてのファイルに対して実行されるわけではありません。
{% endhint %}
GateKeeperは、**設定と署名**に基づいてバイナリが実行可能かどうかをチェックします
GateKeeperは、**設定と署名**に基づいてバイナリが実行可能かどうかをチェックします
<figure><img src="../../../.gitbook/assets/image (678).png" alt=""><figcaption></figcaption></figure>
この設定を保持するデータベースは、**`/var/db/SystemPolicy`**にあります。次のコマンドをrootとして実行して、このデータベースを確認できます
この設定を保持するデータベースは、**`/var/db/SystemPolicy`**にあります。次のコマンドをrootとして実行して、このデータベースを確認できます
```bash
# Open database
sqlite3 /var/db/SystemPolicy
@ -188,7 +188,7 @@ xattr portada.png
com.apple.macl
com.apple.quarantine
```
次に、**拡張属性**の**値**を確認し、次のコマンドでクォレンティン属性を書き込んだアプリを特定します。
次に、拡張属性の値を確認し、quarantine属性を書き込んだアプリを特定します。
```bash
xattr -l portada.png
com.apple.macl:
@ -238,28 +238,28 @@ system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistC
XProtectは、**/Library/Apple/System/Library/CoreServices/XProtect.bundle**というSIPで保護された場所にあり、バンドル内にはXProtectが使用する情報が含まれています
* **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**これらのcdhashを持つコードがレガシー権限を使用できるようにします。
* **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**これらのcdhashを持つコードがレガシー権限を使用できるようにします。
* **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**BundleIDとTeamIDまたは最小バージョンを示すことで、ロードが禁止されているプラグインと拡張機能のリストです。
* **`XProtect.bundle/Contents/Resources/XProtect.yara`**マルウェアを検出するためのYaraルールです。
* **`XProtect.bundle/Contents/Resources/gk.db`**ブロックされたアプリケーションとTeamIDのハッシュを含むSQLite3データベースです。
* **`XProtect.bundle/Contents/Resources/gk.db`**ブロックされたアプリケーションとTeamIDのハッシュを持つSQLite3データベースです。
XProtectに関連する別のアプリケーションである**`/Library/Apple/System/Library/CoreServices/XProtect.app`**も存在することに注意してくださいが、アプリケーションが実行される際には関与しません。
XProtectに関連する別のアプリケーションである**`/Library/Apple/System/Library/CoreServices/XProtect.app`**もありますが、これはGatekeeperプロセスとは関係ありません。
## Gatekeeperの回避方法
Gatekeeperを回避する方法ユーザーに何かをダウンロードさせ、Gatekeeperがそれを許可しないはずのときに実行させる方法は、macOSの脆弱性と見なされます。これらは、過去にGatekeeperを回避するために使用されたいくつかの技術に割り当てられたCVEです
Gatekeeperをバイパスする方法ユーザーに何かをダウンロードさせ、Gatekeeperがそれを許可しない場合に実行させる方法は、macOSの脆弱性と見なされます。これらは、過去にGatekeeperをバイパスするために使用されたいくつかの技術に割り当てられたCVEです
### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
**Archive Utility**によって抽出されると、**886文字以上のパス**のファイルは、com.apple.quarantineの拡張属性を継承できず、これにより**Gatekeeperを回避**することが可能になります。
**Archive Utility**によって抽出されると、**886文字以上のパス**のファイルは、com.apple.quarantineの拡張属性を継承できず、これにより**Gatekeeperをバイパス**することが可能になります。
詳細については、[**元のレポート**](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)を参照してください。
### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
**Automator**でアプリケーションが作成されると、実行するために必要な情報は`application.app/Contents/document.wflow`に含まれており、実行可能ファイルには単なる一般的なAutomatorバイナリである**Automator Application Stub**があります。
**Automator**でアプリケーションが作成されると、実行するための情報は`application.app/Contents/document.wflow`にあり、実行可能ファイルには含まれていません。実行可能ファイルは、**Automator Application Stub**と呼ばれる汎用のAutomatorバイナリです。
したがって、`application.app/Contents/MacOS/Automator\ Application\ Stub`を**シンボリックリンクでシステム内の別のAutomator Application Stubに指定**することで、`document.wflow`(スクリプト)内の内容を実行し、**Gatekeeperをトリガーせずに**実行することができます。実際の実行可能ファイルには検疫のxattrがないためです。&#x20;
したがって、`application.app/Contents/MacOS/Automator\ Application\ Stub`を**シンボリックリンクでシステム内の別のAutomator Application Stubに指定**すること、`document.wflow`(スクリプト)内の内容を**Gatekeeperをトリガーせずに実行**することができます。実際の実行可能ファイルには隔離のxattrがないためです。
例として期待される場所:`/System/Library/CoreServices/Automator\ Application\ Stub.app/Contents/MacOS/Automator\ Application\ Stub`
@ -267,7 +267,7 @@ Gatekeeperを回避する方法ユーザーに何かをダウンロードさ
### [CVE-2022-22616](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)
この回避方法では、zipファイルが`application.app`ではなく`application.app/Contents`から圧縮を開始するように作成されました。したがって、**`application.app/Contents`のファイル全体に検疫属性**が適用されましたが、`application.app`には適用されませんでした。Gatekeeperは`application.app`をチェックしていたため、Gatekeeperが回避されました。`application.app`がトリガーされるときには、検疫属性が存在しなかったためです。
このバイパスでは、zipファイルが作成され、`application.app`ではなく`application.app/Contents`から圧縮が開始されました。したがって、**`application.app/Contents`のすべてのファイルには隔離属性**が適用されましたが、`application.app`には適用されませんでした。Gatekeeperは`application.app`をチェックしていたため、Gatekeeperがバイパスされました。`application.app`がトリガーされたときには、隔離属性がなかったためです。
```bash
zip -r test.app/Contents test.zip
```
@ -283,7 +283,7 @@ aa archive -d test.app/Contents -o test.app.aar
### [CVE-2022-42821](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)
ACL **`writeextattr`** は、ファイル内の属性の書き込みを誰にも防止するために使用できます。
ACL **`writeextattr`** は、ファイル内の属性の書き込みを誰にも防止するために使用できます。
```bash
touch /tmp/no-attr
chmod +a "everyone deny writeextattr" /tmp/no-attr
@ -292,7 +292,7 @@ xattr: [Errno 13] Permission denied: '/tmp/no-attr'
```
さらに、**AppleDouble**ファイル形式は、そのACEを含むファイルをコピーします。
[**ソースコード**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html)では、xattrとして保存されているACLテキスト表現である**`com.apple.acl.text`**が、展開されたファイルACLとして設定されることがわかります。したがって、他のxattrの書き込みを防止するACLを持つzipファイルにアプリケーションを圧縮した場合、quarantine xattrはアプリケーションに設定されませんでした。
[**ソースコード**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html)では、xattrとして保存されているACLテキスト表現である**`com.apple.acl.text`**が、展開されたファイルACLとして設定されることがわかります。したがって、他のxattrの書き込みを防止するACLを持つzipファイルにアプリケーションを圧縮した場合、quarantine xattrはアプリケーションに設定されませんでした。
```bash
chmod +a "everyone deny write,writeattr,writeextattr" /tmp/test
ditto -c -k test test.zip
@ -301,20 +301,18 @@ python3 -m http.server
```
詳細な情報については、[**元のレポート**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)を参照してください。
## [2023-27943](https://blog.f-secure.com/discovery-of-gatekeeper-bypass-cve-2023-27943/)
macOSの内部の問題により、**Google Chromeはダウンロードされたファイルに隔離属性を設定していなかった**ことが発見されました。
### [CVE-2023-27943](https://blog.f-secure.com/discovery-of-gatekeeper-bypass-cve-2023-27943/)
**Google Chromeは、いくつかのmacOSの内部的な問題のために、ダウンロードされたファイルに隔離属性を設定していませんでした**ということが発見されました。
<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>
* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業で働いていますか?** **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) **に提出**してください。
* [**公式の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>