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

22 KiB
Raw Blame History

ACLs - DACLs/SACLs/ACEs


Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化します。
今すぐアクセスを取得:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

アクセス制御リストACL

ACLは、オブジェクトとそのプロパティに適用される保護を定義するACEアクセス制御エントリの順序付きリストです。各ACEはセキュリティプリンシパルを識別し、そのセキュリティプリンシパルに対して許可、拒否、または監査されるアクセス権のセットを指定します。

オブジェクトのセキュリティ記述子には、次の2つのACLが含まれる場合があります。

  1. アクセスが許可または拒否されるユーザーとグループを識別するDACL
  2. アクセスが監査される方法を制御するSACL

ユーザーがファイルにアクセスしようとすると、WindowsシステムはAccessCheckを実行し、セキュリティ記述子をユーザーのアクセストークンと比較し、ユーザーがアクセスを許可され、どの種類のアクセスが許可されるかを評価します。

自由裁量アクセス制御リストDACL

DACLACLとも呼ばれることが多いは、オブジェクトに割り当てられたアクセス許可を識別するユーザーとグループを特定します。それは、セキュアオブジェクトに対してペアのACEアカウント+アクセス権)のリストを含んでいます。

システムアクセス制御リストSACL

SACLを使用すると、セキュリティの保護されたオブジェクトへのアクセスを監視できます。SACLのACEは、セキュリティイベントログに記録されるアクセスの種類を決定します。モニタリングツールを使用すると、悪意のあるユーザーがセキュリティの保護されたオブジェクトにアクセスしようとすると、適切な人々に警告を発することができます。また、インシデントのシナリオでは、ログを使用して過去の手順を追跡することができます。そして最後に、トラブルシューティングのためにアクセスの問題をログに記録することもできます。

システムがACLを使用する方法

システムにログインしている各ユーザーは、そのログオンセッションのセキュリティ情報を持つアクセストークンを保持しています。ユーザーがログオンすると、システムはアクセストークンを作成します。ユーザーの代わりに実行されるすべてのプロセスにはアクセストークンのコピーがあります。トークンはユーザー、ユーザーのグループ、およびユーザーの特権を識別します。トークンには、現在のログオンセッションを識別するログオンSIDセキュリティ識別子も含まれています。

スレッドがセキュリティの保護されたオブジェクトにアクセスしようとすると、LSASSローカルセキュリティ機関はアクセスを許可または拒否します。これを行うために、LSASSはスレッドに適用されるACEを探すためにSDSデータストリーム内のDACL自由裁量アクセス制御リストを検索します。

オブジェクトのDACLの各ACEは、セキュリティプリンシパルまたはログオンセッションに対して許可または拒否されるアクセス権を指定します。オブジェクトの所有者がそのオブジェクトのDACLにACEを作成していない場合、システムはすぐにアクセスを許可します。

LSASSがACEを見つけた場合、各ACEの委任SIDをスレッドのアクセストークンで識別される委任SIDと比較します。

ACEs

ADのすべてのセキュリティオブジェクトに適用できる3つの主要なACEのタイプがあります。

ACE 説明
アクセス拒否ACE ユーザーまたはグループがオブジェクトへのアクセスが明示的に拒否されていることを示すためにDACL内で使用されます
アクセス許可ACE ユーザーまたはグループがオブジェクトへのアクセスが明示的に許可されていることを示すためにDACL内で使用されます
システム監査ACE ユーザーまたはグループがオブジェクトにアクセスしようとすると、SACL内のACEが監査ログを生成します。アクセスが許可されたか

ACEの順序

要求されたアクセスが明示的に許可または拒否された場合、システムはACEのチェックを停止しますので、DACL内のACEの順序は重要です。

DACL内のACEの優先順位は「正準」順序と呼ばれます。Windows 2000およびWindows Server 2003では、正準順序は次のとおりです。

  1. すべての「明示的」ACEは、任意の「継承」ACEの前にグループ内に配置されます。
  2. 「明示的」ACEのグループ内では、「アクセス拒否」ACEは「アクセス許可」ACEの前に配置されます。
  3. 「継承」グループ内では、子オブジェクトの親から継承されたACEが最初に配置され、その後、祖父から継承されたACEなど、オブジェクトツリーを上に向かって継承されたACEが配置されます。その後、「アクセス拒否」ACEは「アクセス許可」ACEの前に配置されます。

以下の図は、ACEの正準順序を示しています。

ACEの正準順序

ACE

正準順序により、次のことが実現されます。

  • 明示的な「アクセス拒否」ACEは、明示的な「アクセス許可」ACEに関係なく強制されます。つまり、オブジェクトの所有者は、ユーザーグループへのアクセスを許可し、そのグループの一部にアクセスを拒否する権限を定義できます。
  • すべての明示的なACEは、継承されたACEの前に処理されます。これは、任意のアクセス制御の概念と一致しています。子オブジェクトたとえばファイルへのアクセスは、親オブジェクトたとえばフォルダの所有者ではなく、子オブジェクトの所有者の裁量によるものです。子オブジェクトの所有者は、直接子オブジェクトに対してアクセス権を定義できます。その結果、継承されたアクセス許可の効果が変更されます。


Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化できます。
今すぐアクセスを取得:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

GUIの例

これは、ACL、DACL、およびACEを表示するフォルダのクラシックなセキュリティタブです。

「詳細」ボタンをクリックすると、継承などの追加オプションが表示されます。

セキュリティプリンシパルを追加または編集する場合:

最後に、監査タブのSACLがあります。

例:グループへの明示的なアクセス拒否

この例では、アクセス許可されたグループは「Everyone」であり、アクセス拒否されたグループは「Marketing」であり、それは「Everyone」の一部です。

「Cost」フォルダへのMarketingグループのアクセスを拒否したい場合、CostフォルダのACEが正準順序になっている場合、Marketingを拒否するACEはEveryoneを許可するACEの前に配置されます。

アクセスチェック中、オペレーティングシステムはオブジェクトのDACLに表示される順序でACEを処理するため、許可するACEの前に拒否するACEが処理されます。その結果、Marketingグループのメンバーはアクセスが拒否されます。他のユーザーはオブジェクトにアクセスが許可されます。

例:明示的なアクセス許可が継承よりも優先

この例では、CostフォルダにはMarketing親オブジェクトへのアクセスを拒否する継承可能なACEがあります。つまり、Marketingグループのメンバーまたは子であるすべてのユーザーは、継承によってアクセスが拒否されます。

マーケティングディレクターであるBobにアクセスを許可したい場合、BobはMarketingグループのメンバーとして、継承によってCostフォルダへのアクセスが拒否されます。子オブジェクトユーザーBobの所有者は、Costフォルダへのアクセスを許可する明示的なACEを定義します。子オブジェクトのACEが正準順序になっている場合、Bobへのアクセスを許可する明示的なACEは、Marketingグループへのアクセスを拒否する継承されたACEを含む継承されたACEよりも前に配置されます。

アクセスチェック中、オペレーティングシステムはMarketingグループへのアクセスを拒否するACEに到達する前に、Bobへのアクセスを許可するACEに到達します。その結果、BobはMarketingグループのメンバーであるにもかかわらず、オブジェクトにアクセスが許可されます。他のMarketingグループのメンバーはアクセスが拒否されます。

アクセス制御エントリ

前述のように、ACLアクセス制御リストはACEアクセス制御エントリの順序付きリストです。各ACEには、次の情報が含まれます。

  • 特定のユーザーまたはグループを識別するセキュリティ識別子SID
  • アクセス権を指定するアクセスマスク。
  • 子オブジェクトがACEを継承できるかどうかを決定するビットフラグのセット。
  • ACEのタイプを示すフラグ。

ACEは基本的に同じです。それらを区別するのは、継承とオブジェクトへのアクセスに対する制御の度合いです。2つのタイプのACEがあります。

  • すべてのセキュリティ可能なオブジェクトにアタッチされるジェネリックタイプ。
  • Active DirectoryオブジェクトのACLにのみ存在できるオブジェクト固有のタイプ。

ジェネリックACE

ジェネリックACEは、継承される子オブジェクトの種類を制御するための制限された制御を提供します。基本的に、コンテナと非コンテナの区別しかできません。

たとえば、NTFSのFolderオブジェクトのDACLには、フォルダの内容をリストするためのジェネリックACEが含まれる場合があります。フォルダの内容をリストすることは、コンテナオブジェクトでのみ実行できる操作ですので、操作を許可するACEはCONTAINER_INHERIT_ACEとしてフラグ付けされます。フォルダ内の

アクセス制御エントリのレイアウト

ACEフィールド 説明
タイプ ACEのタイプを示すフラグ。Windows 2000およびWindows Server 2003では、6つのACEタイプがサポートされています。すべてのセキュリティオブジェクトに関連付けられる3つの汎用ACEタイプと、Active Directoryオブジェクトに発生する可能性のある3つのオブジェクト固有のACEタイプがあります。
フラグ 継承と監査を制御するためのビットフラグのセット。
サイズ ACEに割り当てられるメモリのバイト数。
アクセスマスク オブジェクトのアクセス権に対応する32ビットの値。ビットはオンまたはオフに設定できますが、設定の意味はACEのタイプに依存します。たとえば、読み取り権限に対応するビットがオンになっており、ACEのタイプがDenyである場合、ACEはオブジェクトの権限の読み取りを拒否します。同じビットがオンに設定されていても、ACEのタイプがAllowである場合、ACEはオブジェクトの権限の読み取りを許可します。アクセスマスクの詳細については、次の表を参照してください。
SID このACEによって制御または監視されるユーザーまたはグループを識別します。

アクセスマスクのレイアウト

ビット(範囲) 意味 説明/例
0 - 15 オブジェクト固有のアクセス権 データの読み取り、実行、データの追加
16 - 22 標準アクセス権 削除、ACLの書き込み、所有者の書き込み
23 セキュリティACLにアクセスできる
24 - 27 予約済み
28 汎用ALL読み取り、書き込み、実行 以下のすべて
29 汎用実行 プログラムを実行するために必要なすべてのもの
30 汎用書き込み ファイルに書き込むために必要なすべてのもの
31 汎用読み取り ファイルを読み取るために必要なすべてのもの

参考文献

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥


Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。
今すぐアクセスを取得:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}