Authenticode para Malotes
Ramón Pinuaga
1
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.
2
¿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.
3
¿Conocéis Authenticode?
4
¿Por qué?
• Epidemia de Ransomware.
• Cada vez más proyectos de Phishing dirigido.
• Las corporaciones son muy vulnerables.
5
Consultores malotes (aka pentesters) listos para abusar
de las características de Authenticode
6
¿Qué es Authenticode?
• Mecanismo de firma de código desarrollado
por Microsoft.
• Permite comprobar la autenticidad y la
integridad de algunos tipos de ficheros.
7
Firmas digitales
8
¿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.
9
Confianza
VS
10
¿Y si les damos la vuelta?
• Burlar SmartScreen usando un ejecutable de
firmado.
• Burlar protecciones basadas en lista blanca
utilizando ejecutables de editores legítimos.
• Añadir un beacon a un fichero sin invalidar su
firma.
11
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).
12
¡Alerta!
13
Comunicación
14
¿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.
15
¿DoS?
16
¿Cómo?
• Comprando un certificado.
• Robando un certificado.
• Modificando un binario confiable ya firmado.
• Otros: Colisión de hashes.
17
Empecemos por lo fácil
18
Compra!
19
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.
20
Pide “prestado”
21
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.
22
Private keys everywhere!
23
Hacking a lo barato
24
Vamos a ponernos serios
25
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
26
Modificando un binario confiable
• ¿Podemos hacerlo sin invalidar la firma?
• Solo ciertas partes.
• Solo en casos muy contados podemos
conseguir inyectar código funcional.
27
Firma Authenticode de un PE
28
Simplificando
29
¿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.
30
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).
31
Criptografía
32
¿MD5?
33
Deberes
34
DEMO
• Verificar firma de un EXE.
• Verificar firma de un VBS.
• Firmas MD5 válidas y no hacen saltar
SmartScreen.
35
Inyección de código
36
37
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!
38
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.
39
Datos fuera de la zona firmada
Herramienta AnalyzePESig:
40
Datos fuera de la zona firmada
41
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.
42
¿Qué más podemos hacer?
43
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).
44
Software Restriction Policies
45
Binarios multiuso
• Psexec.exe
• Cdb.exe
• Msbuild.exe
• Bginfo.exe
• InstallUtil.exe
46
DEMO
• Ejecución de código Powershell desde
Msbuild.
• Ejecución de un VBS dentro de una carpeta
protegida por SRP.
47
Powershell dentro de Msbuild
48
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.
49
Hijack de WSUS
50
Ya queda poco
51
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.
52
Mucho más que EXEs
• Binarios PE: .EXE, .DLL, .COM, .OCX, .SCR, .CPL
• Drivers: .SYS, .VXD
• Colecciones: .CAT, .CTL
• Contenedores: .CAB, .MSI, .MSP, .MSM
• Scripts: .VBS, .JS, .VBE, .JSE, .WSH
• Powershell: .PS1, .PSM1, .PS1XML
• Aplicaciones ClickOnce: .APPLICATION
53
Añadiendo una firma
54
DEMO
• Añadir una firma adicional a un binario
legítimo.
• Comprobar como la ejecución del binario
genera un beacon.
55
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.
56
Muchas gracias!
https://twitter.com/rpinuaga
57

Authenticode para malotes

  • 1.
  • 2.
    Presentación • Pentester yanalista 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. 2
  • 3.
    ¿De qué vala 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. 3
  • 4.
  • 5.
    ¿Por qué? • Epidemiade Ransomware. • Cada vez más proyectos de Phishing dirigido. • Las corporaciones son muy vulnerables. 5
  • 6.
    Consultores malotes (akapentesters) listos para abusar de las características de Authenticode 6
  • 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. 7
  • 8.
  • 9.
    ¿Para qué seutiliza? • 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. 9
  • 10.
  • 11.
    ¿Y si lesdamos la vuelta? • Burlar SmartScreen usando un ejecutable de firmado. • Burlar protecciones basadas en lista blanca utilizando ejecutables de editores legítimos. • Añadir un beacon a un fichero sin invalidar su firma. 11
  • 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). 12
  • 13.
  • 14.
  • 15.
    ¿Burlar SmartScreen? • Paracampañas de infección mediante ataques de phishing o drive-by. • Ejecutables no conformes con SmartScreen generan desconfianza y ratio de infección menor. 15
  • 16.
  • 17.
    ¿Cómo? • Comprando uncertificado. • Robando un certificado. • Modificando un binario confiable ya firmado. • Otros: Colisión de hashes. 17
  • 18.
  • 19.
  • 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. 20
  • 21.
  • 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. 22
  • 23.
  • 24.
    Hacking a lobarato 24
  • 25.
  • 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 26
  • 27.
    Modificando un binarioconfiable • ¿Podemos hacerlo sin invalidar la firma? • Solo ciertas partes. • Solo en casos muy contados podemos conseguir inyectar código funcional. 27
  • 28.
  • 29.
  • 30.
    ¿Cómo modificar unbinario 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. 30
  • 31.
    Colisiones • La firmaAuthenticode 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). 31
  • 32.
  • 33.
  • 34.
  • 35.
    DEMO • Verificar firmade un EXE. • Verificar firma de un VBS. • Firmas MD5 válidas y no hacen saltar SmartScreen. 35
  • 36.
  • 37.
  • 38.
    Problema • Las partesdonde 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! 38
  • 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. 39
  • 40.
    Datos fuera dela zona firmada Herramienta AnalyzePESig: 40
  • 41.
    Datos fuera dela zona firmada 41
  • 42.
    DEMO • Ver distintostipos 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. 42
  • 43.
  • 44.
    Bypass de listasblancas • 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). 44
  • 45.
  • 46.
    Binarios multiuso • Psexec.exe •Cdb.exe • Msbuild.exe • Bginfo.exe • InstallUtil.exe 46
  • 47.
    DEMO • Ejecución decódigo Powershell desde Msbuild. • Ejecución de un VBS dentro de una carpeta protegida por SRP. 47
  • 48.
  • 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. 49
  • 50.
  • 51.
  • 52.
    Authenticode Beacons • Alverificar 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. 52
  • 53.
    Mucho más queEXEs • Binarios PE: .EXE, .DLL, .COM, .OCX, .SCR, .CPL • Drivers: .SYS, .VXD • Colecciones: .CAT, .CTL • Contenedores: .CAB, .MSI, .MSP, .MSM • Scripts: .VBS, .JS, .VBE, .JSE, .WSH • Powershell: .PS1, .PSM1, .PS1XML • Aplicaciones ClickOnce: .APPLICATION 53
  • 54.
  • 55.
    DEMO • Añadir unafirma adicional a un binario legítimo. • Comprobar como la ejecución del binario genera un beacon. 55
  • 56.
    Conclusiones • Authenticode esuna 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. 56
  • 57.

Notas del editor