Windows Security Controls
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Use Trickest para construir e automatizar fluxos de trabalho facilmente, impulsionados pelas ferramentas comunitárias mais avançadas do mundo. Acesse hoje:
Uma lista de permissões de aplicativos é uma lista de aplicativos de software ou executáveis aprovados que são permitidos estar presentes e serem executados em um sistema. O objetivo é proteger o ambiente de malware prejudicial e software não aprovado que não se alinha com as necessidades específicas de negócios de uma organização.
AppLocker é a solução de lista de permissões de aplicativos da Microsoft e dá aos administradores de sistema controle sobre quais aplicativos e arquivos os usuários podem executar. Ele fornece controle granular sobre executáveis, scripts, arquivos de instalação do Windows, DLLs, aplicativos empacotados e instaladores de aplicativos empacotados. É comum que as organizações bloqueiem cmd.exe e PowerShell.exe e o acesso de gravação a certos diretórios, mas tudo isso pode ser contornado.
Verifique quais arquivos/extensões estão na lista negra/lista branca:
Este caminho do registro contém as configurações e políticas aplicadas pelo AppLocker, fornecendo uma maneira de revisar o conjunto atual de regras aplicadas no sistema:
HKLM\Software\Policies\Microsoft\Windows\SrpV2
Pastas graváveis úteis para contornar a política do AppLocker: Se o AppLocker estiver permitindo a execução de qualquer coisa dentro de C:\Windows\System32
ou C:\Windows
, há pastas graváveis que você pode usar para contornar isso.
Binários comumente confiáveis "LOLBAS's" também podem ser úteis para contornar o AppLocker.
Regras mal escritas também podem ser contornadas
Por exemplo, <FilePathCondition Path="%OSDRIVE%*\allowed*"/>
, você pode criar uma pasta chamada allowed
em qualquer lugar e ela será permitida.
As organizações também costumam se concentrar em bloquear o executável %System32%\WindowsPowerShell\v1.0\powershell.exe
, mas esquecem das outras localizações de executáveis do PowerShell como %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
ou PowerShell_ISE.exe
.
A imposição de DLLs raramente é ativada devido à carga adicional que pode colocar em um sistema e à quantidade de testes necessários para garantir que nada quebre. Portanto, usar DLLs como backdoors ajudará a contornar o AppLocker.
Você pode usar ReflectivePick ou SharpPick para executar código Powershell em qualquer processo e contornar o AppLocker. Para mais informações, consulte: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Credenciais locais estão presentes neste arquivo, as senhas são hashadas.
As credenciais (hashadas) são salvas na memória deste subsistema por razões de Single Sign-On. LSA administra a política de segurança local (política de senha, permissões de usuários...), autenticação, tokens de acesso... A LSA será a responsável por verificar as credenciais fornecidas dentro do arquivo SAM (para um login local) e conversar com o controlador de domínio para autenticar um usuário de domínio.
As credenciais são salvas dentro do processo LSASS: tickets Kerberos, hashes NT e LM, senhas facilmente descriptografadas.
A LSA pode salvar em disco algumas credenciais:
Senha da conta do computador do Active Directory (controlador de domínio inacessível).
Senhas das contas de serviços do Windows
Senhas para tarefas agendadas
Mais (senha de aplicativos IIS...)
É o banco de dados do Active Directory. Está presente apenas em Controladores de Domínio.
Microsoft Defender é um antivírus disponível no Windows 10 e Windows 11, e em versões do Windows Server. Ele bloqueia ferramentas comuns de pentesting como WinPEAS
. No entanto, existem maneiras de contornar essas proteções.
Para verificar o status do Defender, você pode executar o cmdlet PS Get-MpComputerStatus
(verifique o valor de RealTimeProtectionEnabled
para saber se está ativo):
Para enumerá-lo, você também pode executar:
EFS protege arquivos por meio de criptografia, utilizando uma chave simétrica conhecida como File Encryption Key (FEK). Esta chave é criptografada com a chave pública do usuário e armazenada dentro do fluxo de dados alternativo $EFS do arquivo criptografado. Quando a descriptografia é necessária, a correspondente chave privada do certificado digital do usuário é usada para descriptografar a FEK do fluxo $EFS. Mais detalhes podem ser encontrados aqui.
Cenários de descriptografia sem a iniciação do usuário incluem:
Quando arquivos ou pastas são movidos para um sistema de arquivos não-EFS, como FAT32, eles são automaticamente descriptografados.
Arquivos criptografados enviados pela rede via protocolo SMB/CIFS são descriptografados antes da transmissão.
Este método de criptografia permite acesso transparente a arquivos criptografados para o proprietário. No entanto, simplesmente mudar a senha do proprietário e fazer login não permitirá a descriptografia.
Principais Conclusões:
EFS usa uma FEK simétrica, criptografada com a chave pública do usuário.
A descriptografia utiliza a chave privada do usuário para acessar a FEK.
A descriptografia automática ocorre sob condições específicas, como copiar para FAT32 ou transmissão pela rede.
Arquivos criptografados são acessíveis ao proprietário sem etapas adicionais.
Verifique se um usuário usou este serviço verificando se este caminho existe: C:\users\<username>\appdata\roaming\Microsoft\Protect
Verifique quem tem acesso ao arquivo usando cipher /c <file>
Você também pode usar cipher /e
e cipher /d
dentro de uma pasta para criptografar e descriptografar todos os arquivos
Esse método requer que o usuário vítima esteja executando um processo dentro do host. Se esse for o caso, usando uma sessão meterpreter
, você pode impersonar o token do processo do usuário (impersonate_token
do incognito
). Ou você poderia apenas migrate
para o processo do usuário.
A Microsoft desenvolveu Group Managed Service Accounts (gMSA) para simplificar a gestão de contas de serviço em infraestruturas de TI. Ao contrário das contas de serviço tradicionais que frequentemente têm a configuração "Senha nunca expira" ativada, os gMSAs oferecem uma solução mais segura e gerenciável:
Gerenciamento Automático de Senhas: gMSAs usam uma senha complexa de 240 caracteres que muda automaticamente de acordo com a política de domínio ou computador. Este processo é gerenciado pelo Serviço de Distribuição de Chaves (KDC) da Microsoft, eliminando a necessidade de atualizações manuais de senha.
Segurança Aprimorada: Essas contas são imunes a bloqueios e não podem ser usadas para logins interativos, aumentando sua segurança.
Suporte a Múltiplos Hosts: gMSAs podem ser compartilhados entre vários hosts, tornando-os ideais para serviços que rodam em vários servidores.
Capacidade de Tarefas Agendadas: Ao contrário das contas de serviço gerenciadas, gMSAs suportam a execução de tarefas agendadas.
Gerenciamento Simplificado de SPN: O sistema atualiza automaticamente o Nome Principal de Serviço (SPN) quando há alterações nos detalhes de sAMaccount do computador ou no nome DNS, simplificando o gerenciamento de SPN.
As senhas para gMSAs são armazenadas na propriedade LDAP msDS-ManagedPassword e são redefinidas automaticamente a cada 30 dias pelos Controladores de Domínio (DCs). Esta senha, um blob de dados criptografados conhecido como MSDS-MANAGEDPASSWORD_BLOB, só pode ser recuperada por administradores autorizados e pelos servidores nos quais os gMSAs estão instalados, garantindo um ambiente seguro. Para acessar essas informações, é necessária uma conexão segura, como LDAPS, ou a conexão deve ser autenticada com 'Sealing & Secure'.
Você pode ler esta senha com GMSAPasswordReader:
Encontre mais informações neste post
Além disso, verifique esta página da web sobre como realizar um ataque de retransmissão NTLM para ler a senha do gMSA.
A Solução de Senha do Administrador Local (LAPS), disponível para download no Microsoft, permite a gestão de senhas de Administrador local. Essas senhas, que são aleatórias, únicas e regularmente alteradas, são armazenadas centralmente no Active Directory. O acesso a essas senhas é restrito por meio de ACLs a usuários autorizados. Com permissões suficientes concedidas, a capacidade de ler senhas de administrador local é fornecida.
O PowerShell Modo de Linguagem Constrangida bloqueia muitos dos recursos necessários para usar o PowerShell de forma eficaz, como bloquear objetos COM, permitindo apenas tipos .NET aprovados, fluxos de trabalho baseados em XAML, classes do PowerShell e mais.
No Windows atual, esse Bypass não funcionará, mas você pode usar PSByPassCLM.
Para compilá-lo, você pode precisar de Adicionar uma Referência -> Procurar -> Procurar -> adicione C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll
e mude o projeto para .Net4.5.
Você pode usar ReflectivePick ou SharpPick para executar código Powershell em qualquer processo e contornar o modo restrito. Para mais informações, consulte: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Por padrão, está definida como restrita. Principais maneiras de contornar essa política:
Mais pode ser encontrado aqui
É a API que pode ser usada para autenticar usuários.
O SSPI será responsável por encontrar o protocolo adequado para duas máquinas que desejam se comunicar. O método preferido para isso é o Kerberos. Em seguida, o SSPI negociará qual protocolo de autenticação será usado, esses protocolos de autenticação são chamados de Provedor de Suporte de Segurança (SSP), estão localizados dentro de cada máquina Windows na forma de uma DLL e ambas as máquinas devem suportar o mesmo para poderem se comunicar.
Kerberos: O preferido
%windir%\Windows\System32\kerberos.dll
NTLMv1 e NTLMv2: Razões de compatibilidade
%windir%\Windows\System32\msv1_0.dll
Digest: Servidores web e LDAP, senha na forma de um hash MD5
%windir%\Windows\System32\Wdigest.dll
Schannel: SSL e TLS
%windir%\Windows\System32\Schannel.dll
Negotiate: É usado para negociar o protocolo a ser usado (Kerberos ou NTLM, sendo Kerberos o padrão)
%windir%\Windows\System32\lsasrv.dll
Controle de Conta de Usuário (UAC) é um recurso que habilita um prompt de consentimento para atividades elevadas.
Use Trickest para construir e automatizar fluxos de trabalho facilmente, impulsionados pelas ferramentas mais avançadas da comunidade. Obtenha Acesso Hoje:
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)