Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα τηλεγραφήματος ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Υπάρχουν μερικά δημόσια APIs του Azure που απλώς γνωρίζοντας το domain του ενοικιαστή μια επιτιθέμενη μπορεί να ερευνήσει για περισσότερες πληροφορίες σχετικά με αυτόν.
Μπορείτε να ερευνήσετε απευθείας το API ή να χρησιμοποιήσετε τη βιβλιοθήκη PowerShell AADInternals:
API | Πληροφορίες | Λειτουργία AADInternals |
---|---|---|
login.microsoftonline.com/<domain>/.well-known/openid-configuration | Πληροφορίες σύνδεσης, συμπεριλαμβανομένου του αναγνωριστικού ενοικιαστή | Get-AADIntTenantID -Domain <domain> |
autodiscover-s.outlook.com/autodiscover/autodiscover.svc | Όλα τα domains του ενοικιαστή | Get-AADIntTenantDomains -Domain <domain> |
login.microsoftonline.com/GetUserRealm.srf?login=<UserName> | Πληροφορίες σύνδεσης του ενοικιαστή, συμπεριλαμβανομένου του ονόματος και του domain του ενοικιαστή τύπου πιστοποίησης. |
Get-AADIntLoginInformation -UserName <UserName> |
login.microsoftonline.com/common/GetCredentialType | Πληροφορίες σύνδεσης, συμπεριλαμβανομένων των πληροφοριών Desktop SSO | Get-AADIntLoginInformation -UserName <UserName> |
Μπορείτε να αναζητήσετε όλες τις πληροφορίες ενός ενοικιαστή Azure με μόνο έναν εντολή της βιβλιοθήκης AADInternals:
Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table
Παράδειγμα εξόδου πληροφοριών του Azure tenant:
Tenant brand: Company Ltd
Tenant name: company
Tenant id: 1937e3ab-38de-a735-a830-3075ea7e5b39
DesktopSSO enabled: True
Name DNS MX SPF Type STS
---- --- -- --- ---- ---
company.com True True True Federated sts.company.com
company.mail.onmicrosoft.com True True True Managed
company.onmicrosoft.com True True True Managed
int.company.com False False False Managed
Είναι δυνατόν να παρατηρηθούν λεπτομέρειες σχετικά με το όνομα του ενοικιαστή, το αναγνωριστικό και το όνομα "brand". Επιπλέον, εμφανίζεται η κατάσταση του Desktop Single Sign-On (SSO), γνωστό και ως Seamless SSO. Όταν είναι ενεργοποιημένο, αυτό το χαρακτηριστικό διευκολύνει τον προσδιορισμό της παρουσίας (απαρίθμηση) ενός συγκεκριμένου χρήστη μέσα στον οργανισμό-στόχο.
Επιπλέον, η έξοδος παρουσιάζει τα ονόματα όλων των επαληθευμένων τομέων που σχετίζονται με τον ενοικιαστή-στόχο, μαζί με τους αντίστοιχους τύπους ταυτότητας τους. Στην περίπτωση των συνδεδεμένων τομέων, αποκαλύπτεται επίσης το Fully Qualified Domain Name (FQDN) του παρόχου ταυτότητας που χρησιμοποιείται, συνήθως ένας διακομιστής ADFS. Η στήλη "MX" καθορίζει εάν τα emails δρομολογούνται προς το Exchange Online, ενώ η στήλη "SPF" υποδεικνύει την καταχώριση του Exchange Online ως αποστολέα email. Σημειώνεται ότι η τρέχουσα λειτουργία αναγνώρισης δεν αναλύει τις δηλώσεις "include" εντός των εγγραφών SPF, πράγμα που μπορεί να οδηγήσει σε ψευδείς αρνητικές απαντήσεις.
Είναι δυνατόν να ελεγχθεί εάν υπάρχει ένα όνομα χρήστη μέσα σε έναν ενοικιαστή. Αυτό περιλαμβάνει επίσης τους χρήστες επισκέπτες, των οποίων το όνομα χρήστη έχει τη μορφή:
<email>#EXT#@<tenant name>.onmicrosoft.com
Το email είναι η διεύθυνση email του χρήστη όπου το "@" αντικαθίσταται με το υποκάτω παύλα "_".
Με το AADInternals, μπορείτε εύκολα να ελέγξετε εάν ο χρήστης υπάρχει ή όχι:
# Check does the user exist
Invoke-AADIntUserEnumerationAsOutsider -UserName "user@company.com"
Αυτό το σενάριο επικεντρώνεται στην ανίχνευση και αρχική είσοδο σε έναν Azure περιβάλλοντα χωρίς πιστοποίηση. Αυτό μπορεί να περιλαμβάνει την εξαγωγή πληροφοριών για υπηρεσίες, χρήστες, και πολιτικές, καθώς και την εκτέλεση επιθέσεων όπως phishing.
UserName Exists
-------- ------
user@company.com True
Μπορείτε επίσης να χρησιμοποιήσετε ένα αρχείο κειμένου που περιέχει μια διεύθυνση email ανά γραμμή:
user@company.com
user2@company.com
admin@company.com
admin2@company.com
external.user_gmail.com#EXT#@company.onmicrosoft.com
external.user_outlook.com#EXT#@company.onmicrosoft.com
# Invoke user enumeration
Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider -Method Normal
Υπάρχουν τρεις διαφορετικές μεθόδοι απαρίθμησης για να επιλέξετε:
Μέθοδος | Περιγραφή |
---|---|
Κανονική | Αναφέρεται στο API GetCredentialType που αναφέρθηκε παραπάνω. Η προεπιλεγμένη μέθοδος. |
Σύνδεση | Αυτή η μέθοδος προσπαθεί να συνδεθεί ως ο χρήστης. |
Αυτόματη Σύνδεση | Αυτή η μέθοδος προσπαθεί να συνδεθεί ως ο χρήστης μέσω της αυτόματης σύνδεσης. |
Αφού ανακαλύψετε τα έγκυρα ονόματα χρηστών, μπορείτε να λάβετε πληροφορίες σχετικά με έναν χρήστη με:
Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com
Το script o365creeper σας επιτρέπει επίσης να ανακαλύψετε αν ένα email είναι έγκυρο.
# Put in emails.txt emails such as:
# - root@corp.onmicrosoft.com
python.exe .\o365creeper\o365creeper.py -f .\emails.txt -o validemails.txt
Απαρίθμηση Χρηστών μέσω του Microsoft Teams
Μια άλλη καλή πηγή πληροφοριών είναι το Microsoft Teams.
Το API του Microsoft Teams επιτρέπει την αναζήτηση χρηστών. Συγκεκριμένα, τα σημεία πρόσβασης "externalsearchv3" και "searchUsers" μπορούν να χρησιμοποιηθούν για να ζητηθούν γενικές πληροφορίες σχετικά με λογαριασμούς χρηστών που έχουν εγγραφεί στο Teams.
Ανάλογα με την απάντηση του API, είναι δυνατόν να διακριθεί μεταξύ μη υπαρκτών χρηστών και υπαρκτών χρηστών που έχουν μια έγκυρη συνδρομή στο Teams.
Το σενάριο TeamsEnum μπορεί να χρησιμοποιηθεί για την επικύρωση ενός συγκεκριμένου συνόλου ονομάτων χρηστών έναντι του API του Teams.
python3 TeamsEnum.py -a password -u <username> -f inputlist.txt -o teamsenum-output.json
Σε αυτό το σενάριο, θα εξετάσουμε πώς μπορούμε να αξιοποιήσουμε την ανεξέλεγκτη απαρίθμηση χρηστών για να αποκτήσουμε πρόσβαση σε ένα λογαριασμό χρήστη στο Azure. Αυτή η ευπάθεια μπορεί να επιτρέψει σε έναν επιτιθέμενο να ανακαλύψει έγκυρους λογαριασμούς χρηστών χωρίς την ανάγκη ελέγχου ταυτότητας.
-
Ανεξέλεγκτη Απαρίθμηση Χρηστών: Χρησιμοποιώντας εργαλεία όπως το
enum4linux
, εκτελέστε ανεξέλεγκτη απαρίθμηση χρηστών για να εντοπίσετε έγκυρους λογαριασμοών χρηστών στο Azure. -
Αρχική Είσοδο με Ανεπαρκή Πιστοποίηση: Χρησιμοποιώντας τις πληροφορίες που συγκεντρώσατε από την απαρίθμηση χρηστών, προσπαθήστε να συνδεθείτε σε έναν έγκυρο λογαριασμό χρήστη χωρίς την απαραίτητη πιστοποίηση.
Ακολουθώντας αυτά τα βήματα, μπορείτε να αξιοποιήσετε την ανεξέλεγκτη απαρίθμηση χρηστών για να προσπαθήσετε να αποκτήσετε πρόσβαση σε ένα λογαριασμό χρήστη στο Azure.
[-] user1@domain - Target user not found. Either the user does not exist, is not Teams-enrolled or is configured to not appear in search results (personal accounts only)
[+] user2@domain - User2 | Company (Away, Mobile)
[+] user3@domain - User3 | Company (Available, Desktop)
Επιπλέον, είναι δυνατόν να απαριθμηθούν πληροφορίες διαθεσιμότητας σχετικά με υπάρχοντες χρήστες όπως τα παρακάτω:
- Διαθέσιμος
- Μακριά
- Μην Ενοχλείτε
- Απασχολημένος
- Εκτός σύνδεσης
Εάν έχει ρυθμιστεί ένα μήνυμα εκτός γραφείου, είναι επίσης δυνατόν να ανακτηθεί το μήνυμα χρησιμοποιώντας το TeamsEnum. Εάν έχει καθοριστεί ένα αρχείο εξόδου, τα μηνύματα εκτός γραφείου αποθηκεύονται αυτόματα στο JSON αρχείο:
jq . teamsenum-output.json
Σε αυτό το σενάριο, θα εξετάσουμε πώς μπορούμε να εκμεταλλευτούμε την ανεξέλεγκτη απαρίθμηση χρηστών για να αποκτήσουμε πρόσβαση σε ένα λογαριασμό χρήστη στο Azure. Αυτή η ευπάθεια μπορεί να οδηγήσει σε αρχική είσοδο σε ένα λογαριασμό χρήστη χωρίς την ανάγκη για διαπίστευση.
Αρχικά, θα χρησιμοποιήσουμε ένα εργαλείο ανεξέλεγκτης απαρίθμησης χρηστών για να εντοπίσουμε έγκυρους λογαριασμούς χρηστών στο Azure.
Αφού εντοπίσουμε έναν έγκυρο λογαριασμό χρήστη, θα χρησιμοποιήσουμε τις πληροφορίες που συλλέξαμε από το βήμα 1 για να προσπελάσουμε το λογαριασμό αυτόν χωρίς την ανάγκη για διαπίστευση.
{
"email": "user2@domain",
"exists": true,
"info": [
{
"tenantId": "[REDACTED]",
"isShortProfile": false,
"accountEnabled": true,
"featureSettings": {
"coExistenceMode": "TeamsOnly"
},
"userPrincipalName": "user2@domain",
"givenName": "user2@domain",
"surname": "",
"email": "user2@domain",
"tenantName": "Company",
"displayName": "User2",
"type": "Federated",
"mri": "8:orgid:[REDACTED]",
"objectId": "[REDACTED]"
}
],
"presence": [
{
"mri": "8:orgid:[REDACTED]",
"presence": {
"sourceNetwork": "Federated",
"calendarData": {
"outOfOfficeNote": {
"message": "Dear sender. I am out of the office until March 23rd with limited access to my email. I will respond after my return.Kind regards, User2",
"publishTime": "2023-03-15T21:44:42.0649385Z",
"expiry": "2023-04-05T14:00:00Z"
},
"isOutOfOffice": true
},
"capabilities": [
"Audio",
"Video"
],
"availability": "Away",
"activity": "Away",
"deviceType": "Mobile"
},
"etagMatch": false,
"etag": "[REDACTED]",
"status": 20000
}
]
}
Αφού γνωρίζουμε τα domains που χρησιμοποιεί ο Azure tenant είναι καιρός να προσπαθήσουμε να βρούμε τις εκτεθειμένες υπηρεσίες Azure.
Μπορείτε να χρησιμοποιήσετε μια μέθοδο από το MicroBust για αυτόν τον σκοπό. Αυτή η λειτουργία θα αναζητήσει το βασικό domain name (και μερικές παραλλαγές) σε διάφορα domains υπηρεσιών Azure:
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
Μπορείτε να ανακαλύψετε ανοιχτές αποθήκευσης με ένα εργαλείο όπως το InvokeEnumerateAzureBlobs.ps1 το οποίο θα χρησιμοποιήσει το αρχείο Microburst/Misc/permitations.txt
για να δημιουργήσει περιπτώσεις (πολύ απλές) προκειμένου να βρεί ανοιχτούς λογαριασμούς αποθήκευσης.
Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp
[...]
https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
[...]
# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
# Check: <Name>ssh_info.json</Name>
# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json
Ένα shared access signature (SAS) URL είναι ένα URL που παρέχει πρόσβαση σε συγκεκριμένο τμήμα ενός λογαριασμού αποθήκευσης (μπορεί να είναι ένας πλήρης container, ένα αρχείο...) με κάποιες συγκεκριμένες άδειες (ανάγνωση, εγγραφή...) πάνω στους πόρους. Αν βρείτε ένα διαρρεύσει, θα μπορούσατε να έχετε πρόσβαση σε ευαίσθητες πληροφορίες, μοιάζουν με αυτό (αυτό είναι για πρόσβαση σε ένα container, αν απλά χορηγούσε πρόσβαση σε ένα αρχείο, το μονοπάτι του URL θα περιείχε επίσης αυτό το αρχείο):
https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D
Χρησιμοποιήστε το Storage Explorer για πρόσβαση στα δεδομένα
- Κοινή Αλιεία (διαπιστεύσεις ή OAuth App -Επίθεση Παράνομης Χορήγησης Συγκατάθεσης-)
- [Καταστροφή Κωδικού Πρόσβασης / Επίθεση Βίας Κωδικού]
{% content-ref url="az-password-spraying.md" %} az-password-spraying.md {% endcontent-ref %}
- https://aadinternals.com/post/just-looking/
- https://www.securesystems.de/blog/a-fresh-look-at-user-enumeration-in-microsoft-teams/
Μάθετε την κακόβουλη εισβολή στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε Την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στη ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα κόλπα σας στο χάκινγκ υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.