Como as credenciais do Windows em cache são armazenadas na máquina local?

26

Como as credenciais de domínio em cache do Active Directory são armazenadas em um cliente Windows? Eles são armazenados no banco de dados SAM local, tornando-os suscetíveis aos mesmos ataques de tabela arco-íris aos quais as contas de usuários locais são suscetíveis ou são armazenados de maneira diferente? Observe que percebo que eles são salgados e com hash, para não serem armazenados em texto sem formatação, mas eles são da mesma maneira que as contas locais e são armazenados no mesmo local?

Sei que, no mínimo, eles são suscetíveis a ataques de força bruta, mas essa é uma situação muito melhor do que ser vulnerável às tabelas do arco-íris no caso de uma máquina roubada.

MDMarra
fonte

Respostas:

17

"Credenciais em cache"

As credenciais em cache para um domínio do AD são na verdade salgados hashes duplos da senha e armazenados na seção HKLM \ Security. O local do arquivo da seção é: %systemroot%\System32\config\SECURITY

Somente o usuário do "sistema" tem acesso às chaves do Registro:
HKLM\Security\Cache\NL$nonde nestá um índice 1 com o número máximo de credenciais em cache.

Suscetibilidade a ataques

O WinNT para WinXP usava hashes "Lan Manager" para contas locais , que são facilmente quebradas em hardware moderno. O crack geralmente leva alguns minutos (eu recentemente fiz 3 senhas em 00:08:06) com apenas um computador desktop "normal". Os hashes do Lan Manager não são salgados, portanto, também existem tabelas arco-íris publicamente disponíveis.

O Vista e mais tarde usam hashes do NT para contas locais . O Windows 2000 e versões posteriores também usam hashes do NT para contas de domínio . Os hashes NT são hashes duplos MD4 salgados. O salt por entrada impede o uso de tabelas arco-íris, mas o MD4 pode ser executado muito rapidamente em hardware moderno: cerca de 6 anos de computação para uma senha de 60 bits. Com sorte e um cluster de 6 GPU, um cracker pode quebrar esse tipo de senha em ~ 6 meses. Levando isso para a nuvem, cerca de US $ 35 mil na GPU Amazon EC2 - dependendo da disponibilidade, pode levar horas.

Chris S
fonte
Eu acho que a parte maior da minha pergunta era se ou não essas credenciais armazenadas são suscetíveis aos mesmos ataques baseados em tabelas do arco-íris como contas locais de se eles são misturados em um método diferente
MDMarra
Atualizado ... Vista + é tudo a mesma coisa. As versões anteriores eram diferentes.
Chris S
"O hash NT da senha é calculado usando um algoritmo de hash MD4 sem sal." - Diretamente do TechNet: technet.microsoft.com/en-us/library/hh994565(v=ws.10).aspx
thepip3r
Essa página está errada, os hashes do NT são salgados. Veja a resposta de Joe abaixo para obter um link para um KB.
Chris S
4

As credenciais não são realmente armazenadas em cache na máquina local. Veja este trecho da MS:

Segurança de credenciais de domínio em cache

O termo credenciais em cache não descreve com precisão como o Windows armazena em cache as informações de logon para logons de domínio. No Windows 2000 e em versões posteriores do Windows, o nome de usuário e a senha não são armazenados em cache. Em vez disso, o sistema armazena um verificador criptografado da senha. Esse verificador é um hash MD4 salgado que é calculado duas vezes. A computação dupla efetivamente torna o verificador um hash do hash da senha do usuário. Esse comportamento é diferente do comportamento do Microsoft Windows NT 4.0 e versões anteriores do Windows NT.

http://support.microsoft.com/kb/913485

joeqwerty
fonte
Certo, entendo que as credenciais em si não são realmente armazenadas em cache, mas minha pergunta foi mais parecida com "são os hashes resultantes armazenados no banco de dados SAM local da mesma maneira que as contas locais, tornando-as vulneráveis ​​aos mesmos ataques. " Vou editar isso em um minuto para ficar um pouco mais claro.
precisa saber é o seguinte
1
meh .. para mim isso é picar palavras. a natureza do "hash" é um processo unidirecional que cria basicamente um valor ofuscado da senha usando um algoritmo criptograficamente seguro. O problema é que o MD4 pode ter sido criptograficamente seguro de 10 a 15 anos atrás, mas nem chega mais perto (nem o MD5 nem o SHA1 do ponto de vista de um criptógrafo). Então, se você tem hardware atual que pode rapidamente força bruta do espaço da chave do algoritmo ou descobrir uma colisão, então você pode facilmente derivar a senha a partir do hash ...
thepip3r
Se as credenciais forem armazenadas de qualquer forma ou forma, para que possam ser verificadas no modo offline - elas serão armazenadas em cache para todos os efeitos, independentemente da aparência dos dados no cache
NiKiZe
4

Eles são manipulados pelo Credential Manager, para o qual existe uma API do Credential Manager. Os hashes salgados são armazenados de maneira um tanto segura no disco e acessados ​​via HKLM \ Security. (Que só pode ser acessado por LocalSystem por padrão, mas é fácil ignorar, por exemplo, por psexec -i -s regedit.exe.)

No entanto, em um sistema Windows em execução, a situação é mais grave, pois as credenciais usadas recentemente podem ser obtidas e facilmente revertidas em texto sem formatação, conectando uma DLL ao Lsass. (Veja Mimikatz.)

Então, sim, você encontrará algum tipo de hash (ou hash de um hash, ou 'verificador' ou o que você quiser chamar) em HKLM \ Security \ Cache no cliente. Mas não acho que exista uma maneira viável de atacar o hash no disco. Não é o mesmo tipo antigo de hash NTLM que é atacável.

Ryan Ries
fonte
A quebra de senha offline no SAM é completamente diferente de conectar o LSASS na memória, como Mimikatz e WCE. E, dependendo da complexidade da senha, senha desligada rachaduras da SAM pode ser muito fácil (ver samdump2)
thepip3r