TLP:CLEARAnálisis defensivo de fuentes públicas. Mecanismo a nivel conceptual: no hay pasos de explotación. Parte de la serie [Nightmare Eclipse](/posts/nightmare-eclipse/).

Resumen ejecutivo#

BlueHammer (CVE-2026-33825, CVSS 7.8) y RedSun (CVE-2026-41091, CVSS 7.8) son dos vulnerabilidades de escalada local de privilegios (LPE) en Microsoft Defender. Un usuario sin privilegios llega a SYSTEM. Los CVE son distintos y las rutas de código también, pero la idea es idéntica y merece entenderse una sola vez: engañar al motor de Defender —que remedia ficheros maliciosos con privilegios de SYSTEM— para que su escritura privilegiada aterrice en C:\Windows\System32 en lugar de en su directorio temporal. A partir de ahí, sobrescribir un binario del sistema y esperar a que Windows lo ejecute como SYSTEM.

El insight que te llevas. No es “hay un bug en Defender”. Es que un proceso de alta integridad que hace una comprobación de ruta y después una escritura, sin revalidar entre ambas, es una primitiva de escalada. Da igual el CVE: parchea uno y el actor reencuentra la misma primitiva por otra puerta (lo hizo — de BlueHammer a RedSun a RoguePlanet). La caza debe apuntar a la clase de comportamiento, no al indicador.

La clase de bug: TOCTOU#

TOCTOU = Time-Of-Check to Time-Of-Use (CWE-367). Es una condición de carrera: un programa comprueba una condición sobre un recurso (¿esta ruta es segura? ¿apunta a mi carpeta temporal?) y más tarde actúa sobre ese recurso (escribe ahí) asumiendo que nada cambió en el intervalo. Si un atacante logra cambiar el recurso entre la comprobación y el uso, el programa actúa sobre algo distinto de lo que validó.

En un proceso normal la ventana entre check y use es de microsegundos y ganarla es difícil. El “arte” del exploit está en ensanchar y controlar esa ventana. Y Windows ofrece dos primitivas legítimas, bien documentadas, para hacerlo:

  • Oplock (opportunistic lock), en su variante batch. Un mecanismo de caché de ficheros de SMB/NTFS que permite a un proceso pedir que se le avise —y que la operación se pause— cuando otro proceso toca un fichero. El atacante lo usa al revés de su propósito: como un freno programable para congelar a Defender exactamente en el instante crítico.
  • Junction point de NTFS. Un tipo de enlace de directorio (reparse point) que redirige una ruta a otra. Un usuario sin privilegios puede crear junctions en directorios donde tiene permiso de escritura —como su propio %TEMP%—.

Combínalas y tienes la receta conceptual: congelar a Defender con el oplock, cambiar bajo sus pies el directorio (que era real) por un junction hacia System32, soltar el freno. Defender reanuda, “sigue” el junction y escribe donde no debía —con sus privilegios, no los tuyos—.

sequenceDiagram
    participant U as Usuario (sin privilegios)
    participant D as Defender (SYSTEM)
    participant FS as Sistema de ficheros
    U->>FS: coloca fichero "malicioso" (dispara detección)
    D->>FS: CHECK — valida ruta de remediación (dir temporal del usuario)
    U->>D: batch oplock — congela la operación en el punto crítico
    Note over U,FS: ventana abierta y controlada
    U->>FS: reemplaza el dir temporal por un JUNCTION → C:\Windows\System32
    U->>D: libera el oplock
    D->>FS: USE — escribe con privilegios SYSTEM... siguiendo el junction
    Note over FS: escritura arbitraria en System32 = escalada a SYSTEM

Dónde difieren BlueHammer y RedSun#

Misma primitiva (oplock + junction), distinta ruta de código dentro de Defender — y eso importa, porque explica por qué parchear uno no mató al otro:

BlueHammer (CVE-2026-33825)RedSun (CVE-2026-41091)
Componente abusadoMotor de remediación de ficherosMecanismo de rollback de cloud files (Windows Cloud Files API)
Naturaleza (NVD)Race condition / TOCTOU en la escritura de remediaciónLink-following (seguimiento de enlace)
GatilloFichero que dispara detección + remediaciónFichero detectado, luego sustituido por un placeholder de cloud file; el abuso ocurre en el rollback
ResultadoEscritura privilegiada en System32 → SYSTEM; acceso a SAMEscritura privilegiada en System32 → SYSTEM
Divulgación / parchePoC ~7-abr-2026 → parche Patch Tuesday abrilPoC ~abril → parche OOB 21-may-2026

RedSun es la prueba de que el actor no dependía de un bug puntual: cuando la ruta de remediación se endureció, se movió a la ruta de rollback de cloud files para alcanzar el mismo primitivo de escritura. Es reencontrar la clase de bug, no un CVE nuevo por suerte.

Impacto: de escritura arbitraria a SAM#

Escritura arbitraria como SYSTEM es game over local, pero conviene ver el eslabón concreto que reportan las fuentes: el acceso de lectura al hive SAM (Security Account Manager), donde viven los hashes de credenciales locales. Con SYSTEM se puede copiar SAM (y SYSTEM/SECURITY), extraer hashes offline y pivotar. Por eso esto no es “solo LPE”: es LPE que habilita robo de credenciales (MITRE T1003.002).

Cómo se vio en la práctica (Huntress)#

En la intrusión de mediados de abril, BlueHammer/RedSun fueron el paso de escalada dentro de una cadena más larga —el acceso inicial fue una VPN FortiGate comprometida, no el zero-day—:

VPN FortiGate comprometida
   → staging: FunnyApp.exe (Pictures\), RedSun.exe, z.exe (Downloads\ks\)
   → recon: whoami /priv · cmdkey /list · net group
   → ESCALADA: BlueHammer / RedSun → SYSTEM → lectura de SAM
   → evasión: UnDefend  → C2: agent.exe (BeigeBurrow) → ransomware

IoCs relevantes de esta pieza (Huntress; los nombres de binario son triviales de cambiar, úsalos como pista, no como muralla):

%USERPROFILE%\Pictures\FunnyApp.exe     (variante BlueHammer)
%USERPROFILE%\Downloads\RedSun.exe
%USERPROFILE%\Downloads\ks\z.exe
Exploit:Win32/DfndrPEBluHmr.BZ          (detección de Defender, cuando no está cegado por UnDefend)

Ingeniería de detección#

Ordenadas de más resiliente a más frágil. La regla que de verdad quieres es la primera.

1. Comportamental — shell hijo de MsMpEng.exe (alta confianza)#

MsMpEng.exe (el servicio de Defender) no lanza shells interactivos. Un cmd.exe/powershell.exe como hijo directo es un artefacto potente de explotación exitosa de esta familia, y no depende de ningún IoC: sobrevive a que el actor renombre binarios.

title: Shell sospechoso lanzado por Microsoft Defender (MsMpEng)
id: ne-bh-001-defender-shell-spawn
status: experimental
description: >
  cmd/powershell/wscript como hijo directo de MsMpEng.exe. Comportamiento
  altamente anómalo; artefacto de explotación de BlueHammer/RedSun/RoguePlanet.
  Resiliente a variantes (no depende de IoCs).
references:
  - https://www.picussecurity.com/resource/blog/bluehammer-redsun-windows-defender-cve-2026-33825-zero-day-vulnerability-explained
author: Serie Nightmare Eclipse — detección defensiva
date: 2026-07-02
tags:
  - attack.privilege_escalation
  - attack.t1068
  - attack.t1059
logsource:
  product: windows
  service: sysmon
detection:
  selection:
    EventID: 1
    ParentImage|endswith: '\MsMpEng.exe'
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\mshta.exe'
  condition: selection
falsepositives:
  - Muy bajo. Validar contra baseline del entorno.
level: critical

Equivalente en KQL (Defender XDR / Sentinel):

DeviceProcessEvents
| where Timestamp > ago(24h)
| where InitiatingProcessFileName =~ "MsMpEng.exe"
| where FileName in~ ("cmd.exe","powershell.exe","pwsh.exe",
                      "wscript.exe","cscript.exe","mshta.exe")
| project Timestamp, DeviceName, FileName, ProcessCommandLine,
          AccountName, InitiatingProcessFileName
| order by Timestamp desc

2. Comportamental — abuso de junction hacia System32 (media-alta)#

La primitiva deja rastro: creación de reparse points/junctions que apuntan a System32 desde procesos de usuario, correlacionada con actividad de Defender. Sysmon no registra junctions de forma directa, pero sí la creación del reparse point vía EventID 11/FileCreate sobre rutas sensibles y EventID 17/18 (pipes) si el PoC usa IPC. Prioriza la señal de escritura inesperada de un binario del sistema:

DeviceFileEvents
| where Timestamp > ago(24h)
| where FolderPath startswith @"C:\Windows\System32\"
| where InitiatingProcessFileName =~ "MsMpEng.exe"
| where ActionType in ("FileCreated","FileModified")
// Defender no debería crear/reescribir binarios en System32:
| where FileName endswith ".exe" or FileName endswith ".dll"
| project Timestamp, DeviceName, FolderPath, FileName,
          InitiatingProcessFileName, InitiatingProcessAccountName

3. IoC-driven — staging de binarios (baja, complementaria)#

Frágil (renombrable), pero barata y útil para correlacionar:

title: Nightmare Eclipse — staging de binario en directorio de usuario
id: ne-bh-002-staging
status: experimental
description: >
  Nombres de binario documentados por Huntress para BlueHammer/RedSun.
  IoC-driven; evadible por renombrado. Usar solo como correlación.
references:
  - https://www.huntress.com/blog/nightmare-eclipse-intrusion
author: Serie Nightmare Eclipse — detección defensiva
date: 2026-07-02
tags:
  - attack.privilege_escalation
  - attack.t1068
logsource:
  product: windows
  service: sysmon
detection:
  selection:
    EventID: 11
    TargetFilename|endswith:
      - '\Pictures\FunnyApp.exe'
      - '\Downloads\RedSun.exe'
      - '\Downloads\ks\z.exe'
  condition: selection
falsepositives:
  - Muy bajo por lo específico de los nombres; nulo valor ante variantes.
level: medium

Mitigación#

AcciónDetalleCubre
Parchear plataforma Defender4.18.26040.7 o superiorBlueHammer, RedSun (y UnDefend)
Patch Tuesday abril 2026Actualización acumulativaBlueHammer
OOB 21-may-2026Actualización de plataforma DefenderRedSun, UnDefend
Tamper ProtectionDificulta manipular DefenderEndurecimiento general
# ¿Estoy cubierto?
(Get-MpComputerStatus).AMProductVersion   # -> 4.18.26040.7 o superior
Get-MpComputerStatus | Select-Object AMEngineVersion, AMProductVersion, `
    AntivirusSignatureLastUpdated, IsTamperProtected
Ojo con la falsa sensación de cobertura. Si UnDefend ya cegó a Defender en el host, la firma DfndrPEBluHmr.BZ no va a saltar aunque BlueHammer se ejecute. Por eso la detección #1 (shell hijo de MsMpEng.exe, que no depende de firmas) es la que importa, y por eso conviene monitorizar fallos de actualización de Defender como señal de UnDefend — el tema del próximo post.

MITRE ATT&CK#

TácticaTécnica
Privilege EscalationT1068 — Exploitation for Privilege Escalation
Defense EvasionT1211 — Exploitation for Defense Evasion (abuso del propio Defender)
Credential AccessT1003.002 — OS Credential Dumping: SAM
ExecutionT1059 — Command and Scripting Interpreter (shell resultante)

Referencias#