Abusing Active Directory ACLs/ACEs
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
このページは主に https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces および https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privilegesの技術の要約です。詳細については、元の記事を確認してください。
この特権は、攻撃者にターゲットユーザーアカウントに対する完全な制御を付与します。Get-ObjectAcl
コマンドを使用してGenericAll
権限が確認されると、攻撃者は以下を行うことができます:
ターゲットのパスワードを変更する:net user <username> <password> /domain
を使用して、攻撃者はユーザーのパスワードをリセットできます。
ターゲットケルベロースティング:ユーザーアカウントにSPNを割り当ててケルベロースト可能にし、次にRubeusとtargetedKerberoast.pyを使用してチケット付与チケット(TGT)ハッシュを抽出し、クラックを試みます。
ターゲット ASREPRoasting: ユーザーの事前認証を無効にし、そのアカウントを ASREPRoasting に対して脆弱にします。
この特権により、攻撃者は Domain Admins
のようなグループに対して GenericAll
権限を持っている場合、グループメンバーシップを操作することができます。Get-NetGroup
を使用してグループの識別名を特定した後、攻撃者は次のことができます:
自分自身を Domain Admins グループに追加する: これは、直接コマンドを使用するか、Active Directory や PowerSploit のようなモジュールを使用して行うことができます。
これらの権限をコンピュータオブジェクトまたはユーザーアカウントで保持することにより、以下が可能になります:
Kerberos Resource-based Constrained Delegation: コンピュータオブジェクトを乗っ取ることを可能にします。
Shadow Credentials: この技術を使用して、シャドウクレデンシャルを作成する権限を悪用することで、コンピュータまたはユーザーアカウントを偽装します。
ユーザーが特定のグループ(例:Domain Admins
)のすべてのオブジェクトに対してWriteProperty
権限を持っている場合、以下が可能です:
自分自身をDomain Adminsグループに追加する: net user
とAdd-NetGroupUser
コマンドを組み合わせることで実現でき、この方法はドメイン内での権限昇格を可能にします。
この特権により、攻撃者は Domain Admins
などの特定のグループに自分自身を追加することができます。グループメンバーシップを直接操作するコマンドを使用します。以下のコマンドシーケンスを使用すると、自己追加が可能です:
同様の特権であり、攻撃者はグループのプロパティを変更することで、自分自身をグループに直接追加することができます。これを行うには、これらのグループに対して WriteProperty
権限を持っている必要があります。この特権の確認と実行は次のように行われます:
User-Force-Change-Password
に対するユーザーのExtendedRight
を保持することで、現在のパスワードを知らなくてもパスワードのリセットが可能になります。この権利の確認とその悪用は、PowerShellや代替のコマンドラインツールを通じて行うことができ、インタラクティブセッションや非インタラクティブ環境向けのワンライナーを含む、ユーザーのパスワードをリセットするためのいくつかの方法を提供します。コマンドは、シンプルなPowerShellの呼び出しからLinux上のrpcclient
の使用まで多岐にわたり、攻撃ベクトルの多様性を示しています。
攻撃者がグループに対して WriteOwner
権限を持っていることがわかった場合、彼らはそのグループの所有権を自分自身に変更することができます。これは、問題のグループが Domain Admins
の場合に特に影響が大きく、所有権を変更することでグループ属性やメンバーシップに対するより広範な制御が可能になります。このプロセスは、Get-ObjectAcl
を使用して正しいオブジェクトを特定し、その後 Set-DomainObjectOwner
を使用して、SID または名前で所有者を変更することを含みます。
この権限は、攻撃者がユーザーのプロパティを変更することを可能にします。具体的には、GenericWrite
アクセスを使用すると、攻撃者はユーザーのログオンスクリプトパスを変更して、ユーザーのログオン時に悪意のあるスクリプトを実行させることができます。これは、Set-ADObject
コマンドを使用して、ターゲットユーザーの scriptpath
プロパティを攻撃者のスクリプトを指すように更新することで実現されます。
この特権を持つ攻撃者は、特定のグループに自分自身や他のユーザーを追加するなど、グループメンバーシップを操作できます。このプロセスには、資格情報オブジェクトを作成し、それを使用してグループからユーザーを追加または削除し、PowerShellコマンドでメンバーシップの変更を確認することが含まれます。
ADオブジェクトを所有し、その上でWriteDACL
権限を持つことは、攻撃者がオブジェクトに対してGenericAll
権限を付与することを可能にします。これはADSI操作を通じて実現され、オブジェクトに対する完全な制御とそのグループメンバーシップの変更が可能になります。それにもかかわらず、Active DirectoryモジュールのSet-Acl
/ Get-Acl
cmdletを使用してこれらの権限を悪用しようとする際には制限があります。
DCSync攻撃は、ドメイン上の特定のレプリケーション権限を利用して、ドメインコントローラーを模倣し、ユーザーの資格情報を含むデータを同期します。この強力な手法は、DS-Replication-Get-Changes
のような権限を必要とし、攻撃者がドメインコントローラーへの直接アクセスなしにAD環境から機密情報を抽出することを可能にします。DCSync攻撃の詳細はこちら。
グループポリシーオブジェクト(GPO)を管理するための委任されたアクセスは、重大なセキュリティリスクをもたらす可能性があります。たとえば、offense\spotless
のようなユーザーにGPO管理権限が委任されると、WriteProperty、WriteDacl、およびWriteOwnerのような特権を持つ可能性があります。これらの権限は、PowerViewを使用して特定された悪用の目的に利用される可能性があります: bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
誤って構成されたGPOを特定するために、PowerSploitのcmdletを連結することができます。これにより、特定のユーザーが管理する権限を持つGPOを発見することができます: powershell Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
適用されたポリシーを持つコンピュータ: 特定のGPOが適用されるコンピュータを解決することが可能で、潜在的な影響の範囲を理解するのに役立ちます。 powershell Get-NetOU -GUID "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" | % {Get-NetComputer -ADSpath $_}
特定のコンピュータに適用されたポリシー: 特定のコンピュータに適用されているポリシーを確認するには、Get-DomainGPO
のようなコマンドを利用できます。
特定のポリシーが適用されたOU: 特定のポリシーの影響を受ける組織単位(OU)を特定するには、Get-DomainOU
を使用できます。
誤って構成されたGPOは、コードを実行するために悪用される可能性があり、たとえば、即時スケジュールタスクを作成することによって実行できます。これにより、影響を受けたマシンのローカル管理者グループにユーザーを追加し、特権を大幅に昇格させることができます:
GroupPolicyモジュールがインストールされている場合、新しいGPOの作成とリンク、影響を受けたコンピュータでバックドアを実行するためのレジストリ値などの設定が可能です。この方法では、GPOを更新し、実行のためにユーザーがコンピュータにログインする必要があります。
SharpGPOAbuseは、既存のGPOを悪用する方法を提供し、新しいGPOを作成することなくタスクを追加したり設定を変更したりします。このツールは、変更を適用する前に既存のGPOを変更するか、RSATツールを使用して新しいGPOを作成する必要があります。
GPOの更新は通常90分ごとに行われます。このプロセスを迅速化するために、特に変更を実施した後は、ターゲットコンピュータ上でgpupdate /force
コマンドを使用して即時のポリシー更新を強制することができます。このコマンドは、GPOへの変更が次の自動更新サイクルを待たずに適用されることを保証します。
特定のGPO、例えばMisconfigured Policy
のスケジュールされたタスクを検査すると、evilTask
のようなタスクの追加が確認できます。これらのタスクは、システムの動作を変更したり、特権を昇格させたりすることを目的としたスクリプトやコマンドラインツールを通じて作成されます。
New-GPOImmediateTask
によって生成されたXML構成ファイルに示されているタスクの構造は、スケジュールされたタスクの具体的な内容を示しています - 実行されるコマンドやそのトリガーを含みます。このファイルは、GPO内でスケジュールされたタスクがどのように定義され、管理されるかを表しており、ポリシーの強制の一環として任意のコマンドやスクリプトを実行する方法を提供します。
GPOは、ターゲットシステム上のユーザーおよびグループのメンバーシップを操作することも可能です。ユーザーとグループのポリシーファイルを直接編集することで、攻撃者はローカルのadministrators
グループなどの特権グループにユーザーを追加できます。これは、GPO管理権限の委任を通じて可能であり、ポリシーファイルを修正して新しいユーザーを含めたり、グループメンバーシップを変更したりすることが許可されます。
ユーザーとグループのXML構成ファイルは、これらの変更がどのように実施されるかを示しています。このファイルにエントリを追加することで、特定のユーザーに影響を受けたシステム全体で昇格された特権を付与することができます。この方法は、GPO操作を通じた特権昇格の直接的なアプローチを提供します。
さらに、ログオン/ログオフスクリプトの活用、オートランのためのレジストリキーの変更、.msiファイルを介したソフトウェアのインストール、サービス構成の編集など、コードを実行したり持続性を維持したりするための追加の方法も考慮できます。これらの技術は、GPOの悪用を通じてターゲットシステムへのアクセスを維持し、制御するためのさまざまな手段を提供します。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)