Configurações de segurança¶
O que são¶
Atacantes alteram as configurações de segurança do Windows para permanecer ocultos e alcançar credenciais. Eles desativam o Microsoft Defender ou excluem suas ferramentas dele, fazem o Windows manter senhas em texto claro, abrem a Área de Trabalho Remota, desativam o firewall e silenciam o registro em log do PowerShell. O Registro mantém essas configurações:
SOFTWARE: o Defender, suas exclusões e políticas; o UAC; as políticas da Área de Trabalho Remota e do firewall; a política de execução do PowerShell, as políticas de log e os provedores AMSI; a Restauração do Sistema; os canais do log de eventos.SYSTEM(por conjunto de controle):WDigest, proteção da LSA, Credential Guard, Restricted Admin, NTLM; Área de Trabalho Remota; os perfis do firewall; SMBv1; horários de último acesso; o tamanho de cada log de eventos.NTUSER.DAT: a política de execução e as políticas de log do PowerShell do usuário, e o AMSI para o Windows Script Host.
parse-registry security-settings relata cada configuração que encontra como um registro. Cada registro tem o
valor da configuração, o que o valor significa e se ele enfraquece o padrão: se desativa uma
proteção ou uma fonte de evidências, ou a reduz abaixo do que o Windows atual (10 e 11) faz
sem o valor.
Melhor conclusão: esta configuração tinha este valor quando o hive foi salvo, e a chave foi gravada pela última vez neste horário. Uma configuração enfraquecida é uma pista, não prova de comprometimento. Administradores, a Política de Grupo, outros produtos de segurança e versões mais antigas do Windows também definem alguns desses valores, e o significado informa isso quando é comum.
Localização¶
C:\Windows\System32\config\SOFTWARE
Microsoft\Windows Defender[\Real-Time Protection|\Features|\Spynet]
Microsoft\Windows Defender\Exclusions\Paths|Extensions|Processes|IpAddresses|TemporaryPaths
Policies\Microsoft\Windows Defender\…
Microsoft\Windows\CurrentVersion\Policies\System UAC
Policies\Microsoft\Windows NT\Terminal Services RDP policy
Policies\Microsoft\WindowsFirewall\<profile> firewall policy
Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell ExecutionPolicy
Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging|ModuleLogging|Transcription
Microsoft\AMSI\Providers\{CLSID}
Microsoft\Windows NT\CurrentVersion\SystemRestore DisableSR
Microsoft\Windows\CurrentVersion\WINEVT\Channels\<channel> Enabled, MaxSize
C:\Windows\System32\config\SYSTEM (ControlSet00N\…)
Control\SecurityProviders\WDigest UseLogonCredential
Control\Lsa RunAsPPL, LsaCfgFlags, DisableRestrictedAdmin, LmCompatibilityLevel
Control\Terminal Server[\WinStations\RDP-Tcp] fDenyTSConnections, PortNumber, UserAuthentication
Services\SharedAccess\Parameters\FirewallPolicy\<profile> EnableFirewall
Services\LanmanServer\Parameters SMB1
Control\FileSystem NtfsDisableLastAccessUpdate
Services\EventLog\<log> MaxSize
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell ExecutionPolicy
Software\Policies\Microsoft\Windows\PowerShell\…
Software\Microsoft\Windows Script\Settings AmsiEnable
Colete os três hives com seus logs de transação. Uma configuração alterada pouco antes da coleta pode estar apenas nos logs.
Cuidados para o analista¶
- A configuração armazenada não é o estado efetivo da proteção. São relatados os valores do Registro coletados e as linhas de diagnóstico de listas de valores
danificadas. A ausência de dados pode refletir padrões, fontes não coletadas ou outro mecanismo de
gerenciamento; não é prova de que a proteção esteja habilitada ou desabilitada.
WeakensDefaultsinaliza configurações que podem reduzir a linha de base indicada quando são respeitadas. - As flags legadas do Defender podem ser ignoradas.
DisableAntiSpywareeDisableAntivirusnão provam que o Defender parou. A aplicabilidade depende da versão da plataforma, da integração (onboarding) e da proteção contra adulteração. A Microsoft explica essas configurações legadas. - Exclusões gerenciadas modernas podem não estar disponíveis em capturas do Registro. A partir da plataforma 4.18.25110.6, dispositivos que usam o gerenciamento de configuração do Defender for Endpoint exigem cmdlets do PowerShell do Defender suportados para obter a configuração de exclusões. Portanto, a ausência no Registro offline não estabelece a inexistência de exclusões. Orientação de configuração da Microsoft.
- Enfraquecido não significa malicioso. Exemplos:
DisableAntiSpyware= 1 também é definido pelo Windows enquanto outro antivírus está registrado.- A Área de Trabalho Remota é aberta deliberadamente em servidores.
- O Windows 7 mantinha logs de eventos menores e não atualizava os horários de último acesso.
- Os padrões dependem da versão. Alguns valores eram o padrão anteriormente:
NtfsDisableLastAccessUpdate= 1 era o padrão antes do Windows 10 1803. Ele é relatado sem veredito, mas0x80000001, definido manualmente em uma versão posterior, é considerado enfraquecido.RunAsPPL,LsaCfgFlagseUseLogonCredentialsão comparados com o Windows atual.- Exclusões do Defender: cada caminho, extensão, processo ou endereço é um registro. Toda exclusão
enfraquece o Defender.
TemporaryPaths, que o próprio Defender adiciona, não tem veredito. Procure pastas graváveis pelo usuário, extensões.ps1/.exee LOLBins (rundll32.exe,powershell.exe). - Chaves de política (
Policy= True) são gravadas pela Política de Grupo, por ferramentas e por atacantes que sabem que as políticas prevalecem sobre as configurações locais. Correlacione-as com os GPOs do domínio. - Canais do log de eventos: apenas 25 canais relevantes para a segurança são relatados, indicando se o Windows
ativa cada um por padrão.
TaskScheduler/OperationaleDNS-Client/Operational, por exemplo, ficam desativados por padrão. Useparse-registry readpara os demais. - Horários das chaves:
KeyLastWrittenUTCpertence à chave, portanto não é necessariamente o momento em que este valor foi alterado. É comum que uma chavePoliciesinteira seja gravada de uma só vez. - Conjuntos de controle: por padrão, é lido o conjunto de controle que o Windows usou por último.
--all-control-setslê todos eles.
Analisar com o Juntei¶
Usage: juntei parse-registry security-settings <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SOFTWARE, SYSTEM and NTUSER.DAT hives
-f, --file <FILE> Parse one hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Filtering:
--all-control-sets Every control set, not only the one in use
--weakened-only Only settings that weaken the default
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry security-settings -d evidence/ -o settings.csv
juntei parse-registry security-settings --weakened-only -d evidence/ -t jsonl \
| jq -r '[.Host, .Area, .KeyPath, .ValueName, .Value, .Meaning] | @tsv'
O resumo conta as configurações por área. Ele lista as configurações que enfraquecem o padrão e todas as exclusões do Defender.
Campos de saída¶
| Campo | Interpretação |
|---|---|
Host, SourcePath, HiveType |
Host, o hive e seu tipo (SOFTWARE, SYSTEM, NTUSER.DAT). |
ControlSet, IsCurrentControlSet |
Para SYSTEM: o conjunto de controle e se é aquele que o Windows usou por último; desconhecido quando Select\Current está ausente ou é inválido. |
User, UserSID |
Para NTUSER.DAT: o nome da pasta de perfil e o SID do usuário obtido do ProfileList do sistema. |
Area |
defender, uac, credentials, remote_access, network, powershell, evidence. |
Setting |
O que é: defender_disable_realtime_monitoring, defender_exclusion_path, uac_local_account_token_filter_policy, wdigest_use_logon_credential, rdp_deny_connections, powershell_script_block_logging, event_channel_enabled, … |
Value |
O valor: um número em decimal, uma string ou a própria exclusão. Vazio quando o valor não é do tipo da configuração. |
Meaning |
O que o valor significa. |
WeakensDefault |
True quando o valor enfraquece o que o Windows atual faz sem ele, False quando não enfraquece, vazio quando isso não se aplica (um tamanho, uma porta, um provedor AMSI) ou não pode ser determinado. |
Policy |
Se a chave está sob uma chave Policies. |
KeyPath, ValueName |
A chave e o valor. O nome do valor de uma exclusão é o item excluído; um provedor AMSI não tem nenhum. |
KeyLastWrittenUTC |
A última gravação da chave. |
DataRaw |
Os bytes do valor (hex), quando não são do tipo da configuração. |
TransactionLogStatus, LogsApplied |
Contexto de recuperação do Registro. |
Problems |
Valores do tipo errado e chaves que não podem ser lidas. |
Estratégia de investigação¶
- Execute com
--weakened-onlyem todos os hosts e compare os hosts entre si: uma configuração que apenas um host tem se destaca. - Verifique cada exclusão do Defender em relação às ferramentas encontradas no host e nos logs do Defender (o Evento 5007 registra alterações de configuração).
- Correlacione os horários das chaves com logons, instalações de serviços e criação de processos. Procure
linhas de comando de
reg.exe,Set-MpPreference,netsh advfirewallepowershell(evento 4688, Sysmon 1 e 13, PowerShell 4104). - Para configurações de credenciais (
WDigest,RunAsPPL,LocalAccountTokenFilterPolicy,DisableRestrictedAdmin), procure dumping de credenciais e pass-the-hash posteriores. - Use
parse-registry read --recover-deletedpara valores excluídos para restaurar um padrão, e--all-control-setspara conjuntos de controle mais antigos.
Mais detalhes¶
- Microsoft: configurar e validar exclusões do Microsoft Defender Antivirus
- Microsoft: configurações e configuração do Controle de Conta de Usuário
- Microsoft: configurar a proteção adicional da LSA
- Microsoft: about_Logging_Windows
- MITRE ATT&CK T1562.001: Impair Defenses: Disable or Modify Tools
- ys-registry-parser