Reconocimiento externo
El reconocimiento externo se realiza con el objetivo de obtener información general y pública sobre el Tenant de la organización/dominio objetivo.
Alguna información puede obtenerse de forma manual al realizar una petición contra determinados recursos de Microsoft. No obstante, existen varias herramientas y scripts que permiten automatizar algunas acciones.
Enumeración del Tenant
Conociendo un email de la organización, se podría obtener información asociada al Tenant donde se encuentra.
Microsoft - getuserrealm
curl "https://login.microsoftonline.com/getuserrealm.srf?login=<Email corporativo>&xml=1"
<RealmInfo Success="true">
<State>4</State>
<UserState>1</UserState>
<Login>[email protected]</Login>
<NameSpaceType>Managed</NameSpaceType>
<DomainName>xtormincorp.com</DomainName>
<IsFederatedNS>false</IsFederatedNS>
<FederationBrandName>Xtormin Corp</FederationBrandName>
<CloudInstanceName>microsoftonline.com</CloudInstanceName>
<CloudInstanceIssuerUri>urn:federation:MicrosoftOnline</CloudInstanceIssuerUri>
</RealmInfo>
Microsoft - openid-configuration
Para obtener el ID del Tenant e información de OpenID, se puede utilizar el siguiente recurso, donde se indicará el dominio objetivo:
curl "https://login.microsoftonline.com/<dominio>/.well-known/openid-configuration"
# Obtener toda la información
Invoke-AADIntReconAsOutsider -DomainName <dominio>
Invoke-AADIntReconAsOutsider -DomainName xtormincorp.onmicrosoft.com
# Nombre del Tenant, autenticación, nombre, etc.
Get-AADIntLoginInformation -UserName <Email corporativo>
# Obtener ID del tenant
Get-AADIntTenantID -Domain xtormincorp.onmicrosoft.com
# Obtener los dominios de los tenant
Get-AADIntTenantDomains -Domain xtormincorp.onmicrosoft.com
Enumeración de emails
Se puede obtener una lista inicial de emails de la organización por medio de técnicas de OSINT o una lista de posibles emails.
Posteriormente, si se quiere comprobar si un email existe o no en el Tenant, sin agotar intentos de inicio de sesión, se puede usar el recurso GetCredentialType para ello, se realiza la siguiente petición POST indicando el email:
https://login.microsoftonline.com/common/GetCredentialType
POST /common/GetCredentialType HTTP/1.1
Host: login.microsoftonline.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Content-Length: 76
Content-Type: application/json
{
"username":"[email protected]",
"isOtherIdpSupported": true
}
O365EmailValidator
https://github.com/xtormin/PowerPentest/tree/4bd914593a03128c77ed1747c14c843b3f966563/Azure
O365EmailValidator: Si se desea automatizar esto, también se puede utilizar el siguiente script indicando la lista de emails que se quiera comprobar.
wget "https://github.com/xtormin/PowerPentest/blob/4bd914593a03128c77ed1747c14c843b3f966563/Azure/O365EmailValidator.ps1"
. .\O365EmailValidator.ps1
# Ejecución del script con una lista de posibles emails
Invoke-O365EmailValidator -file emails.txt -output emails_validated.txt
Ejemplo de emails.txt
:
Enumeración de subdominios
MicroBurst
MicroBust: https://github.com/NetSPI/MicroBurst
# Enumeración de subdominios de xtormincorp.com
# Para ello se usa el nombre base "xtormincorp"
Invoke-EnumerateAzureSubDomains -Base xtormincorp -Verbose
Enumeración de Blobs
MicroBurst
MicroBust: https://github.com/NetSPI/MicroBurst
# Enumeración de blobs de xtormincorp.com
# Para ello se usa el nombre base "xtormincorp"
Invoke-EnumerateAzureBlobs -Base xtormincorp -Verbose
Última actualización
¿Te fue útil?