12 KiB
Credenciais Shadow
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de cibersegurança? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Verifique os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.
Introdução
Verifique a postagem original para todas as informações sobre essa técnica.
Em resumo: se você pode escrever na propriedade msDS-KeyCredentialLink de um usuário/computador, você pode recuperar o hash NT desse objeto.
Isso ocorre porque você poderá definir credenciais de autenticação de chave pública-privada para o objeto e usá-las para obter um Ticket de Serviço especial que contém seu hash NTLM dentro do Certificado de Atributo de Privilégio (PAC) em uma entidade NTLM_SUPPLEMENTAL_CREDENTIAL criptografada que você pode descriptografar.
Requisitos
Essa técnica requer o seguinte:
- Pelo menos um Controlador de Domínio do Windows Server 2016.
- Um certificado digital para Autenticação de Servidor instalado no Controlador de Domínio.
- Nível Funcional do Windows Server 2016 no Active Directory.
- Comprometer uma conta com os direitos delegados para escrever no atributo msDS-KeyCredentialLink do objeto de destino.
Abuso
Abusar do Key Trust para objetos de computador requer etapas adicionais após obter um TGT e o hash NTLM da conta. Geralmente, existem duas opções:
- Forjar um ticket de prata RC4 para se passar por usuários privilegiados no host correspondente.
- Usar o TGT para chamar S4U2Self para se passar por usuários privilegiados no host correspondente. Essa opção requer modificar o Ticket de Serviço obtido para incluir uma classe de serviço no nome do serviço.
O abuso do Key Trust tem a vantagem adicional de não delegar acesso a outra conta que possa ser comprometida - ele é restrito à chave privada gerada pelo atacante. Além disso, não requer a criação de uma conta de computador que pode ser difícil de limpar até que a escalada de privilégios seja alcançada.
Whisker
Junto com esta postagem, estou lançando uma ferramenta chamada " Whisker ". Com base no código do DSInternals de Michael, o Whisker fornece uma camada C# para realizar esse ataque em compromissos. O Whisker atualiza o objeto de destino usando o LDAP, enquanto o DSInternals permite atualizar objetos usando tanto o LDAP quanto o RPC com o Serviço de Replicação de Diretório (DRS) Protocolo Remoto.
Whisker tem quatro funções:
- Add — Esta função gera um par de chaves pública-privada e adiciona uma nova credencial de chave ao objeto de destino como se o usuário tivesse se inscrito no WHfB a partir de um novo dispositivo.
- List — Esta função lista todas as entradas do atributo msDS-KeyCredentialLink do objeto de destino.
- Remove — Esta função remove uma credencial de chave do objeto de destino especificado por um GUID de DeviceID.
- Clear — Esta função remove todos os valores do atributo msDS-KeyCredentialLink do objeto de destino. Se o objeto de destino estiver usando legítimamente o WHfB, isso irá quebrar.
Whisker
Whisker é uma ferramenta em C# para assumir contas de usuário e computador do Active Directory manipulando seu atributo msDS-KeyCredentialLink
, adicionando efetivamente "Credenciais Shadow" à conta de destino.
Whisker tem quatro funções:
- Add — Esta função gera um par de chaves pública-privada e adiciona uma nova credencial de chave ao objeto de destino como se o usuário tivesse se inscrito no WHfB a partir de um novo dispositivo.
- List — Esta função lista todas as entradas do atributo msDS-KeyCredentialLink do objeto de destino.
- Remove — Esta função remove uma credencial de chave do objeto de destino especificado por um GUID de DeviceID.
- Clear — Esta função remove todos os valores do atributo msDS-KeyCredentialLink do objeto de destino. Se o objeto de destino estiver usando legítimamente o WHfB, isso irá quebrar.
Add
Adicione um novo valor ao atributo msDS-KeyCredentialLink
de um objeto de destino:
/target:<samAccountName>
: Obrigatório. Defina o nome do alvo. Objetos de computador devem terminar com o sinal '$'./domain:<FQDN>
: Opcional. Defina o nome de domínio totalmente qualificado (FQDN) do alvo. Se não for fornecido, tentará resolver o FQDN do usuário atual./dc:<IP/HOSTNAME>
: Opcional. Defina o Controlador de Domínio (DC) de destino. Se não for fornecido, tentará direcionar o Controlador de Domínio Primário (PDC)./path:<PATH>
: Opcional. Defina o caminho para armazenar o certificado autoassinado gerado para autenticação. Se não for fornecido, o certificado será exibido como um blob Base64./password:<PASWORD>
: Opcional. Defina a senha para o certificado autoassinado armazenado. Se não for fornecido, uma senha aleatória será gerada.
Exemplo: Whisker.exe add /target:computername$ /domain:constoso.local /dc:dc1.contoso.local /path:C:\path\to\file.pfx /password:P@ssword1
{% hint style="info" %} Mais opções no Readme. {% endhint %}
pywhisker
pyWhisker é um equivalente em Python do Whisker original feito por Elad Shamir e escrito em C#. Essa ferramenta permite aos usuários manipular o atributo msDS-KeyCredentialLink de um usuário/computador alvo para obter controle total sobre esse objeto.
É baseado no Impacket e em um equivalente em Python do DSInternals de Michael Grafnetter chamado PyDSInternals feito por podalirius. Essa ferramenta, juntamente com as PKINITtools de Dirk-jan, permite uma exploração primitiva completa apenas em sistemas baseados em UNIX.
pyWhisker pode ser usado para realizar várias ações no atributo msDs-KeyCredentialLink de um alvo
- list: lista todos os IDs e horários de criação atuais do KeyCredentials
- info: imprime todas as informações contidas em uma estrutura KeyCredential
- add: adiciona um novo KeyCredential ao msDs-KeyCredentialLink
- remove: remove um KeyCredential do msDs-KeyCredentialLink
- clear: remove todos os KeyCredentials do msDs-KeyCredentialLink
- export: exporta todos os KeyCredentials do msDs-KeyCredentialLink em JSON
- import: sobrescreve o msDs-KeyCredentialLink com KeyCredentials de um arquivo JSON
pyWhisker suporta as seguintes autenticações:
- (NTLM) Senha em texto claro
- (NTLM) Pass-the-hash
- (Kerberos) Senha em texto claro
- (Kerberos) Pass-the-key / Overpass-the-hash
- (Kerberos) Pass-the-cache (tipo de Pass-the-ticket)
{% hint style="info" %} Mais opções no Readme. {% endhint %}
ShadowSpray
Em vários casos, o grupo "Everyone" / "Authenticated Users" / "Domain Users" ou algum outro grupo amplo contém quase todos os usuários no domínio e possui algumas DACLs de GenericWrite
/GenericAll
sobre outros objetos no domínio. ShadowSpray tenta abusar portanto ShadowCredentials sobre todos eles
Funciona da seguinte maneira:
- Fazer login no domínio com as credenciais fornecidas (ou usar a sessão atual).
- Verificar se o nível funcional do domínio é 2016 (Caso contrário, pare, pois o ataque Shadow Credentials não funcionará)
- Coletar uma lista de todos os objetos no domínio (usuários e computadores) do LDAP.
- Para cada objeto na lista, faça o seguinte:
- Tente adicionar KeyCredential ao atributo
msDS-KeyCredentialLink
do objeto. - Se o acima for bem-sucedido, use PKINIT para solicitar um TGT usando o KeyCredential adicionado.
- Se o acima for bem-sucedido, execute um ataque UnPACTheHash para revelar o hash NT do usuário/computador.
- Se
--RestoreShadowCred
foi especificado: Remova o KeyCredential adicionado (limpe após si mesmo...) - Se
--Recursive
foi especificado: Faça o mesmo processo usando cada uma das contas de usuário/computador que possuímos com sucesso.
Referências
- https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab
- https://github.com/eladshamir/Whisker
- https://github.com/Dec0ne/ShadowSpray/
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de cibersegurança? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Verifique os PLANOS DE ASSINATURA!
- Descubra The PEASS Family, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.