# Εξωτερικό Δάσος Τομέα - Μονοκατεύθυνση (Εξόδου) {{#include ../../banners/hacktricks-training.md}} Σε αυτό το σενάριο **ο τομέας σας** **εμπιστεύεται** κάποιες **προνομίες** σε κύριο από **διαφορετικούς τομείς**. ## Αριθμητική ### Εμπιστοσύνη Εξόδου ```bash # Notice Outbound trust Get-DomainTrust SourceName : root.local TargetName : ext.local TrustType : WINDOWS_ACTIVE_DIRECTORY TrustAttributes : FOREST_TRANSITIVE TrustDirection : Outbound WhenCreated : 2/19/2021 10:15:24 PM WhenChanged : 2/19/2021 10:15:24 PM # Lets find the current domain group giving permissions to the external domain Get-DomainForeignGroupMember GroupDomain : root.local GroupName : External Users GroupDistinguishedName : CN=External Users,CN=Users,DC=DOMAIN,DC=LOCAL MemberDomain : root.io MemberName : S-1-5-21-1028541967-2937615241-1935644758-1115 MemberDistinguishedName : CN=S-1-5-21-1028541967-2937615241-1935644758-1115,CN=ForeignSecurityPrincipals,DC=DOMAIN,DC=LOCAL ## Note how the members aren't from the current domain (ConvertFrom-SID won't work) ``` ## Επίθεση Λογαριασμού Εμπιστοσύνης Μια ευπάθεια ασφαλείας υπάρχει όταν μια σχέση εμπιστοσύνης καθορίζεται μεταξύ δύο τομέων, που αναγνωρίζονται εδώ ως τομέας **A** και τομέας **B**, όπου ο τομέας **B** επεκτείνει την εμπιστοσύνη του στον τομέα **A**. Σε αυτή τη ρύθμιση, δημιουργείται ένας ειδικός λογαριασμός στον τομέα **A** για τον τομέα **B**, ο οποίος παίζει κρίσιμο ρόλο στη διαδικασία πιστοποίησης μεταξύ των δύο τομέων. Αυτός ο λογαριασμός, που σχετίζεται με τον τομέα **B**, χρησιμοποιείται για την κρυπτογράφηση εισιτηρίων για την πρόσβαση σε υπηρεσίες μεταξύ των τομέων. Η κρίσιμη πτυχή που πρέπει να κατανοηθεί εδώ είναι ότι ο κωδικός πρόσβασης και το hash αυτού του ειδικού λογαριασμού μπορούν να εξαχθούν από έναν Domain Controller στον τομέα **A** χρησιμοποιώντας ένα εργαλείο γραμμής εντολών. Η εντολή για την εκτέλεση αυτής της ενέργειας είναι: ```bash Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local ``` Αυτή η εξαγωγή είναι δυνατή επειδή ο λογαριασμός, που αναγνωρίζεται με ένα **$** μετά το όνομά του, είναι ενεργός και ανήκει στην ομάδα "Domain Users" του τομέα **A**, κληρονομώντας έτσι τις άδειες που σχετίζονται με αυτήν την ομάδα. Αυτό επιτρέπει σε άτομα να αυθεντικοποιούνται στον τομέα **A** χρησιμοποιώντας τα διαπιστευτήρια αυτού του λογαριασμού. **Προειδοποίηση:** Είναι εφικτό να εκμεταλλευτεί κανείς αυτή την κατάσταση για να αποκτήσει πρόσβαση στον τομέα **A** ως χρήστης, αν και με περιορισμένες άδειες. Ωστόσο, αυτή η πρόσβαση είναι επαρκής για να εκτελέσει καταμέτρηση στον τομέα **A**. Σε ένα σενάριο όπου το `ext.local` είναι ο τομέας εμπιστοσύνης και το `root.local` είναι ο εμπιστευμένος τομέας, θα δημιουργηθεί ένας λογαριασμός χρήστη με το όνομα `EXT$` μέσα στο `root.local`. Μέσω συγκεκριμένων εργαλείων, είναι δυνατόν να εξάγουμε τα κλειδιά εμπιστοσύνης Kerberos, αποκαλύπτοντας τα διαπιστευτήρια του `EXT$` στο `root.local`. Η εντολή για να το επιτύχουμε είναι: ```bash lsadump::trust /patch ``` Ακολουθώντας αυτό, θα μπορούσε κανείς να χρησιμοποιήσει το εξαγόμενο κλειδί RC4 για να αυθεντικοποιηθεί ως `root.local\EXT$` εντός του `root.local` χρησιμοποιώντας μια άλλη εντολή εργαλείου: ```bash .\Rubeus.exe asktgt /user:EXT$ /domain:root.local /rc4: /dc:dc.root.local /ptt ``` Αυτό το βήμα αυθεντικοποίησης ανοίγει τη δυνατότητα να καταμετρήσουμε και ακόμη και να εκμεταλλευτούμε υπηρεσίες εντός του `root.local`, όπως η εκτέλεση μιας επίθεσης Kerberoast για την εξαγωγή διαπιστευτηρίων λογαριασμού υπηρεσίας χρησιμοποιώντας: ```bash .\Rubeus.exe kerberoast /user:svc_sql /domain:root.local /dc:dc.root.local ``` ### Συλλογή καθαρού κωδικού εμπιστοσύνης Στην προηγούμενη ροή χρησιμοποιήθηκε το hash εμπιστοσύνης αντί για τον **καθαρό κωδικό πρόσβασης** (ο οποίος επίσης **εξήχθη από το mimikatz**). Ο καθαρός κωδικός πρόσβασης μπορεί να αποκτηθεί μετατρέποντας την έξοδο \[ CLEAR ] από το mimikatz από δεκαεξαδικό και αφαιρώντας τα null bytes ‘\x00’: ![](<../../images/image (938).png>) Μερικές φορές, κατά τη δημιουργία μιας σχέσης εμπιστοσύνης, ένας κωδικός πρέπει να πληκτρολογηθεί από τον χρήστη για την εμπιστοσύνη. Σε αυτή τη демонстрация, το κλειδί είναι ο αρχικός κωδικός εμπιστοσύνης και επομένως αναγνώσιμο από άνθρωπο. Καθώς το κλειδί κυκλώνει (30 ημέρες), ο καθαρός κωδικός δεν θα είναι αναγνώσιμος από άνθρωπο αλλά τεχνικά θα είναι ακόμα χρήσιμος. Ο καθαρός κωδικός πρόσβασης μπορεί να χρησιμοποιηθεί για κανονική αυθεντικοποίηση ως ο λογαριασμός εμπιστοσύνης, μια εναλλακτική λύση για την αίτηση ενός TGT χρησιμοποιώντας το μυστικό κλειδί Kerberos του λογαριασμού εμπιστοσύνης. Εδώ, ερωτώντας το root.local από το ext.local για μέλη των Domain Admins: ![](<../../images/image (792).png>) ## Αναφορές - [https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-7-trust-account-attack-from-trusting-to-trusted](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-7-trust-account-attack-from-trusting-to-trusted) {{#include ../../banners/hacktricks-training.md}}