Que no os confunda el nombre de la herramienta de la que os vamos a hablar en este post. Aquí no encontrarás nada de iPhone, iPad o iPod, ni como cargar aplicaciones no oficiales ni demás. Os vamos a hablar de certificados digitales, y de como poder exportar la clave privada de los certificados cuando esta ha sido marcada como no exportable en el momento de su generación.
Si nos remontamos a nuestro primer post aquí en Security By Default, FNMT: Insecure by default, Yago nos presentó una herramienta programada por él mismo, CertDump, encargada de buscar en nuestro contenedor criptográfico certificados cuya clave privada fuese exportable y exportarla junto con su certificado en un fichero PKCS#12 sin contraseña (pudiendo así instalar el certificado en cualquier otro sistema).
Pues bien, la herramienta Jailbreak de iSEC Partners es capaz de realizar justamente la tarea complementaria: buscar en nuestro contenedor criptográfico certificados cuya clave privada fuese marcada como NO exportable y exportar seguidamente el certificado incluyendo su clave privada en un fichero PFX.
La técnica que utiliza consiste en el parcheo del Crypto Service Provider para deshabilitar la comprobación sobre los certificados sobre si son o no exportables. La clave privada se encuentra en el propio sistema de ficheros, y se podrá obtener siempre y cuando este no se encuentra cifrado o dicha clave se haya almacenado en cualquier solución 'hardware' como por ejemplo una smartcard.
Dentro del fichero comprimido que descargamos nos encontraremos una .dll llamada jb_dll.dll, la cual se inyectará en el proceso del CSP. En el momento de la comprobación sobre si las claves privadas de nuestros certificados son exportables o no, la librería aplicará el parche, y durante ese proceso los certificados con claves privadas no exportables podrán exportarse satisfactoriamente.
Ahora bien, esta técnica no es para nada actual (actualmente la versión más actual de Jailbreak es la 3.4, pero incluso podemos comprobar como en el servidor de iSEC Partners tenemos la 2.0, del 2007). Es más, incluso fué aprovechada por varios creadores de malware para su difusión mediante bichos que eran capaces de exportar los certificados incluyendo sus claves privadas y enviarlos a servidores externos. La DLL por tanto pasó a considerarse como peligrosa por las firmas de Antivirus, de ahí que os pueda saltar el aviso de que se trate de una backdoor. En este enlace tenéis el informe de VirusTotal sobre jb_dll.dll.
Antes de comenzar, indicar unos pre-requisitos básicos que tienen que cumplirse para que esta herramienta realice su trabajo correctamente:
- jailbreak.exe, jbstore.exe y jbcsp.exe funcionan bajo:
- Windows XP SP2 x86
- Window 2003 SP1 x86
- Windows Vista RTM & SP1 x86
- Windows 7 x86
- En las versiones x64 de Windows Vista y Windows 7 únicamente funcionará la aplicación jbstore.exe
- Como comentamos anteriormente, para poder exportar la clave privada, esta debe encontrarse en el sistema de ficheros de la máquina. Dicho sistema de ficheros no debe encontrarse cifrado y necesitamos contar con permisos de acceso sobre él.
Comprobación de que el certificado tiene marcada la clave privada como no exportable
Mediante la consola de gestión de Microsoft (Microsoft Management Console, mmc.exe) añadimos los complementos referentes a los certificados:
Hacemos clic dos veces en el certificado del cual queremos exportar su clave privada, comprobando que se dispone de ella en el sistema de ficheros:
Seguidamente, con el certificado seleccionado, hacemos clic con el botón derecho -> Todas las tareas -> Exportar...
y comprobamos como la casilla de 'Exportar la clave privada' se encuentra deshabilitada en el siguiente paso del Asistente:
Entra en juego el Jailbreak.
Utilizando Jailbreak
Dentro del .zip descargado nos encontraremos los siguientes ficheros, que describiremos a continuación:
- README.txt: Información sobre la utilización de cada uno de los ejecutables de los que se compone la herramienta.
- jb_dll.dll: DLL que realizará el trabajo del parcheo del CSP para marcar como exportables las claves privadas de los certificados.
- jailbreak.exe y jailbreak.msc: Programa principal que requiere interacción por parte del usuario que lo ejecute.
- jbstore.exe: JBStore es una aplicación que se ejecuta por línea de comandos y que exporta todos los certificados del almacen 'Personal' sin requerir la interactuación con la Microsoft Management Console como para el caso de la aplicación Jailbreak.
- jbcsp.exe: jbcsp es una aplicación que se ejecuta por línea de comandos y que exporta las claves que se encuentran dentro del CSP (Cryptographic Service Provider) pero que no están asociadas con un certificado.
Tras la ejecución de jailbreak.exe y el correspondiente parcheo por parte de la DLL, se invocará una instancia de la consola de gestión de Microsoft (Microsoft Management Console, mmc.exe) con los complementos referentes a los certificados del sistema ya cargados (vista definida mediante el fichero jailbreak.msc incluido en el ZIP de la herramienta). Una vez ahí, podremos acceder a los certificados y realizar la tarea de exportación, en la que se comprueba como la casilla de 'Exportar la clave privada" se encuentra esta vez habilitada.
La marcamos, introducimos la contraseña que queramos y el nombre del fichero para exportar, y listo.
Tendremos un fichero .pfx que contendrá el certificado y su clave privada, listo para distribuir y utilizar...como queramos.
Es posible seleccionar tanto el almacen “Personal” del usuario actual o del equipo local indicándolo como parámetro (/user o /computer respectivamente):
Como veis, una tarea sencilla, limpia, ideal para procesos de backup o migraciones... Eso sí, esta aplicación debería formar parte de nuestra colección de 'Herramientas que necesito subir a TU ordenador'.
No comments:
Post a Comment