hacktricks/windows-hardening/windows-local-privilege-escalation/acls-dacls-sacls-aces.md

178 lines
19 KiB
Markdown
Raw Normal View History

# ACLs - DACLs/SACLs/ACEs
2022-04-28 16:01:33 +00:00
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-08-31 22:35:39 +00:00
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって**自動化されたワークフロー**を簡単に構築します。\
今すぐアクセスを取得:
2022-08-31 22:35:39 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary><strong>**ゼロからヒーローまでのAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
2022-04-28 16:01:33 +00:00
HackTricksをサポートする他の方法:
2022-04-28 16:01:33 +00:00
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**する
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
2022-04-28 16:01:33 +00:00
</details>
## **アクセス制御リストACL**
アクセス制御リストACLは、オブジェクトとそのプロパティの保護を指示する一連の順序付けられたアクセス制御エントリACEから構成されます。基本的に、ACLは、特定のオブジェクトで許可または拒否されるセキュリティプリンシパルユーザーまたはグループによるアクションを定義します。
ACLには2種類あります
* **自由裁量アクセス制御リストDACL** オブジェクトへのアクセス権を持つユーザーとグループを指定します。
* **システムアクセス制御リストSACL** オブジェクトへのアクセス試行の監査を管理します。
ファイルへのアクセスプロセスは、オブジェクトのセキュリティ記述子をユーザーのアクセストークンと照合して、ACEに基づいてアクセスが許可されるかどうか、およびそのアクセスの範囲を決定することによって行われます。
### **主要コンポーネント**
* **DACL** オブジェクトへのアクセス許可をユーザーとグループに付与または拒否するACEを含みます。基本的に、アクセス権を定義する主要なACLです。
* **SACL** オブジェクトへのアクセスを監査するために使用され、ACEはセキュリティイベントログに記録されるべきアクセスの種類を定義します。これは、未承認のアクセス試行を検出したり、アクセスの問題をトラブルシューティングするために非常に役立ちます。
2022-10-05 20:40:19 +00:00
### **ACLとシステムの相互作用**
2022-10-05 20:40:19 +00:00
各ユーザーセッションは、そのセッションに関連するセキュリティ情報ユーザー、グループの識別、特権などを含むアクセストークンに関連付けられます。このトークンには、セッションを一意に識別するログオンSIDも含まれます。
2022-10-05 20:40:19 +00:00
ローカルセキュリティ機関LSASSは、オブジェクトへのアクセス要求を処理するために、アクセスを試みるセキュリティプリンシパルに一致するACEをDACLで調べます。関連するACEが見つからない場合、アクセスは直ちに許可されます。それ以外の場合、LSASSはACEをアクセストークン内のセキュリティプリンシパルのSIDと比較してアクセスの適格性を決定します。
2022-10-05 20:40:19 +00:00
### **要約されたプロセス**
* **ACL** DACLを介してアクセス権を定義し、SACLを介して監査ルールを定義します。
* **アクセストークン:** セッションのユーザー、グループ、特権情報を含む。
* **アクセス決定:** DACL ACEをアクセストークンと比較して行われ、監査のためにSACLが使用されます。
### ACEs
**アクセス制御エントリACE**には、**3つの主要なタイプ**があります:
* **アクセス拒否ACE** このACEは、指定されたユーザーやグループに対してオブジェクトへのアクセスを明示的に拒否しますDACL内
* **アクセス許可ACE** このACEは、指定されたユーザーやグループに対してオブジェクトへのアクセスを明示的に許可しますDACL内
* **システム監査ACE** システムアクセス制御リストSACL内に配置され、このACEはユーザーやグループによるオブジェクトへのアクセス試行時に監査ログを生成します。アクセスが許可されたか拒否されたか、およびアクセスの性質を文書化します。
各ACEには、**4つの重要なコンポーネント**があります:
1. ユーザーまたはグループの**セキュリティ識別子SID**(またはグラフィカル表現での主要名)。
2. ACEタイプアクセス拒否、許可、システム監査を識別する**フラグ**)。
3. 子オブジェクトが親からACEを継承できるかを決定する**継承フラグ**。
4. オブジェクトの付与された権利を指定する32ビット値である[**アクセスマスク**](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-dtyp/7a53f60e-e730-4dfe-bbe9-b21b62eb790b?redirectedfrom=MSDN)。
アクセス決定は、すべてのACEを順番に調べて行われます
2022-08-31 22:35:39 +00:00
* **アクセス拒否ACE**がアクセストークンで識別された委託者に要求された権利を明示的に拒否する場合。
* **アクセス許可ACE**がアクセストークン内の委託者にすべての要求された権利を明示的に付与する場合。
* すべてのACEを確認した後、要求された権利が**明示的に許可されていない**場合、アクセスは暗黙的に**拒否**されます。
2022-08-31 22:35:39 +00:00
### ACEの順序
2022-08-31 22:35:39 +00:00
**ACE**(誰がアクセスできるか、できないかを示すルール)がリストである**DACL**に配置される方法は非常に重要です。これは、システムがこれらのルールに基づいてアクセスを許可または拒否した後、残りを見なくなるためです。
これらのACEを整理する最良の方法があり、それを**"正準順序"**と呼びます。この方法は、すべてがスムーズにかつ公平に機能することを確認するのに役立ちます。**Windows 2000**および**Windows Server 2003**などのシステムでは、次のようになります:
* まず、**このアイテムに特に作成されたすべてのルール**を、親フォルダーなどの他の場所から来たものよりも前に配置します。
* これらの特定のルールには、**"いいえ"(拒否)**と言うものを**"はい"(許可)**の前に配置します。
* 他の場所から来たルールについては、最も**近いソース**から始め、そこから戻ります。再び、**"いいえ"**を**"はい"**の前に配置します。
この設定には2つの大きな利点があります
* 特定の**"いいえ"**がある場合、他の**"はい"**ルールがあっても尊重されることを確認します。
* ファイルまたはフォルダーの所有者が、親フォルダーやさらに後ろからのルールが適用される前に、誰が入るかについて**最終的な決定権**を持つことができます。
この方法で作業することで、ファイルまたはフォルダーの所有者は、誰がアクセスできるかを非常に正確に決定し、正しい人が入れるようにし、間違った人が入れないようにします。
![](https://www.ntfs.com/images/screenshots/ACEs.gif)
したがって、この**"正準順序"**は、アクセスルールが明確でうまく機能し、特定のルールを最初に配置し、すべてをスマートに整理することに関連しています。
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって**自動化されたワークフロー**を簡単に構築します。\
今すぐアクセスを取得:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
### GUIの例
[**ここからの例**](https://secureidentity.se/acl-dacl-sacl-and-the-ace/)
これはACL、DACL、およびACEを表示するフォルダーのクラシックなセキュリティタブです
![http://secureidentity.se/wp-content/uploads/2014/04/classicsectab.jpg](../../.gitbook/assets/classicsectab.jpg)
**詳細ボタン**をクリックすると、継承などの追加オプションが表示されます:
![http://secureidentity.se/wp-content/uploads/2014/04/aceinheritance.jpg](../../.gitbook/assets/aceinheritance.jpg)
そして、セキュリティプリンシパルを追加または編集する場合:
![http://secureidentity.se/wp-content/uploads/2014/04/editseprincipalpointers1.jpg](../../.gitbook/assets/editseprincipalpointers1.jpg)
最後に、監査タブのSACLがあります
![http://secureidentity.se/wp-content/uploads/2014/04/audit-tab.jpg](../../.gitbook/assets/audit-tab.jpg)
### 簡略化された方法でアクセス制御を説明する
リソースフォルダーなどへのアクセスを管理する際、アクセス制御リストACLとアクセス制御エントリACEとして知られるリストとルールを使用します。これらは特定のデータにアクセスできるかどうかを定義します。
#### 特定のグループへのアクセスを拒否する
Costという名前のフォルダーがあると想像してください。マーケティングチームを除いて誰もがアクセスできるようにしたいとします。ルールを正しく設定することで、マーケティングチームがアクセスを明示的に拒否された後に他の全員がアクセスできるように確認できます。
#### 拒否されたグループの特定のメンバーへのアクセスを許可する
一般的にマーケティングチームがアクセス権を持つべきでないにもかかわらず、マーケティングディレクターであるBobがCostフォルダーにアクセスする必要があるとします。Bobのためにアクセスを許可する特定のルールACEを追加し、マーケティングチームへのアクセスを拒否するルールの前に配置します。これにより、一般的な制限にもかかわらず、Bobがアクセスできるようになります。
#### アクセス制御エントリの理解
ACEはACL内の個々のルールです。ユーザーまたはグループを識別し、許可または拒否されるアクセスを指定し、これらのルールがサブアイテムにどのように適用されるか継承を決定します。主なACEの2つのタイプがあります
- **一般的なACE**:これらは広く適用され、すべてのオブジェクトの種類に影響を与えるか、コンテナ(フォルダーなど)と非コンテナ(ファイルなど)の間だけを区別します。たとえば、ユーザーがフォルダーの内容を見ることを許可するが、その中のファイルにアクセスすることを許可しないルールなどがあります。
- **オブジェクト固有のACE**:これはより正確な制御を提供し、特定のオブジェクトの種類またはオブジェクト内の個々のプロパティに対してルールを設定できます。たとえば、ユーザーのディレクトリ内で、ユーザーが電話番号を更新することを許可するが、ログイン時間を更新することを許可しないルールがあるかもしれません。
各ACEには、ルールが適用される対象セキュリティ識別子またはSIDを使用、ルールが許可または拒否する内容アクセスマスクを使用、および他のオブジェクトにどのように継承されるかなどの重要な情報が含まれています。
#### ACEタイプ間の主な違い
- **一般的なACE**は、オブジェクトのすべての側面に同じルールが適用される単純なアクセス制御シナリオに適しています。
- **オブジェクト固有のACE**は、特にActive Directoryなどの環境で、オブジェクトの特定のプロパティへのアクセスを異なる方法で制御する必要があるような複雑なシナリオに使用されます。
要するに、ACLとACEは正確なアクセス制御を定義し、機密情報やリソースにアクセスできるのは適切な個人やグループだけであり、アクセス権を個々のプロパティやオブジェクトタイプのレベルまで調整できるようにします。
### アクセス制御エントリのレイアウト
| ACEフィールド | 説明 |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| タイプ | ACEのタイプを示すフラグ。Windows 2000およびWindows Server 2003では、6つのACEタイプがサポートされています。すべてのセキュア可能なオブジェクトにアタッチされる3つの一般的なACEタイプ。Active Directoryオブジェクトに発生する可能性のある3つのオブジェクト固有のACEタイプ。 |
| フラグ | 継承と監査を制御するビットフラグのセット。 |
| サイズ | ACEに割り当てられたメモリのバイト数。 |
| アクセスマスク | オブジェクトのアクセス権に対応する32ビット値。ビットはオンまたはオフに設定できますが、設定の意味はACEのタイプに依存します。たとえば、読み取り権限に対応するビットがオンになっており、ACEのタイプが拒否である場合、ACEはオブジェクトの権限を読み取る権利を拒否します。同じビットがオンになっていても、ACEのタイプが許可である場合、ACEはオブジェクトの権限を読み取る権利を付与します。アクセスマスクの詳細については、次の表を参照してください。 |
| SID | このACEによって制御または監視されるユーザーまたはグループを識別します。 |
### アクセスマスクのレイアウト
2022-04-28 16:01:33 +00:00
| ビット(範囲) | 意味 | 説明/例 |
| ----------- | ---------------------------------- | ----------------------------------------- |
| 0 - 15 | オブジェクト固有のアクセス権限 | データの読み取り、実行、データの追加 |
| 16 - 22 | 標準アクセス権限 | 削除、ACLの書き込み、所有者の書き込み |
| 23 | セキュリティACLにアクセスできる | |
| 24 - 27 | 予約済み | |
| 28 | 一般的なALL読み取り、書き込み、実行 | 以下すべて |
| 29 | 一般的な実行 | プログラムを実行するために必要なすべてのもの |
| 30 | 一般的な書き込み | ファイルに書き込むために必要なすべてのもの |
| 31 | 一般的な読み取り | ファイルを読むために必要なすべてのもの |
2022-08-31 22:35:39 +00:00
## 参考文献
2022-04-28 16:01:33 +00:00
* [https://www.ntfs.com/ntfs-permissions-acl-use.htm](https://www.ntfs.com/ntfs-permissions-acl-use.htm)
* [https://secureidentity.se/acl-dacl-sacl-and-the-ace/](https://secureidentity.se/acl-dacl-sacl-and-the-ace/)
* [https://www.coopware.in2.info/\_ntfsacl\_ht.htm](https://www.coopware.in2.info/\_ntfsacl\_ht.htm)