
Módulo de PowerShell de solo lectura para detectar UNC2452 y otros artefactos de actores de amenazas en Azure AD, auditar dominios federados, entidades de servicio, aplicaciones y permisos de buzones en busca de indicadores de compromiso.
Este repositorio contiene un módulo de PowerShell para detectar artefactos que pueden ser indicadores de actividad de UNC2452 y otros actores de amenazas. Algunos indicadores son indicadores de compromiso de "alta fidelidad", mientras que otros artefactos son los denominados artefactos de "doble uso". Los artefactos de doble uso pueden estar relacionados con la actividad de un actor de amenazas, pero también pueden estar relacionados con funcionalidades legítimas. Se requerirá análisis y verificación para estos. Para una descripción detallada de las técnicas utilizadas por UNC2452, consulte nuestro blog.
Esta herramienta es de solo lectura. No realiza ningún cambio en el entorno de Microsoft 365.
En resumen, este módulo:
No hará:
Con la retroalimentación de la comunidad, la herramienta podría volverse más exhaustiva en la detección de IOCs. Abra un issue, envíe un PR o contacte a los autores si tiene problemas, ideas o comentarios.
Este módulo utiliza MS Online PowerShell para buscar y auditar dominios federados en Azure AD. Todos los dominios federados se exportarán al archivo federated domains.csv.
any.sts como URI del emisor. Esto es indicativo del uso de la herramienta Azure AD Backdoor. Considere realizar una investigación forense para determinar cómo se realizaron los cambios e identificar cualquier otra evidencia de compromiso.!! Evidence of AAD backdoor found. Consider performing a detailed forensic investigation Domain name: foobar.com Domain federation name: Federation issuer URI: http://any.sts/16B45E3B
:bangbang: El script ha identificado un dominio que ha sido federado con un URI de emisor que es un indicador de un [Azure AD Backdoor](https://github.com/Gerenios/AADInternals/blob/master/FederatedIdentityTools.ps1). El backdoor establece el URI de emisor en hxxp://any.sts por defecto. Considere realizar una investigación forense para determinar cómo se realizaron los cambios e identificar cualquier otra evidencia de compromiso.```
!! A token signing certificate has a validity period of more than 365 days.
This may be evidence of a signing certificate not generated by AD FS.
Domain name: foobar.com
Federation issuer uri: http://sts.foobar.com
Signing cert not valid before: 1/1/2020 00:00:00
Signing cert not valid after: 12/31/2025 23:59:59
⚠️ El script ha identificado un dominio federado con un certificado de firma de tokens que es válido por más de los 365 días estándar. Consulte con sus administradores para ver si el certificado de firma de tokens se administra manualmente y si se espera que tenga el período de validez indicado. Considere realizar una investigación forense si esto no es esperado.
Este módulo utiliza Azure AD PowerShell para buscar y auditar Service Principals en Azure AD.
!! Identified first-party (Microsoft published) Service Principals with added credentials. Only in rare cases should a first-party Service Principal have an added credential. Verify that the added credential has a legitimate use case and consider further investigation if not
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx App ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Display Name : Office 365 Exchange Online Key Credentials :
CustomKeyIdentifier : EndDate : 12/9/2017 2:10:29 AM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/9/2015 1:40:30 AM Type : AsymmetricX509Cert Usage : Verify Value :
:warning: El script ha identificado una entidad de servicio de primer nivel (Microsoft) con credenciales añadidas. Las entidades de servicio de primer nivel *no* deberían tener credenciales añadidas excepto en casos raros. Los entornos que están o estuvieron previamente en modo híbrido pueden tener credenciales añadidas a Exchange Online, Skype for Business y las entidades de servicio del Proxy de Protección de Contraseñas de AAD. Esto también puede ser un artefacto de la actividad de UNC2452 en su entorno. Consulte con sus administradores y busque en los registros de auditoría para verificar que la credencial es legítima. También puede usar la pestaña "Service Principal Sign-Ins" en la hoja de Inicios de sesión de Azure AD para buscar autenticaciones en su inquilino que utilicen esta entidad de servicio.```
!! Identified Service Principals with high-risk API permissions and added credentials.
Verify that the added credential has a legitimate use case and consider further investigation if not
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
App ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Display Name : TestingApp
Key Credentials :
CustomKeyIdentifier :
EndDate : 1/7/2025 12:00:00 AM
KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
StartDate : 1/7/2021 12:00:00 AM
Type : Symmetric
Usage : Verify
Value :
Password Credentials :
Risky Permissions : Domain.ReadWrite.All
:⚠️ El script ha identificado una Entidad de servicio con permisos de API de alto riesgo y credenciales agregadas. Esto puede ser esperado, ya que algunas aplicaciones de terceros o personalizadas requieren credenciales agregadas para funcionar. También puede ser un artefacto de la actividad de UNC2452 en su entorno. Consulte con sus administradores y busque en los registros de auditoría para verificar que la credencial sea legítima. También puede usar la pestaña "Inicios de sesión de entidad de servicio" en el panel de Inicios de sesión de Azure AD para buscar autenticaciones en su inquilino que usen esta entidad de servicio.
Este módulo utiliza Azure AD PowerShell para buscar y auditar aplicaciones en Azure AD.
!! High-privileged Application with credentials found. Validate that the application needs these permissions. Validate that the credentials added to the application are associated with a legitimate use case.
ObjectID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx AppID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx DisplayName: Acme Test App KeyCredentials: PasswordCredentials:
CustomKeyIdentifier : EndDate : 12/22/2021 4:01:52 PM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/22/2020 4:01:52 PM Value :
CustomKeyIdentifier : EndDate : 12/21/2021 6:32:54 PM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/21/2020 6:33:16 PM Value :
Risky Permissions: Mail.Read (Read mail in all mailboxes) Directory.Read.All (Read all data in the organization directory)
:warning: El script ha identificado una aplicación con permisos de API de alto riesgo y ha añadido credenciales. Esto puede ser esperado, ya que algunas aplicaciones de terceros o personalizadas requieren credenciales añadidas para funcionar. También puede ser un artefacto de actividad de UNC2452 en su entorno. Consulte con sus administradores y busque en los registros de auditoría para verificar que la credencial es legítima.
### Programa de Proveedor de Soluciones en la Nube (Invoke-MandiantGetCSPInformation)
Este módulo verifica si el inquilino es gestionado por un CSP, o socio, y si la administración delegada está habilitada. La administración delegada permite al CSP acceder al inquilino del cliente con los mismos privilegios que un Administrador Global. Aunque el programa CSP aplica fuertes controles de seguridad en el inquilino del socio, un actor de amenazas que comprometa al CSP podría acceder a los entornos del cliente. Las organizaciones deben verificar si su socio necesita privilegios de administración delegada y eliminarlos si no es así. Si el socio debe mantener el acceso de administración delegada, considere implementar Políticas de Acceso Condicional para restringir su acceso.
Las organizaciones pueden verificar y gestionar las relaciones de socios navegando al [Centro de administración](https://admin.microsoft.com) y navegando a `Configuración` -> `Relaciones de socios` en la barra de menú de la izquierda.
### Permisos de carpetas de buzón (Get-MandiantMailboxFolderPermissions)
Este módulo audita todos los buzones del inquilino para detectar la existencia de permisos de carpeta sospechosos. Específicamente, este módulo examinará las carpetas "Top of Information Store" e "Inbox" de cada buzón y verificará los permisos asignados a los usuarios "Default" y "Anonymous". Cualquier valor distinto de "None" resultará en que el buzón sea marcado para análisis. En general, los usuarios Default y Anonymous no deberían tener permisos en las bandejas de entrada de los usuarios, ya que esto permitiría a cualquier usuario leer su contenido. Algunas organizaciones pueden encontrar buzones compartidos con este permiso, pero no es una práctica recomendada.
### Suplantación de aplicaciones (Get-MandiantApplicationImpersonationHolders)
Este módulo muestra la lista de usuarios y grupos que poseen el rol ApplicationImpersonation. Cualquier usuario o miembro de un grupo en la salida de este comando puede usar la suplantación para "actuar como" y acceder al buzón de cualquier otro usuario en el inquilino. Las organizaciones deben auditar la salida de este comando para asegurarse de que solo se incluyen los usuarios y grupos esperados, y, cuando sea posible, restringir aún más el ámbito.
### Auditoría de Purview (anteriormente Auditoría Avanzada) (Invoke-MandiantCheckAuditing)
Este módulo enumerará todos los usuarios con licencia en el inquilino que tengan licencia para Purview Audit Mail Items Accessed. Generará un informe CSV que documenta si la función se ha habilitado en un buzón elegible. Las organizaciones deben filtrar los buzones que son elegibles para Mail Items Accessed pero tienen la función deshabilitada y verificar que esto sea intencional.
### Registro de auditoría unificado (Get-MandiantUnc2452AuditLogs)
Este módulo es un script auxiliar para buscar en el Registro de auditoría unificado. La búsqueda en el Registro de auditoría unificado tiene muchos aspectos técnicos que pueden pasarse por alto fácilmente. Este módulo puede ayudar a simplificar el proceso de búsqueda implementando las mejores prácticas para navegar estos aspectos y manejar algunos errores comunes.
Por defecto, el módulo buscará entradas de registro que puedan registrar técnicas de UNC2452. Los registros también pueden capturar actividad legítima de administradores y deberán ser verificados.
* **Actualizar aplicación** - Registra acciones realizadas para actualizar los registros de aplicaciones.
* **Establecer autenticación de dominio** - Registra cuándo se cambian las configuraciones de autenticación de un dominio, incluida la creación de objetos de dominio de federación. Estos eventos deberían ocurrir raramente en un entorno y pueden indicar que un actor de amenazas está configurando un backdoor de AAD.
* **Establecer configuraciones de federación** - Registra cuándo se modifica el objeto de dominio de federación de un dominio. Estos eventos deberían ocurrir raramente en un entorno y pueden indicar que un actor de amenazas se prepara para ejecutar un ataque Golden SAML.
* **Actualizar certificados y secretos de aplicaciones** - Registra cuándo se añade un secreto o certificado a un registro de aplicación.
* **Inicios de sesión de buzón de PowerShell** - Registra operaciones de inicio de sesión de buzón donde la aplicación cliente era PowerShell.
* **Actualizar entidad de servicio** - Registra cuándo se realizan actualizaciones en una entidad de servicio existente.
* **Añadir credenciales de entidad de servicio** - Registra cuándo se añade un secreto o certificado a una entidad de servicio.
* **Añadir asignación de rol de aplicación** - Registra cuándo se añade un rol de aplicación (permiso de aplicación).
* **Asignación de rol de aplicación para usuario** - Registra cuándo se asigna un rol de aplicación a un usuario.
* **Autenticación de PowerShell** - Registra cuándo un usuario se autentica en Azure AD usando un cliente de PowerShell.
* **Nuevas asignaciones de roles de administración** - Registra cuándo se crean nuevas asignaciones de roles de administración. Esto puede ser útil para identificar nuevas concesiones de ApplicationImpersonation.
## Uso
### Módulos requeridos
El módulo de PowerShell requiere la instalación de tres módulos de PowerShell de Microsoft 365.
* AzureAD
* MSOnline
* ExchangeOnlineManagement
* Microsoft.Graph
Para instalar los módulos:
1. Abra una ventana de PowerShell como administrador local (haga clic derecho y seleccione Ejecutar como administrador)
2. Ejecute el comando `Install-Module <NOMBRE DEL MÓDULO AQUÍ>` y siga las indicaciones
### Permisos de usuario requeridos
El módulo de PowerShell debe ejecutarse con una cuenta de Microsoft 365 que tenga asignados privilegios específicos.
* Rol de `Global Administrator` o `Global Reader` en el portal de Azure AD
* `View-Only Audit Logs` en el Centro de administración de Exchange
* Ámbitos `User.Read.All` y `Directory.Read.All`. Los titulares del rol `Global Reader` deberían poder usar estos ámbitos automáticamente.
Para conceder a una cuenta `View-Only Audit Logs` en el Centro de administración de Exchange:
1. Navegue a https://outlook.office365.com/ecp e inicie sesión como administrador global o administrador de Exchange (tenga en cuenta que la URL exacta puede diferir si está en una nube alternativa)
2. Haga clic en `roles de administración` en el panel, o expanda la pestaña `roles` a la izquierda y haga clic en `roles de administración` si está en la nueva interfaz de usuario
3. Cree un nuevo rol de administración haciendo clic en el signo `+` o haciendo clic en `agregar nuevo grupo de roles`
4. Asigne un nombre a su rol y un ámbito de escritura predeterminado
5. Agregue el permiso `View-Only Audit Logs` al rol
6. Agregue el usuario al rol
**Nota** puede tardar hasta una hora en que este rol se aplique
### Ejecución de la herramienta
1. Descargue esta herramienta como ZIP y descomprímala, o clone el repositorio en su sistema
2. Abra una ventana de PowerShell
3. Cambie los directorios a la ubicación de este módulo `cd C:\ruta\al\módulo`
4. Importe este módulo `Import-Module .\MandiantAzureADInvestigator.psd1` debería recibir esta salida```
Mandiant Azure AD Investigator
Focusing on UNC2452 Investigations
PS C:\Users\admin\Desktop\mandiant>
Connect-MandiantAzureEnvironment -UserPrincipalName <su nombre de usuario aquí>. Debería recibir un mensaje de inicio de sesión y una salida en la ventana de PowerShell indicando que las conexiones se han establecido. Nota: Si tiene problemas, es posible que deba cambiar su política de ejecución ejecutando Set-ExecutionPolicy -ExecutionPolicy RemoteSigned. Esto puede requerir privilegios de administrador.```The module allows access to all existing remote PowerShell (V1) cmdlets in addition to the 9 new, faster, and more reliable cmdlets.
|--------------------------------------------------------------------------| | Old Cmdlets | New/Reliable/Faster Cmdlets | |--------------------------------------------------------------------------| | Get-CASMailbox | Get-EXOCASMailbox | | Get-Mailbox | Get-EXOMailbox | | Get-MailboxFolderPermission | Get-EXOMailboxFolderPermission | | Get-MailboxFolderStatistics | Get-EXOMailboxFolderStatistics | | Get-MailboxPermission | Get-EXOMailboxPermission | | Get-MailboxStatistics | Get-EXOMailboxStatistics | | Get-MobileDeviceStatistics | Get-EXOMobileDeviceStatistics | | Get-Recipient | Get-EXORecipient | | Get-RecipientPermission | Get-EXORecipientPermission | |--------------------------------------------------------------------------|
To get additional information, run: Get-Help Connect-ExchangeOnline or check https://aka.ms/exops-docs
Account Environment TenantId TenantDomain
[email protected] AzureCloud xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test.onm...
5. Ejecute todas las comprobaciones `Invoke-MandiantAllChecks -OutputPath <path\to\output\files>`. También puede ejecutar comprobaciones individuales utilizando el cmdlet específico.
6. Revise la salida en la pantalla y los archivos CSV escritos.
## Lecturas adicionales
Para obtener información adicional de Mandiant sobre UNC2452, consulte:
* [Atacante altamente evasivo aprovecha la cadena de suministro de SolarWinds para comprometer a múltiples víctimas globales con la puerta trasera SUNBURST](https://www.mandiant.com/resources/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor)
* [Estrategias de remediación y endurecimiento para Microsoft 365 para defenderse contra UNC2452](https://www.mandiant.com/resources/remediation-and-hardening-strategies-for-microsoft-365-to-defend-against-unc2452)
La respuesta a UNC2452 ha sido un esfuerzo significativo en toda la industria de la seguridad y estos blogs citan extensamente contribuciones adicionales que serán de valor para los usuarios de esta herramienta. Recomendamos leer el material vinculado de estas publicaciones para comprender mejor la actividad en su entorno. Como siempre, el equipo de Mandiant está disponible para responder preguntas de seguimiento o brindar asistencia adicional en una investigación [contactándonos aquí.](https://www.mandiant.com/report-incident)