Share via


about_Logging

Descripción breve

PowerShell registra las operaciones internas del motor, los proveedores y los cmdlets en el registro de eventos de Windows.

Descripción larga

PowerShell registra detalles sobre las operaciones de PowerShell, como iniciar y detener el motor y los proveedores, y ejecutar comandos de PowerShell.

Nota:

Windows PowerShell 5.1 (y versiones anteriores) incluyen cmdlets eventLog para los registros de eventos de Windows. En esas versiones, para mostrar la lista de cmdlets de EventLog , escriba: Get-Command -Noun EventLog. Para obtener más información, consulte la documentación del cmdlet y about_EventLogs para la versión de Windows PowerShell.

Para obtener información sobre el registro en PowerShell 7, consulte los artículos siguientes:

Visualización de las entradas del registro de eventos de PowerShell en Windows

Los registros de PowerShell se pueden ver mediante el Visor de eventos de Windows. El registro de eventos se encuentra en el grupo Registros de aplicaciones y servicios y se denomina Microsoft-Windows-PowerShell. El proveedor GUID ETW asociado es {A0C1853B-5C40-4B15-8766-3CF1C58F985A}.

Cuando el registro de bloques de scripts está habilitado, PowerShell registra los siguientes eventos en el registro de Microsoft-Windows-PowerShell/Operational :

Campo Value
EventId 4104 / 0x1008
Canal Operational
Nivel Verbose
Código de operación Create
Tarea CommandStart
Palabra clave Runspace

Habilitación del registro de bloques de scripts

Al habilitar el registro de bloques de scripts, PowerShell registra el contenido de todos los bloques de script que procesa. Una vez habilitada, cualquier nueva sesión de PowerShell registra esta información.

Nota:

Para asegurarse de que los datos confidenciales están protegidos, habilite el registro de eventos protegidos al usar el registro de bloques de scripts para cualquier otro propósito que no sea de diagnóstico.

El registro de bloques de script se puede habilitar a través de la directiva de grupo o una configuración del Registro.

Uso de la directiva de grupo

Para habilitar la transcripción automática, habilite la característica Activar el registro de bloques de scripts de PowerShell en la directiva de grupo a través de Administración plantillasistrative ->Componentes de Windows ->Windows PowerShell.

Uso del Registro

Ejecute la siguiente función:

function Enable-PSScriptBlockLogging {
    $basePath = @(
        'HKLM:\Software\Policies\Microsoft\Windows'
        'PowerShell\ScriptBlockLogging'
    ) -join '\'

    if (-not (Test-Path $basePath)) {
        $null = New-Item $basePath -Force
    }

    Set-ItemProperty $basePath -Name EnableScriptBlockLogging -Value "1"
}

Registro de eventos protegidos

Aumentar el nivel de registro en un sistema aumenta la posibilidad de que el contenido registrado pueda contener datos confidenciales. Por ejemplo, con el registro de scripts habilitado, las credenciales u otros datos confidenciales utilizados por un script se pueden escribir en el registro de eventos. Cuando una máquina que ha registrado datos confidenciales está en peligro, los registros pueden proporcionar a un atacante información necesaria para ampliar su alcance.

Para proteger esta información, Windows 10 presenta el registro de eventos protegidos. El registro de eventos protegido permite a las aplicaciones participantes cifrar los datos confidenciales escritos en el registro de eventos. Más adelante, puede descifrar y procesar estos registros en un recopilador de registros más seguro y centralizado.

El contenido del registro de eventos está protegido mediante el estándar de sintaxis de mensajes criptográficos (CMS) de IETF. CMS usa criptografía de clave pública. Las claves usadas para cifrar el contenido y descifrar el contenido se mantienen independientes.

La clave pública se puede compartir ampliamente y no es información confidencial. Cualquier contenido cifrado con esta clave pública solo se puede descifrar mediante la clave privada. Para obtener más información sobre la criptografía de clave pública, vea Wikipedia - Criptografía de clave pública.

Para habilitar una directiva de registro de eventos protegidos, implemente una clave pública en todas las máquinas que tengan datos de registro de eventos para proteger. La clave privada correspondiente se usa para posprocesar los registros de eventos en una ubicación más segura, como un recopilador de registros de eventos central o un agregador SIEM . Puede configurar SIEM en Azure. Para obtener más información, consulte Integración de SIEM genérica.

Habilitación del registro de eventos protegido a través de la directiva de grupo

Para habilitar el registro de eventos protegidos, habilite la característica en la Enable Protected Event Logging directiva de grupo a través Administrative Templates -> Windows Components -> Event Loggingde . Esta configuración requiere un certificado de cifrado, que puede proporcionar en uno de varios formularios:

  • Contenido de un certificado X.509 codificado en base 64 (por ejemplo, como ofrece la Export opción en el Administrador de certificados).
  • Huella digital de un certificado que se puede encontrar en el almacén de certificados del equipo local (puede implementarse mediante la infraestructura de PKI).
  • Ruta de acceso completa a un certificado (puede ser local o un recurso compartido remoto).
  • Ruta de acceso a un directorio que contiene un certificado o certificados (puede ser local o un recurso compartido remoto).
  • El nombre del firmante de un certificado que se puede encontrar en el almacén de certificados del equipo local (se puede implementar mediante la infraestructura de PKI).

El certificado resultante debe tener Document Encryption como uso mejorado de clave (1.3.6.1.4.1.311.80.1) y usos de Data Encipherment clave habilitados Key Encipherment .

Advertencia

La clave privada no se debe implementar en los eventos de registro de máquinas. Debe mantenerse en una ubicación segura donde descifre los mensajes.

Descifrar mensajes de registro de eventos protegidos

El script siguiente recupera y descifra eventos, suponiendo que tenga la clave privada:

Get-WinEvent Microsoft-Windows-PowerShell/Operational |
    Where-Object Id -eq 4104 |
    Unprotect-CmsMessage

Consulte también