Authenticode es un mecanismo de firma digital de Microsoft que permite verificar la autenticidad y la integridad de archivos. El documento explica cómo los consultores de seguridad podrían aprovecharse de las características de Authenticode para fines maliciosos, como burlar las protecciones de seguridad o suplantar actualizaciones legítimas mediante la modificación de archivos firmados de editores de confianza. Se proporcionan demostraciones de cómo inyectar código malicioso en instaladores firmados o añadir firmas adic
2. Presentación
• Pentester y analista de seguridad en Prosegur
Ciber.
• Especializado en técnicas de hacking y
seguridad ofensiva.
• Últimamente me ha dado por la seguridad de
los sistemas Windows.
3. ¿De qué va la charla?
• Que es Authenticode y otras tecnologías
relacionadas.
• Para que sirven y que debilidades tienen.
• Cómo aprovecharnos de estas características
para hacer cosas malas.
7. ¿Qué es Authenticode?
• Mecanismo de firma de código desarrollado
por Microsoft.
• Permite comprobar la autenticidad y la
integridad de algunos tipos de ficheros.
9. ¿Para qué se utiliza?
• Verificar la identidad de un editor de software.
(p.e. para generar confianza al descargar un
ejecutable: reputación SmartScreen)
• Identificar los ejecutables emitidos por un
editor (p.e. para establecer una protección
basada en lista blanca).
• Garantizar que un ejecutable no ha sido
manipulado.
11. ¿Y si les damos la vuelta?
• Burlar SmartScreen modificando un ejecutable
de un editor confiable.
• Burlar protecciones basadas en lista blanca
utilizando ejecutables de editores legítimos.
• Añadir un beacon a un fichero sin invalidar su
firma.
12. Introducción a SmartScreen
• Mecanismo de seguridad que alerta cuando
una descarga puede ser peligrosa.
• Configurado por defecto en IE >= 8 y en
Windows >= 8.
• Se basa en un sistema de reputación (online)
proporcionado por Microsoft.
• Reputación por binario (según hash) o por
editor (según firma).
15. ¿Burlar SmartScreen?
• Para campañas de infección mediante ataques
de phishing o drive-by.
• Ejecutables no conformes con SmartScreen
generan desconfianza y ratio de infección
menor.
20. Comprando un certificado
• Podemos utilizar certificados auto-firmados,
pero no valen para generar reputación.
• Precio aprox. 180€ (90€ con revendedores).
• Proceso de validación poco estricto (existen
certificados EV).
• Mejora reputación pero no garantiza
conformidad de SmartScreen.
22. Robando un certificado
• Técnica habitual en ataques APT y malware
avanzado.
• ¿Hacking?
– No siempre.
• Editores descuidados dejan sus llaves de firma
por ahí:
– Github.
– Google.
– Dentro de las Apps/Appliances.
– Leaks.
24. ¿De qué va la charla?
• Que es Authenticode y otras tecnologías
relacionadas.
• Para que sirven y que debilidades tienen.
• Cómo aprovecharnos de estas características
para hacer cosas malas.
26. Referencias
• Didier Stevens: https://blog.didierstevens.com/
• Injecting custom payload into signed Windows
executables (glucksmann):
https://recon.cx/2012/schedule/events/246.en.html
• Compromising the Windows Enterprise via Windows
Update (contextis):
https://www.contextis.com/news/new-paper-released-
compromising-windows-enterprise/
• Certified Canarytokens (thinkst):
http://blog.thinkst.com/2016/05/certified-
canarytokens-alerts-from_25.html
27. Modificando un binario confiable
• ¿Podemos hacerlo sin invalidar la firma?
• Solo ciertas partes.
• Solo en casos muy contados podemos
conseguir inyectar código funcional.
30. ¿Cómo modificar un binario sin
invalidar su firma?
• Añadiendo datos al final del PE después de la
firma (padding).
– ¿Parcheado? ¿MS12-024, MS13-098?.
– NO: EnableCertPaddingCheck no forzado por defecto.
• Anexando datos al final del fichero (fuera del PE).
• Añadiendo datos dentro de la propia tabla de
certificados (p.e. certificados dummy).
• Colisión de hashes.
31. Colisiones
• La firma Authenticode se basa en un hash de
la zona firmada.
• Firma valida si mantenemos el mismo hash.
• Algoritmos soportados: MD5, SHA1, SHA256.
• MD5 y SHA1 están siendo retirados.
• Pero siguen siendo aceptados en muchas
situaciones (aunque roadmap de M$ muy
confuso).
38. Problema
• Las partes donde podemos inyectar son muy
limitadas.
• En la presentación de Blackhat utilizan un
loader externo para lanzar el código
inyectado.
• No podemos ejecutar el código inyectado.
• Bueno, a veces SI!
39. Inyección de código
• Algunos editores usan trucos para evitar tener
que firmar cada nuevo instalador.
• Añaden código en la parte no firmada.
• El código no firmado, puede ser manipulado.
• Búsqueda de binarios vulnerables.
– Con payload fuera de la zona firmada.
– Con payload que se carga de forma insegura.
• Desde la red.
• Dentro del propio binario y extraído, pero podemos engañar
al extractor.
40. Datos fuera de la zona firmada
Herramienta AnalyzePESig:
42. DEMO
• Ver distintos tipos de contenidos vulnerables:
– URLs de descarga.
– ZIPs adjuntos.
– Menús de instalación.
• Modificación de instalador de Winzip para que
instale un MSI malicioso.
44. Bypass de listas blancas
• Herramientas que impiden la ejecución de
código “no confiable”.
• Configuración típica por: ruta segura, hash
conocido, editor de confianza.
• Los binarios firmados por ciertos editores de
confianza suelen ser permitidos a menudo
(p.e. Microsoft, Adobe, Intel).
49. Suplantación de updates
• Resumen: Reutilizar software legitimo firmado
por editores de confianza con fines maliciosos.
• También puede servir para burlar mecanismos
de validación de updates.
• P.E: Técnica presentada por Contexis para
suplantar updates distribuidos mediante
WSUS cuando se utiliza HTTP.
52. Authenticode Beacons
• Al verificar una firma Authenticode Windows
valida el certificado, lo que puede requerir la
llamada a URLs externas.
• Podemos usar esto como beacon.
• Concepto: HoneyDocs, HoneyTags.
• CanaryTokens.
55. DEMO
• Añadir una firma adicional a un binario
legítimo.
• Comprobar como la ejecución del binario
genera un beacon.
56. Conclusiones
• Authenticode es una herramienta que nos
permite controlar ciertos aspectos críticos de
la seguridad de los ejecutables de un equipo.
• Sus múltiples funcionalidades son muy
positivas de cara a la gestión de la seguridad.
• Pero OJO! tiene debilidades y estas pueden
ser aprovechadas por usuarios maliciosos.