Authenticode para malotes

191 visualizaciones

Publicado el

Authenticode es un mecanismo de firma digital de codigo desarrollado por Microsoft. Nos permite comprobar la autenticidad y la integridad de ciertos ficheros. Pero existen técnicas para modificar un binario sin invalidar su firma. Estas técnicas pueden ser utilizadas para aprovechar las funcionalidades de Authenticode con una finalidad maliciosa.

Publicado en: Internet
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
191
En SlideShare
0
De insertados
0
Número de insertados
1
Acciones
Compartido
0
Descargas
1
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.
  • PKCS7
  • Authenticode para malotes

    1. 1. Authenticode para Malotes Ramón Pinuaga 1
    2. 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. 2
    3. 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. 3
    4. 4. ¿Conocéis Authenticode? 4
    5. 5. ¿Por qué? • Epidemia de Ransomware. • Cada vez más proyectos de Phishing dirigido. • Las corporaciones son muy vulnerables. 5
    6. 6. Consultores malotes (aka pentesters) listos para abusar de las características de Authenticode 6
    7. 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. 8. Firmas digitales 8
    9. 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. 9
    10. 10. Confianza VS 10
    11. 11. ¿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
    12. 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. 13. ¡Alerta! 13
    14. 14. Comunicación 14
    15. 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. 15
    16. 16. ¿DoS? 16
    17. 17. ¿Cómo? • Comprando un certificado. • Robando un certificado. • Modificando un binario confiable ya firmado. • Otros: Colisión de hashes. 17
    18. 18. Empecemos por lo fácil 18
    19. 19. Compra! 19
    20. 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. 21. Pide “prestado” 21
    22. 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. 23. Private keys everywhere! 23
    24. 24. Hacking a lo barato 24
    25. 25. Vamos a ponernos serios 25
    26. 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. 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. 27
    28. 28. Firma Authenticode de un PE 28
    29. 29. Simplificando 29
    30. 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. 30
    31. 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). 31
    32. 32. Criptografía 32
    33. 33. ¿MD5? 33
    34. 34. Deberes 34
    35. 35. DEMO • Verificar firma de un EXE. • Verificar firma de un VBS. • Firmas MD5 válidas y no hacen saltar SmartScreen. 35
    36. 36. Inyección de código 36
    37. 37. 37
    38. 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! 38
    39. 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. 40. Datos fuera de la zona firmada Herramienta AnalyzePESig: 40
    41. 41. Datos fuera de la zona firmada 41
    42. 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. 42
    43. 43. ¿Qué más podemos hacer? 43
    44. 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). 44
    45. 45. Software Restriction Policies 45
    46. 46. Binarios multiuso • Psexec.exe • Cdb.exe • Msbuild.exe • Bginfo.exe • InstallUtil.exe 46
    47. 47. DEMO • Ejecución de código Powershell desde Msbuild. • Ejecución de un VBS dentro de una carpeta protegida por SRP. 47
    48. 48. Powershell dentro de Msbuild 48
    49. 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. 50. Hijack de WSUS 50
    51. 51. Ya queda poco 51
    52. 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. 52
    53. 53. 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
    54. 54. Añadiendo una firma 54
    55. 55. DEMO • Añadir una firma adicional a un binario legítimo. • Comprobar como la ejecución del binario genera un beacon. 55
    56. 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. 56
    57. 57. Muchas gracias! https://twitter.com/rpinuaga 57

    ×