Az - Unauthenticated Enum & Initial Entry

Az - Enumération non authentifiée & Entrée initiale

Soutenez HackTricks

Azure Tenant

Énumération du locataire

Il existe quelques APIs Azure publiques pour lesquelles en connaissant simplement le domaine du locataire, un attaquant pourrait interroger pour recueillir plus d'informations à ce sujet. Vous pouvez interroger directement l'API ou utiliser la bibliothèque PowerShell AADInternals:

APIInformationFonction AADInternals

login.microsoftonline.com/<domain>/.well-known/openid-configuration

Informations de connexion, y compris l'ID du locataire

Get-AADIntTenantID -Domain <domain>

autodiscover-s.outlook.com/autodiscover/autodiscover.svc

Tous les domaines du locataire

Get-AADIntTenantDomains -Domain <domain>

login.microsoftonline.com/GetUserRealm.srf?login=<UserName>

Informations de connexion du locataire, y compris le nom du locataire et le domaine du type d'authentification. Si NameSpaceType est Managed, cela signifie qu'AzureAD est utilisé.

Get-AADIntLoginInformation -UserName <UserName>

login.microsoftonline.com/common/GetCredentialType

Informations de connexion, y compris les informations de SSO de bureau

Get-AADIntLoginInformation -UserName <UserName>

Vous pouvez interroger toutes les informations d'un locataire Azure avec juste une commande de la bibliothèque AADInternals :

Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table

Exemple de sortie des informations du locataire Azure :

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

Il est possible d'observer detalles sur le nom du locataire, l'ID et le nom de "marque". De plus, le statut du Single Sign-On du Bureau (SSO), également connu sous le nom de Seamless SSO, est affiché. Lorsqu'il est activé, cette fonction facilite la détermination de la présence (énumération) d'un utilisateur spécifique au sein de l'organisation cible.

De plus, la sortie présente les noms de tous les domaines vérifiés associés au locataire cible, ainsi que leurs types d'identité respectifs. Dans le cas des domaines fédérés, le Nom de Domaine Complet (FQDN) du fournisseur d'identité utilisé, généralement un serveur ADFS, est également divulgué. La colonne "MX" spécifie si les e-mails sont routés vers Exchange Online, tandis que la colonne "SPF" indique l'inscription de Exchange Online en tant qu'expéditeur d'e-mails. Il est important de noter que la fonction de reconnaissance actuelle ne parse pas les déclarations "include" dans les enregistrements SPF, ce qui peut entraîner des faux négatifs.

Énumération des Utilisateurs

Il est possible de vérifier si un nom d'utilisateur existe à l'intérieur d'un locataire. Cela inclut également les utilisateurs invités, dont le nom d'utilisateur est au format :

<email>#EXT#@<tenant name>.onmicrosoft.com

L'e-mail est l'adresse e-mail de l'utilisateur où le "@" est remplacé par un tiret bas "_".

Avec AADInternals, vous pouvez facilement vérifier si l'utilisateur existe ou non :

# Check does the user exist
Invoke-AADIntUserEnumerationAsOutsider -UserName "user@company.com"

Enumération non authentifiée et entrée initiale


Découverte d'instances Azure Storage non authentifiées

Lors de la recherche de cibles potentielles pour une attaque, il est courant de trouver des instances Azure Storage non authentifiées. Ces instances peuvent contenir des données sensibles ou être utilisées pour le stockage de fichiers malveillants. Pour les trouver, vous pouvez utiliser des outils d'enumération tels que Azure Storage Explorer ou azcopy.


Découverte d'instances Azure Cosmos DB non authentifiées

Azure Cosmos DB est une autre cible courante pour les attaquants en raison de sa nature de base de données NoSQL flexible et évolutive. La découverte d'instances Azure Cosmos DB non authentifiées peut fournir un point d'entrée initial pour une attaque. Vous pouvez les rechercher en utilisant des outils d'enumération comme Cosmos DB Explorer ou en interrogeant directement l'API REST de Cosmos DB.


Découverte d'instances Azure Key Vault non authentifiées

Azure Key Vault est un service de gestion des clés qui stocke de manière sécurisée les informations sensibles telles que des clés d'API, des mots de passe et des certificats. La découverte d'instances Azure Key Vault non authentifiées peut potentiellement conduire à la compromission de ces informations sensibles. Vous pouvez les rechercher en utilisant des outils d'enumération comme Azure Key Vault Explorer ou en interrogeant l'API REST d'Azure Key Vault.

UserName         Exists
--------         ------
user@company.com True

Vous pouvez également utiliser un fichier texte contenant une adresse e-mail par ligne :

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

Il existe trois méthodes d'énumération différentes parmi lesquelles choisir :

MéthodeDescription

Normale

Il s'agit de l'API GetCredentialType mentionnée ci-dessus. La méthode par défaut.

Connexion

Cette méthode tente de se connecter en tant qu'utilisateur. Remarque : les requêtes seront enregistrées dans le journal des connexions.

Autologon

Cette méthode tente de se connecter en tant qu'utilisateur via le point de terminaison autologon. Les requêtes ne sont pas enregistrées dans le journal des connexions ! Par conséquent, elle fonctionne également bien pour les attaques de pulvérisation de mots de passe et de force brute.

Après avoir découvert les noms d'utilisateur valides, vous pouvez obtenir des informations sur un utilisateur avec :

Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com

Le script o365creeper vous permet également de découvrir si un e-mail est valide.

# Put in emails.txt emails such as:
# - root@corp.onmicrosoft.com
python.exe .\o365creeper\o365creeper.py -f .\emails.txt -o validemails.txt

Énumération des utilisateurs via Microsoft Teams

Une autre bonne source d'informations est Microsoft Teams.

L'API de Microsoft Teams permet de rechercher des utilisateurs. En particulier, les points de terminaison "recherche externe" externalsearchv3 et searchUsers pourraient être utilisés pour demander des informations générales sur les comptes d'utilisateurs inscrits dans Teams.

En fonction de la réponse de l'API, il est possible de distinguer entre les utilisateurs inexistants et les utilisateurs existants ayant un abonnement Teams valide.

Le script TeamsEnum pourrait être utilisé pour valider un ensemble donné de noms d'utilisateur par rapport à l'API Teams.

python3 TeamsEnum.py -a password -u <username> -f inputlist.txt -o teamsenum-output.json

Unauthenticated Enumeration and Initial Entry

Introduction

In this section, we will cover techniques to perform unauthenticated enumeration and gain initial access to Azure environments. Unauthenticated enumeration involves gathering information without the need for valid credentials, which can help in identifying potential entry points and weaknesses in the target Azure environment.

Tools and Techniques

  1. Public Information Gathering: Utilize search engines, public repositories, and other open sources to gather information about the target Azure environment, such as exposed resources, configurations, and potentially sensitive data.

  2. Subdomain Enumeration: Use tools like Sublist3r, Amass, or Subfinder to discover subdomains associated with the target Azure environment. These subdomains may reveal additional entry points or misconfigurations.

  3. Service Enumeration: Identify services running in the Azure environment by scanning for open ports and analyzing service banners. This can help in understanding the attack surface and potential vulnerabilities.

  4. Weak Configuration Detection: Look for common misconfigurations in Azure services, such as storage containers with public access or unsecured databases. Exploiting these weaknesses can lead to unauthorized access.

Initial Entry Points

Once you have gathered sufficient information through unauthenticated enumeration, you can leverage the identified entry points to gain initial access to the Azure environment. This may involve exploiting misconfigurations, weak credentials, or known vulnerabilities in Azure services.

By combining effective enumeration techniques with thorough analysis of the gathered information, you can increase the chances of successfully gaining access to the target Azure environment without the need for valid credentials.

[-] 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)

De plus, il est possible d'énumérer les informations de disponibilité des utilisateurs existants comme suit :

  • Disponible

  • Absent

  • Ne pas déranger

  • Occupé

  • Hors ligne

Si un message d'absence est configuré, il est également possible de récupérer le message en utilisant TeamsEnum. Si un fichier de sortie a été spécifié, les messages d'absence sont automatiquement stockés dans le fichier JSON :

jq . teamsenum-output.json

Unauthenticated Enumeration and Initial Entry

Introduction

In this section, we will cover techniques to perform unauthenticated enumeration and gain initial access to Azure environments. Unauthenticated enumeration involves gathering information without the need for valid credentials, which can help in identifying potential entry points for further exploitation.

Enumeration Techniques

  1. DNS Enumeration: Discovering subdomains and associated IP addresses using tools like dnsrecon or sublist3r.

  2. Service Enumeration: Identifying open ports and services running on those ports using tools like nmap or masscan.

  3. Web Enumeration: Enumerating web applications for common vulnerabilities like misconfigurations or outdated software versions.

  4. Storage Account Enumeration: Identifying publicly accessible storage accounts using tools like azcopy or Azure Storage Explorer.

Initial Entry Points

Once potential entry points are identified through enumeration, attackers can exploit vulnerabilities to gain initial access to the Azure environment. This could involve techniques like exploiting misconfigured storage containers, weak passwords, or known vulnerabilities in web applications.

It is important for organizations to regularly perform security assessments and address any identified vulnerabilities to prevent unauthorized access to their Azure environments.

{
"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
}
]
}

Services Azure

Maintenant que nous connaissons les domaines utilisés par le locataire Azure, il est temps d'essayer de trouver les services Azure exposés.

Vous pouvez utiliser une méthode de MicroBust pour atteindre cet objectif. Cette fonction recherchera le nom de domaine de base (et quelques permutations) dans plusieurs domaines de services Azure :

Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose

Stockage Ouvert

Vous pourriez découvrir un stockage ouvert avec un outil tel que InvokeEnumerateAzureBlobs.ps1 qui utilisera le fichier Microburst/Misc/permitations.txt pour générer des permutations (très simples) afin de trouver des comptes de stockage ouverts.

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

URL SAS

Un jeton d'accès partagé (SAS) est une URL qui fournit l'accès à une certaine partie d'un compte de stockage (peut être un conteneur complet, un fichier...) avec des autorisations spécifiques (lecture, écriture...) sur les ressources. Si vous en trouvez un qui a fuité, vous pourriez être en mesure d'accéder à des informations sensibles, ils ressemblent à ceci (c'est pour accéder à un conteneur, s'il ne faisait que accorder l'accès à un fichier, le chemin de l'URL contiendrait également ce fichier) :

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

Utilisez Storage Explorer pour accéder aux données

Compromission des identifiants

Phishing

Pulvérisation de mots de passe / Brute-Force

Az - Password Spraying

Références

Soutenez HackTricks

Last updated