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

This commit is contained in:
Translator 2023-11-06 01:09:22 +00:00
parent a7bd9664f8
commit 897b6ba301

View file

@ -18,7 +18,7 @@
ユーザーの視点からは、TCCが動作しているのは、**TCCによって保護された機能へのアクセスをアプリケーションが要求したとき**です。これが発生すると、**ユーザーにはアクセスを許可するかどうかを尋ねるダイアログが表示**されます。
また、ユーザーが**ファイルに明示的な意図を持ってアクセスを許可**することも可能です。たとえば、ユーザーが**ファイルをプログラムにドラッグ&ドロップする**場合(もちろん、プログラムはそれにアクセスできる必要があります)。
また、ユーザーが**ファイルにアクセスを許可する**こともできます。たとえば、ユーザーが**ファイルをプログラムにドラッグ&ドロップする**場合(もちろん、プログラムはそれにアクセスできる必要があります)。
![TCCプロンプトの例](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
@ -26,7 +26,7 @@
ログインしているユーザーごとに定義された**ユーザーモードのtccd**が`/System/Library/LaunchAgents/com.apple.tccd.plist`に実行され、マッハサービス`com.apple.tccd``com.apple.usernotifications.delegate.com.apple.tccd`を登録しています。
ここでは、システムとユーザーとして実行されているtccdを確認できます
ここでは、システムとユーザーとして実行されているtccdを確認できます
```bash
ps -ef | grep tcc
0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system
@ -44,7 +44,7 @@ ps -ef | grep tcc
**`/var/db/locationd/clients.plist`**には、**位置情報サービスにアクセス**できるクライアントが示される、**3番目の**TCCデータベースがあります。
さらに、**フルディスクアクセス**を持つプロセスは、ユーザーモードのデータベースを**編集**することができます。現在、アプリはデータベースを**読み取るためにもFDAが必要**です。
さらに、**フルディスクアクセス**を持つプロセスは、ユーザーモードのデータベースを**編集**することができます。現在、アプリケーションはデータベースを**読み取るためにもFDAFull Disk Accessが必要**です。
{% hint style="info" %}
**通知センターUI**は、**システムのTCCデータベース**を変更することができます。
@ -62,7 +62,8 @@ com.apple.rootless.storage.TCC
{% endhint %}
{% tabs %}
{% tab title="ユーザーDB" %}
{% tab title="user DB" %}
{% code overflow="wrap" %}
```bash
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db
sqlite> .schema
@ -79,7 +80,11 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=2;
# Check user denied permissions for telegram
sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
```
{% endcode %}
{% endtab %}
{% tab title="システムDB" %}
{% code overflow="wrap" %}
```bash
sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db
sqlite> .schema
@ -91,34 +96,38 @@ kTCCServiceSystemPolicyDownloadsFolder|com.tinyspeck.slackmacgap|2|2
kTCCServiceMicrophone|us.zoom.xos|2|2
[...]
# Get all FDA
sqlite> select service, client, auth_value, auth_reason from access where service = "kTCCServiceSystemPolicyAllFiles" and auth_value=2;
# Check user approved permissions for telegram
sqlite> select * from access where client LIKE "%telegram%" and auth_value=2;
# Check user denied permissions for telegram
sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
```
{% endcode %}
{% endtab %}
{% endtabs %}
{% hint style="success" %}
両方のデータベースをチェックすることで、アプリが許可された権限、禁止された権限、または持っていない権限(要求されることになります)を確認できます。
アプリが許可された権限、禁止された権限、または持っていない権限(要求される場合があります)を確認するために、両方のデータベースをチェックできます。
{% endhint %}
* **`auth_value`** には、denied(0)、unknown(1)、allowed(2)、またはlimited(3)の異なる値が入る可能性があります。
* **`auth_reason`** には、以下の値が入る可能性があります: Error(1)、User Consent(2)、User Set(3)、System Set(4)、Service Policy(5)、MDM Policy(6)、Override Policy(7)、Missing usage string(8)、Prompt Timeout(9)、Preflight Unknown(10)、Entitled(11)、App Type Policy(12)
* テーブルの**他のフィールド**についての詳細は、[**このブログ記事**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive)を参照してください。
* **`auth_reason`** には、次の値が入る可能性があります:Error(1)、User Consent(2)、User Set(3)、System Set(4)、Service Policy(5)、MDM Policy(6)、Override Policy(7)、Missing usage string(8)、Prompt Timeout(9)、Preflight Unknown(10)、Entitled(11)、App Type Policy(12)
* テーブルの**他のフィールド**の詳細については、[**このブログ記事**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive)を参照してください。
{% hint style="info" %}
一部のTCCの許可は、kTCCServiceAppleEvents、kTCCServiceCalendar、kTCCServicePhotosなどです。すべてを定義する公開リストはありませんが、この[**既知のリスト**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service)を確認できます。
一部のTCCの権限には、kTCCServiceAppleEvents、kTCCServiceCalendar、kTCCServicePhotosなどがあります。これらをすべて定義する公開リストは存在しませんが、この[**既知のリスト**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service)を確認できます。
**Full Disk Access**の名前は**`kTCCServiceSystemPolicyAllFiles`**であり、**`kTCCServiceAppleEvents`**は、一般的に**タスクの自動化**に使用される他のアプリケーションにイベントを送信することを許可します。さらに、**`kTCCServiceSystemPolicySysAdminFiles`**は、ユーザのホームフォルダを変更する**`NFSHomeDirectory`**属性を変更することができ、それによりTCCを**バイパス**することができます。
{% endhint %}
また、`システム環境設定 --> セキュリティとプライバシー --> プライバシー --> ファイルとフォルダー`で、アプリに与えられた**既存の許可**も確認できます。
また、`システム環境設定 --> セキュリティとプライバシー --> プライバシー --> ファイルとフォルダー`で、アプリに与えられた**既存の権限**も確認できます。
{% hint style="success" %}
注意してください、ユーザはこれらのデータベースを直接変更することはできません。なぜなら、SIPのためですrootであっても。新しいルールを設定または変更する唯一の方法は、システム環境設定パネルまたはアプリがユーザに要求するプロンプトです。
注意してください、ユーザはこれらのデータベースを直接変更することはできません。なぜなら、SIPのためですrootであっても。新しいルールを設定または変更する唯一の方法は、システム環境設定パネルまたはアプリがユーザに要求するプロンプトです。
ただし、ユーザは**`tccutil`**を使用してルールを削除またはクエリすることができます。 
ただし、ユーザは**`tccutil`**を使用してルールを**削除またはクエリ**することができます。 
{% endhint %}
#### リセット
@ -140,28 +149,20 @@ tccutil reset All
TCCデータベースはSIPによって保護されているため、指定された権限を持つプロセスのみがデータベースを変更できます。したがって、攻撃者がSIPバイパスSIPに制限されたファイルの変更が可能を見つけると、TCCデータベースの保護を解除し、すべてのTCC権限を自分自身に与えることができます。
ただし、このSIPバイパスをTCCバイパスとして悪用する別の方法があります。`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`というファイルは、TCCの例外を必要とするアプリケーションの許可リストです。したがって、攻撃者がこのファイルからSIP保護を解除し、自分自身のアプリケーションを追加できれば、そのアプリケーションはTCCをバイパスできます。
例えば、ターミナルを追加する場合は:
例えば、ターミナルを追加する場合は以下のようにします
```bash
# Get needed info
codesign -d -r- /System/Applications/Utilities/Terminal.app
```
AllowApplicationsList.plist:
このファイルは、macOSのTCCトランスペアレントなコンセント制御フレームワークの一部であり、アプリケーションがユーザーのプライバシーにアクセスするために必要な権限を持っているかどうかを管理します。
このファイルは、macOSのTCCトランスペアレントなコンセント制御フレームワークの一部であり、アプリケーションがユーザーのプライバシーにアクセスするために必要な権限を持っているかどうかを制御します。
このプロパティリスト.plistファイルには、許可されたアプリケーションのリストが含まれており、ユーザーが明示的に許可したアプリケーションのみがプライバシーにアクセスできるようになります。
このプロパティリストファイルには、許可されたアプリケーションのリストが含まれており、ユーザーが明示的に許可したアプリケーションのみがプライバシーにアクセスできるようになります。
このファイルを編集することで、特定のアプリケーションに対してTCCフレームワークの制限を追加または削除することができます。ただし、このファイルを編集する前に、十分な知識と注意が必要です。誤った編集はシステムの安定性やセキュリティに悪影響を及ぼす可能性があります。
このファイルを編集することで、特定のアプリケーションに対してTCCフレームワークの制限を追加または削除することができます。ただし、注意が必要であり、不正な変更はセキュリティ上のリスクを引き起こす可能性があります。
このファイルは、以下の場所にあります:
```
~/Library/Application Support/com.apple.TCC/
```
このファイルを編集するには、テキストエディタを使用してファイルを開き、必要な変更を行います。変更を保存した後、変更が反映されるためにはログアウトまたは再起動が必要です。
注意:このファイルを編集する前に、バックアップを作成することを強くお勧めします。
このファイルは、システムのセキュリティを向上させるために使用されることがありますが、慎重に操作する必要があります。
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -227,13 +228,13 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
これにより、カレンダーがユーザーにリマインダー、カレンダー、アドレス帳へのアクセスを求めることを防ぎます。
{% hint style="success" %}
権限に関する公式ドキュメント以外にも、[https://newosxbook.com/ent.jl](https://newosxbook.com/ent.jl)で非公式な権限に関する興味深い情報を見つけることができます。
権限に関する公式ドキュメント以外にも、[https://newosxbook.com/ent.jl](https://newosxbook.com/ent.jl) には非公式ながら興味深い権限に関する情報が見つかることがあります。
{% endhint %}
### 機密情報保護されていない場所
### 機密情報保護されていない場所
* $HOME (自体)
* $HOME/.ssh, $HOME/.awsなど
* $HOME/.ssh, $HOME/.aws, など
* /tmp
### ユーザーの意図 / com.apple.macl
@ -281,7 +282,7 @@ uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
* **サイバーセキュリティ企業で働いていますか?** 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)を手に入れましょう
* [**公式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)**をフォロー**してください。
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。