Cómo recopilar los registros, las transcripciones y el historial de PowerShell
Adquiera los registros de eventos de PowerShell, el historial de PSReadLine y las transcripciones desde un host en vivo, una colección de triaje o una imagen de disco, con comandos listos para copiar y los errores más habituales.
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 PowerShelly 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.