ACLs - DACLs/SACLs/ACEs

Reading time: 17 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

アクセス制御リスト (ACL)

アクセス制御リスト (ACL) は、オブジェクトとそのプロパティに対する保護を指示するアクセス制御エントリ (ACE) の順序付けられたセットで構成されています。要するに、ACLは特定のオブジェクトに対してどのセキュリティプリンシパル(ユーザーまたはグループ)がどのアクションを許可または拒否されるかを定義します。

ACLには2種類あります:

  • 裁量アクセス制御リスト (DACL): どのユーザーとグループがオブジェクトにアクセスできるか、またはできないかを指定します。
  • システムアクセス制御リスト (SACL): オブジェクトへのアクセス試行の監査を管理します。

ファイルにアクセスするプロセスでは、システムがオブジェクトのセキュリティ記述子をユーザーのアクセス トークンと照合して、アクセスを許可すべきか、またその範囲をACEに基づいて判断します。

主要コンポーネント

  • DACL: ユーザーとグループに対してオブジェクトへのアクセス権を付与または拒否するACEを含みます。基本的に、アクセス権を指示する主要なACLです。
  • SACL: オブジェクトへのアクセスの監査に使用され、ACEはセキュリティイベントログに記録されるアクセスの種類を定義します。これは、不正アクセスの試行を検出したり、アクセスの問題をトラブルシューティングしたりするのに非常に役立ちます。

ACLとのシステムの相互作用

各ユーザーセッションは、そのセッションに関連するセキュリティ情報を含むアクセス トークンに関連付けられています。これには、ユーザー、グループの識別子、および特権が含まれます。このトークンには、セッションを一意に識別するログオンSIDも含まれています。

ローカル セキュリティ機関 (LSASS) は、アクセスを試みるセキュリティプリンシパルに一致するACEをDACLで調べることによって、オブジェクトへのアクセス要求を処理します。関連するACEが見つからない場合、アクセスは即座に許可されます。それ以外の場合、LSASSはアクセス トークン内のセキュリティプリンシパルのSIDとACEを比較して、アクセスの適格性を判断します。

要約プロセス

  • ACL: DACLを通じてアクセス権を定義し、SACLを通じて監査ルールを定義します。
  • アクセス トークン: セッションのユーザー、グループ、および特権情報を含みます。
  • アクセス決定: DACL ACEとアクセス トークンを比較して行われます。SACLは監査に使用されます。

ACEs

アクセス制御エントリ (ACE) には 3つの主要なタイプ があります:

  • アクセス拒否ACE: 指定されたユーザーまたはグループに対してオブジェクトへのアクセスを明示的に拒否します(DACL内)。
  • アクセス許可ACE: 指定されたユーザーまたはグループに対してオブジェクトへのアクセスを明示的に許可します(DACL内)。
  • システム監査ACE: システムアクセス制御リスト (SACL) 内に位置し、ユーザーまたはグループによるオブジェクトへのアクセス試行時に監査ログを生成する役割を担います。アクセスが許可されたか拒否されたか、またその性質を記録します。

各ACEには 4つの重要なコンポーネント があります:

  1. ユーザーまたはグループの セキュリティ識別子 (SID)(またはグラフィカル表現でのそのプリンシパル名)。
  2. ACEタイプを識別する フラグ(アクセス拒否、許可、またはシステム監査)。
  3. 子オブジェクトが親からACEを継承できるかどうかを決定する 継承フラグ
  4. オブジェクトの付与された権利を指定する アクセス マスク、32ビットの値。

アクセスの決定は、次の条件が満たされるまで各ACEを順次調べることによって行われます:

  • アクセス拒否ACE がアクセス トークン内の受託者に対して要求された権利を明示的に拒否します。
  • アクセス許可ACE がアクセス トークン内の受託者に対して要求されたすべての権利を明示的に許可します。
  • すべてのACEを確認した結果、要求された権利が 明示的に許可されていない 場合、アクセスは暗黙的に 拒否 されます。

ACEの順序

ACEs(誰が何にアクセスできるかを示すルール)が DACL と呼ばれるリストに配置される方法は非常に重要です。これは、システムがこれらのルールに基づいてアクセスを許可または拒否すると、残りのルールを調べるのをやめるからです。

これらのACEを整理する最良の方法は 「標準順序」 と呼ばれます。この方法は、すべてがスムーズかつ公平に機能することを保証します。以下は、Windows 2000 および Windows Server 2003 のシステムにおける手順です:

  • 最初に、このアイテム専用 のルールを、親フォルダーなどの他の場所からのルールの前に配置します。
  • その特定のルールの中で、「いいえ」(拒否) と言うルールを 「はい」(許可) と言うルールの前に配置します。
  • 他の場所からのルールについては、最も近いソース(親など)から始め、そこから遡ります。再度、「いいえ」「はい」 の前に配置します。

この設定は、2つの大きな利点があります:

  • 特定の 「いいえ」 がある場合、それが尊重され、他の 「はい」 ルールがあっても影響を受けません。
  • アイテムの所有者が、親フォルダーやさらに遡るルールが適用される前に、誰が入るかについて 最終的な決定権 を持つことができます。

この方法を採用することで、ファイルやフォルダーの所有者は、誰がアクセスできるかを非常に正確に指定でき、正しい人が入れるようにし、間違った人が入れないようにできます。

したがって、この 「標準順序」 は、アクセスルールが明確で効果的に機能することを保証し、特定のルールを最初に配置し、すべてを賢く整理することに関するものです。

GUIの例

ここからの例

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

http://secureidentity.se/wp-content/uploads/2014/04/classicsectab.jpg

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

http://secureidentity.se/wp-content/uploads/2014/04/aceinheritance.jpg

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

http://secureidentity.se/wp-content/uploads/2014/04/editseprincipalpointers1.jpg

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

http://secureidentity.se/wp-content/uploads/2014/04/audit-tab.jpg

アクセス制御の簡略化された説明

リソースへのアクセスを管理する際、フォルダーのようなリソースに対して、アクセス制御リスト (ACL) およびアクセス制御エントリ (ACE) と呼ばれるリストとルールを使用します。これにより、誰が特定のデータにアクセスできるか、またはできないかを定義します。

特定のグループへのアクセス拒否

「Cost」という名前のフォルダーがあり、マーケティングチームを除くすべての人がアクセスできるようにしたいとします。ルールを正しく設定することで、マーケティングチームが明示的にアクセスを拒否されることを保証し、他のすべての人にアクセスを許可することができます。これは、マーケティングチームへのアクセスを拒否するルールを、他のすべての人へのアクセスを許可するルールの前に配置することで実現されます。

拒否されたグループの特定のメンバーへのアクセス許可

マーケティングディレクターのボブが、マーケティングチームが一般的にアクセスできないにもかかわらず、Costフォルダーへのアクセスが必要だとしましょう。ボブにアクセスを許可する特定のルール (ACE) を追加し、それをマーケティングチームへのアクセスを拒否するルールの前に配置することができます。これにより、ボブはチームに対する一般的な制限にもかかわらずアクセスを得ることができます。

アクセス制御エントリの理解

ACEはACL内の個々のルールです。これらはユーザーまたはグループを特定し、許可または拒否されるアクセスを指定し、これらのルールがサブアイテムにどのように適用されるか(継承)を決定します。ACEには2つの主要なタイプがあります:

  • 一般的なACE: これらは広く適用され、すべてのタイプのオブジェクトに影響を与えるか、コンテナ(フォルダーのような)と非コンテナ(ファイルのような)のみを区別します。たとえば、ユーザーがフォルダーの内容を表示できるが、その中のファイルにはアクセスできないというルールです。
  • オブジェクト特定のACE: これらはより正確な制御を提供し、特定のタイプのオブジェクトやオブジェクト内の個々のプロパティに対してルールを設定できるようにします。たとえば、ユーザーのディレクトリ内で、ユーザーが自分の電話番号を更新できるが、ログイン時間は更新できないというルールがあります。

各ACEには、ルールが適用される対象(セキュリティ識別子またはSIDを使用)、ルールが許可または拒否する内容(アクセス マスクを使用)、および他のオブジェクトによってどのように継承されるかに関する重要な情報が含まれています。

ACEタイプ間の主な違い

  • 一般的なACE は、オブジェクトのすべての側面またはコンテナ内のすべてのオブジェクトに同じルールが適用される単純なアクセス制御シナリオに適しています。
  • オブジェクト特定のACE は、特にActive Directoryのような環境で、オブジェクトの特定のプロパティへのアクセスを異なる方法で制御する必要がある場合に使用されます。

要約すると、ACLとACEは正確なアクセス制御を定義するのに役立ち、適切な個人またはグループのみが機密情報やリソースにアクセスできるようにし、個々のプロパティやオブジェクトタイプのレベルまでアクセス権を調整できる能力を提供します。

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

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

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

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

参考文献

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする