Skip to content

Glosario

Consumidor de eventos (__EventConsumer)

El objeto WMI que indica qué hacer cuando se dispara un filtro: ejecutar una línea de comandos o un script, escribir un log, un evento o un correo.

Un consumidor de eventos es el qué de una suscripción de eventos WMI: una instancia de una clase derivada de la clase de sistema __EventConsumer. Cuando el filtro de eventos al que está enlazado coincide con un evento, WMI entrega el evento al consumidor, que realiza su acción. Windows incluye cinco clases de consumidor estándar en root\subscription:

  • CommandLineEventConsumer inicia un proceso.
  • ActiveScriptEventConsumer ejecuta VBScript o JScript en scrcons.exe.
  • LogFileEventConsumer añade una línea de texto a un archivo.
  • NTEventLogEventConsumer escribe una entrada en el registro de eventos de Windows.
  • SMTPEventConsumer envía un correo electrónico.

Por qué importa en una investigación

Los consumidores permanentes se ejecutan como SYSTEM y sobreviven a los reinicios. Los dos primeros ejecutan código arbitrario, por eso casi toda la persistencia WMI los utiliza; los otros tres pueden filtrar datos o prestarse a abusos, pero no ejecutan una carga útil por sí mismos. Un consumidor solo actúa cuando un __FilterToConsumerBinding lo conecta a un filtro, así que un consumidor sin enlace es inerte, aunque sigue mostrando lo que alguien preparó o dejó atrás.

El software también puede definir sus propias clases de consumidor. Los agentes de endpoint y las herramientas de administración lo hacen, y esa es una de las razones por las que una suscripción que no forma parte de los valores predeterminados de Windows no es automáticamente maliciosa. Las clases personalizadas son más difíciles de decodificar sin las definiciones de clase del propio repositorio, así que recopile el repositorio completo, no solo OBJECTS.DATA.

Ejemplo

El propio Windows instala un consumidor en Vista y versiones posteriores, el benigno SCM Event Log consumer:

NTEventLogEventConsumer.Name="SCM Event Log Consumer"
    SourceName            = "Service Control Manager"
    NameOfUserSIDProperty = "sid"

Está enlazado al SCM Event Log Filter y solo escribe entradas en el registro de eventos. El mismo nombre en otra clase, como un CommandLineEventConsumer, sería una señal de alarma.

Términos relacionados

WMI Parser muestra cada consumidor de un repositorio recopilado con su clase, sus propiedades y sus enlaces. Para ver cómo funcionan juntos los tres objetos, lea Persistencia WMI por suscripción de eventos, explicada.