Editar 2015-11-25
El proyecto
"PowerShell-PKI" parece prometedor
Bryan Lockwood ha puesto un buen proyecto en GitHub:
Y aquí está la publicación de su blog que lo introdujo
Puedes ejecutar el script de esta manera:
-
Copie Nov2015-WindowsRootCAList.txt
a Nov2015-WindowsRootCAList.NOSPACES.txt
-
Resuelva un error: elimine manualmente los caracteres del espacio al final en Nov2015-WindowsRootCAList.NOSPACES.txt
.
(De lo contrario, el script informará TODO como no confiable.)
(Le sugiero que utilice la función de búsqueda y reemplazo de su editor de texto favorito y que simplemente destruya todos los espacios).
-
Dot-source el script:
PS C:\Powershell-PKI-master> . .\Audit-TrustedRootCA.ps1 3>&1 | out-null
-
Ejecuta la función:
PS C:\Powershell-PKI-master> Audit-Roots -FilePath .\Nov2015-WindowsRootCAList.NOSPACES.txt -OutputPath .\
La secuencia de comandos que almacena el almacén de confianza de Windows (¿almacena?) en una lista de hashes en buen estado.
La lista de hash es la misma que para certutil.
El origen de este hash-list no está del todo claro para mí.
Así que decidí generar los hashes yo mismo con un poco de Cygwin-Bash-Scripting:
$ certutil.exe -generateSSTFromWU wuroots.sst
$ certutil.exe -dumpPFX wuroots.sst | grep 'Hash' | tr -d ' ' | tr 'a-z' 'A-Z' | cut -d ':' -f2 | sed 's/$/ /' | sort > wuroots-hashes-pspkiformat.txt
Y resulta que: los hashes de certutil
y los hashes de GitHub son de hecho idénticos:
$ diff --report-identical-files -- wuroots-hashes-pspkiformat.txt Nov2015-WindowsRootCAList.txt
Files wuroots-hashes-pspkiformat.txt and Nov2015-WindowsRootCAList.txt are identical
Tema de Twitter relacionado
Este hilo de Twitter iniciado por el investigador de seguridad alemán Hanno Böck me llevó al proyecto PowerShell.
¿Quizás CertUtil y MMC se reinicien?
Hubo un gran artículo de blog el mes pasado:
Mike describe un procedimiento para generar un contenedor de certificado .sst
con solo los certificados predeterminados recuperados de Windows Update y luego usa MMC para seleccionar y elegir entre ellos.
certutil -generateSSTFromWU rootcas.sst
invoke-item rootcas.sst
No he intentado esto, pero supongo que eliminar todas las CA y luego simplemente importar todas las CA predeterminadas desde el archivo SST debería hacer parte del truco.
Nota: No sé cómo Windows maneja las CA autofirmadas en la tienda "Intermediate" o en otra parte. Pienso que la tienda es un caché de todos modos y que puede ser desactivada porque se reconstruirá automáticamente de todos modos, pero no estoy seguro.
Técnica anterior
EDITAR. Me di cuenta de que Tom Leek dio esencialmente la misma respuesta a una pregunta similar el año pasado: