Acerca de las ventanas de registroAbout Logging Windows

Descripción breveShort description

PowerShell registra las operaciones internas del motor, los proveedores y los cmdlets en el registro de eventos de Windows.PowerShell logs internal operations from the engine, providers, and cmdlets to the Windows event log.

Descripción largaLong description

PowerShell registra detalles acerca de las operaciones de PowerShell, como el inicio y la detención del motor y los proveedores, y la ejecución de comandos de PowerShell.PowerShell logs details about PowerShell operations, such as starting and stopping the engine and providers, and executing PowerShell commands.

Nota

Las versiones 3,0, 4,0, 5,0 y 5,1 de Windows PowerShell incluyen cmdlets EventLog para los registros de eventos de Windows.Windows PowerShell versions 3.0, 4.0, 5.0, and 5.1 include EventLog cmdlets for the Windows event logs. En esas versiones, para mostrar la lista de cmdlets de registro de eventos , escriba: Get-Command -Noun EventLog .In those versions, to display the list of EventLog cmdlets type: Get-Command -Noun EventLog. Para obtener más información, consulte la documentación del cmdlet y about_EventLogs para su versión de Windows PowerShell.For more information, see the cmdlet documentation and about_EventLogs for your version of Windows PowerShell.

Ver las entradas del registro de eventos de PowerShell en WindowsViewing the PowerShell event log entries on Windows

Los registros de PowerShell se pueden ver mediante el Visor de eventos de Windows.PowerShell logs can be viewed using the Windows Event Viewer. El registro de eventos se encuentra en el grupo registros de aplicaciones y servicios y se denomina PowerShellCore .The event log is located in the Application and Services Logs group and is named PowerShellCore. El proveedor ETW asociado GUID es {f90714a8-5509-434a-bf6d-b1624c8a19a2} .The associated ETW provider GUID is {f90714a8-5509-434a-bf6d-b1624c8a19a2}.

Cuando el registro de bloque de script está habilitado, PowerShell registra los siguientes eventos en el PowerShellCore/Operational registro:When Script Block Logging is enabled, PowerShell logs the following events to the PowerShellCore/Operational log:

CampoField ValorValue
EventIdEventId 4104 / 0x1008
CanalChannel Operational
NivelLevel Verbose
Código de operaciónOpcode Create
TareaTask CommandStart
Palabra claveKeyword Runspace

Registrar el proveedor de eventos de PowerShell en WindowsRegistering the PowerShell event provider on Windows

A diferencia de Linux o macOS, Windows requiere que se registre el proveedor de eventos antes de que se puedan escribir eventos en el registro de eventos.Unlike Linux or macOS, Windows requires the event provider to be registered before events can be written to the event log. Para habilitar el proveedor de eventos de PowerShell, ejecute el siguiente comando desde un símbolo del sistema de PowerShell con privilegios elevados.To enable the PowerShell event provider, run the following command from an elevated PowerShell prompt.

$PSHOME\RegisterManifest.ps1

Anular el registro del proveedor de eventos de PowerShell en WindowsUnregistering the PowerShell event provider on Windows

El registro del proveedor de eventos coloca un bloqueo en la biblioteca binaria que se usa para descodificar eventos.Registering the event provider places a lock in the binary library used to decode events. Para actualizar esta biblioteca, se debe anular el registro del proveedor para liberar este bloqueo.To update this library, the provider must be unregistered to release this lock.

Para anular el registro del proveedor de PowerShell, ejecute el siguiente comando desde un símbolo del sistema de PowerShell con privilegios elevados.To unregister the PowerShell provider, run the following command from an elevated PowerShell prompt.

$PSHOME\RegisterManifest.ps1 -Unregister

Después de actualizar PowerShell, ejecute $PSHOME\RegisterManifest.ps1 para registrar el proveedor de eventos actualizado.After updating PowerShell, run $PSHOME\RegisterManifest.ps1 to register the updated event provider.

Habilitar el registro de bloque de scriptEnabling Script Block Logging

Cuando se habilita el registro de bloques de scripts, PowerShell registra el contenido de todos los bloques de scripts que procesa.When you enable Script Block Logging, PowerShell records the content of all script blocks that it processes. Una vez habilitada, cualquier nueva sesión de PowerShell registra esta información.Once enabled, any new PowerShell session logs this information.

Nota

Se recomienda habilitar el registro de eventos protegido, como se describe a continuación, cuando se usa el registro de bloques de scripts para cualquier elemento que no sea el diagnóstico.It's recommended to enable Protected Event Logging, as described below, when using Script Block Logging for anything other than diagnostics purposes.

El registro de bloque de script se puede habilitar a través de directiva de grupo o una configuración del registro.Script Block Logging can be enabled via Group Policy or a registry setting.

Uso de la directiva de grupoUsing Group Policy

Para habilitar la transcripción automática, habilite la Turn on PowerShell Script Block Logging característica en Directiva de grupo a través de Administrative Templates -> Windows Components -> Windows PowerShell .To enable automatic transcription, enable the Turn on PowerShell Script Block Logging feature in Group Policy through Administrative Templates -> Windows Components -> Windows PowerShell.

Usar el registroUsing the Registry

Ejecute la siguiente función:Run the following function:

function Enable-PSScriptBlockLogging
{
    $basePath = 'HKLM:\Software\Policies\Microsoft\Windows' +
      '\PowerShell\ScriptBlockLogging'

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

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

Registro de eventos protegidosProtected Event Logging

Aumentar el nivel de registro en un sistema aumenta la posibilidad de que el contenido registrado pueda contener datos confidenciales.Increasing the level of logging on a system increases the possibility that logged content may contain sensitive data. Por ejemplo, con el registro de script habilitado, las credenciales u otros datos confidenciales utilizados por un script se pueden escribir en el registro de eventos.For example, with script logging enabled, credentials or other sensitive data used by a script can be written to the event log. Cuando un equipo que tiene datos confidenciales registrados está en peligro, los registros pueden proporcionar a un atacante la información necesaria para ampliar su alcance.When a machine that has logged sensitive data is compromised, the logs can provide an attacker with information needed to extend their reach.

Para proteger esta información, Windows 10 incluye el registro de eventos protegidos.To protect this information, Windows 10 introduces Protected Event Logging. El registro de eventos protegidos permite a las aplicaciones participantes cifrar datos confidenciales escritos en el registro de eventos.Protected Event Logging lets participating applications encrypt sensitive data written to the event log. Más adelante, puede descifrar y procesar estos registros en un recopilador de registros más seguro y centralizado.Later, you can decrypt and process these logs on a more secure and centralized log collector.

El contenido del registro de eventos está protegido mediante el estándar de sintaxis de mensajes criptográficos (CMS) de IETF.Event log content is protected using the IETF Cryptographic Message Syntax (CMS) standard. CMS usa la criptografía de clave pública.CMS uses public key cryptography. Las claves utilizadas para cifrar el contenido y descifrar el contenido se mantienen separadas.The keys used to encrypt content and decrypt content are kept separate.

La clave pública se puede compartir ampliamente y no es información confidencial.The public key can be shared widely and isn't sensitive data. Cualquier contenido cifrado con esta clave pública solo se puede descifrar mediante la clave privada.Any content encrypted with this public key can only be decrypted by the private key. Para obtener más información acerca de la criptografía de clave pública, consulte Wikipedia: criptografía de clave pública.For more information about Public Key Cryptography, see Wikipedia - Public Key Cryptography.

Para habilitar una directiva de registro de eventos protegida, implemente una clave pública en todas las máquinas que tengan datos de registro de eventos para proteger.To enable a Protected Event Logging policy, deploy a public key to all machines that have event log data to protect. La clave privada correspondiente se usa para realizar el procesamiento posterior de los registros de eventos en una ubicación más segura, como un recopilador de registros de eventos central o un agregador Siem .The corresponding private key is used to post-process the event logs at a more secure location such as a central event log collector, or SIEM aggregator. Puede configurar SIEM en Azure.You can set up SIEM in Azure. Para obtener más información, vea integración de Siem genérica.For more information, see Generic SIEM integration.

Habilitación del registro de eventos protegidos a través de directiva de grupoEnabling Protected Event Logging via Group Policy

Para habilitar el registro de eventos protegido, habilite la Enable Protected Event Logging característica en Directiva de grupo a través de Administrative Templates -> Windows Components -> Event Logging .To enable Protected Event Logging, enable the Enable Protected Event Logging feature in Group Policy through Administrative Templates -> Windows Components -> Event Logging. Esta configuración requiere un certificado de cifrado, que puede proporcionar en una de varias formas:This setting requires an encryption certificate, which you can provide in one of several forms:

  • Contenido de un certificado X. 509 codificado en base 64 (por ejemplo, tal y como lo ofrece la Export opción en el administrador de certificados).The content of a base-64 encoded X.509 certificate (for example, as offered by the Export option in Certificate Manager).
  • La huella digital de un certificado que se puede encontrar en el almacén de certificados del equipo local (se puede implementar mediante la infraestructura de PKI).The thumbprint of a certificate that can be found in the Local Machine certificate store (can be deployed by PKI infrastructure).
  • La ruta de acceso completa a un certificado (puede ser local o un recurso compartido remoto).The full path to a certificate (can be local, or a remote share).
  • La ruta de acceso a un directorio que contiene un certificado o certificados (puede ser local o un recurso compartido remoto).The path to a directory containing a certificate or certificates (can be local, or a remote share).
  • El nombre de sujeto de un certificado que se puede encontrar en el almacén de certificados del equipo local (se puede implementar mediante la infraestructura de PKI).The subject name of a certificate that can be found in the Local Machine certificate store (can be deployed by PKI infrastructure).

El certificado resultante debe tener Document Encryption como uso mejorado de clave ( 1.3.6.1.4.1.311.80.1 ), y Data Encipherment o los Key Encipherment usos de clave habilitados.The resulting certificate must have Document Encryption as an enhanced key usage (1.3.6.1.4.1.311.80.1), and either Data Encipherment or Key Encipherment key usages enabled.

Advertencia

La clave privada no debe implementarse en los eventos de registro de los equipos.The private key shouldn't be deployed to the machines logging events. Debe mantenerse en una ubicación segura donde Descifre los mensajes.It should be kept in a secure location where you decrypt the messages.

Descifrado de mensajes de registro de eventos protegidosDecrypting Protected Event Logging messages

El siguiente script recuperará y descifrará, suponiendo que tiene la clave privada:The following script will retrieve and decrypt, assuming that you have the private key:

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

Consulte tambiénSee also

about_Logging_Non Windowsabout_Logging_Non-Windows

PowerShell el equipo azulPowerShell the Blue Team

Integración de SIEM genéricaGeneric SIEM integration