Skip to main content
Corelog

Detección de anomalías — referencia técnica

Corelog ejecuta 11 heurísticas contra el registro de auditoría cargado. Cada heurística está mapeada a una técnica de MITRE ATT&CK. A continuación se detallan sus criterios exactos de detección.

Viaje imposible

Alto
T1078 — Cuentas válidas

Se activa cuando dos inicios de sesión consecutivos del mismo usuario provienen de países cuyos centroides geográficos están a más de 1.000 km de distancia y están separados por menos de 1 hora. La distancia se calcula con la fórmula de Haversine sobre códigos ISO-3166-1 alfa-2. Se genera una bandera en ambos eventos. Solo la autenticación interactiva cuenta como prueba de dónde estuvo una persona: UserLoggedIn, UserLoginFailed, SignInEvent, PasswordLogonInitialAuthUsingPassword, TeamsSessionStarted y EmailAuthOTPAuthenticationSucceeded. Las operaciones de archivo y correo se excluyen porque su IP suele ser infraestructura de Microsoft actuando en nombre del usuario (sincronización en segundo plano, indexado, notificaciones móviles), lo que haría parecer que cada buzón se teletransporta entre centros de datos. El país se resuelve desde la IP del cliente contra una base de datos local; el campo GeoLocation de Purview solo se usa cuando contiene realmente un código de país, ya que en SharePoint lleva la región multi-geo del centro de datos. Indica una credencial usada desde dos ubicaciones físicamente incompatibles: normalmente credenciales robadas o una VPN/proxy enmascarando el origen real.

Acceso fuera de horario

Medio
T1078.004 — Cuentas en la nube

Se activa en cada evento cuya marca de tiempo UTC se encuentre en la ventana 22:00–06:00. No requiere ninguna línea base de usuario; la regla se aplica de forma uniforme. La ventana está fijada en UTC para evitar falsos negativos dependientes del huso horario en entornos globales. Una actividad inusualmente elevada fuera de horario —especialmente en operaciones de acceso o eliminación de datos— es un indicador habitual de un atacante que opera desde otra zona horaria o de una amenaza interna que actúa fuera del horario supervisado.

Operaciones masivas

Alto / Crítico
T1567 / T1485 — Exfiltración web / Destrucción de datos

Se activa cuando el mismo usuario realiza la misma operación ≥20 veces dentro de una ventana deslizante de 60 segundos. Se usa un algoritmo de ventana deslizante (dos punteros) para evitar complejidad O(n²). Si la operación pertenece a la categoría Deletion, la bandera se mapea a T1485 (Destrucción de datos, Crítico); en caso contrario a T1567 (Exfiltración vía servicio web, Alto). Activadores típicos: descarga masiva de archivos, eliminación en masa de elementos de buzón o scripts automatizados creando numerosos enlaces de compartición.

Dispositivo no administrado

Medio
T1078 — Cuentas válidas

Se activa cuando un evento con isManagedDevice === false implica una operación sensible. Las operaciones sensibles son: FileDownloaded, FileSyncDownloadedFull, FileSyncUploadedFull, FileRecycled, FileDeleted, AnonymousLinkCreated, SharingInvitationCreated, CompanyLinkCreated, SharingSet — o cualquier evento de las categorías Deletion, Sharing o Modification. Los dispositivos no administrados eluden las directivas de Acceso Condicional y los controles MDM, convirtiéndolos en un vector habitual tanto para atacantes externos como para amenazas internas.

Nueva geografía

Medio
T1078 — Cuentas válidas

Se activa en el primer inicio de sesión en el que un usuario aparece desde un país no observado antes para ese usuario en el conjunto de datos. Los eventos se procesan en orden cronológico; el primer evento de cada país establece la línea base, de modo que solo las apariciones posteriores generan bandera. Usa la misma regla de evidencia que Viaje imposible: solo cuentan los eventos de autenticación interactiva, porque el acceso de servicio en segundo plano originado en un centro de datos de Microsoft no es el usuario apareciendo en un país nuevo. El país se resuelve desde la IP del cliente contra una base de datos local. Un único evento de nueva geografía aporta poca señal por sí solo; combinado con banderas de fuera de horario u operaciones masivas es un fuerte indicador de compromiso de cuenta.

Aplicación nueva

Bajo
T1550 — Uso de material de autenticación alternativo

Se activa la primera vez que un usuario genera eventos atribuidos a una aplicación (appDisplayName o clientAppName) no observada previamente para ese usuario en el conjunto de datos. Los eventos se procesan cronológicamente. La bandera no se genera para la primera aplicación que un usuario usa, solo para las siguientes nuevas. Las herramientas de atacantes (p. ej. AADInternals, ROADtools) suelen autenticarse con IDs de aplicación poco comunes o no documentados, lo que convierte esta señal de bajo ruido en útil cuando se combina con otras anomalías.

Nuevo dispositivo

Medio
T1078 — Cuentas válidas

Se activa la primera vez que un usuario genera eventos desde un identificador de dispositivo (machineId o deviceName) no observado previamente para ese usuario en el conjunto de datos. Los eventos se procesan cronológicamente. El dispositivo solo se considera 'nuevo' si el usuario tiene al menos un evento previo en un dispositivo conocido diferente. Un nuevo dispositivo junto con banderas de fuera de horario o viaje imposible sugiere fuertemente el compromiso de cuenta o un atacante operando con credenciales clonadas en una máquina nueva.

Ráfaga de compartición externa

Alto
T1567.002 — Exfiltración a almacenamiento en la nube

Se activa cuando un usuario crea o modifica ≥5 enlaces de compartición o invitaciones en una ventana deslizante de 10 minutos. Operaciones rastreadas: AnonymousLinkCreated, SharingSet, CompanyLinkCreated, SharingInvitationCreated, AddedToSecureLink. Se agrupa por usuario con ventana deslizante de dos punteros. Este patrón es característico de la preparación previa a la exfiltración, donde el atacante crea en masa enlaces anónimos o de invitado para sacar datos del tenant sin activar directivas DLP diseñadas para descargas directas.

Regla de reenvío de buzón

Crítico
T1114.003 — Regla de reenvío de correo

Se activa cuando se detecta una operación New-InboxRule o Set-InboxRule y el JSON bruto de AuditData contiene alguna de las siguientes palabras clave (sin distinción de mayúsculas/minúsculas): forwardto, forwardasattachmentto, redirectto, forwardsmssto. Esta heurística detecta la creación o modificación de reglas de bandeja de entrada que copian o redirigen silenciosamente el correo entrante a una dirección externa — una técnica de persistencia clásica en el Compromiso de Correo Empresarial (BEC) que sobrevive a cambios de contraseña.

Manipulación del registro de auditoría

Crítico
T1562.008 — Desactivar o modificar registros en la nube

Se activa cuando se ejecuta Set-AdminAuditLogConfig, Set-MailboxAuditBypassAssociation o Set-OrganizationConfig y el JSON bruto de AuditData contiene palabras clave de intención de desactivación como UnifiedAuditLogIngestionEnabled, AdminAuditLogEnabledOption, AuditBypass, o campos JSON con enabled: false / adminAuditEnabled: false / mailboxAuditEnabled: false. Desactivar el registro de auditoría es una técnica de evasión de defensas utilizada por atacantes sofisticados para suprimir evidencias de acciones posteriores.

Clúster de anomalías de autenticación

Alto
T1110 — Fuerza bruta

Se activa cuando ≥10 direcciones IP de origen distintas generan eventos de autenticación (UserLoggedIn, UserLoginFailed, PasswordLogonInitial) dentro de una ventana deslizante global de 5 minutos sobre todos los usuarios. La ventana no está acotada por usuario: analiza el tenant completo. Un número elevado de IPs distintas realizando autenticaciones en un intervalo corto es la firma canónica de un ataque de atomización de contraseñas (password spray), donde el adversario rota las IPs de origen para eludir los límites de velocidad por IP.

Behavior Shifts

Behavior Shifts es una capa de detección complementaria e independiente que se ejecuta junto con las heurísticas basadas en reglas. En lugar de buscar acciones malintencionadas conocidas, utiliza detección estadística de cambios de punto (change-point detection) para responder a la pregunta: ¿cambió significativamente el patrón de actividad general de este usuario en algún momento del conjunto de datos? Un shift no implica automáticamente actividad maliciosa, pero acota la ventana de investigación: se sabe exactamente cuándo cambió el patrón y se pueden revisar los eventos alrededor de ese bucket.

El motor utiliza segmentación binaria (Binary Segmentation) con una prueba F de significancia estadística (p < 0.05). Para cada usuario, agrega los eventos en buckets de tiempo y luego divide recursivamente la serie en el punto que maximiza la reducción de la suma de residuos al cuadrado. Cada división candidata se valida con una prueba F (H0: media única en todo el segmento; H1: dos medias distintas). Las divisiones que no alcanzan el umbral de significancia se descartan. La recursión continúa en ambas mitades hasta que no se encuentran más divisiones significativas o el segmento es demasiado corto (mínimo 3 buckets por lado). Cada cambio de punto detectado se reclasifica en uno de tres tipos y se asigna un nivel de confianza (bajo / medio / alto) derivado del p-valor de la prueba F.

Cambio de nivel

Prueba F: F = MSR / MSE donde MSR = SSR_completo − SSR_split (gl=1), MSE = SSR_split / (n−2). Magnitud = ((μ_después − μ_antes) / μ_antes) × 100. Confianza a partir del p-valor: alto p<0,001, medio p<0,01, bajo p<0,05.

La media de actividad cambió de forma sostenida entre dos segmentos consecutivos — por ejemplo, un usuario que promediaba 5 eventos/bucket de repente sostiene 40 eventos/bucket. La magnitud se expresa como el cambio porcentual con signo entre las dos medias: ((mediaDespués − mediaAntes) / mediaAntes) × 100. Una magnitud negativa indica que el usuario quedó inactivo; positiva indica un pico. Este es el tipo de shift más frecuente y cubre tanto la aceleración previa a la exfiltración como la dormiencia repentina tras un restablecimiento de contraseña.

Cambio de tendencia

t de Welch sobre pendientes: t = |b_antes − b_después| / √(EE_antes² + EE_después²) donde b = pendiente por mínimos cuadrados y EE = error estándar de la pendiente. Reclasificado desde cambio de nivel cuando diferenciaPendientes > diferenciaMedias y p < 0,05.

En lugar de un cambio escalonado en la media, la pendiente de la serie cambió de dirección o aceleración. Tras identificar una división candidata mediante segmentación binaria, una prueba t de Welch compara las pendientes de regresión lineal a ambos lados. Si la diferencia de pendientes domina sobre la diferencia de nivel y es estadísticamente significativa, el punto se reclasifica de cambio de nivel a cambio de tendencia. Ejemplos típicos: una rampa lineal de acceso a datos que se invierte repentinamente (forma de V), o una tasa de descargas en aceleración que se estabiliza abruptamente.

Cambio de volatilidad

F = Var(después) / Var(antes) — prueba F bilateral de igualdad de varianzas (estilo Levene). Confianza a partir del p-valor: alto p<0,001, medio p<0,01, bajo p<0,05.

La media de actividad es similar en ambos lados de la división, pero la varianza cambió significativamente: el usuario se volvió errático (ráfagas) o inusualmente constante. Se detecta con una prueba F de igualdad de varianzas (estilo Levene) entre segmentos adyacentes identificados por la segmentación binaria. Para evitar falsos positivos en series de baja actividad y ruido alto, los cambios de volatilidad solo se reportan cuando la diferencia de nivel es inferior al 30% de la media del segmento. La magnitud se expresa como el cociente de varianzas: varianzaDespués / varianzaAntes.

Spike

z = (x_i − μ) / σ — donde μ y σ son la media y desviación estándar de toda la serie del usuario. Umbral: z ≥ 2,5. Confianza: alto z≥4, medio z≥3, bajo z≥2,5. p-valor aproximado mediante la función de supervivencia normal de Abramowitz & Stegun.

Detecta buckets aislados donde la actividad es inusualmente alta respecto a la línea base del usuario, sin requerir un cambio sostenido. El z-score mide cuántas desviaciones estándar por encima de la media global del usuario se encuentra ese bucket. Para evitar doble marcado, los spikes se suprimen si ya existe un cambio de nivel u otro change point dentro de ±1 bucket. La magnitud es el propio z-score. Este tipo es complementario al cambio de nivel: detecta eventos puntuales (descarga masiva, intento de exfiltración repentino) que no alteran la media a largo plazo.