# Reconocimiento externo

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.

## <mark style="color:red;">Enumeración del Tenant</mark>

Conociendo un email de la organización, se podría obtener información asociada al **Tenant** donde se encuentra.

### Microsoft - getuserrealm

{% code overflow="wrap" %}

```bash
curl "https://login.microsoftonline.com/getuserrealm.srf?login=<Email corporativo>&xml=1"
```

{% endcode %}

<pre class="language-html"><code class="lang-html">&#x3C;RealmInfo Success="true">
&#x3C;State>4&#x3C;/State>
&#x3C;UserState>1&#x3C;/UserState>
<strong>&#x3C;Login>xtormin@xtormincorp.com&#x3C;/Login>
</strong>&#x3C;NameSpaceType>Managed&#x3C;/NameSpaceType>
<strong>&#x3C;DomainName>xtormincorp.com&#x3C;/DomainName>
</strong>&#x3C;IsFederatedNS>false&#x3C;/IsFederatedNS>
<strong>&#x3C;FederationBrandName>Xtormin Corp&#x3C;/FederationBrandName>
</strong>&#x3C;CloudInstanceName>microsoftonline.com&#x3C;/CloudInstanceName>
&#x3C;CloudInstanceIssuerUri>urn:federation:MicrosoftOnline&#x3C;/CloudInstanceIssuerUri>
&#x3C;/RealmInfo>
</code></pre>

### 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:

```bash
curl "https://login.microsoftonline.com/<dominio>/.well-known/openid-configuration"
```

* [**ADDInternals**](https://www.xtormin.com/pentesting-en-infraestructuras/cloud/herramientas#addinternals)**:**

```powershell
# 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
```

## <mark style="color:red;">Enumeración de emails</mark>

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, <mark style="color:red;">**si se quiere comprobar si un email existe o no en el Tenant, sin agotar intentos de inicio de sesión**</mark>, se puede usar el recurso *GetCredentialType* para ello, se realiza la siguiente petición POST indicando el email:

```
https://login.microsoftonline.com/common/GetCredentialType
```

<pre class="language-http" data-overflow="wrap"><code class="lang-http">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

{
<strong>"username":"xtormin@xtormincorp.com",
</strong>"isOtherIdpSupported":  true
}
</code></pre>

### O365EmailValidator

<https://github.com/xtormin/PowerPentest/tree/4bd914593a03128c77ed1747c14c843b3f966563/Azure>

[**O365EmailValidator**](#o365emailvalidator)**:** Si se desea **automatizar** esto, también se puede utilizar el siguiente *script* indicando la lista de *emails* que se quiera comprobar.

{% code overflow="wrap" %}

```powershell
wget "https://github.com/xtormin/PowerPentest/blob/4bd914593a03128c77ed1747c14c843b3f966563/Azure/O365EmailValidator.ps1"
```

{% endcode %}

```
. .\O365EmailValidator.ps1
```

{% code overflow="wrap" %}

```powershell
# Ejecución del script con una lista de posibles emails
Invoke-O365EmailValidator -file emails.txt -output emails_validated.txt
```

{% endcode %}

Ejemplo de `emails.txt`:

```
ejemplo01@xtormincorp.com
ejemplo02@xtormincorp.com
ejemplo03@xtormincorp.com
```

## <mark style="color:red;">Enumeración de subdominios</mark>

### MicroBurst

[**MicroBust**](#microbust)**:** <https://github.com/NetSPI/MicroBurst>

```powershell
# Enumeración de subdominios de xtormincorp.com
# Para ello se usa el nombre base "xtormincorp"
Invoke-EnumerateAzureSubDomains -Base xtormincorp -Verbose
```

## <mark style="color:red;">Enumeración de Blobs</mark>

### MicroBurst

[**MicroBust**](#microbust)**:** <https://github.com/NetSPI/MicroBurst>

```powershell
# Enumeración de blobs de xtormincorp.com
# Para ello se usa el nombre base "xtormincorp"
Invoke-EnumerateAzureBlobs -Base xtormincorp -Verbose
```
