Como Ativar e Exportar Logs de Blocos de Script do PowerShell

Como Ativar e Exportar Logs de Blocos de Script do PowerShell

SOC Prime Team
SOC Prime Team linkedin icon Seguir

Os logs do PowerShell Script Block vivem em Logs de Aplicativos e Serviços → Microsoft → Windows → PowerShell → Operacional, como evento 4104. Eles são completos apenas se o log de bloco de script estiver ativado. Para exportá-los:

wevtutil epl "Microsoft-Windows-PowerShell/Operational" C:logspowershell.evtx

O PowerShell 7 é um produto separado com um canal separado, PowerShellCore/Operational, e sua própria política de configuração.

Se um invasor acessou uma caixa do Windows, há grandes chances de que o PowerShell tenha sido usado. A gravação de blocos de script registra o código que realmente foi executado, frequentemente após as camadas de ofuscação terem sido removidas. A Prime Core tem 663 regras de detecção para logs do PowerShell, mapeadas para 417 técnicas do MITRE ATT&CK. Elas cobrem o uso malicioso do PowerShell (T1059.001), ofuscação (T1027) e berços de download que trazem ferramentas (T1105).

Comece Gratuitamente

Antes de começar

O log de bloco de script está ativado?

reg query "HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging"

EnableScriptBlockLogging definido para 0x1 significa sim. Se a chave não existir, está desativado. Mesmo assim, o Windows PowerShell 5.1 ainda registra blocos de script que considera suspeitos, como eventos 4104 em nível de Aviso. Portanto, você pode encontrar alguns eventos. Apenas não os confunda com o quadro completo.

Ativá-lo ajuda a partir de agora, não para o que já aconteceu. Use a configuração de Política de Grupo Modelos Administrativos → Componentes do Windows → Windows PowerShell → Ativar Log de Bloco de Script do PowerShell, ou defina o valor do registro diretamente:

reg add "HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f

O PowerShell 7 lê sua própria chave de política sob HKLMSOFTWAREPoliciesMicrosoftPowerShellCore. Se foi instalado a partir de um zip em vez do MSI, seu canal de eventos pode não estar registrado até você executar RegisterManifest.ps1 do $PSHOME.

Espere volume. Todo script e módulo que é executado acaba no log. Aumente o tamanho máximo do canal ou você manterá apenas algumas horas.

Espere segredos. Scripts de administrador às vezes carregam senhas e chaves de API em texto plano, e o log de bloco de script os registra fielmente. Tenha isso em mente antes de esse arquivo ir para qualquer lugar e leia a seção LogTotal abaixo.

Exporte os logs

No Visualizador de Eventos, clique com o botão direito Operacional sob PowerShell e escolha Salvar Todos os Eventos Como… A partir da linha de comando:

:: apenas blocos de script

wevtutil epl "Microsoft-Windows-PowerShell/Operational" C:logsps_4104.evtx /q:"*[System[(EventID=4104)]]"




:: PowerShell 7

wevtutil epl "PowerShellCore/Operational" C:logspwsh.evtx




:: o clássico log do "Windows PowerShell": eventos de início do motor com a linha de comando do host

wevtutil epl "Windows PowerShell" C:logswindows_powershell.evtx

Esse último é fácil de esquecer e vale a pena pegar. O evento 400 registra cada início do motor, incluindo a versão do motor. Uma EngineVersion de 2.0 em um sistema moderno geralmente significa que alguém deliberadamente fez downgrade para evitar o log de bloco de script.

Envie e revise no LogTotal

LogTotal lê EVTX nativamente. Uma coisa a saber antes: LogTotal ainda não sanitiza arquivos EVTX. Com logs de PowerShell, isso importa mais do que o usual, por causa dos segredos mencionados acima. Use uploads EVTX livremente para máquinas de teste. Para hosts de produção, obtenha um sim de quem possuir a manipulação de dados primeiro.

  1. Envie. Abra logtotal.com e solte o arquivo.
  2. Reveja.

Quando dá errado

SintomaCausa provávelFix
Nenhum evento 4104O log de bloco de script está desativado, e nada pareceu suspeitoAtive-o para o futuro; verifique o log do Windows PowerShell para o que você ainda pode obter
Apenas um punhado de eventos 4104, todos AvisoO log está desativado; você está vendo logs automáticos de blocos suspeitosMesmo que acima
PowerShellCore/Operational não encontradoO PowerShell 7 não está instalado, ou seu manifesto não está registradoExecute RegisterManifest.ps1 do $PSHOME
Texto do 4104 é cifra ilegívelO Log de Evento Protegido está ativadoVocê precisa do certificado de decodificação
O log cobre apenas algumas horasTamanho padrão, alto volumeAumente o tamanho máximo do canal

FAQ

O log de bloco de script captura código ofuscado?

Em grande parte, sim. Ele registra blocos de script à medida que são compilados. Quando o código ofuscado constrói e executa o próximo estágio, esse estágio é registrado como seu próprio bloco, muitas vezes em forma legível.

Qual é a diferença do transcription?

A transcripção escreve arquivos de texto da entrada e saída da sessão para uma pasta. O log de bloco de script registra o próprio código no log de eventos. Eles se complementam e ambos valem a pena ter.

Junte-se à plataforma Detection as Code da SOC Prime para melhorar a visibilidade das ameaças mais relevantes para o seu negócio. Para ajudá-lo a começar e gerar valor imediato, agende uma reunião agora com os especialistas da SOC Prime.