@nealmcb me preguntó (¡Gracias!) acerca de esto y esta es una gran pregunta que no se trata en nuestro documento. Estoy de acuerdo en que no estamos dando suficientes consejos sobre cómo lidiar con la seguridad de DPAPI. Arreglaré esto escribiendo una publicación en el blog, pero mientras tanto aquí hay una descripción general de lo que puedes hacer:
En general, DPAPI es una API de blackbox que le permite vincular cualquier información secreta, como la base de datos de contraseñas de Firefox, a una contraseña de cuenta de Windows. Para descifrar cualquier secreto DPAPI necesita un hash de la contraseña del usuario (en SHA1 (16_LE) aunque no NTLM).
Por lo tanto, en un ataque sin conexión, un atacante primero debe usar fuerza bruta (o adivinar) la contraseña del usuario para obtener este hash, por lo que una contraseña "segura" es definitivamente la primera buena línea de defensa. Pero recuerde que tenemos tablas de arco iris para NTLM, por lo que la seguridad de DPAPI también se ve afectada por esto.
El cifrado de disco, como bitlocker y truecrypt, es una buena primera línea de defensa contra esto porque, obviamente, el atacante necesita descifrar el disco duro antes de intentar recuperar los datos de DPAPI.
Lo que no es una buena idea es creer que EFS resolverá el problema, porque los certificados necesarios para descifrar el archivo están cifrados con un sistema "DPAPI". Entonces, una vez que se conoce la contraseña del usuario, todo lo que el atacante debe hacer es primero descifrar los archivos EFS recuperando el certificado y luego descifrar los datos de DPAPI.
Espero que esto aclare la situación. Para el problema de CREDHIST, estoy pensando en escribir una herramienta que la borre (al menos las primeras N contraseñas antiguas).
Hazme saber si tienes otras preguntas