> For the complete documentation index, see [llms.txt](https://www.xtormin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.xtormin.com/pentesting-en-infraestructuras/cloud/azure/metodologia-de-azure-pentest/reconocimiento-interno/enum-con-herramientas-de-ms/azuread.md).

# AzureAD

## <mark style="color:red;">Instalación</mark>

### AzureAD

```powershell
Install-Module AzureAD

```

```powershell
Import-Module C:\Pentest\Tools\AzureAD\AzureAD.psd1
```

### AzureADPreview

```powershell
Install-Module AzureADPreview
```

## <mark style="color:red;">Conexión</mark>

Una vez se hayan obtenido credenciales válidas, se podría utilizar la herramienta de AzureAD para conectarse al Tenant y enumerar información haciendo uso de la sesión del usuario.

### <mark style="color:purple;">Popup</mark>

```powershell
Connect-AzureAD
```

```powershell
Account                      Environment TenantId                             TenantDomain AccountType
-------                      ----------- --------                             ------------ -----------
xtormin@xtormincorp.com      AzureCloud  11081700-e4e1-4313-bf78-41fae513bbe6 xtormincorp.com  User
```

### <mark style="color:purple;">Línea de comandos</mark>

```powershell
$passwd = ConvertTo-SecureString "<password>" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential("<email>", $passwd)
Connect-AzureAD -Credential $creds
```

## <mark style="color:red;">Token</mark>

* Conexión con información del access token, tenantId y accountId:

<pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell"><strong>Connect-AzureAD -AadAccessToken &#x3C;JWT> -TenantId "1d50cb29-5f5b-48a4-87ce-fe75a941adb6" -AccountId "f66e433c-bd01-4b0b-b3b7-7cd749fd45f3"
</strong></code></pre>

## <mark style="color:red;">Información general</mark>

### <mark style="color:purple;">Sesión actual</mark>

```powershell
Get-AzureADCurrentSessionInfo
```

```powershell
Account                      Environment TenantId                             TenantDomain AccountType
-------                      ----------- --------                             ------------ -----------
xtormin@xtormincorp.com      AzureCloud  11081700-e4e1-4313-bf78-41fae513bbe6 xtormincorp.com  User
```

### <mark style="color:purple;">Tenant</mark>

<pre class="language-powershell"><code class="lang-powershell"><strong>Get-AzureADTenantDetail
</strong></code></pre>

```powershell
ObjectId                             DisplayName            VerifiedDomain
--------                             -----------            --------------
11081700-e4e1-4313-bf78-41fae513bbe6 Xtormin Corp.          xtormincorp.com
```

## <mark style="color:red;">Usuarios</mark>

* **Todos los usuarios:**

```powershell
Get-AzureADUser -All $true
```

```powershell
ObjectId                             DisplayName               UserPrincipalName            UserType
--------                             -----------               -----------------            --------
04ee91f2-4cd2-456c-b546-9f6401b08de4 Jennifer Torres           xtormin@xtormincorp.com      Member
[...]
```

* **Un usuario en concreto:**

```powershell
Get-AzureADUser -ObjectId xtormin@xtormincorp.com
```

* **Buscar todos los usuarios que contengan la cadena "admin" en el&#x20;*****DisplayName*****:**

```powershell
Get-AzureADUser -All $true | ?{$_.Displayname -match "admin"}
```

* **Obtener todos los atributos de un usuario:**

```powershell
Get-AzureADUser -ObjectId xtormin@xtormincorp.com | fl *
```

* **Listado de atributos del usuario:**

```powershell
Get-AzureADUser -ObjectId xtormin@xtormincorp.com | %{$_.PSObject.Properties.Name}
```

* **Buscar los atributos de los usuarios que contengan la cadena "password":**

{% code overflow="wrap" %}

```powershell
Get-AzureADUser -All $true | %{$Properties = $_;$Properties.PSObject.Properties.Name | % {if ($Properties.$_ -match 'password') {"$($Properties.UserPrincipalName) - $_ - $($Properties.$_)"}}}
```

{% endcode %}

* **Todos los usuarios que se han sincronizado desde un AD on-premise:** Es útil para obtener la lista de usuarios principales de la organización ya que no muestra los usuarios externos.

{% code overflow="wrap" %}

```powershell
Get-AzureADUser -All $true | ?{$_.OnPremisesSecurityIdentifier -ne $null}
```

{% endcode %}

* **Todos los usuarios de AzureAD:** Es útil para obtener una lista con los usuarios creados en AzureAD y obtener los usuarios externos.

```powershell
Get-AzureADUser -All $true | ?{$_.OnPremisesSecurityIdentifier -eq $null}
```

* Lista de todos los objetos creados por los todos usuarios:

```powershell
Get-AzureADUser | Get-AzureADUserCreatedObject
```

* Lista de todos los objetos creados por un usuario:

```powershell
Get-AzureADUserOwnedObject -ObjectId
```

## <mark style="color:red;">Grupos</mark>

* Todos los grupos:

```powershell
Get-AzureADGroup -All $true
```

* Detalles de un grupo en concreto:

```powershell
Get-AzureADGroup -ObjectId 7c63dd47-91ed-45c4-9081-427ad616347f
```

* Buscar grupos que empiecen por una cadena (por ejemplo: admin):

```powershell
Get-AzureADGroup -SearchString "admin" | fl *
```

* Buscar grupos que contengan una cadena (por ejemplo: admin):

```powershell
Get-AzureADGroup -All $true |?{$_.Displayname -match "admin"}
```

* Buscar grupos que permitan "DynamicMembership":

```powershell
Get-AzureADMSGroup | ?{$_.GroupTypes -eq 'DynamicMembership'}
```

* Todos los grupos que se han sincronizado desde on-prem:

```powershell
Get-AzureADGroup -All $true | ?{$_.OnPremisesSecurityIdentifier -ne $null}
```

* Todos los grupos de AzureAD:

```powershell
Get-AzureADGroup -All $true | ?{$_.OnPremisesSecurityIdentifier -eq $null}
```

* Obtener los miembros de un grupo:

```powershell
Get-AzureADGroupMember -ObjectId 7c63dd47-98ed-45c4-9081-427ad616347f
```

* Obtener grupos y roles donde el usuario es miembro:

```powershell
Get-AzureADUser -SearchString 'test' | Get-AzureADUserMembership

Get-AzureADUserMembership -ObjectId xtormin@xtormincorp.onmicrosoft.com
```

## <mark style="color:red;">Roles</mark>

* Obtener todas las plantillas de roles disponibles:

```powershell
Get-AzureADDirectoryroleTemplate
```

* Obtener todos los roles habilitados (han sido asignados al menos a un usuario):

```powershell
Get-AzureADDirectoryRole
```

* Obtener usuarios asignados a un rol:

{% code overflow="wrap" %}

```powershell
Get-AzureADDirectoryRole -Filter "DisplayName eq 'Global Administrator'" | Get-AzureADDirectoryRoleMember
```

{% endcode %}

## <mark style="color:red;">Dispositivos</mark>

* Obtener todos los dispositivos registrados y unidos a azure:

```powershell
Get-AzureADDevice -All $true | fl *
```

* Obtener el objeto de configuración de dispositivos:

```powershell
Get-AzureADDeviceConfiguration | fl *
```

* Obtener todos los dispositivos activos:

```powershell
Get-AzureADDevice -All $true | ?{$_.ApproximateLastLogonTimeStamp -ne $null}
```

* Obtener los propietarios registrados:

{% code overflow="wrap" %}

```powershell
Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredOwner

Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredOwner -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}
```

{% endcode %}

* Obtener los usuarios registrados:

{% code overflow="wrap" %}

```powershell
Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredUser

Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredUser -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}
```

{% endcode %}

* Dispositivos propiedad de un usuario:

```powershell
Get-AzureADUserOwnedDevice -ObjectId xtormin@xtormincorp.onmicrosoft.com
```

* Dispositivos registrados por un usuario:

```powershell
Get-AzureADUserRegisteredDevice -ObjectId xtormin@xtormincorp.onmicrosoft.com
```

* Dispositivos administrados por Intune:

```powershell
Get-AzureADDevice -All $true | ?{$_.IsCompliant -eq "True"}
```

## <mark style="color:red;">Aplicaciones</mark>

* Obtener todos los objetos de aplicaciones registradas en el tenant actual:

```powershell
Get-AzureADApplication -All $true
```

* Obtener los detalles de una aplicación:

```powershell
Get-AzureADApplication -ObjectId fa656d62-b53a-431d-b40c-b0a8757892d2 | fl *
```

* Obtener una aplicación según su "Display Name":

```powershell
Get-AzureADApplication -All $true | ?{$_.DisplayName -match "app"}
```

* Obtener las aplicaciones que cuentan con contraseña:

{% code overflow="wrap" %}

```powershell
Get-AzureADApplication -All $true | %{if(Get-AzureADApplicationPasswordCredential -ObjectID $_.ObjectID){$_}}
```

{% endcode %}

* Obtener el owner de una aplicación:

{% code overflow="wrap" %}

```powershell
Get-AzureADApplication -ObjectId fa656d61-b55a-431d-b44c-b0a8658897d2 | Get-AzureADApplicationOwner |fl *
```

{% endcode %}

* Obtener las aplicaciones donde el usuario tiene un rol asignado:

{% code overflow="wrap" %}

```powershell
Get-AzureADUser -ObjectId xtormin@xtormincorp.onmicrosoft.com | Get-AzureADUserAppRoleAssignment | fl *
```

{% endcode %}

* Obtener las aplicaciones donde un grupo tiene un rol asignado:

{% code overflow="wrap" %}

```powershell
Get-AzureADGroup -ObjectId 54787e13-4374-4b05-85a1-5cfe4b3ddc98 | Get-AzureADGroupAppRoleAssignment | fl *
```

{% endcode %}

## *<mark style="color:red;">Service Principals</mark>*

{% hint style="info" %}
"Service principal" es la representación local para una aplicación en un tenant específico y es el objeto de seguridad que tiene privilegios. Se trata de la «cuenta servicio».
{% endhint %}

* Obtener todos los *Service Principals*:

```powershell
Get-AzureADServicePrincipal -All $true
```

* Obtener todos los detalles de un *Service Principal*:

```powershell
Get-AzureADServicePrincipal -ObjectId ff2612c5-7168-4fed-b571-2f7c5c31b066 | fl *
```

* Obtener todos los detalles según su *Display Name*:

```powershell
Get-AzureADServicePrincipal -All $true | ?{$_.DisplayName -match "app"}
```

* Obtener todos los Service Principals que requieren contraseña:

{% code overflow="wrap" %}

```powershell
Get-AzureADServicePrincipal -All $true | %{if(Get-AzureADServicePrincipalKeyCredential -ObjectID $_.ObjectID){$_}}
```

{% endcode %}

* Obtener propietario de un Service Principal:

{% code overflow="wrap" %}

```powershell
Get-AzureADServicePrincipal -ObjectId 60a70e2b-c1bd-453b-928e-f7398ebe3660 | Get-AzureADServicePrincipalOwner |fl *
```

{% endcode %}

* Obtener los objetos que son propietarios de un Service Principal:

{% code overflow="wrap" %}

```powershell
Get-AzureADServicePrincipal -ObjectId ff1601c6-7368-7fed-b672-2f7c5c31b066 | Get-AzureADServicePrincipalOwnedObject
```

{% endcode %}

* Objetos creados por un Service Principal:

{% code overflow="wrap" %}

```powershell
Get-AzureADServicePrincipal -ObjectId f5ac063d-7ddc-3e7c-aabc-f135b00a972c | Get-AzureADServicePrincipalCreatedObject
```

{% endcode %}

* Obtener grupo y roles de un Service Principal:

{% code overflow="wrap" %}

```powershell
Get-AzureADServicePrincipal -ObjectId f4ac083d-7ddc-3e7c-aabc-f231b00a972c | Get-AzureADServicePrincipalMembership |fl *
```

{% endcode %}
