MS has a series of public APIs and DNS public suffixes that we can check during the enumeration phase.
Enumerating with Public APIs
These APIs can be used to find information about domain names, whether the domain is federated or not, if a specific user exists within the tenant and DNS records.
Login information, including Desktop SSO information
Get-AADIntLoginInformation -UserName <UserName>
AAD also has some pre-defined DNS suffixes we can use to verify whether a domain is using Azure: for example if something.blog.core.windows.net exists then we know that the something domain uses Azure. We can see more suffixes here.
Another way to figure out if a domain is using AAD is to visit https://login.microsoftonline.com/getuserrealm.srf?login=username@<domain>.onmicrosoft.com&xml=1.
If we know a tenant exists we can get its tenant ID by visiting https://login.microsoftonline.com/<domain>/.well-known/openid-configuration.
Subdomain enumeration
To perform subdomain enumeration we can use MicroBurst
# enumerate resource groups under a subscription
Get-AADIntAzureResourceGroups -AccessToken $at -SubscriptionId <id>
# enumerate VMs and what users have access to them
Get-AADIntAzureVMs