Qué hace esta herramienta
Azure Forensics es un triaje gratuito de primera respuesta ante un posible compromiso de Azure. Lee los logs que exportas de tu suscripción y responde a una pregunta: ¿hay indicios de ataque en el plano de control (Azure Resource Manager) o en el plano de datos (secretos de Key Vault, blobs de almacenamiento, flujos de red)?
Todo ocurre en tu navegador: un analizador en Rust compilado a WebAssembly lee tus archivos en streaming dentro de un Web Worker. No se sube nada, así que puedes usarlo con logs de producción sensibles.
Logs compatibles
- Activity Log — cada escritura, eliminación y acción a través de Azure Resource Manager: asignaciones de rol, Run Command, generación de SAS, configuraciones de diagnóstico… CSV del portal, JSON de az CLI / REST, AzureActivity de Log Analytics (CSV o JSON), o la exportación a una cuenta de almacenamiento / Event Hubs (insights-activity-logs).
- Logs AuditEvent de Key Vault — quién leyó qué secreto, clave o certificado y desde qué IP (insights-logs-auditevent, o AzureDiagnostics en Log Analytics).
- Logs de blobs de almacenamiento (StorageRead / StorageWrite / StorageDelete, StorageBlobLogs) — acceso a datos, incluidas descargas con SAS y anónimas.
- Flow logs de NSG (v1, v2) y de VNet — conversaciones de red, agregadas por origen, destino y puerto.
- Alertas de Defender for Cloud (exportación REST / JSON o SecurityAlert de Log Analytics).
Cómo se obtiene el veredicto
Cada detección es una regla en un archivo JSON revisable (inspirado en Sigma): eventos individuales (Run Command, configuración de diagnóstico eliminada…), umbrales (descarga masiva de blobs, enumeración de secretos) y reglas de primera aparición que aprenden lo normal durante las primeras 72 horas de tus logs (IP nueva para una entidad de servicio, entidad nueva que lee un almacén, región nueva).
Comprometido: al menos dos hallazgos de gravedad alta (o uno crítico). Sospechoso: al menos un hallazgo medio o alto. Limpio: nada por encima de bajo — lo que solo significa que nada coincidió en los logs proporcionados.
Los hallazgos se vinculan a técnicas de MITRE ATT&CK, a las entidades, IP y recursos implicados, y se sitúan en una cronología del incidente con una lista de remediación.
Detecciones
Las reglas incluidas en la herramienta. Sus identificadores son estables, así que puedes citarlos en tus informes.
| Regla | Detecta | Gravedad | MITRE ATT&CK |
|---|---|---|---|
| AZ-RBAC-001 | Rol privilegiado asignadoSe concedió Owner, User Access Administrator o RBAC Administrator: esa entidad puede ahora dar acceso a cualquiera. | Media | T1098.003 |
| AZ-RBAC-002 | Identidad no humana con un rol privilegiadoUna entidad de servicio o identidad administrada concedió Owner, Contributor o un rol de gestión de accesos — típico de un secreto de aplicación robado. | Alta | T1098.003 |
| AZ-RBAC-003 | Entidad que se asigna un rol a sí mismaQuien realiza la asignación de rol es también el beneficiario: una escalada de privilegios clásica. | Alta | T1098.003 |
| AZ-RBAC-004 | Acceso elevado a todas las suscripcionesUn Administrador global usó elevateAccess para ser User Access Administrator en la raíz (/). | Alta | T1078.004, T1098.003 |
| AZ-VM-001 | Comando ejecutado en una VM (Run Command)Run Command ejecuta scripts como SYSTEM / root a través del agente de la VM, sin acceso de red a la VM. | Alta | T1651 |
| AZ-VM-002 | Extensión Custom Script implementadaLa extensión descarga y ejecuta un script en la VM. | Alta | T1651 |
| AZ-VM-003 | Conexión a la consola serieAcceso interactivo a la VM que evita los controles de red. | Media | T1651 |
| AZ-VM-004 | VM creada en una región nunca usadaRegión nueva respecto al periodo de aprendizaje: señal habitual de criptominería. | Media | T1496, T1578.002 |
| AZ-VM-005 | Disco o snapshot exportadobeginGetAccess devuelve una URL de descarga de un disco completo. | Alta | T1537, T1578.001 |
| AZ-VM-006 | Snapshot de disco creadoA menudo es el primer paso para copiar un disco fuera de la suscripción. | Baja | T1578.001 |
| AZ-KV-001 | Key Vault leído por una entidad nuevaUna entidad leyó secretos, claves o certificados de un almacén al que nunca accedió durante el periodo de aprendizaje. | Alta | T1555.006 |
| AZ-KV-002 | Enumeración de secretos de Key VaultUna misma entidad leyó muchos secretos distintos de un almacén en menos de una hora. | Alta | T1555.006 |
| AZ-KV-003 | Directiva de acceso de Key Vault modificadaLas directivas de acceso dan acceso a secretos, claves y certificados. | Media | T1098 |
| AZ-KV-004 | Protección de Key Vault debilitada u objetos purgadosEliminación temporal o protección de purga desactivadas, u objetos eliminados de forma permanente. | Alta | T1485, T1562 |
| AZ-ST-001 | Token SAS de almacenamiento generadoUn SAS de cuenta o de servicio es un token al portador que funciona desde cualquier sitio hasta que caduca. | Alta | T1528, T1530 |
| AZ-ST-002 | Claves de la cuenta de almacenamiento listadasLas claves de cuenta dan acceso completo a los datos de la cuenta. | Baja | T1552 |
| AZ-ST-003 | Acceso anónimo a blobs habilitadoLa cuenta o un contenedor sirve ahora blobs sin autenticación. | Alta | T1530 |
| AZ-ST-004 | Firewall del almacenamiento abiertoLas reglas de red aceptan ahora conexiones desde todas las redes. | Media | T1562.007 |
| AZ-ST-005 | Descarga masiva de blobsUna misma identidad descargó muchos blobs distintos desde una misma IP en menos de una hora. | Alta | T1530, T1567 |
| AZ-ST-006 | Lecturas anónimas de blobsSe descargaron blobs sin ninguna autenticación. | Media | T1530 |
| AZ-DE-001 | Configuración de diagnóstico eliminadaUn recurso (Key Vault, almacenamiento, NSG…) dejó de enviar sus logs. | Alta | T1562.008 |
| AZ-DE-002 | Exportación del Activity Log eliminadaLa suscripción dejó de exportar su Activity Log. | Alta | T1562.008 |
| AZ-DE-003 | Plan de Defender for Cloud desactivadoUn plan de Defender volvió al nivel Free. | Alta | T1562.001 |
| AZ-DE-004 | Bloqueo de recurso eliminadoLos bloqueos protegen los recursos contra eliminación o cambios. | Media | T1562 |
| AZ-DE-005 | Regla de NSG abierta a InternetSe creó una regla de entrada que permite cualquier origen / Internet. | Media | T1562.007 |
| AZ-PER-001 | Runbook o webhook de Automation creadoLos runbooks ejecutan código con la identidad (a menudo privilegiada) de la cuenta de Automation. | Media | T1648 |
| AZ-PER-002 | Logic App o Function modificadaEl código serverless puede mantener el acceso y ejecutarse con una identidad administrada. | Baja | T1648 |
| AZ-PER-003 | Credencial federada añadida a una identidad administradaUn proveedor de identidad externo puede ahora obtener tokens para esta identidad. | Alta | T1098.001 |
| AZ-ID-001 | Entidad de servicio usada desde una IP nuevaUna identidad de aplicación llamó a Azure desde una IP nunca vista durante el periodo de aprendizaje. | Media | T1078.004 |
| AZ-ID-002 | Token de identidad administrada usado desde una IP nuevaLa identidad de una VM o aplicación se usó desde otro lugar: probablemente robaron su token. | Alta | T1528, T1078.004 |
| AZ-DEF-001 | Alerta de Defender for CloudMicrosoft Defender for Cloud generó una alerta de seguridad. | Media | |
| AZ-NET-001 | Puerto de administración accesible desde InternetSe permitieron flujos entrantes SSH / RDP / WinRM desde IP públicas. | Media | T1133, T1021 |
| AZ-NET-002 | Conexión a un puerto de mineríaUna VM se conectó a un puerto típico de pools de minería. | Alta | T1496 |
| AZ-NET-003 | Gran transferencia salienteMás de 500 MB salieron de la red hacia una sola IP pública. | Media | T1048 |
| AZ-NET-004 | Tráfico de red con una IP del atacanteLos flow logs muestran tráfico con una IP implicada en otros hallazgos. | Alta | T1105 |
Entra ID (Azure AD) es una investigación aparte
Esta herramienta cubre los planos de control y de datos de Azure. Cómo obtuvo el atacante las credenciales — inicios de sesión, MFA, nuevos secretos de aplicación, consentimientos — está en los logs de Entra ID, que analiza la herramienta hermana: Forense de M365 / Entra ID
Limitaciones
- Solo se puede encontrar lo que se registró: los logs de datos de Key Vault y almacenamiento debían estar activados antes del incidente, y el Activity Log se conserva 90 días.
- Las detecciones de primera aparición necesitan más de 72 horas de historial antes de la actividad sospechosa.
- Las reglas son heurísticas: una automatización legítima puede coincidir con ellas y un atacante cuidadoso puede quedarse bajo los umbrales. Un veredicto limpio no es una garantía.
- Las exportaciones Avro (Event Hubs Capture) y Parquet aún no se leen; exporta en JSON o CSV.
Preguntas frecuentes
¿Se suben mis logs a algún sitio?
No. El analizador está escrito en Rust, compilado a WebAssembly, y se ejecuta en un Web Worker de tu navegador. No existe ningún punto de subida; incluso puedes desconectarte de la red una vez cargada la página.
¿Por qué logs empiezo?
Por el Activity Log de cada suscripción implicada, cubriendo el periodo sospechoso más al menos una semana antes. Añade los logs de Key Vault y almacenamiento si estaban activados, y los flow logs de las VNet afectadas.
¿Cómo sé si un Run Command era malicioso?
El Activity Log registra quién lo ejecutó, cuándo y desde qué IP, pero no siempre el script. Correlaciónalo con los logs de la propia VM (carpeta de la extensión RunCommand), las alertas de Defender y los flujos salientes de la VM justo después.
¿Detecta criptominería?
Señala VM creadas en regiones sin uso previo, conexiones salientes a puertos habituales de pools de minería en los flow logs y alertas de Defender. Revisa también la facturación: la minería suele verse como un pico repentino del coste de cómputo.
¿Qué hago ante un veredicto «Comprometido»?
Primero contener: rotar las credenciales de las entidades implicadas, eliminar las asignaciones de rol que crearon, aislar las VM afectadas y rotar los secretos leídos. Conserva los logs antes de que caduquen. Después investiga el acceso inicial en Entra ID.
¿Puedo reutilizar las reglas de detección?
Sí. Están en un archivo JSON sencillo con identificadores estables, etiquetas de MITRE ATT&CK y claves de remediación, para revisarlas, ampliarlas y reutilizarlas en otras herramientas.
¿Está relacionada con Microsoft?
No. Es una herramienta independiente; Azure solo se menciona para describir qué logs lee.