11 KiB
Roubo de Certificado AD CS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira 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 do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
-
Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.
O que posso fazer com um certificado
Antes de verificar como roubar os certificados, aqui estão algumas informações sobre como descobrir para que o certificado é útil:
# Powershell
$CertPath = "C:\path\to\cert.pfx"
$CertPass = "P@ssw0rd"
$Cert = New-Object
System.Security.Cryptography.X509Certificates.X509Certificate2 @($CertPath, $CertPass)
$Cert.EnhancedKeyUsageList
# cmd
certutil.exe -dump -v cert.pfx
Exportando Certificados Usando as APIs de Criptografia - ROUBO1
A maneira mais fácil de extrair um certificado de usuário ou máquina e a chave privada é através de uma sessão de desktop interativa. Se a chave privada for exportável, basta clicar com o botão direito do mouse no certificado em certmgr.msc
e ir para Todas as tarefas → Exportar
... para exportar um arquivo .pfx protegido por senha.
Também é possível fazer isso programaticamente. Exemplos incluem o cmdlet ExportPfxCertificate
do PowerShell ou o projeto CertStealer em C# de TheWover.
Por baixo dos panos, esses métodos usam a API de Criptografia da Microsoft (CAPI) ou a API de Criptografia: Geração Seguinte (CNG) mais moderna para interagir com o repositório de certificados. Essas APIs executam vários serviços criptográficos necessários para o armazenamento e autenticação de certificados (entre outros usos).
Se a chave privada não for exportável, CAPI e CNG não permitirão a extração de certificados não exportáveis. Os comandos crypto::capi
e crypto::cng
do Mimikatz podem alterar a CAPI e a CNG para permitir a exportação de chaves privadas. crypto::capi
altera a CAPI no processo atual, enquanto crypto::cng
requer alterar a memória do lsass.exe.
Roubo de Certificado de Usuário via DPAPI - ROUBO2
Mais informações sobre DPAPI em:
{% content-ref url="../../windows-local-privilege-escalation/dpapi-extracting-passwords.md" %} dpapi-extracting-passwords.md {% endcontent-ref %}
O Windows armazena chaves privadas de certificados usando DPAPI. A Microsoft separa os locais de armazenamento para chaves privadas de usuário e máquina. Ao descriptografar manualmente os blobs DPAPI criptografados, um desenvolvedor precisa entender qual API de criptografia o sistema operacional usou, pois a estrutura do arquivo de chave privada difere entre as duas APIs. Ao usar o SharpDPAPI, ele automaticamente considera essas diferenças de formato de arquivo.
O Windows geralmente armazena certificados de usuário no registro na chave HKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates
, embora alguns certificados pessoais para usuários também sejam armazenados em %APPDATA%\Microsoft\SystemCertificates\My\Certificates
. As locações de chave privada do usuário associadas estão principalmente em %APPDATA%\Microsoft\Crypto\RSA\User SID\
para chaves CAPI e %APPDATA%\Microsoft\Crypto\Keys\
para chaves CNG.
Para obter um certificado e sua chave privada associada, é necessário:
- Identificar qual certificado deseja-se roubar do repositório de certificados do usuário e extrair o nome do repositório de chaves.
- Encontrar a DPAPI masterkey necessária para descriptografar a chave privada associada.
- Obter a DPAPI masterkey em texto simples e usá-la para descriptografar a chave privada.
Para obter a DPAPI masterkey em texto simples:
# With mimikatz
## Running in a process in the users context
dpapi::masterkey /in:"C:\PATH\TO\KEY" /rpc
# with mimikatz
## knowing the users password
dpapi::masterkey /in:"C:\PATH\TO\KEY" /sid:accountSid /password:PASS
Para simplificar a decodificação de arquivos de chave mestra e arquivos de chave privada, o comando certificates
do SharpDPAPI pode ser usado com os argumentos /pvk
, /mkfile
, /password
ou {GUID}:KEY
para decodificar as chaves privadas e certificados associados, gerando um arquivo de texto .pem
.
SharpDPAPI.exe certificates /mkfile:C:\temp\mkeys.txt
# Transfor .pem to .pfx
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
Roubo de Certificado de Máquina via DPAPI - THEFT3
O Windows armazena certificados de máquina na chave do registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates
e armazena chaves privadas em vários locais diferentes, dependendo da conta.
Embora o SharpDPAPI pesquise todos esses locais, os resultados mais interessantes tendem a vir de %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys
(CAPI) e %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\Keys
(CNG). Essas chaves privadas estão associadas à loja de certificados de máquina e o Windows as criptografa com as chaves mestras DPAPI da máquina.
Não é possível descriptografar essas chaves usando a chave de backup DPAPI do domínio, mas sim deve-se usar o segredo LSA DPAPI_SYSTEM no sistema, que é acessível apenas pelo usuário SYSTEM.
Você pode fazer isso manualmente com o comando lsadump::secrets
do Mimikatz e, em seguida, usar a chave extraída para descriptografar as chaves mestras da máquina.
Você também pode corrigir o CAPI/CNG como antes e usar o comando crypto::certificates /export /systemstore:LOCAL_MACHINE
do Mimikatz.
O comando de certificados do SharpDPAPI com a flag /machine
(enquanto elevado) automaticamente eleva para SYSTEM, despeja o segredo LSA DPAPI_SYSTEM, usa isso para descriptografar e encontrar as chaves mestras DPAPI da máquina e usa os textos das chaves como uma tabela de pesquisa para descriptografar quaisquer chaves privadas de certificado de máquina.
Encontrando Arquivos de Certificado - THEFT4
Às vezes, os certificados estão apenas no sistema de arquivos, como em compartilhamentos de arquivos ou na pasta Downloads.
O tipo mais comum de arquivos de certificado focados no Windows que vimos são arquivos .pfx
e .p12
, com .pkcs12
e .pem
aparecendo às vezes, mas com menos frequência.
Outras extensões de arquivo relacionadas a certificados interessantes são: .key
(chave privada), .crt/.cer
(apenas certificado), .csr
(Solicitação de Assinatura de Certificado, não contém certificados ou chaves privadas), .jks/.keystore/.keys
(Java Keystore. Pode conter certificados + chaves privadas usadas por aplicativos Java).
Para encontrar esses arquivos, basta procurar por essas extensões usando o powershell ou o cmd.
Se você encontrar um arquivo de certificado PKCS#12 e ele estiver protegido por senha, você pode extrair um hash usando o pfx2john.py e quebrá-lo usando o JohnTheRipper.
Roubo de Credenciais NTLM via PKINIT - THEFT5
Para suportar a autenticação NTLM [MS-NLMP] para aplicativos que se conectam a serviços de rede que não suportam a autenticação Kerberos, quando o PKCA é usado, o KDC retorna a função unidirecional (OWF) NTLM do usuário no buffer do certificado de atributo de privilégio (PAC)
PAC_CREDENTIAL_INFO
Portanto, se a conta se autenticar e obter um TGT através do PKINIT, há um "dispositivo de segurança" embutido que permite que o host atual obtenha nosso hash NTLM do TGT para suportar a autenticação legada. Isso envolve descriptografar uma estrutura de dados PAC_CREDENTIAL_DATA que é uma representação serializada de NDR do texto simples NTLM.
O Kekeo pode ser usado para solicitar um TGT com essas informações e recuperar o NTLM do usuário.
tgt::pac /caname:thename-DC-CA /subject:harmj0y /castore:current_user /domain:domain.local
A implementação do Kekeo também funcionará com certificados protegidos por smartcard que estão atualmente conectados se você puder recuperar o pin. Também será suportado no Rubeus.
Referências
- Todas as informações foram retiradas de https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira 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 do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
-
Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.