¿Cómo puedo realizar un seguimiento de los comandos de PowerShell ejecutados dentro de una red?

0

I wanto para rastrear los comandos de PowerShell que son ejecutados por los usuarios en la intranet. ¿Cómo puedo hacer esto?

Necesito la información del usuario y sus comandos ejecutados. ¿Es posible?

Edición 1: supongo que puedo usar;

Set-PSDebug -Trace 1

¿Cómo puedo crear un script que luego pueda implementar en toda la intranet? También uso un orquestador.

Edición 2: lo intenté;

$created = Get-WinEvent -FilterHashtable @{ ProviderName="Microsoft-Windows-PowerShell"; Id = 4104 } #| Where-Object { $_.<...> }
$sortedScripts = $created | sort { $_.Properties[0].Value }
$mergedScript = -join ($sortedScripts | % { $_.Properties[2].Value })

Y obtuve esta salida;

DEBUG:    1+  >>>> $created = Get-WinEvent -FilterHashtable @{ ProviderName="Microsoft-Windows-PowerShell"; Id = 4104 }# | Where-Object { $_.<...> }

DEBUG:    2+  >>>> $sortedScripts = $created | sort { $_.Properties[0].Value }

DEBUG:    2+ $sortedScripts = $created | sort  >>>> { $_.Properties[0].Value }

DEBUG:    2+ $sortedScripts = $created | sort {  >>>> $_.Properties[0].Value }

DEBUG:    2+ $sortedScripts = $created | sort { $_.Properties[0].Value  >>>> }

DEBUG:    2+ $sortedScripts = $created | sort  >>>> { $_.Properties[0].Value }

DEBUG:    2+ $sortedScripts = $created | sort {  >>>> $_.Properties[0].Value }

DEBUG:    2+ $sortedScripts = $created | sort { $_.Properties[0].Value  >>>> }

DEBUG:    2+ $sortedScripts = $created | sort  >>>> { $_.Properties[0].Value }

DEBUG:    2+ $sortedScripts = $created | sort {  >>>> $_.Properties[0].Value }

DEBUG:    2+ $sortedScripts = $created | sort { $_.Properties[0].Value  >>>> }

DEBUG:    2+ $sortedScripts = $created | sort  >>>> { $_.Properties[0].Value }

DEBUG:    2+ $sortedScripts = $created | sort {  >>>> $_.Properties[0].Value }...

Comenté los códigos de canalización porque no pude obtener "$ _. < ... >" parámetro.

Edit 3: Esto funciona perfectamente; Primero escribí el Bloqueo de código de habilitación de ScriptBlock de Microsoft

function Enable-PSScriptBlockLogging {
    [CmdletBinding()]
    param ()
    $BasePath = "HKLM:\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging"

    if (-not (Test-Path $BasePath)) {
        Write-Verbose "ScriptBlockLogging registry key doesn't exist. Creating now."
        $null = New-Item $BasePath –Force

        Write-Verbose "Setting registry key value to 1 of type DWORD."
        $null = New-ItemProperty $BasePath -Name EnableScriptBlockLogging -Value "1" -PropertyType DWORD
    } else {
        if ((Get-ItemProperty -Path $BasePath).EnableScriptBlockLogging.getType().Name -eq 'Int32') {
            Write-Verbose "Key exists, updating value to 1."
            Set-ItemProperty $BasePath -Name EnableScriptBlockLogging -Value "1"
        } else {
            Write-Verbose "Key exists of wrong data type, removing existing entry."
            Remove-ItemProperty $BasePath -Name EnableScriptBlockLogging

            Write-Verbose "Setting new registry key value to 1 of type DWORD."
            $null = New-ItemProperty $BasePath -Name EnableScriptBlockLogging -Value "1" -PropertyType DWORD
        }
    }
}

Luego, cuando abro el Visor de eventos GOTCHA! Los registros se ven perfectamente. Ahora necesito administrar estos registros con PowerShell.

    
pregunta Umut Gür 20.02.2018 - 12:44
fuente

2 respuestas

1

PowerShell Script Block Logging podría ser útil.

No lo he probado todavía, por lo que no sé cómo puedes rastrear la información del usuario, pero seguramente rastrea los comandos ejecutados.

Aquí hay un enlace a Microsoft Docs sobre cómo habilitarlo: Seguimiento y registro de scripts . Y aquí hay otra información más amplia sobre auditoría y registro: Práctica seguridad de PowerShell: habilite la auditoría y el registro con DSC . De lo contrario, solo busque Script Block Logging .

    
respondido por el PatrikN 20.02.2018 - 13:54
fuente
0

Puedes buscar Windows Security EventID 4688: Proceso creado: enlace

Combine esto con "Incluir línea de comandos en los eventos de creación de procesos" en la siguiente política de grupo: Plantillas administrativas \ Sistema \ Creación de procesos de auditoría

Para obtener más detalles, enlace

Por último, puede ver cómo usa Sysmon, específicamente EventID 1: Process create. Este evento también rastreará el subproceso creado por otros programas.

    
respondido por el mihiriath 21.06.2018 - 16:41
fuente

Lea otras preguntas en las etiquetas