Estoy buscando mejorar la defensa en profundidad en un sistema, principalmente cerrando algunos agujeros en las DLL inyectadas. Ciertas aplicaciones instaladas en el sistema hacen que las DLL de ayuda (por ejemplo, extensiones de shell, BHO, etc.) se carguen en los procesos. Desafortunadamente, muchos de estos no se compilaron con los distintivos de inclusión de ASLR / DEP. Dado que los procesos afectados son los principales objetivos de explotación, he estado revisando manualmente el soporte para no poder explotar las llamadas cadenas ROP "universales".
Un efecto secundario de mis cambios es que muchos de los componentes ahora tienen firmas de código no válidas. Esto no parece haber roto nada, pero me gustaría volver a firmarlos con un certificado instalado localmente, utilizando algún tipo de certificado raíz personal como padre. Como beneficio adicional, puedo aprovechar el indicador de integridad de la fuerza.
¿Qué pasos debo seguir para hacer lo siguiente?
- Cree e instale un certificado raíz, con un certificado secundario (¿intermedio?) para la firma de código.
- Eliminar los certificados existentes de los binarios.
- Vuelva a firmar los binarios con el nuevo certificado.
Nunca me he metido con el almacén de certificados en Windows, más allá de algunas incursiones rápidas para verificar las existentes o instalar la CA de Burp, así que estoy un poco perdido aquí. ¿Es OpenSSL una buena opción para generar certificados o existe una mejor solución específica para Windows? ¿Qué herramientas son ideales para volver a firmar binarios?