Active Directory Methodology

Reading time: 39 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Basic overview

Active Directory λειτουργεί ως θεμελιώδης τεχνολογία, επιτρέποντας στους διαχειριστές δικτύου να δημιουργούν και να διαχειρίζονται αποτελεσματικά τομείς, χρήστες και αντικείμενα εντός ενός δικτύου. Είναι σχεδιασμένο να κλιμακώνεται, διευκολύνοντας την οργάνωση ενός εκτενούς αριθμού χρηστών σε διαχειρίσιμες ομάδες και υποομάδες, ενώ ελέγχει τα δικαιώματα πρόσβασης σε διάφορα επίπεδα.

Η δομή του Active Directory αποτελείται από τρία κύρια επίπεδα: τομείς, δέντρα και δάση. Ένας τομέας περιλαμβάνει μια συλλογή αντικειμένων, όπως χρήστες ή συσκευές, που μοιράζονται μια κοινή βάση δεδομένων. Τα δέντρα είναι ομάδες αυτών των τομέων που συνδέονται μέσω μιας κοινής δομής, και ένα δάσος αντιπροσωπεύει τη συλλογή πολλών δέντρων, διασυνδεδεμένων μέσω σχέσεων εμπιστοσύνης, σχηματίζοντας το ανώτατο επίπεδο της οργανωτικής δομής. Συγκεκριμένα δικαιώματα πρόσβασης και επικοινωνίας μπορούν να καθοριστούν σε καθένα από αυτά τα επίπεδα.

Βασικές έννοιες εντός του Active Directory περιλαμβάνουν:

  1. Κατάλογος – Περιέχει όλες τις πληροφορίες που αφορούν τα αντικείμενα του Active Directory.
  2. Αντικείμενο – Δηλώνει οντότητες εντός του καταλόγου, συμπεριλαμβανομένων χρηστών, ομάδων ή κοινών φακέλων.
  3. Τομέας – Λειτουργεί ως δοχείο για τα αντικείμενα του καταλόγου, με τη δυνατότητα πολλών τομέων να συνυπάρχουν εντός ενός δάσους, καθένας διατηρώντας τη δική της συλλογή αντικειμένων.
  4. Δέντρο – Μια ομάδα τομέων που μοιράζονται έναν κοινό ριζικό τομέα.
  5. Δάσος – Η κορυφή της οργανωτικής δομής στο Active Directory, που αποτελείται από αρκετά δέντρα με σχέσεις εμπιστοσύνης μεταξύ τους.

Υπηρεσίες Τομέα Active Directory (AD DS) περιλαμβάνουν μια σειρά υπηρεσιών κρίσιμων για την κεντρική διαχείριση και επικοινωνία εντός ενός δικτύου. Αυτές οι υπηρεσίες περιλαμβάνουν:

  1. Υπηρεσίες Τομέα – Κεντρικοποιεί την αποθήκευση δεδομένων και διαχειρίζεται τις αλληλεπιδράσεις μεταξύ χρηστών και τομέων, συμπεριλαμβανομένων των λειτουργιών αυθεντικοποίησης και αναζήτησης.
  2. Υπηρεσίες Πιστοποιητικών – Εποπτεύει τη δημιουργία, διανομή και διαχείριση ασφαλών ψηφιακών πιστοποιητικών.
  3. Ελαφριές Υπηρεσίες Καταλόγου – Υποστηρίζει εφαρμογές που ενεργοποιούνται από τον κατάλογο μέσω του πρωτοκόλλου LDAP.
  4. Υπηρεσίες Ομοσπονδίας Καταλόγου – Παρέχει δυνατότητες ενιαίας σύνδεσης για την αυθεντικοποίηση χρηστών σε πολλές διαδικτυακές εφαρμογές σε μία μόνο συνεδρία.
  5. Διαχείριση Δικαιωμάτων – Βοηθά στην προστασία υλικού πνευματικών δικαιωμάτων ρυθμίζοντας τη μη εξουσιοδοτημένη διανομή και χρήση του.
  6. Υπηρεσία DNS – Κρίσιμη για την επίλυση ονόματων τομέων.

Για μια πιο λεπτομερή εξήγηση, δείτε: TechTerms - Ορισμός Active Directory

Kerberos Authentication

Για να μάθετε πώς να επιτεθείτε σε ένα AD, πρέπει να κατανοήσετε πολύ καλά τη διαδικασία αυθεντικοποίησης Kerberos.
Διαβάστε αυτή τη σελίδα αν δεν ξέρετε πώς λειτουργεί.

Cheat Sheet

Μπορείτε να επισκεφθείτε το https://wadcoms.github.io/ για μια γρήγορη επισκόπηση των εντολών που μπορείτε να εκτελέσετε για να καταγράψετε/εκμεταλλευτείτε ένα AD.

warning

Η επικοινωνία Kerberos απαιτεί ένα πλήρες καθορισμένο όνομα (FQDN) για την εκτέλεση ενεργειών. Αν προσπαθήσετε να αποκτήσετε πρόσβαση σε μια μηχανή μέσω της διεύθυνσης IP, θα χρησιμοποιήσει NTLM και όχι kerberos.

Recon Active Directory (No creds/sessions)

Αν έχετε πρόσβαση σε ένα περιβάλλον AD αλλά δεν έχετε καμία διαπιστευτήρια/συνεδρίες, μπορείτε να:

  • Pentest το δίκτυο:
  • Σαρώστε το δίκτυο, βρείτε μηχανές και ανοιχτές θύρες και προσπαθήστε να εκμεταλλευτείτε ευπάθειες ή εξάγετε διαπιστευτήρια από αυτές (για παράδειγμα, οι εκτυπωτές θα μπορούσαν να είναι πολύ ενδιαφέροντες στόχοι).
  • Η καταγραφή DNS θα μπορούσε να δώσει πληροφορίες σχετικά με βασικούς διακομιστές στο τομέα όπως ιστότοποι, εκτυπωτές, κοινές χρήσεις, vpn, μέσα κ.λπ.
  • gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt
  • Ρίξτε μια ματιά στη Γενική Μεθοδολογία Pentesting για περισσότερες πληροφορίες σχετικά με το πώς να το κάνετε αυτό.
  • Ελέγξτε για null και Guest πρόσβαση σε υπηρεσίες smb (αυτό δεν θα λειτουργήσει σε σύγχρονες εκδόσεις Windows):
  • enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>
  • smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>
  • smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //
  • Ένας πιο λεπτομερής οδηγός σχετικά με το πώς να καταγράψετε έναν διακομιστή SMB μπορεί να βρεθεί εδώ:

139,445 - Pentesting SMB

  • Καταγράψτε Ldap
  • nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>
  • Ένας πιο λεπτομερής οδηγός σχετικά με το πώς να καταγράψετε LDAP μπορεί να βρεθεί εδώ (δώστε ιδιαίτερη προσοχή στην ανώνυμη πρόσβαση):

389, 636, 3268, 3269 - Pentesting LDAP

  • Δηλητηριάστε το δίκτυο
  • Συγκεντρώστε διαπιστευτήρια υποδυόμενοι υπηρεσίες με Responder
  • Αποκτήστε πρόσβαση σε υπολογιστή καταχρώντας την επίθεση relay
  • Συγκεντρώστε διαπιστευτήρια εκθέτοντας ψεύτικες υπηρεσίες UPnP με evil-SSDP
  • OSINT:
  • Εξάγετε ονόματα χρηστών/ονόματα από εσωτερικά έγγραφα, κοινωνικά δίκτυα, υπηρεσίες (κυρίως ιστότοπους) εντός των περιβαλλόντων τομέα και επίσης από δημόσια διαθέσιμα.
  • Αν βρείτε τα πλήρη ονόματα των εργαζομένων της εταιρείας, μπορείτε να δοκιμάσετε διάφορες συμβάσεις ονόματος χρήστη AD (διαβάστε αυτό). Οι πιο κοινές συμβάσεις είναι: NameSurname, Name.Surname, NamSur (3 γράμματα από το καθένα), Nam.Sur, NSurname, N.Surname, SurnameName, Surname.Name, SurnameN, Surname.N, 3 τυχαία γράμματα και 3 τυχαίοι αριθμοί (abc123).
  • Εργαλεία:
  • w0Tx/generate-ad-username
  • urbanadventurer/username-anarchy

User enumeration

  • Ανώνυμη SMB/LDAP enum: Ελέγξτε τις σελίδες pentesting SMB και pentesting LDAP.
  • Kerbrute enum: Όταν ζητείται ένα μη έγκυρο όνομα χρήστη, ο διακομιστής θα απαντήσει χρησιμοποιώντας τον κωδικό σφάλματος Kerberos KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN, επιτρέποντάς μας να προσδιορίσουμε ότι το όνομα χρήστη ήταν μη έγκυρο. Έγκυρα ονόματα χρήστη θα προκαλέσουν είτε την TGT σε μια απάντηση AS-REP είτε το σφάλμα KRB5KDC_ERR_PREAUTH_REQUIRED, υποδεικνύοντας ότι απαιτείται από τον χρήστη να εκτελέσει προαυθεντικοποίηση.
  • Καμία Αυθεντικοποίηση κατά MS-NRPC: Χρησιμοποιώντας auth-level = 1 (Καμία αυθεντικοποίηση) κατά της διεπαφής MS-NRPC (Netlogon) στους ελεγκτές τομέα. Η μέθοδος καλεί τη λειτουργία DsrGetDcNameEx2 μετά τη σύνδεση της διεπαφής MS-NRPC για να ελέγξει αν ο χρήστης ή ο υπολογιστής υπάρχει χωρίς καμία διαπιστευτήρια. Το εργαλείο NauthNRPC υλοποιεί αυτόν τον τύπο καταγραφής. Η έρευνα μπορεί να βρεθεί εδώ
bash
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='DOMAIN'" <IP> Nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm='<domain>',userdb=/root/Desktop/usernames.txt <IP> msf> use auxiliary/gather/kerberos_enumusers crackmapexec smb dominio.es -u '' -p '' --users | awk '{print $4}' | uniq python3 nauth.py -t target -u users_file.txt #From https://github.com/sud0Ru/NauthNRPC
  • OWA (Outlook Web Access) Server

Αν βρείτε έναν από αυτούς τους διακομιστές στο δίκτυο, μπορείτε επίσης να εκτελέσετε user enumeration against it. Για παράδειγμα, θα μπορούσατε να χρησιμοποιήσετε το εργαλείο MailSniper:

bash
ipmo C:\Tools\MailSniper\MailSniper.ps1 # Get info about the domain Invoke-DomainHarvestOWA -ExchHostname [ip] # Enumerate valid users from a list of potential usernames Invoke-UsernameHarvestOWA -ExchHostname [ip] -Domain [domain] -UserList .\possible-usernames.txt -OutFile valid.txt # Password spraying Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summer2021 # Get addresses list from the compromised mail Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt

warning

Μπορείτε να βρείτε λίστες χρηστών σε αυτό το github repo και σε αυτό (στατιστικά πιθανών χρηστών).

Ωστόσο, θα πρέπει να έχετε το όνομα των ατόμων που εργάζονται στην εταιρεία από το βήμα αναγνώρισης που θα έπρεπε να έχετε εκτελέσει πριν από αυτό. Με το όνομα και το επώνυμο μπορείτε να χρησιμοποιήσετε το σενάριο namemash.py για να δημιουργήσετε πιθανές έγκυρες ονομασίες χρηστών.

Γνωρίζοντας ένα ή περισσότερα ονόματα χρηστών

Εντάξει, γνωρίζετε ότι έχετε ήδη ένα έγκυρο όνομα χρήστη αλλά όχι κωδικούς πρόσβασης... Τότε δοκιμάστε:

  • ASREPRoast: Αν ένας χρήστης δεν έχει το χαρακτηριστικό DONT_REQ_PREAUTH, μπορείτε να ζητήσετε ένα μήνυμα AS_REP για αυτόν τον χρήστη που θα περιέχει κάποια δεδομένα κρυπτογραφημένα με μια παραλλαγή του κωδικού πρόσβασης του χρήστη.
  • Password Spraying: Ας δοκιμάσουμε τους πιο συνηθισμένους κωδικούς πρόσβασης με καθέναν από τους ανακαλυφθέντες χρήστες, ίσως κάποιος χρήστης να χρησιμοποιεί έναν κακό κωδικό (κρατήστε στο μυαλό σας την πολιτική κωδικών πρόσβασης!).
  • Σημειώστε ότι μπορείτε επίσης να spray OWA servers για να προσπαθήσετε να αποκτήσετε πρόσβαση στους διακομιστές αλληλογραφίας των χρηστών.

Password Spraying / Brute Force

LLMNR/NBT-NS Poisoning

Μπορείτε να αποκτήσετε κάποιες προκλήσεις hashes για να σπάσετε δηλητηριάζοντας κάποια πρωτόκολλα του δικτύου:

Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks

NTLM Relay

Αν έχετε καταφέρει να καταγράψετε το active directory θα έχετε περισσότερα email και καλύτερη κατανόηση του δικτύου. Μπορείτε να αναγκάσετε NTLM relay attacks για να αποκτήσετε πρόσβαση στο περιβάλλον AD.

Κλοπή NTLM Creds

Αν μπορείτε να έχετε πρόσβαση σε άλλους υπολογιστές ή κοινόχρηστους φακέλους με τον null ή guest user μπορείτε να τοποθετήσετε αρχεία (όπως ένα αρχείο SCF) που αν με κάποιο τρόπο αποκτηθούν θα ενεργοποιήσουν μια NTLM αυθεντικοποίηση εναντίον σας ώστε να μπορείτε να κλέψετε την NTLM πρόκληση για να την σπάσετε:

Places to steal NTLM creds

Καταγραφή Active Directory ΜΕ πιστοποιήσεις/συνεδρία

Για αυτή τη φάση πρέπει να έχετε συμβιβαστεί τις πιστοποιήσεις ή μια συνεδρία ενός έγκυρου λογαριασμού τομέα. Αν έχετε κάποιες έγκυρες πιστοποιήσεις ή μια shell ως χρήστης τομέα, θα πρέπει να θυμάστε ότι οι επιλογές που δόθηκαν πριν είναι ακόμα επιλογές για να συμβιβάσετε άλλους χρήστες.

Πριν ξεκινήσετε την αυθεντικοποιημένη καταγραφή θα πρέπει να γνωρίζετε ποιο είναι το πρόβλημα διπλού άλματος Kerberos.

Kerberos Double Hop Problem

Καταγραφή

Η κατοχή ενός λογαριασμού είναι ένα μεγάλο βήμα για να αρχίσετε να συμβιβάζετε ολόκληρο το τομέα, γιατί θα μπορείτε να ξεκινήσετε την Καταγραφή Active Directory:

Αναφορικά με ASREPRoast μπορείτε τώρα να βρείτε κάθε πιθανό ευάλωτο χρήστη, και αναφορικά με Password Spraying μπορείτε να αποκτήσετε μια λίστα με όλα τα ονόματα χρηστών και να δοκιμάσετε τον κωδικό του συμβιβασμένου λογαριασμού, κενές κωδικούς και νέους υποσχόμενους κωδικούς.

  • Μπορείτε να χρησιμοποιήσετε το CMD για να εκτελέσετε μια βασική αναγνώριση
  • Μπορείτε επίσης να χρησιμοποιήσετε powershell για αναγνώριση που θα είναι πιο διακριτικό
  • Μπορείτε επίσης να χρησιμοποιήσετε το powerview για να εξαγάγετε πιο λεπτομερείς πληροφορίες
  • Ένα άλλο καταπληκτικό εργαλείο για αναγνώριση σε ένα active directory είναι το BloodHound. Δεν είναι πολύ διακριτικό (ανάλογα με τις μεθόδους συλλογής που χρησιμοποιείτε), αλλά αν δεν σας νοιάζει γι' αυτό, θα πρέπει σίγουρα να το δοκιμάσετε. Βρείτε πού μπορούν οι χρήστες να RDP, βρείτε διαδρομές σε άλλες ομάδες, κ.λπ.
  • Άλλα αυτοματοποιημένα εργαλεία καταγραφής AD είναι: AD Explorer, ADRecon, Group3r, PingCastle.
  • DNS records του AD καθώς μπορεί να περιέχουν ενδιαφέρουσες πληροφορίες.
  • Ένα εργαλείο με GUI που μπορείτε να χρησιμοποιήσετε για να καταγράψετε τον κατάλογο είναι το AdExplorer.exe από το SysInternal Suite.
  • Μπορείτε επίσης να αναζητήσετε στη βάση δεδομένων LDAP με ldapsearch για να αναζητήσετε πιστοποιήσεις στα πεδία userPassword & unixUserPassword, ή ακόμα και για Description. cf. Password in AD User comment on PayloadsAllTheThings για άλλες μεθόδους.
  • Αν χρησιμοποιείτε Linux, μπορείτε επίσης να καταγράψετε το τομέα χρησιμοποιώντας pywerview.
  • Μπορείτε επίσης να δοκιμάσετε αυτοματοποιημένα εργαλεία όπως:
  • tomcarver16/ADSearch
  • 61106960/adPEAS
  • Εξαγωγή όλων των χρηστών του τομέα

Είναι πολύ εύκολο να αποκτήσετε όλα τα ονόματα χρηστών του τομέα από τα Windows (net user /domain, Get-DomainUser ή wmic useraccount get name,sid). Στο Linux, μπορείτε να χρησιμοποιήσετε: GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username ή enum4linux -a -u "user" -p "password" <DC IP>

Ακόμα και αν αυτή η ενότητα καταγραφής φαίνεται μικρή, είναι το πιο σημαντικό μέρος όλων. Αποκτήστε πρόσβαση στους συνδέσμους (κυρίως αυτόν του cmd, powershell, powerview και BloodHound), μάθετε πώς να καταγράφετε ένα τομέα και εξασκηθείτε μέχρι να νιώσετε άνετα. Κατά τη διάρκεια μιας αξιολόγησης, αυτή θα είναι η κρίσιμη στιγμή για να βρείτε το δρόμο σας προς DA ή να αποφασίσετε ότι δεν μπορεί να γίνει τίποτα.

Kerberoast

Το Kerberoasting περιλαμβάνει την απόκτηση TGS tickets που χρησιμοποιούνται από υπηρεσίες που συνδέονται με λογαριασμούς χρηστών και την αποκρυπτογράφησή τους—η οποία βασίζεται στους κωδικούς πρόσβασης των χρηστών—εκτός σύνδεσης.

Περισσότερα γι' αυτό:

Kerberoast

Απομακρυσμένη σύνδεση (RDP, SSH, FTP, Win-RM, κ.λπ.)

Μόλις αποκτήσετε κάποιες πιστοποιήσεις μπορείτε να ελέγξετε αν έχετε πρόσβαση σε οποιαδήποτε μηχανή. Για αυτό το σκοπό, μπορείτε να χρησιμοποιήσετε το CrackMapExec για να προσπαθήσετε να συνδεθείτε σε αρκετούς διακομιστές με διαφορετικά πρωτόκολλα, ανάλογα με τις σάρωσες θυρών σας.

Τοπική Κλιμάκωση Προνομίων

Αν έχετε συμβιβαστεί πιστοποιήσεις ή μια συνεδρία ως κανονικός χρήστης τομέα και έχετε πρόσβαση με αυτόν τον χρήστη σε οποιαδήποτε μηχανή στον τομέα θα πρέπει να προσπαθήσετε να βρείτε τον τρόπο σας για να κλιμακώσετε τα προνόμια τοπικά και να αναζητήσετε πιστοποιήσεις. Αυτό συμβαίνει γιατί μόνο με τοπικά προνόμια διαχειριστή θα μπορείτε να dumpάρετε hashes άλλων χρηστών στη μνήμη (LSASS) και τοπικά (SAM).

Υπάρχει μια ολοκληρωμένη σελίδα σε αυτό το βιβλίο σχετικά με την τοπική κλιμάκωση προνομίων στα Windows και μια λίστα ελέγχου. Επίσης, μην ξεχάσετε να χρησιμοποιήσετε WinPEAS.

Τρέχοντα Εισιτήρια Συνεδρίας

Είναι πολύ απίθανο να βρείτε εισιτήρια στον τρέχοντα χρήστη που να σας δίνουν άδεια πρόσβασης σε απροσδόκητους πόρους, αλλά μπορείτε να ελέγξετε:

bash
## List all tickets (if not admin, only current user tickets) .\Rubeus.exe triage ## Dump the interesting one by luid .\Rubeus.exe dump /service:krbtgt /luid:<luid> /nowrap [IO.File]::WriteAllBytes("ticket.kirbi", [Convert]::FromBase64String("<BASE64_TICKET>"))

NTLM Relay

Αν έχετε καταφέρει να καταγράψετε το active directory θα έχετε περισσότερα emails και καλύτερη κατανόηση του δικτύου. Μπορεί να είστε σε θέση να αναγκάσετε NTLM relay attacks.

Looks for Creds in Computer Shares | SMB Shares

Τώρα που έχετε κάποιες βασικές διαπιστεύσεις θα πρέπει να ελέγξετε αν μπορείτε να βρείτε οποιαδήποτε ενδιαφέροντα αρχεία που μοιράζονται μέσα στο AD. Θα μπορούσατε να το κάνετε αυτό χειροκίνητα αλλά είναι μια πολύ βαρετή επαναλαμβανόμενη εργασία (και περισσότερο αν βρείτε εκατοντάδες έγγραφα που πρέπει να ελέγξετε).

Follow this link to learn about tools you could use.

Steal NTLM Creds

Αν μπορείτε να έχετε πρόσβαση σε άλλους υπολογιστές ή κοινές χρήσεις θα μπορούσατε να τοποθετήσετε αρχεία (όπως ένα αρχείο SCF) που αν με κάποιο τρόπο προσπελαστούν θα προκαλέσουν μια NTLM αυθεντικοποίηση εναντίον σας ώστε να μπορείτε να κλέψετε την NTLM πρόκληση για να την σπάσετε:

Places to steal NTLM creds

CVE-2021-1675/CVE-2021-34527 PrintNightmare

Αυτή η ευπάθεια επέτρεψε σε οποιονδήποτε αυθεντικοποιημένο χρήστη να συμβιβάσει τον ελεγκτή τομέα.

PrintNightmare

Privilege escalation on Active Directory WITH privileged credentials/session

Για τις παρακάτω τεχνικές ένας κανονικός χρήστης τομέα δεν είναι αρκετός, χρειάζεστε κάποιες ειδικές προνόμια/διαπιστεύσεις για να εκτελέσετε αυτές τις επιθέσεις.

Hash extraction

Ελπίζω να έχετε καταφέρει να συμβιβάσετε κάποιο τοπικό διαχειριστή χρησιμοποιώντας AsRepRoast, Password Spraying, Kerberoast, Responder συμπεριλαμβανομένων των relaying, EvilSSDP, escalating privileges locally.
Τότε, είναι ώρα να εξάγετε όλους τους hash στη μνήμη και τοπικά.
Read this page about different ways to obtain the hashes.

Pass the Hash

Μόλις έχετε τον hash ενός χρήστη, μπορείτε να τον χρησιμοποιήσετε για να παριστάνετε αυτόν.
Πρέπει να χρησιμοποιήσετε κάποιο εργαλείο που θα εκτελέσει την NTLM αυθεντικοποίηση χρησιμοποιώντας αυτόν τον hash, ή θα μπορούσατε να δημιουργήσετε μια νέα sessionlogon και να εισάγετε αυτόν τον hash μέσα στο LSASS, έτσι ώστε όταν οποιαδήποτε NTLM αυθεντικοποίηση εκτελείται, αυτός ο hash θα χρησιμοποιηθεί. Η τελευταία επιλογή είναι αυτό που κάνει το mimikatz.
Read this page for more information.

Over Pass the Hash/Pass the Key

Αυτή η επίθεση στοχεύει να χρησιμοποιήσει τον NTLM hash του χρήστη για να ζητήσει Kerberos tickets, ως εναλλακτική στην κοινή Pass The Hash μέσω του πρωτοκόλλου NTLM. Επομένως, αυτό θα μπορούσε να είναι ιδιαίτερα χρήσιμο σε δίκτυα όπου το πρωτόκολλο NTLM είναι απενεργοποιημένο και μόνο Kerberos επιτρέπεται ως πρωτόκολλο αυθεντικοποίησης.

Over Pass the Hash/Pass the Key

Pass the Ticket

Στη μέθοδο επίθεσης Pass The Ticket (PTT), οι επιτιθέμενοι κλέβουν ένα εισιτήριο αυθεντικοποίησης χρήστη αντί για τον κωδικό πρόσβασης ή τις τιμές hash τους. Αυτό το κλεμμένο εισιτήριο χρησιμοποιείται στη συνέχεια για να παριστάνει τον χρήστη, αποκτώντας μη εξουσιοδοτημένη πρόσβαση σε πόρους και υπηρεσίες εντός ενός δικτύου.

Pass the Ticket

Credentials Reuse

Αν έχετε τον hash ή τον κωδικό πρόσβασης ενός τοπικού διαχειριστή θα πρέπει να προσπαθήσετε να συνδεθείτε τοπικά σε άλλους υπολογιστές με αυτόν.

bash
# 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 +

warning

Σημειώστε ότι αυτό είναι αρκετά θορυβώδες και το LAPS θα μειώσει αυτό.

Κατάχρηση MSSQL & Εμπιστευμένοι Σύνδεσμοι

Εάν ένας χρήστης έχει δικαιώματα να πρόσβαση σε MSSQL instances, θα μπορούσε να το χρησιμοποιήσει για να εκτελέσει εντολές στον MSSQL host (αν τρέχει ως SA), να κλέψει το NetNTLM hash ή ακόμα και να εκτελέσει μια επίθεση relay.
Επίσης, αν ένα MSSQL instance είναι εμπιστευμένο (σύνδεσμος βάσης δεδομένων) από ένα διαφορετικό MSSQL instance. Εάν ο χρήστης έχει δικαιώματα πάνω στη εμπιστευμένη βάση δεδομένων, θα είναι σε θέση να χρησιμοποιήσει τη σχέση εμπιστοσύνης για να εκτελέσει ερωτήματα και στην άλλη instance. Αυτές οι εμπιστοσύνες μπορούν να αλυσωθούν και σε κάποιο σημείο ο χρήστης μπορεί να βρει μια κακώς ρυθμισμένη βάση δεδομένων όπου μπορεί να εκτελέσει εντολές.
Οι σύνδεσμοι μεταξύ των βάσεων δεδομένων λειτουργούν ακόμη και σε διασυνδέσεις δασών.

MSSQL AD Abuse

Απεριόριστη Αντιπροσώπευση

Εάν βρείτε οποιοδήποτε αντικείμενο Υπολογιστή με το χαρακτηριστικό ADS_UF_TRUSTED_FOR_DELEGATION και έχετε δικαιώματα τομέα στον υπολογιστή, θα μπορείτε να εξάγετε TGTs από τη μνήμη κάθε χρήστη που συνδέεται στον υπολογιστή.
Έτσι, αν ένας Domain Admin συνδεθεί στον υπολογιστή, θα μπορείτε να εξάγετε το TGT του και να τον προσποιηθείτε χρησιμοποιώντας Pass the Ticket.
Χάρη στην περιορισμένη αντιπροσώπευση, θα μπορούσατε ακόμη και να συμβιβάσετε αυτόματα έναν εκτυπωτή (ελπίζουμε να είναι ένας DC).

Unconstrained Delegation

Περιορισμένη Αντιπροσώπευση

Εάν ένας χρήστης ή υπολογιστής επιτρέπεται για "Περιορισμένη Αντιπροσώπευση", θα είναι σε θέση να προσποιηθεί οποιονδήποτε χρήστη για να αποκτήσει πρόσβαση σε ορισμένες υπηρεσίες σε έναν υπολογιστή.
Έτσι, αν συμβιβάσετε το hash αυτού του χρήστη/υπολογιστή θα μπορείτε να προσποιηθείτε οποιονδήποτε χρήστη (ακόμα και domain admins) για να αποκτήσετε πρόσβαση σε ορισμένες υπηρεσίες.

Constrained Delegation

Αντιπροσώπευση Βασισμένη σε Πόρους

Έχοντας δικαίωμα WRITE σε ένα αντικείμενο Active Directory ενός απομακρυσμένου υπολογιστή επιτρέπει την εκτέλεση κώδικα με υψηλά δικαιώματα:

Resource-based Constrained Delegation

Κατάχρηση ACLs

Ο συμβιβασμένος χρήστης θα μπορούσε να έχει κάποια ενδιαφέροντα δικαιώματα πάνω σε ορισμένα αντικείμενα τομέα που θα σας επιτρέψουν να κινήσετε πλάγια/κλιμακώσετε δικαιώματα.

Abusing Active Directory ACLs/ACEs

Κατάχρηση Υπηρεσίας Εκτυπωτή Spooler

Η ανακάλυψη μιας υπηρεσίας Spool που ακούει εντός του τομέα μπορεί να καταχραστεί για να αποκτήσει νέες διαπιστεύσεις και να κλιμακώσει δικαιώματα.

Force NTLM Privileged Authentication

Κατάχρηση Συνεδριών Τρίτων

Εάν άλλοι χρήστες πρόσβαση στην κατεστραμμένη μηχανή, είναι δυνατόν να συγκεντρώσετε διαπιστεύσεις από τη μνήμη και ακόμη και να εισάγετε σήματα στις διαδικασίες τους για να τους προσποιηθείτε.
Συνήθως οι χρήστες θα έχουν πρόσβαση στο σύστημα μέσω RDP, οπότε εδώ έχετε πώς να εκτελέσετε μερικές επιθέσεις σε τρίτες συνεδρίες RDP:

RDP Sessions Abuse

LAPS

Το LAPS παρέχει ένα σύστημα για τη διαχείριση του τοπικού κωδικού πρόσβασης διαχειριστή σε υπολογιστές που ανήκουν σε τομέα, διασφαλίζοντας ότι είναι τυχαίος, μοναδικός και συχνά αλλαγμένος. Αυτοί οι κωδικοί πρόσβασης αποθηκεύονται στο Active Directory και η πρόσβαση ελέγχεται μέσω ACLs μόνο για εξουσιοδοτημένους χρήστες. Με επαρκή δικαιώματα για πρόσβαση σε αυτούς τους κωδικούς πρόσβασης, γίνεται δυνατή η μεταπήδηση σε άλλους υπολογιστές.

LAPS

Κλοπή Πιστοποιητικών

Η συγκέντρωση πιστοποιητικών από την κατεστραμμένη μηχανή θα μπορούσε να είναι ένας τρόπος για να κλιμακώσετε δικαιώματα μέσα στο περιβάλλον:

AD CS Certificate Theft

Κατάχρηση Προτύπων Πιστοποιητικών

Εάν είναι ρυθμισμένα ευάλωτα πρότυπα, είναι δυνατόν να τα καταχραστείτε για να κλιμακώσετε δικαιώματα:

AD CS Domain Escalation

Μετά την εκμετάλλευση με λογαριασμό υψηλών δικαιωμάτων

Εξαγωγή Διαπιστεύσεων Τομέα

Μόλις αποκτήσετε δικαιώματα Domain Admin ή ακόμα καλύτερα Enterprise Admin, μπορείτε να εξάγετε τη βάση δεδομένων τομέα: ntds.dit.

Περισσότερες πληροφορίες σχετικά με την επίθεση DCSync μπορείτε να βρείτε εδώ.

Περισσότερες πληροφορίες σχετικά με το πώς να κλέψετε το NTDS.dit μπορείτε να βρείτε εδώ

Privesc ως Επιμονή

Ορισμένες από τις τεχνικές που συζητήθηκαν προηγουμένως μπορούν να χρησιμοποιηθούν για επιμονή.
Για παράδειγμα, θα μπορούσατε να:

  • Κάνετε τους χρήστες ευάλωτους σε Kerberoast
bash
Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}r
  • Κάνετε τους χρήστες ευάλωτους σε ASREPRoast
bash
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
  • Χορηγήστε DCSync δικαιώματα σε έναν χρήστη
bash
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync

Silver Ticket

Η επίθεση Silver Ticket δημιουργεί ένα νόμιμο εισιτήριο Υπηρεσίας Εισιτηρίων (TGS) για μια συγκεκριμένη υπηρεσία χρησιμοποιώντας το NTLM hash (για παράδειγμα, το hash του λογαριασμού PC). Αυτή η μέθοδος χρησιμοποιείται για να αποκτήσει πρόσβαση στα δικαιώματα υπηρεσίας.

Silver Ticket

Golden Ticket

Μια επίθεση Golden Ticket περιλαμβάνει έναν επιτιθέμενο που αποκτά πρόσβαση στο NTLM hash του λογαριασμού krbtgt σε ένα περιβάλλον Active Directory (AD). Αυτός ο λογαριασμός είναι ειδικός επειδή χρησιμοποιείται για να υπογράψει όλα τα Εισιτήρια Υπηρεσίας Εισιτηρίων (TGTs), τα οποία είναι απαραίτητα για την αυθεντικοποίηση εντός του δικτύου AD.

Μόλις ο επιτιθέμενος αποκτήσει αυτό το hash, μπορεί να δημιουργήσει TGTs για οποιονδήποτε λογαριασμό επιλέξει (επίθεση Silver ticket).

Golden Ticket

Diamond Ticket

Αυτά είναι σαν χρυσά εισιτήρια που έχουν παραποιηθεί με τρόπο που παρακάμπτει τους κοινούς μηχανισμούς ανίχνευσης χρυσών εισιτηρίων.

Diamond Ticket

Επιμονή Λογαριασμού Πιστοποιητικών

Έχοντας πιστοποιητικά ενός λογαριασμού ή έχοντας τη δυνατότητα να τα ζητήσετε είναι ένας πολύ καλός τρόπος για να μπορέσετε να επιμείνετε στον λογαριασμό των χρηστών (ακόμα και αν αλλάξει τον κωδικό πρόσβασης):

AD CS Account Persistence

Επιμονή Πιστοποιητικών Τομέα

Η χρήση πιστοποιητικών είναι επίσης δυνατή για να επιμείνετε με υψηλά δικαιώματα μέσα στον τομέα:

AD CS Domain Persistence

Ομάδα AdminSDHolder

Το αντικείμενο AdminSDHolder στο Active Directory διασφαλίζει την ασφάλεια των προνομιακών ομάδων (όπως οι Domain Admins και Enterprise Admins) εφαρμόζοντας μια τυπική Λίστα Ελέγχου Πρόσβασης (ACL) σε αυτές τις ομάδες για να αποτρέψει μη εξουσιοδοτημένες αλλαγές. Ωστόσο, αυτή η δυνατότητα μπορεί να εκμεταλλευτεί· εάν ένας επιτιθέμενος τροποποιήσει την ACL του AdminSDHolder για να δώσει πλήρη πρόσβαση σε έναν κανονικό χρήστη, αυτός ο χρήστης αποκτά εκτενή έλεγχο σε όλες τις προνομιακές ομάδες. Αυτό το μέτρο ασφαλείας, που προορίζεται για προστασία, μπορεί έτσι να έχει αντίκτυπο, επιτρέποντας αδικαιολόγητη πρόσβαση εκτός αν παρακολουθείται προσεκτικά.

Περισσότερες πληροφορίες σχετικά με την Ομάδα AdminDSHolder εδώ.

Διαπιστεύσεις DSRM

Μέσα σε κάθε Domain Controller (DC), υπάρχει ένας τοπικός διαχειριστής λογαριασμός. Αποκτώντας δικαιώματα διαχειριστή σε μια τέτοια μηχανή, το τοπικό hash του διαχειριστή μπορεί να εξαχθεί χρησιμοποιώντας mimikatz. Ακολουθώντας αυτό, είναι απαραίτητη μια τροποποίηση μητρώου για να επιτραπεί η χρήση αυτού του κωδικού πρόσβασης, επιτρέποντας την απομακρυσμένη πρόσβαση στον τοπικό λογαριασμό διαχειριστή.

DSRM Credentials

Επιμονή ACL

Μπορείτε να δώσετε κάποια ειδικά δικαιώματα σε έναν χρήστη πάνω σε ορισμένα συγκεκριμένα αντικείμενα τομέα που θα επιτρέψουν στον χρήστη να κλιμακώσει δικαιώματα στο μέλλον.

Abusing Active Directory ACLs/ACEs

Ασφαλιστικοί Περιγραφείς

Οι ασφαλιστικοί περιγραφείς χρησιμοποιούνται για να αποθηκεύουν τα δικαιώματα που έχει ένα αντικείμενο πάνω σε ένα αντικείμενο. Εάν μπορείτε απλώς να κάνετε μια μικρή αλλαγή στον ασφαλιστικό περιγραφέα ενός αντικειμένου, μπορείτε να αποκτήσετε πολύ ενδιαφέροντα δικαιώματα πάνω σε αυτό το αντικείμενο χωρίς να χρειάζεται να είστε μέλος μιας προνομιακής ομάδας.

Security Descriptors

Skeleton Key

Αλλάξτε το LSASS στη μνήμη για να καθορίσετε έναν καθολικό κωδικό πρόσβασης, παρέχοντας πρόσβαση σε όλους τους λογαριασμούς τομέα.

Skeleton Key

Custom SSP

Μάθετε τι είναι ένα SSP (Security Support Provider) εδώ.
Μπορείτε να δημιουργήσετε το δικό σας SSP για να συλλάβετε σε καθαρό κείμενο τις διαπιστεύσεις που χρησιμοποιούνται για την πρόσβαση στη μηχανή.

Custom SSP

DCShadow

Καταχωρεί έναν νέο Domain Controller στο AD και τον χρησιμοποιεί για να σπρώξει χαρακτηριστικά (SIDHistory, SPNs...) σε καθορισμένα αντικείμενα χωρίς να αφήνει κανένα καταγραφή σχετικά με τις τροποποιήσεις. Χρειάζεστε δικαιώματα DA και να είστε μέσα στο root domain.
Σημειώστε ότι αν χρησιμοποιήσετε λανθασμένα δεδομένα, θα εμφανιστούν πολύ άσχημες καταγραφές.

DCShadow

Επιμονή LAPS

Προηγουμένως έχουμε συζητήσει πώς να κλιμακώσετε δικαιώματα αν έχετε αρκετά δικαιώματα για να διαβάσετε τους κωδικούς πρόσβασης LAPS. Ωστόσο, αυτοί οι κωδικοί πρόσβασης μπορούν επίσης να χρησιμοποιηθούν για να διατηρήσουν την επιμονή.
Ελέγξτε:

LAPS

Κλιμάκωση Δικαιωμάτων Δάσους - Εμπιστοσύνες Τομέα

Η Microsoft θεωρεί το Δάσος ως το όριο ασφαλείας. Αυτό σημαίνει ότι η κατάχρηση ενός μόνο τομέα θα μπορούσε ενδεχομένως να οδηγήσει σε ολόκληρο το Δάσος να είναι συμβιβασμένο.

Βασικές Πληροφορίες

Μια εμπιστοσύνη τομέα είναι ένας μηχανισμός ασφαλείας που επιτρέπει σε έναν χρήστη από έναν τομέα να έχει πρόσβαση σε πόρους σε έναν άλλο τομέα. Δημιουργεί ουσιαστικά μια σύνδεση μεταξύ των συστημάτων αυθεντικοποίησης των δύο τομέων, επιτρέποντας τις επαληθεύσεις αυθεντικοποίησης να ρέουν ομαλά. Όταν οι τομείς ρυθμίζουν μια εμπιστοσύνη, ανταλλάσσουν και διατηρούν συγκεκριμένα κλειδιά μέσα στους Domain Controllers (DCs) τους, τα οποία είναι κρίσιμα για την ακεραιότητα της εμπιστοσύνης.

Σε ένα τυπικό σενάριο, εάν ένας χρήστης σκοπεύει να έχει πρόσβαση σε μια υπηρεσία σε έναν εμπιστευμένο τομέα, πρέπει πρώτα να ζητήσει ένα ειδικό εισιτήριο γνωστό ως inter-realm TGT από τον DC του δικού του τομέα. Αυτό το TGT είναι κρυπτογραφημένο με ένα κοινό κλειδί που έχουν συμφωνήσει και οι δύο τομείς. Ο χρήστης στη συνέχεια παρουσιάζει αυτό το TGT στον DC του εμπιστευμένου τομέα για να αποκτήσει ένα εισιτήριο υπηρεσίας (TGS). Μετά την επιτυχή επαλήθευση του inter-realm TGT από τον DC του εμπιστευμένου τομέα, εκδίδει ένα TGS, παρέχοντας στον χρήστη πρόσβαση στην υπηρεσία.

Βήματα:

  1. Ένας υπολογιστής-πελάτης στον Τομέα 1 ξεκινά τη διαδικασία χρησιμοποιώντας το NTLM hash του για να ζητήσει ένα Εισιτήριο Υπηρεσίας Εισιτηρίων (TGT) από τον Domain Controller (DC1) του.
  2. Ο DC1 εκδίδει ένα νέο TGT εάν ο πελάτης αυθεντικοποιηθεί επιτυχώς.
  3. Ο πελάτης στη συνέχεια ζητά ένα inter-realm TGT από τον DC1, το οποίο είναι απαραίτητο για να έχει πρόσβαση σε πόρους στον Τομέα 2.
  4. Το inter-realm TGT κρυπτογραφείται με ένα κλειδί εμπιστοσύνης που μοιράζονται οι DC1 και DC2 ως μέρος της διπλής εμπιστοσύνης τομέα.
  5. Ο πελάτης παίρνει το inter-realm TGT στον Domain Controller του Τομέα 2 (DC2).
  6. Ο DC2 επαληθεύει το inter-realm TGT χρησιμοποιώντας το κοινό κλειδί εμπιστοσύνης του και, εάν είναι έγκυρο, εκδίδει ένα Εισιτήριο Υπηρεσίας Εισιτηρίων (TGS) για τον διακομιστή στον Τομέα 2 που θέλει να έχει πρόσβαση ο πελάτης.
  7. Τέλος, ο πελάτης παρουσιάζει αυτό το TGS στον διακομιστή, το οποίο είναι κρυπτογραφημένο με το hash του λογαριασμού του διακομιστή, για να αποκτήσει πρόσβαση στην υπηρεσία στον Τομέα 2.

Διαφορετικές εμπιστοσύνες

Είναι σημαντικό να παρατηρήσετε ότι μια εμπιστοσύνη μπορεί να είναι 1 κατεύθυνσης ή 2 κατευθύνσεων. Στην επιλογή 2 κατευθύνσεων, και οι δύο τομείς θα εμπιστεύονται ο ένας τον άλλο, αλλά στη σχέση εμπιστοσύνης 1 κατεύθυνσης ένας από τους τομείς θα είναι ο εμπιστευμένος και ο άλλος ο εμπιστευόμενος τομέας. Στην τελευταία περίπτωση, θα μπορείτε να έχετε πρόσβαση σε πόρους μόνο μέσα στον εμπιστευόμενο τομέα από τον εμπιστευμένο.

Εάν ο Τομέας A εμπιστεύεται τον Τομέα B, ο A είναι ο εμπιστευόμενος τομέας και ο B είναι ο εμπιστευμένος. Επιπλέον, στον Τομέα A, αυτό θα ήταν μια Εξωτερική εμπιστοσύνη; και στον Τομέα B, αυτό θα ήταν μια Εσωτερική εμπιστοσύνη.

Διαφορετικές σχέσεις εμπιστοσύνης

  • Εμπιστοσύνες Γονέα-Παιδιού: Αυτή είναι μια κοινή ρύθμιση εντός του ίδιου δάσους, όπου ένα παιδικό τομέα έχει αυτόματα μια διπλή μεταβατική εμπιστοσύνη με τον γονικό τομέα του. Ουσιαστικά, αυτό σημαίνει ότι οι αιτήσεις αυθεντικοποίησης μπορούν να ρέουν ομαλά μεταξύ του γονέα και του παιδιού.
  • Διασυνδεδεμένες Εμπιστοσύνες: Αναφέρονται ως "συντομεύσεις εμπιστοσύνης", αυτές καθιερώνονται μεταξύ παιδικών τομέων για να επιταχύνουν τις διαδικασίες παραπομπής. Σε πολύπλοκα δάση, οι παραπομπές αυθεντικοποίησης συνήθως πρέπει να ταξιδεύουν μέχρι τη ρίζα του δάσους και στη συνέχεια προς τα κάτω στον στόχο τομέα. Δημιουργώντας διασυνδέσεις, το ταξίδι συντομεύεται, κάτι που είναι ιδιαίτερα ευεργετικό σε γεωγραφικά διασκορπισμένα περιβάλλοντα.
  • Εξωτερικές Εμπιστοσύνες: Αυτές καθιερώνονται μεταξύ διαφορετικών, άσχετων τομέων και είναι μη μεταβατικές από τη φύση τους. Σύμφωνα με την τεκμηρίωση της Microsoft, οι εξωτερικές εμπιστοσύνες είναι χρήσιμες για την πρόσβαση σε πόρους σε έναν τομέα εκτός του τρέχοντος δάσους που δεν είναι συνδεδεμένος μέσω εμπιστοσύνης δάσους. Η ασφάλεια ενισχύεται μέσω φιλτραρίσματος SID με εξωτερικές εμπιστοσύνες.
  • Εμπιστοσύνες Ρίζας Δέντρου: Αυτές οι εμπιστοσύνες καθιερώνονται αυτόματα μεταξύ του ριζικού τομέα του δάσους και ενός νέου ριζικού δέντρου που προστίθεται. Αν και δεν συναντώνται συχνά, οι εμπιστοσύνες ρίζας δέντρου είναι σημαντικές για την προσθήκη νέων δέντρων τομέα σε ένα δάσος, επιτρέποντάς τους να διατηρούν ένα μοναδικό όνομα τομέα και διασφαλίζοντας τη διπλή μεταβατικότητα. Περισσότερες πληροφορίες μπορείτε να βρείτε στον οδηγό της Microsoft.
  • Εμπιστοσύνες Δάσους: Αυτός ο τύπος εμπιστοσύνης είναι μια διπλή μεταβατική εμπιστοσύνη μεταξύ δύο ριζικών τομέων δάσους, επιβάλλοντας επίσης φιλτράρισμα SID για την ενίσχυση των μέτρων ασφαλείας.
  • Εμπιστοσύνες MIT: Αυτές οι εμπιστοσύνες καθιερώνονται με μη Windows, συμβατές με RFC4120 τομείς Kerberos. Οι εμπιστοσύνες MIT είναι λίγο πιο εξειδικευμένες και απευθύνονται σε περιβάλλοντα που απαιτούν ενσωμάτωση με συστήματα βασισμένα σε Kerberos εκτός του οικοσυστήματος Windows.

Άλλες διαφορές στις σχέσεις εμπιστοσύνης

  • Μια σχέση εμπιστοσύνης μπορεί επίσης να είναι μεταβατική (A εμπιστεύεται B, B εμπιστεύεται C, τότε A εμπιστεύεται C) ή μη μεταβατική.
  • Μια σχέση εμπιστοσύνης μπορεί να ρυθμιστεί ως αμφίδρομη εμπιστοσύνη (και οι δύο εμπιστεύονται ο ένας τον άλλο) ή ως μονομερή εμπιστοσύνη (μόνο ένας από αυτούς εμπιστεύεται τον άλλο).

Διαδρομή Επίθεσης

  1. Καταγράψτε τις σχέσεις εμπιστοσύνης
  2. Ελέγξτε αν οποιοδήποτε ασφαλιστικό κύριο (χρήστης/ομάδα/υπολογιστής) έχει πρόσβαση σε πόρους του άλλου τομέα, ίσως μέσω καταχωρήσεων ACE ή μέσω συμμετοχής σε ομάδες του άλλου τομέα. Αναζητήστε σχέσεις μεταξύ τομέων (η εμπιστοσύνη δημιουργήθηκε γι' αυτό πιθανώς).
  3. Το kerberoast σε αυτή την περίπτωση θα μπορούσε να είναι μια άλλη επιλογή.
  4. Συμβιβάστε τους λογαριασμούς που μπορούν να μεταπηδήσουν μέσω τομέων.

Οι επιτιθέμενοι θα μπορούσαν να έχουν πρόσβαση σε πόρους σε έναν άλλο τομέα μέσω τριών κύριων μηχανισμών:

  • Τοπική Συμμετοχή Ομάδας: Οι κύριοι μπορεί να προστεθούν σε τοπικές ομάδες σε μηχανές, όπως η ομάδα “Administrators” σε έναν διακομιστή, παρέχοντας τους σημαντικό έλεγχο πάνω σε αυτή τη μηχανή.
  • Συμμετοχή Ομάδας Ξένου Τομέα: Οι κύριοι μπορούν επίσης να είναι μέλη ομάδων εντός του ξένου τομέα. Ωστόσο, η αποτελεσματικότητα αυτής της μεθόδου εξαρτάται από τη φύση της εμπιστοσύνης και την έκταση της ομάδας.
  • Λίστες Ελέγχου Πρόσβασης (ACLs): Οι κύριοι μπορεί να καθορίζονται σε μια ACL, ιδιαίτερα ως οντότητες σε ACEs εντός μιας DACL, παρέχοντας τους πρόσβαση σε συγκεκριμένους πόρους. Για όσους θέλουν να εμβαθύνουν στους μηχανισμούς των ACLs, DACLs και ACEs, το λευκό έγγραφο με τίτλο “An ACE Up The Sleeve” είναι ένας ανεκτίμητος πόρος.

Βρείτε εξωτερικούς χρήστες/ομάδες με δικαιώματα

Μπορείτε να ελέγξετε CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com για να βρείτε ξένους ασφαλιστικούς κύριους στον τομέα. Αυτοί θα είναι χρήστες/ομάδες από έναν εξωτερικό τομέα/δάσος.

Μπορείτε να το ελέγξετε αυτό σε Bloodhound ή χρησιμοποιώντας powerview:

powershell
# Get users that are i groups outside of the current domain Get-DomainForeignUser # Get groups inside a domain with users our Get-DomainForeignGroupMember

Ανάβαση προνομίων δάσους από Παιδί σε Γονέα

bash
# Fro powerview Get-DomainTrust SourceName : sub.domain.local --> current domain TargetName : domain.local --> foreign domain TrustType : WINDOWS_ACTIVE_DIRECTORY TrustAttributes : WITHIN_FOREST --> WITHIN_FOREST: Both in the same forest TrustDirection : Bidirectional --> Trust direction (2ways in this case) WhenCreated : 2/19/2021 1:28:00 PM WhenChanged : 2/19/2021 1:28:00 PM

Άλλοι τρόποι για να καταμετρήσετε τις εμπιστοσύνες τομέα:

bash
# Get DCs nltest /dsgetdc:<DOMAIN> # Get all domain trusts nltest /domain_trusts /all_trusts /v # Get all trust of a domain nltest /dclist:sub.domain.local nltest /server:dc.sub.domain.local /domain_trusts /all_trusts

warning

Υπάρχουν 2 αξιόπιστα κλειδιά, ένα για Child --> Parent και ένα άλλο για Parent --> Child.
Μπορείτε να δείτε αυτό που χρησιμοποιείται από το τρέχον domain με:

Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"'

SID-History Injection

Αναβαθμίστε ως Enterprise admin στο child/parent domain εκμεταλλευόμενοι την εμπιστοσύνη με SID-History injection:

SID-History Injection

Exploit writeable Configuration NC

Η κατανόηση του πώς μπορεί να εκμεταλλευτεί η Configuration Naming Context (NC) είναι κρίσιμη. Η Configuration NC λειτουργεί ως κεντρική αποθήκη για δεδομένα διαμόρφωσης σε ένα δάσος σε περιβάλλοντα Active Directory (AD). Αυτά τα δεδομένα αναπαράγονται σε κάθε Domain Controller (DC) εντός του δάσους, με τα writable DCs να διατηρούν μια εγ writable αντίγραφο της Configuration NC. Για να εκμεταλλευτεί αυτό, πρέπει να έχετε SYSTEM privileges σε ένα DC, κατά προτίμηση σε ένα child DC.

Link GPO to root DC site

Το Sites container της Configuration NC περιλαμβάνει πληροφορίες σχετικά με όλους τους υπολογιστές που είναι συνδεδεμένοι στο domain εντός του AD δάσους. Λειτουργώντας με SYSTEM privileges σε οποιοδήποτε DC, οι επιτιθέμενοι μπορούν να συνδέσουν GPOs στους root DC sites. Αυτή η ενέργεια ενδέχεται να θέσει σε κίνδυνο το root domain μέσω της χειραγώγησης πολιτικών που εφαρμόζονται σε αυτούς τους ιστότοπους.

Για λεπτομερείς πληροφορίες, μπορείτε να εξερευνήσετε έρευνες σχετικά με Bypassing SID Filtering.

Compromise any gMSA in the forest

Ένας επιθετικός παράγοντας περιλαμβάνει την στόχευση προνομιακών gMSAs εντός του domain. Το KDS Root key, που είναι απαραίτητο για τον υπολογισμό των κωδικών πρόσβασης των gMSAs, αποθηκεύεται στην Configuration NC. Με SYSTEM privileges σε οποιοδήποτε DC, είναι δυνατή η πρόσβαση στο KDS Root key και ο υπολογισμός των κωδικών πρόσβασης για οποιοδήποτε gMSA σε όλο το δάσος.

Λεπτομερής ανάλυση μπορεί να βρεθεί στη συζήτηση σχετικά με Golden gMSA Trust Attacks.

Schema change attack

Αυτή η μέθοδος απαιτεί υπομονή, περιμένοντας τη δημιουργία νέων προνομιακών AD αντικειμένων. Με SYSTEM privileges, ένας επιτιθέμενος μπορεί να τροποποιήσει το AD Schema για να παραχωρήσει σε οποιονδήποτε χρήστη πλήρη έλεγχο σε όλες τις κλάσεις. Αυτό θα μπορούσε να οδηγήσει σε μη εξουσιοδοτημένη πρόσβαση και έλεγχο σε νεοδημιουργημένα AD αντικείμενα.

Περισσότερη ανάγνωση είναι διαθέσιμη σχετικά με Schema Change Trust Attacks.

From DA to EA with ADCS ESC5

Η ευπάθεια ADCS ESC5 στοχεύει τον έλεγχο των αντικειμένων Public Key Infrastructure (PKI) για τη δημιουργία ενός προτύπου πιστοποιητικού που επιτρέπει την αυθεντικοποίηση ως οποιοσδήποτε χρήστης εντός του δάσους. Καθώς τα αντικείμενα PKI βρίσκονται στην Configuration NC, η εκμετάλλευση ενός writable child DC επιτρέπει την εκτέλεση επιθέσεων ESC5.

Περισσότερες λεπτομέρειες σχετικά με αυτό μπορούν να διαβαστούν στο From DA to EA with ESC5. Σε σενάρια που λείπει το ADCS, ο επιτιθέμενος έχει τη δυνατότητα να ρυθμίσει τα απαραίτητα στοιχεία, όπως συζητείται στο Escalating from Child Domain Admins to Enterprise Admins.

External Forest Domain - One-Way (Inbound) or bidirectional

bash
Get-DomainTrust SourceName : a.domain.local --> Current domain TargetName : domain.external --> Destination domain TrustType : WINDOWS-ACTIVE_DIRECTORY TrustAttributes : TrustDirection : Inbound --> Inboud trust WhenCreated : 2/19/2021 10:50:56 PM WhenChanged : 2/19/2021 10:50:56 PM

Σε αυτό το σενάριο το domain σας είναι αξιόπιστο από ένα εξωτερικό, δίνοντάς σας ακαθόριστες άδειες πάνω σε αυτό. Θα χρειαστεί να βρείτε ποιοι φορείς του domain σας έχουν ποια πρόσβαση στο εξωτερικό domain και στη συνέχεια να προσπαθήσετε να το εκμεταλλευτείτε:

External Forest Domain - OneWay (Inbound) or bidirectional

Εξωτερικό Δάσος Domain - Μονοκατεύθυνση (Εξαγωγή)

bash
Get-DomainTrust -Domain current.local SourceName : current.local --> Current domain TargetName : external.local --> Destination domain TrustType : WINDOWS_ACTIVE_DIRECTORY TrustAttributes : FOREST_TRANSITIVE TrustDirection : Outbound --> Outbound trust WhenCreated : 2/19/2021 10:15:24 PM WhenChanged : 2/19/2021 10:15:24 PM

Σε αυτό το σενάριο το domain σας εμπιστεύεται κάποιες privileges σε έναν κύριο από διαφορετικά domains.

Ωστόσο, όταν ένα domain είναι εμπιστευμένο από το εμπιστευόμενο domain, το εμπιστευμένο domain δημιουργεί έναν χρήστη με ένα προβλέψιμο όνομα που χρησιμοποιεί ως κωδικό τον εμπιστευμένο κωδικό. Αυτό σημαίνει ότι είναι δυνατό να προσεγγίσετε έναν χρήστη από το εμπιστευόμενο domain για να εισέλθετε στο εμπιστευμένο για να το καταγράψετε και να προσπαθήσετε να κλιμακώσετε περισσότερες privileges:

External Forest Domain - One-Way (Outbound)

Ένας άλλος τρόπος για να συμβιβαστεί το εμπιστευμένο domain είναι να βρείτε έναν SQL trusted link που έχει δημιουργηθεί στην αντίθετη κατεύθυνση της εμπιστοσύνης του domain (το οποίο δεν είναι πολύ συνηθισμένο).

Ένας άλλος τρόπος για να συμβιβαστεί το εμπιστευμένο domain είναι να περιμένετε σε μια μηχανή όπου ένας χρήστης από το εμπιστευμένο domain μπορεί να έχει πρόσβαση για να συνδεθεί μέσω RDP. Στη συνέχεια, ο επιτιθέμενος θα μπορούσε να εισάγει κώδικα στη διαδικασία συνεδρίας RDP και να προσεγγίσει το αρχικό domain του θύματος από εκεί.
Επιπλέον, αν το θύμα έχει τοποθετήσει τον σκληρό του δίσκο, από τη διαδικασία της συνεδρίας RDP ο επιτιθέμενος θα μπορούσε να αποθηκεύσει backdoors στον φάκελο εκκίνησης του σκληρού δίσκου. Αυτή η τεχνική ονομάζεται RDPInception.

RDP Sessions Abuse

Mitigation of Domain Trust Abuse

SID Filtering:

  • Ο κίνδυνος επιθέσεων που εκμεταλλεύονται το SID history attribute σε διασυνδέσεις δασών μειώνεται με το SID Filtering, το οποίο είναι ενεργοποιημένο από προεπιλογή σε όλες τις διασυνδέσεις μεταξύ δασών. Αυτό στηρίζεται στην υπόθεση ότι οι διασυνδέσεις εντός του δάσους είναι ασφαλείς, θεωρώντας το δάσος, αντί για το domain, ως το όριο ασφαλείας σύμφωνα με τη θέση της Microsoft.
  • Ωστόσο, υπάρχει μια παγίδα: η φιλτράρισμα SID μπορεί να διαταράξει τις εφαρμογές και την πρόσβαση των χρηστών, οδηγώντας σε περιστασιακή απενεργοποίησή του.

Selective Authentication:

  • Για τις διασυνδέσεις μεταξύ δασών, η χρήση Selective Authentication διασφαλίζει ότι οι χρήστες από τα δύο δάση δεν αυθεντικοποιούνται αυτόματα. Αντίθετα, απαιτούνται ρητές άδειες για τους χρήστες να έχουν πρόσβαση σε domains και servers εντός του εμπιστευόμενου domain ή δάσους.
  • Είναι σημαντικό να σημειωθεί ότι αυτά τα μέτρα δεν προστατεύουν από την εκμετάλλευση του writable Configuration Naming Context (NC) ή επιθέσεις στον λογαριασμό εμπιστοσύνης.

Περισσότερες πληροφορίες σχετικά με τις εμπιστοσύνες domain στο ired.team.

AD -> Azure & Azure -> AD

Az AD Connect - Hybrid Identity - HackTricks Cloud

Ορισμένες Γενικές Άμυνες

Μάθετε περισσότερα σχετικά με το πώς να προστατεύσετε τα credentials εδώ.

Αμυντικά Μέτρα για την Προστασία των Credentials

  • Περιορισμοί Domain Admins: Συνιστάται οι Domain Admins να επιτρέπεται να συνδέονται μόνο σε Domain Controllers, αποφεύγοντας τη χρήση τους σε άλλους υπολογιστές.
  • Privileges Λογαριασμού Υπηρεσίας: Οι υπηρεσίες δεν θα πρέπει να εκτελούνται με privileges Domain Admin (DA) για να διατηρηθεί η ασφάλεια.
  • Περιορισμός Χρόνου Privilege: Για εργασίες που απαιτούν DA privileges, η διάρκεια τους θα πρέπει να περιορίζεται. Αυτό μπορεί να επιτευχθεί με: Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)

Εφαρμογή Τεχνικών Απάτης

  • Η εφαρμογή απάτης περιλαμβάνει τη δημιουργία παγίδων, όπως χρήστες ή υπολογιστές δόλωμα, με χαρακτηριστικά όπως κωδικοί που δεν λήγουν ή είναι επισημασμένοι ως Trusted for Delegation. Μια λεπτομερής προσέγγιση περιλαμβάνει τη δημιουργία χρηστών με συγκεκριμένα δικαιώματα ή την προσθήκη τους σε ομάδες υψηλών privileges.
  • Ένα πρακτικό παράδειγμα περιλαμβάνει τη χρήση εργαλείων όπως: Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose
  • Περισσότερα σχετικά με την ανάπτυξη τεχνικών απάτης μπορείτε να βρείτε στο Deploy-Deception στο GitHub.

Αναγνώριση Απάτης

  • Για Αντικείμενα Χρηστών: Υποψίες περιλαμβάνουν ασυνήθιστα ObjectSID, σπάνιες συνδέσεις, ημερομηνίες δημιουργίας και χαμηλούς αριθμούς κακών κωδικών.
  • Γενικοί Δείκτες: Η σύγκριση χαρακτηριστικών πιθανών αντικειμένων δόλωμα με αυτά των γνήσιων μπορεί να αποκαλύψει ασυνέπειες. Εργαλεία όπως το HoneypotBuster μπορούν να βοηθήσουν στην αναγνώριση τέτοιων απατών.

Παράκαμψη Συστήματος Ανίχνευσης

  • Παράκαμψη Ανίχνευσης Microsoft ATA:
  • Αναγνώριση Χρηστών: Αποφυγή αναγνώρισης συνεδριών σε Domain Controllers για την αποφυγή ανίχνευσης από το ATA.
  • Εκμετάλλευση Εισιτηρίων: Η χρήση aes κλειδιών για τη δημιουργία εισιτηρίων βοηθά στην αποφυγή ανίχνευσης, αποφεύγοντας την υποβάθμιση σε NTLM.
  • DCSync Επιθέσεις: Συνιστάται η εκτέλεση από έναν μη Domain Controller για να αποφευχθεί η ανίχνευση από το ATA, καθώς η άμεση εκτέλεση από έναν Domain Controller θα ενεργοποιήσει ειδοποιήσεις.

Αναφορές

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks