diff --git a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md
index f23ba5c49..5f5e71b1c 100644
--- a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md
+++ b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md
@@ -2,99 +2,99 @@
{{#include ../../../banners/hacktricks-training.md}}
-## Basic Information
+## Βασικές Πληροφορίες
-Το Entra ID είναι η πλατφόρμα διαχείρισης ταυτοτήτων και πρόσβασης (IAM) της Microsoft που βασίζεται στο cloud, λειτουργώντας ως το θεμελιώδες σύστημα αυθεντικοποίησης και εξουσιοδότησης για υπηρεσίες όπως το Microsoft 365 και το Azure Resource Manager. Το Azure AD υλοποιεί το πλαίσιο εξουσιοδότησης OAuth 2.0 και το πρωτόκολλο αυθεντικοποίησης OpenID Connect (OIDC) για τη διαχείριση της πρόσβασης σε πόρους.
+Το Entra ID είναι η cloud-based πλατφόρμα identity and access management (IAM) της Microsoft, και λειτουργεί ως το θεμελιώδες σύστημα authentication και authorization για υπηρεσίες όπως το Microsoft 365 και το Azure Resource Manager. Το Azure AD υλοποιεί το OAuth 2.0 authorization framework και το OpenID Connect (OIDC) authentication protocol για τη διαχείριση της πρόσβασης σε πόρους.
### OAuth
-**Κύριοι Συμμετέχοντες στο OAuth 2.0:**
+**Κύριοι συμμετέχοντες στο OAuth 2.0:**
-1. **Resource Server (RS):** Προστατεύει τους πόρους που ανήκουν στον κάτοχο των πόρων.
-2. **Resource Owner (RO):** Συνήθως είναι ο τελικός χρήστης που κατέχει τους προστατευόμενους πόρους.
-3. **Client Application (CA):** Μια εφαρμογή που ζητά πρόσβαση σε πόρους εκ μέρους του κατόχου των πόρων.
-4. **Authorization Server (AS):** Εκδίδει διαπιστευτήρια πρόσβασης σε εφαρμογές πελάτες μετά την αυθεντικοποίηση και εξουσιοδότησή τους.
+1. **Resource Server (RS):** Προστατεύει πόρους που ανήκουν στον resource owner.
+2. **Resource Owner (RO):** Συνήθως ένας τελικός χρήστης που κατέχει τους προστατευμένους πόρους.
+3. **Client Application (CA):** Μία εφαρμογή που ζητά πρόσβαση σε πόρους εκ μέρους του resource owner.
+4. **Authorization Server (AS):** Εκδίδει access tokens σε client applications αφού τα αυθεντικοποιήσει και τα εξουσιοδοτήσει.
-**Scopes και Συγκατάθεση:**
+**Scopes και Consent:**
-- **Scopes:** Λεπτομερείς άδειες που ορίζονται στον διακομιστή πόρων και καθορίζουν τα επίπεδα πρόσβασης.
-- **Συγκατάθεση:** Η διαδικασία με την οποία ο κάτοχος των πόρων παραχωρεί σε μια εφαρμογή πελάτη άδεια πρόσβασης σε πόρους με συγκεκριμένα scopes.
+- **Scopes:** Λεπτομερείς άδειες ορισμένες στον resource server που καθορίζουν τα επίπεδα πρόσβασης.
+- **Consent:** Η διαδικασία με την οποία ένας resource owner χορηγεί σε ένα client application άδεια να έχει πρόσβαση σε πόρους με συγκεκριμένα scopes.
-**Ενσωμάτωση Microsoft 365:**
+**Microsoft 365 Integration:**
-- Το Microsoft 365 χρησιμοποιεί το Azure AD για IAM και αποτελείται από πολλές "πρώτης κατηγορίας" εφαρμογές OAuth.
-- Αυτές οι εφαρμογές είναι βαθιά ενσωματωμένες και συχνά έχουν αλληλεξαρτώμενες σχέσεις υπηρεσιών.
-- Για να απλοποιήσει την εμπειρία του χρήστη και να διατηρήσει τη λειτουργικότητα, η Microsoft παραχωρεί "υπονοούμενη συγκατάθεση" ή "προ-συγκατάθεση" σε αυτές τις πρώτης κατηγορίας εφαρμογές.
-- **Υπονοούμενη Συγκατάθεση:** Ορισμένες εφαρμογές **παίρνουν αυτόματα πρόσβαση σε συγκεκριμένα scopes χωρίς ρητή έγκριση από τον χρήστη ή τον διαχειριστή**.
-- Αυτά τα προ-συμφωνημένα scopes είναι συνήθως κρυμμένα τόσο από τους χρήστες όσο και από τους διαχειριστές, καθιστώντας τα λιγότερο ορατά στις τυπικές διεπαφές διαχείρισης.
+- Το Microsoft 365 χρησιμοποιεί το Azure AD για IAM και αποτελείται από πολλαπλές "first-party" OAuth εφαρμογές.
+- Αυτές οι εφαρμογές είναι βαθιά ενσωματωμένες και συχνά έχουν διαλειτουργικές σχέσεις υπηρεσιών.
+- Για να απλοποιήσει την εμπειρία χρήστη και να διατηρήσει τη λειτουργικότητα, η Microsoft παραχωρεί "implied consent" ή "pre-consent" σε αυτές τις first-party εφαρμογές.
+- **Implied Consent:** Ορισμένες εφαρμογές λαμβάνουν αυτόματα **πρόσβαση σε συγκεκριμένα scopes χωρίς ρητή έγκριση χρήστη ή διαχειριστή**.
+- Αυτά τα pre-consented scopes συνήθως είναι κρυμμένα τόσο από χρήστες όσο και από διαχειριστές, με αποτέλεσμα να είναι λιγότερο ορατά στις τυπικές διεπαφές διαχείρισης.
-**Τύποι Εφαρμογών Πελατών:**
+**Τύποι Client Application:**
1. **Confidential Clients:**
-- Διαθέτουν τα δικά τους διαπιστευτήρια (π.χ. κωδικούς πρόσβασης ή πιστοποιητικά).
-- Μπορούν να **αυθεντικοποιούνται με ασφάλεια** στον διακομιστή εξουσιοδότησης.
+- Διαθέτουν δικά τους credentials (π.χ. passwords ή certificates).
+- Μπορούν να **επαληθεύσουν με ασφάλεια την ταυτότητά τους** στον authorization server.
2. **Public Clients:**
-- Δεν έχουν μοναδικά διαπιστευτήρια.
-- Δεν μπορούν να αυθεντικοποιηθούν με ασφάλεια στον διακομιστή εξουσιοδότησης.
-- **Σημασία Ασφαλείας:** Ένας επιτιθέμενος μπορεί να προσποιηθεί μια δημόσια εφαρμογή πελάτη κατά την αίτηση διαπιστευτηρίων, καθώς δεν υπάρχει μηχανισμός για τον διακομιστή εξουσιοδότησης να επαληθεύσει τη νομιμότητα της εφαρμογής.
+- Δεν έχουν μοναδικά credentials.
+- Δεν μπορούν να αυθεντικοποιηθούν με ασφάλεια στον authorization server.
+- **Security Implication:** Ένας επιτιθέμενος μπορεί να προσποιηθεί ένα public client application όταν ζητά tokens, καθώς δεν υπάρχει μηχανισμός για τον authorization server να επαληθεύσει τη νομιμότητα της εφαρμογής.
## Authentication Tokens
-Υπάρχουν **τρία είδη διαπιστευτηρίων** που χρησιμοποιούνται στο OIDC:
+Υπάρχουν **τρεις τύποι tokens** που χρησιμοποιούνται στο OIDC:
-- [**Access Tokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Ο πελάτης παρουσιάζει αυτό το διαπιστευτήριο στον διακομιστή πόρων για να **πρόσβαση σε πόρους**. Μπορεί να χρησιμοποιηθεί μόνο για μια συγκεκριμένη συνδυασμένη χρήση χρήστη, πελάτη και πόρου και **δεν μπορεί να ανακληθεί** μέχρι την λήξη του - που είναι 1 ώρα από προεπιλογή.
-- **ID Tokens**: Ο πελάτης λαμβάνει αυτό το **διαπιστευτήριο από τον διακομιστή εξουσιοδότησης**. Περιέχει βασικές πληροφορίες σχετικά με τον χρήστη. Είναι **δεσμευμένο σε μια συγκεκριμένη συνδυασμένη χρήση χρήστη και πελάτη**.
-- **Refresh Tokens**: Παρέχονται στον πελάτη με το διαπιστευτήριο πρόσβασης. Χρησιμοποιούνται για **να αποκτήσουν νέα διαπιστευτήρια πρόσβασης και ID**. Είναι δεσμευμένα σε μια συγκεκριμένη συνδυασμένη χρήση χρήστη και πελάτη και μπορούν να ανακληθούν. Η προεπιλεγμένη λήξη είναι **90 ημέρες** για ανενεργά refresh tokens και **χωρίς λήξη για ενεργά tokens** (είναι δυνατή η λήψη νέων refresh tokens από ένα refresh token).
-- Ένα refresh token θα πρέπει να συνδέεται με ένα **`aud`**, με κάποια **scopes**, και με έναν **tenant** και θα πρέπει να μπορεί να δημιουργεί διαπιστευτήρια πρόσβασης μόνο για αυτό το aud, scopes (και κανένα άλλο) και tenant. Ωστόσο, αυτό δεν ισχύει για τα **FOCI applications tokens**.
+- [**Access Tokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Το client παρουσιάζει αυτό το token στον resource server για να **έχει πρόσβαση σε πόρους**. Μπορεί να χρησιμοποιηθεί μόνο για έναν συγκεκριμένο συνδυασμό χρήστη, client και resource και **δεν μπορεί να αναιρεθεί** μέχρι τη λήξη του — που είναι 1 ώρα από προεπιλογή.
+- **ID Tokens**: Το client λαμβάνει αυτό το **token από τον authorization server**. Περιέχει βασικές πληροφορίες για τον χρήστη. Είναι **δεσμευμένο σε έναν συγκεκριμένο συνδυασμό χρήστη και client**.
+- **Refresh Tokens**: Παρέχονται στο client μαζί με το access token. Χρησιμοποιούνται για να **παραχθούν νέα access και ID tokens**. Είναι δεσμευμένα σε έναν συγκεκριμένο συνδυασμό χρήστη και client και μπορούν να ανακληθούν. Η προεπιλεγμένη λήξη είναι **90 ημέρες** για ανενεργά refresh tokens και **χωρίς λήξη για ενεργά tokens** (από ένα refresh token είναι δυνατό να αποκτηθούν νέα refresh tokens).
+- Ένα refresh token πρέπει να συνδέεται με ένα **`aud`**, με κάποια **scopes**, και με έναν **tenant** και θα πρέπει να μπορεί να δημιουργεί access tokens μόνο για εκείνο το aud, scopes (και όχι περισσότερα) και tenant. Ωστόσο, αυτό δεν ισχύει με τα **FOCI applications tokens**.
- Ένα refresh token είναι κρυπτογραφημένο και μόνο η Microsoft μπορεί να το αποκρυπτογραφήσει.
- Η λήψη ενός νέου refresh token δεν ανακαλεί το προηγούμενο refresh token.
> [!WARNING]
-> Πληροφορίες για **conditional access** είναι **αποθηκευμένες** μέσα στο **JWT**. Έτσι, αν ζητήσετε το **token από μια επιτρεπόμενη διεύθυνση IP**, αυτή η **IP** θα είναι **αποθηκευμένη** στο token και στη συνέχεια μπορείτε να χρησιμοποιήσετε αυτό το token από μια **μη επιτρεπόμενη IP για να αποκτήσετε πρόσβαση στους πόρους**.
+> Η πληροφορία για **conditional access** είναι **αποθηκευμένη** μέσα στο **JWT**. Έτσι, αν ζητήσετε το **token από μια επιτρεπόμενη IP διεύθυνση**, αυτή η **IP** θα **αποθηκευτεί** στο token και στη συνέχεια μπορείτε να χρησιμοποιήσετε αυτό το token από μια **μη επιτρεπόμενη IP για πρόσβαση στους πόρους**.
### Access Tokens "aud"
-Το πεδίο που υποδεικνύεται στο πεδίο "aud" είναι ο **διακομιστής πόρων** (η εφαρμογή) που χρησιμοποιείται για την εκτέλεση της σύνδεσης.
+Το πεδίο που υποδεικνύεται στο πεδίο "aud" είναι ο **resource server** (η εφαρμογή) που χρησιμοποιείται για την εκτέλεση του login.
-Η εντολή `az account get-access-token --resource-type [...]` υποστηρίζει τους παρακάτω τύπους και καθένας από αυτούς θα προσθέσει μια συγκεκριμένη "aud" στο αποτέλεσμα του διαπιστευτηρίου πρόσβασης:
+Η εντολή `az account get-access-token --resource-type [...]` υποστηρίζει τους παρακάτω τύπους και κάθε ένας από αυτούς θα προσθέσει ένα συγκεκριμένο "aud" στο προκύπτον access token:
> [!CAUTION]
-> Σημειώστε ότι οι παρακάτω είναι μόνο οι APIs που υποστηρίζονται από το `az account get-access-token`, αλλά υπάρχουν περισσότερες.
+> Σημειώστε ότι τα ακόλουθα είναι απλώς τα APIs που υποστηρίζονται από την `az account get-access-token` αλλά υπάρχουν και άλλα.
παραδείγματα aud
-- **aad-graph (Azure Active Directory Graph API)**: Χρησιμοποιείται για την πρόσβαση στο παλιό Azure AD Graph API (καταργημένο), το οποίο επιτρέπει στις εφαρμογές να διαβάζουν και να γράφουν δεδομένα καταλόγου στο Azure Active Directory (Azure AD).
+- **aad-graph (Azure Active Directory Graph API)**: Χρησιμοποιείται για πρόσβαση στο legacy Azure AD Graph API (deprecated), το οποίο επιτρέπει σε εφαρμογές να διαβάζουν και να γράφουν δεδομένα καταλόγου στο Azure Active Directory (Azure AD).
- `https://graph.windows.net/`
-* **arm (Azure Resource Manager)**: Χρησιμοποιείται για τη διαχείριση πόρων Azure μέσω του API Azure Resource Manager. Αυτό περιλαμβάνει λειτουργίες όπως η δημιουργία, η ενημέρωση και η διαγραφή πόρων όπως εικονικές μηχανές, λογαριασμοί αποθήκευσης και άλλα.
+* **arm (Azure Resource Manager)**: Χρησιμοποιείται για τη διαχείριση Azure πόρων μέσω του Azure Resource Manager API. Αυτό περιλαμβάνει λειτουργίες όπως δημιουργία, ενημέρωση και διαγραφή πόρων όπως virtual machines, storage accounts και άλλα.
- `https://management.core.windows.net/ or https://management.azure.com/`
-- **batch (Azure Batch Services)**: Χρησιμοποιείται για την πρόσβαση στο Azure Batch, μια υπηρεσία που επιτρέπει την αποτελεσματική εκτέλεση μεγάλων παράλληλων και υψηλής απόδοσης υπολογιστικών εφαρμογών στο cloud.
+- **batch (Azure Batch Services)**: Χρησιμοποιείται για πρόσβαση στο Azure Batch, μια υπηρεσία που επιτρέπει εφαρμογές μεγάλης κλίμακας παράλληλου και υψηλής απόδοσης υπολογισμού στο cloud.
- `https://batch.core.windows.net/`
-* **data-lake (Azure Data Lake Storage)**: Χρησιμοποιείται για την αλληλεπίδραση με το Azure Data Lake Storage Gen1, το οποίο είναι μια κλιμακούμενη υπηρεσία αποθήκευσης δεδομένων και ανάλυσης.
+* **data-lake (Azure Data Lake Storage)**: Χρησιμοποιείται για αλληλεπίδραση με το Azure Data Lake Storage Gen1, που είναι μια κλιμακούμενη υπηρεσία αποθήκευσης δεδομένων και analytics.
- `https://datalake.azure.net/`
-- **media (Azure Media Services)**: Χρησιμοποιείται για την πρόσβαση στις Υπηρεσίες Πολυμέσων Azure, οι οποίες παρέχουν υπηρεσίες επεξεργασίας και παράδοσης πολυμέσων στο cloud για περιεχόμενο βίντεο και ήχου.
+- **media (Azure Media Services)**: Χρησιμοποιείται για πρόσβαση στο Azure Media Services, που παρέχει cloud-based υπηρεσίες επεξεργασίας και παράδοσης media για περιεχόμενο βίντεο και ήχου.
- `https://rest.media.azure.net`
-* **ms-graph (Microsoft Graph API)**: Χρησιμοποιείται για την πρόσβαση στο Microsoft Graph API, το ενοποιημένο σημείο πρόσβασης για τα δεδομένα υπηρεσιών Microsoft 365. Επιτρέπει την πρόσβαση σε δεδομένα και πληροφορίες από υπηρεσίες όπως το Azure AD, το Office 365, την Επιχειρηματική Κινητικότητα και τις Υπηρεσίες Ασφαλείας.
+* **ms-graph (Microsoft Graph API)**: Χρησιμοποιείται για πρόσβαση στο Microsoft Graph API, το ενιαίο endpoint για δεδομένα των υπηρεσιών Microsoft 365. Επιτρέπει πρόσβαση σε δεδομένα και insights από υπηρεσίες όπως Azure AD, Office 365, Enterprise Mobility και Security services.
- `https://graph.microsoft.com`
-- **oss-rdbms (Azure Open Source Relational Databases)**: Χρησιμοποιείται για την πρόσβαση στις υπηρεσίες βάσεων δεδομένων Azure για ανοιχτού κώδικα μηχανές σχεσιακών βάσεων δεδομένων όπως MySQL, PostgreSQL και MariaDB.
+- **oss-rdbms (Azure Open Source Relational Databases)**: Χρησιμοποιείται για πρόσβαση στις υπηρεσίες Azure Database για open-source relational database engines όπως MySQL, PostgreSQL και MariaDB.
- `https://ossrdbms-aad.database.windows.net`
### Access Tokens Scopes "scp"
-Το scope ενός διαπιστευτηρίου πρόσβασης αποθηκεύεται μέσα στο κλειδί scp μέσα στο JWT του διαπιστευτηρίου πρόσβασης. Αυτά τα scopes καθορίζουν σε τι έχει πρόσβαση το διαπιστευτήριο πρόσβασης.
+Το scope ενός access token αποθηκεύεται μέσα στο κλειδί scp στο access token JWT. Αυτά τα scopes ορίζουν σε τι έχει πρόσβαση το access token.
-Αν ένα JWT επιτρέπεται να επικοινωνήσει με μια συγκεκριμένη API αλλά **δεν έχει το scope** για να εκτελέσει την ζητούμενη ενέργεια, **δεν θα μπορεί να εκτελέσει την ενέργεια** με αυτό το JWT.
+Αν ένα JWT έχει δικαίωμα να επικοινωνήσει με ένα συγκεκριμένο API αλλά **δεν έχει το scope** για να εκτελέσει την ζητούμενη ενέργεια, **δεν θα μπορεί να εκτελέσει την ενέργεια** με αυτό το JWT.
-### Get refresh & access token example
+### Παράδειγμα λήψης refresh & access token
```python
# Code example from https://github.com/secureworks/family-of-client-ids-research
import msal
@@ -106,7 +106,7 @@ from typing import Any, Dict, List
# LOGIN VIA CODE FLOW AUTHENTICATION
azure_cli_client = msal.PublicClientApplication(
-"04b07795-8ddb-461a-bbee-02f9e1bf7b46" # ID for Azure CLI client
+"00b41c95-dab0-4487-9791-b9d2c32c80f2" # ID for Office 365 Management
)
device_flow = azure_cli_client.initiate_device_flow(
scopes=["https://graph.microsoft.com/.default"]
@@ -144,31 +144,32 @@ scopes=["https://graph.microsoft.com/.default"],
)
pprint(new_azure_cli_bearer_tokens_for_graph_api)
```
-### Άλλα πεδία διακριτικού πρόσβασης
+### Άλλα access token πεδία
+
+- **appid**: Application ID used to generate the token
+- **appidacr**: Το Application Authentication Context Class Reference υποδεικνύει πώς έγινε η αυθεντικοποίηση του client, για public client η τιμή είναι 0, και αν χρησιμοποιήθηκε client secret η τιμή είναι 1
+- **acr**: Το Authentication Context Class Reference claim είναι "0" όταν η αυθεντικοποίηση του end-user δεν ικανοποίησε τις απαιτήσεις του ISO/IEC 29115.
+- **amr**: Το Authentication method δείχνει πώς έγινε η αυθεντικοποίηση του token. Η τιμή “pwd” υποδεικνύει ότι χρησιμοποιήθηκε password.
+- **groups**: Δείχνει τις ομάδες στις οποίες το principal είναι μέλος.
+- **iss**: Ο iss προσδιορίζει την security token service (STS) που δημιούργησε το token. e.g. https://sts.windows.net/fdd066e1-ee37-49bc-b08f-d0e152119b04/ (το uuid είναι το tenant ID)
+- **oid**: Το object ID του principal
+- **tid**: Tenant ID
+- **iat, nbf, exp**: Issued at (πότε εκδόθηκε), Not before (δεν μπορεί να χρησιμοποιηθεί πριν από αυτή τη χρονική στιγμή, συνήθως ίδια τιμή με iat), Expiration time.
-- **appid**: Το ID εφαρμογής που χρησιμοποιείται για τη δημιουργία του διακριτικού
-- **appidacr**: Η Αναφορά Κλάσης Πλαισίου Αυθεντικοποίησης Εφαρμογής υποδεικνύει πώς αυθεντικοποιήθηκε ο πελάτης, για έναν δημόσιο πελάτη η τιμή είναι 0, και αν χρησιμοποιηθεί μυστικό πελάτη η τιμή είναι 1
-- **acr**: Η αξίωση Αναφοράς Κλάσης Πλαισίου Αυθεντικοποίησης είναι "0" όταν η αυθεντικοποίηση του τελικού χρήστη δεν πληροί τις απαιτήσεις του ISO/IEC 29115.
-- **amr**: Η μέθοδος αυθεντικοποίησης υποδεικνύει πώς αυθεντικοποιήθηκε το διακριτικό. Μια τιμή “pwd” υποδεικνύει ότι χρησιμοποιήθηκε κωδικός πρόσβασης.
-- **groups**: Υποδεικνύει τις ομάδες στις οποίες είναι μέλος ο κύριος.
-- **iss**: Οι εκδόσεις προσδιορίζουν την υπηρεσία διακριτικών ασφαλείας (STS) που δημιούργησε το διακριτικό. π.χ. https://sts.windows.net/fdd066e1-ee37-49bc-b08f-d0e152119b04/ (το uuid είναι το ID του ενοικιαστή)
-- **oid**: Το ID αντικειμένου του κύριου
-- **tid**: ID ενοικιαστή
-- **iat, nbf, exp**: Εκδόθηκε (όταν εκδόθηκε), Όχι πριν (δεν μπορεί να χρησιμοποιηθεί πριν από αυτήν την ώρα, συνήθως η ίδια τιμή με το iat), Χρόνος λήξης.
## FOCI Tokens Privilege Escalation
-Προηγουμένως αναφέρθηκε ότι τα διακριτικά ανανέωσης θα πρέπει να συνδέονται με τα **πεδία** με τα οποία δημιουργήθηκαν, με την **εφαρμογή** και τον **ενοικιαστή** για τον οποίο δημιουργήθηκαν. Εάν παραβιαστεί οποιοδήποτε από αυτά τα όρια, είναι δυνατή η κλιμάκωση προνομίων καθώς θα είναι δυνατή η δημιουργία διακριτικών πρόσβασης σε άλλους πόρους και ενοικιαστές στους οποίους έχει πρόσβαση ο χρήστης και με περισσότερα πεδία από ό,τι αρχικά προοριζόταν.
+Προηγουμένως αναφέρθηκε ότι τα refresh tokens θα έπρεπε να είναι δεμένα με τα **scopes** με τα οποία δημιουργήθηκαν, με την **application** και τον **tenant** προς τον οποίο δημιουργήθηκαν. Αν οποιοδήποτε από αυτά τα όρια παραβιαστεί, είναι πιθανό να γίνει escalate privileges καθώς θα είναι δυνατό να δημιουργηθούν access tokens για άλλους resources και tenants στους οποίους ο χρήστης έχει πρόσβαση και με περισσότερα scopes από όσα ήταν αρχικά προορισμένα.
-Επιπλέον, **αυτό είναι δυνατό με όλα τα διακριτικά ανανέωσης** στην [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (λογαριασμοί Microsoft Entra, προσωπικοί λογαριασμοί Microsoft και κοινωνικοί λογαριασμοί όπως το Facebook και το Google) επειδή όπως αναφέρουν οι [**τεκμηριώσεις**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens): "Τα διακριτικά ανανέωσης συνδέονται με έναν συνδυασμό χρήστη και πελάτη, αλλά **δεν συνδέονται με πόρο ή ενοικιαστή**. Ένας πελάτης μπορεί να χρησιμοποιήσει ένα διακριτικό ανανέωσης για να αποκτήσει διακριτικά πρόσβασης **σε οποιονδήποτε συνδυασμό πόρου και ενοικιαστή** όπου έχει άδεια να το κάνει. Τα διακριτικά ανανέωσης είναι κρυπτογραφημένα και μόνο η Microsoft identity platform μπορεί να τα διαβάσει."
+Επιπλέον, **αυτό είναι δυνατό με όλα τα refresh tokens** στην [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra accounts, Microsoft personal accounts, and social accounts like Facebook and Google) επειδή όπως αναφέρουν τα [**docs**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens): "Refresh tokens are bound to a combination of user and client, but **aren't tied to a resource or tenant**. A client can use a refresh token to acquire access tokens **across any combination of resource and tenant** where it has permission to do so. Refresh tokens are encrypted and only the Microsoft identity platform can read them."
-Επιπλέον, σημειώστε ότι οι εφαρμογές FOCI είναι δημόσιες εφαρμογές, οπότε **δεν απαιτείται μυστικό** για την αυθεντικοποίηση στον διακομιστή.
+Επιπλέον, σημειώστε ότι οι FOCI applications είναι public applications, οπότε **no secret is needed** για να authenticate στον server.
-Στη συνέχεια, γνωστοί πελάτες FOCI που αναφέρθηκαν στην [**αρχική έρευνα**](https://github.com/secureworks/family-of-client-ids-research/tree/main) μπορούν να [**βρεθούν εδώ**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv).
+Οι γνωστοί FOCI clients που αναφέρθηκαν στην [**original research**](https://github.com/secureworks/family-of-client-ids-research/tree/main) μπορούν να [**found here**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv).
-### Λάβετε διαφορετικό πεδίο
+### Get different scope
-Ακολουθώντας το προηγούμενο παράδειγμα κώδικα, σε αυτόν τον κώδικα ζητείται ένα νέο διακριτικό για ένα διαφορετικό πεδίο:
+Συνεχίζοντας με το προηγούμενο παράδειγμα κώδικα, σε αυτόν τον κώδικα ζητείται ένα νέο token για διαφορετικό scope:
```python
# Code from https://github.com/secureworks/family-of-client-ids-research
azure_cli_bearer_tokens_for_outlook_api = (
@@ -185,7 +186,7 @@ scopes=[
)
pprint(azure_cli_bearer_tokens_for_outlook_api)
```
-### Λάβετε διαφορετικούς πελάτες και πεδία εφαρμογής
+### Αποκτήστε διαφορετικό client και scopes
```python
# Code from https://github.com/secureworks/family-of-client-ids-research
microsoft_office_client = msal.PublicClientApplication("d3590ed6-52b3-4102-aeff-aad2292ab01c")
@@ -203,23 +204,24 @@ pprint(microsoft_office_bearer_tokens_for_graph_api)
```
## Πού να βρείτε tokens
-Από την οπτική γωνία ενός επιτιθέμενου, είναι πολύ ενδιαφέρον να γνωρίζουμε πού είναι δυνατόν να βρείτε access και refresh tokens όταν, για παράδειγμα, ο υπολογιστής ενός θύματος έχει παραβιαστεί:
+Από την οπτική ενός επιτιθέμενου είναι πολύ ενδιαφέρον να γνωρίζει πού είναι δυνατόν να βρει κανείς access και refresh tokens όταν, για παράδειγμα, ο υπολογιστής ενός θύματος έχει παραβιαστεί:
-- Μέσα στο **`/.Azure`**
-- **`azureProfile.json`** περιέχει πληροφορίες σχετικά με τους συνδεδεμένους χρήστες από το παρελθόν
-- **`clouds.config contains`** πληροφορίες σχετικά με τις συνδρομές
-- **`service_principal_entries.json`** περιέχει διαπιστευτήρια εφαρμογών (tenant id, clients και secret). Μόνο σε Linux & macOS
-- **`msal_token_cache.json`** περιέχει access tokens και refresh tokens. Μόνο σε Linux & macOS
-- **`service_principal_entries.bin`** και msal_token_cache.bin χρησιμοποιούνται σε Windows και είναι κρυπτογραφημένα με DPAPI
-- **`msal_http_cache.bin`** είναι μια cache HTTP αιτημάτων
-- Φορτώστε το: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
-- **`AzureRmContext.json`** περιέχει πληροφορίες σχετικά με προηγούμενες συνδέσεις χρησιμοποιώντας Az PowerShell (αλλά όχι διαπιστευτήρια)
-- Μέσα στο **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`** υπάρχουν αρκετά αρχεία `.bin` με **access tokens**, ID tokens και πληροφορίες λογαριασμού κρυπτογραφημένα με το DPAPI των χρηστών.
-- Είναι δυνατόν να βρείτε περισσότερα **access tokens** στα αρχεία `.tbres` μέσα στο **`C:\Users\\AppData\Local\Microsoft\TokenBroken\Cache\`** που περιέχουν ένα base64 κρυπτογραφημένο με DPAPI με access tokens.
-- Σε Linux και macOS μπορείτε να αποκτήσετε **access tokens, refresh tokens και id tokens** από το Az PowerShell (αν χρησιμοποιείται) εκτελώντας `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"`
-- Σε Windows αυτό απλώς δημιουργεί id tokens.
-- Είναι δυνατόν να δείτε αν χρησιμοποιήθηκε το Az PowerShell σε Linux και macOS ελέγχοντας αν υπάρχει το `$HOME/.local/share/.IdentityService/` (αν και τα περιεχόμενα αρχεία είναι κενά και άχρηστα)
-- Αν ο χρήστης είναι **συνδεδεμένος στο Azure με τον περιηγητή**, σύμφωνα με αυτήν την [**ανάρτηση**](https://www.infosecnoodle.com/p/obtaining-microsoft-entra-refresh?r=357m16&utm_campaign=post&utm_medium=web) είναι δυνατόν να ξεκινήσει η ροή αυθεντικοποίησης με μια **ανακατεύθυνση στο localhost**, να κάνει τον περιηγητή να εξουσιοδοτήσει αυτόματα τη σύνδεση και να λάβει το refresh token. Σημειώστε ότι υπάρχουν μόνο λίγες εφαρμογές FOCI που επιτρέπουν ανακατεύθυνση στο localhost (όπως το az cli ή το module PowerShell), οπότε αυτές οι εφαρμογές πρέπει να επιτρέπονται.
+- Inside **`/.Azure`**
+- **`azureProfile.json`** περιέχει πληροφορίες για χρήστες που έχουν συνδεθεί στο παρελθόν
+- **`clouds.config contains`** πληροφορίες για subscriptions
+- **`service_principal_entries.json`** περιέχει credentials εφαρμογών (tenant id, clients and secret). Only in Linux & macOS
+- **`msal_token_cache.json`** contains contains access tokens and refresh tokens. Only in Linux & macOS
+- **`service_principal_entries.bin`** and msal_token_cache.bin are used in Windows and are encrypted with DPAPI
+- **`msal_http_cache.bin`** είναι ένα cache των HTTP request
+- Load it: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
+- **`AzureRmContext.json`** περιέχει πληροφορίες για προηγούμενες συνδέσεις χρησιμοποιώντας Az PowerShell (but no credentials)
+- Inside **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`** υπάρχουν αρκετά `.bin` αρχεία με **access tokens**, ID tokens και account information κρυπτογραφημένα με το DPAPI του χρήστη.
+- Είναι δυνατό να βρεθούν περισσότερα **access tokens** στα `.tbres` αρχεία μέσα στο **`C:\Users\\AppData\Local\Microsoft\TokenBroken\Cache\`** τα οποία περιέχουν ένα base64 κρυπτογραφημένο με DPAPI με access tokens.
+- Σε Linux και macOS μπορείτε να πάρετε **access tokens, refresh tokens and id tokens** από Az PowerShell (αν έχει χρησιμοποιηθεί) τρέχοντας `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"`
+- Σε Windows αυτό δημιουργεί μόνο id tokens.
+- Είναι δυνατό να δείτε αν χρησιμοποιήθηκε Az PowerShell σε Linux και macOS ελέγχοντας αν υπάρχει το `$HOME/.local/share/.IdentityService/` (αν και τα αρχεία που περιέχονται είναι κενά και άχρηστα)
+- Αν ο χρήστης είναι **logged inside Azure with the browser**, σύμφωνα με αυτό το [**post**](https://www.infosecnoodle.com/p/obtaining-microsoft-entra-refresh?r=357m16&utm_campaign=post&utm_medium=web) είναι δυνατόν να ξεκινήσετε το authentication flow με ένα **redirect to localhost**, να κάνετε το browser να autorizάρει αυτόματα το login, και να λάβετε το resh token. Σημειώστε ότι υπάρχουν μόνο λίγες FOCI applications που επιτρέπουν redicet to localhost (όπως az cli ή το powershell module), οπότε αυτές οι εφαρμογές πρέπει να είναι επιτρεπτές.
+- Μια άλλη επιλογή που εξηγείται στο blog είναι να χρησιμοποιήσετε το εργαλείο [**BOF-entra-authcode-flow**](https://github.com/sudonoodle/BOF-entra-authcode-flow) το οποίο μπορεί να χρησιμοποιήσει οποιαδήποτε εφαρμογή γιατί θα **get the OAuth code to then get a refresh token from the title of the final auth** page χρησιμοποιώντας το redirect URI `https://login.microsoftonline.com/common/oauth2/nativeclient`.
## Αναφορές