Skip to content

Recopilar logs, transcripciones e historial de PowerShell

Obtenga los registros de eventos de PowerShell, el historial de PSReadLine y las transcripciones de un host en vivo, triaje o imagen de disco, con comandos.

Publicado el 2 min de lectura

En resumen. En un host en vivo, exporte los dos registros de eventos de PowerShell con wevtutil epl (una copia simple falla, porque el servicio los mantiene abiertos) y copie con robocopy los *_history.txt y PowerShell_transcript.*.txt de cada usuario. También puede obtenerlos con KAPE / Velociraptor, o desde una imagen montada. Conserve la ruta Users\<name>\ para que el historial y las transcripciones queden atribuidos. Después, analícelos en su navegador. La zona de carga ofrece los mismos comandos con botones para copiarlos.

Host en vivo (lo más rápido)

Ejecute Windows PowerShell como administrador:

New-Item -ItemType Directory -Force C:\triage\logs | Out-Null
wevtutil epl Microsoft-Windows-PowerShell/Operational "C:\triage\logs\Microsoft-Windows-PowerShell%4Operational.evtx" /ow:true
wevtutil epl "Windows PowerShell" "C:\triage\logs\Windows PowerShell.evtx" /ow:true
wevtutil epl PowerShellCore/Operational "C:\triage\logs\PowerShellCore%4Operational.evtx" /ow:true 2>$null
robocopy C:\Users C:\triage\Users *_history.txt PowerShell_transcript.*.txt /S /XJ /R:0 /W:0 /NP /NDL

La tercera línea recopila el registro de PowerShell 7 si existe (no causa ningún problema si no existe). Después, empaquételo todo en un único archivo con el tar.exe integrado en Windows 10 1803+:

tar -a -c -f C:\triage\powershell.zip -C C:\triage logs Users

Herramientas de triaje

KAPE: el target EventLogs copia todos los .evtx (incluidos los registros de PowerShell) directamente desde el disco; PowerShellConsole y PowerShellTranscripts recopilan los archivos de historial y de transcripción:

kape.exe --tsource C: --tdest C:\triage\kape --target EventLogs,PowerShellConsole,PowerShellTranscripts

Velociraptor: las versiones actuales generan un recopilador offline a partir de Windows.Triage.Targets en la interfaz gráfica, con los mismos targets EventLogs, PowerShellConsole y PowerShellTranscripts. Las versiones más antiguas que todavía incluyen Windows.KapeFiles.Targets pueden ejecutar:

velociraptor.exe artifacts collect Windows.KapeFiles.Targets --args Device=C: --args EventLogs=Y --args PowerShellConsole=Y --args PowerShellTranscripts=Y --output C:\triage\powershell.zip

Ambos nombres de target se han verificado con el Velociraptor triage collector. Suelte el ZIP de la colección tal cual: los registros que no son de PowerShell se ignoran al cargarlo.

Imagen de disco

Monte la imagen en modo de solo lectura y copie desde winevt\Logs y desde el perfil de cada usuario. En Linux/macOS, con la imagen en /mnt/win:

mkdir -p ~/triage/logs && cp "/mnt/win/Windows/System32/winevt/Logs/Microsoft-Windows-PowerShell%4Operational.evtx" "/mnt/win/Windows/System32/winevt/Logs/Windows PowerShell.evtx" ~/triage/logs/ 2>/dev/null
(cd /mnt/win && find Users \( -iname '*_history.txt' -o -iname 'PowerShell_transcript.*.txt' \) -exec cp --parents {} ~/triage/ \;)

Revise también las instantáneas de volumen (volume shadow copies) de la imagen: una instantánea más antigua puede contener registros que desde entonces se han sobrescrito e historial que se borró posteriormente.

Errores habituales

  • El Script Block Logging (4104) está desactivado de forma predeterminada hasta que se habilita por directiva; aun así, Windows registra los bloques sospechosos con nivel Warning. El registro clásico Windows PowerShell y el historial de PSReadLine están activos de forma predeterminada.
  • El servicio EventLog mantiene los registros abiertos, así que use wevtutil epl, KAPE o Velociraptor, no una copia simple.
  • El historial de PSReadLine no tiene marcas de tiempo y puede ser semanas más antiguo que los registros; considere su orden como la única cronología disponible.
  • Las transcripciones almacenan la hora local sin zona horaria: anote la zona horaria del host antes de correlacionarlas con los registros de eventos en UTC.

Artículos relacionados

Paso a paso: abra .evtx de PowerShell, historial de PSReadLine y transcripciones en un visor web gratuito, reconstruya bloques de script, decodifique y exporte.
Estructura de las transcripciones de PowerShell, qué registra el encabezado, las marcas de tiempo con -IncludeInvocationHeader y cómo investigarlas.
Qué registra el historial de PSReadLine, dónde se encuentra, por qué no tiene marcas de tiempo y cómo usarlo (y cuáles son sus límites) en una investigación.