Emiliano Martínez Contreras [email protected] ... · Transparencia 26 – Se muestra código...

48
Malware multiplataforma Malware multiplataforma vía extensiones de Firefox vía extensiones de Firefox Emiliano Martínez Contreras [email protected] Hispasec Sistemas www.hispasec.com

Transcript of Emiliano Martínez Contreras [email protected] ... · Transparencia 26 – Se muestra código...

Page 1: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Malware multiplataforma Malware multiplataforma vía extensiones de Firefoxvía extensiones de Firefox

Emiliano Martínez [email protected]

Hispasec Sistemaswww.hispasec.com

Page 2: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

ACLARACIÓN INICIAL● Esta presentación corresponde a una charla eminentemente práctica. Las

transparencias no pretenden ser ningún apoyo teórico para la charla, sino un medio para transmitir ideas. Seguir los conceptos y las explicaciones de la charla exclusivamente con estas transparencias es inútil.

● Si no ha asistido a la charla podrá encontrar la grabación de ésta en el canal de Youtube de la Universidad Politécnica de Madrid.

ACLARACIÓN INICIAL● Esta presentación corresponde a una charla eminentemente práctica. Las

transparencias no pretenden ser ningún apoyo teórico para la charla, sino un medio para transmitir ideas. Seguir los conceptos y las explicaciones de la charla exclusivamente con estas transparencias es inútil.

● Si no ha asistido a la charla podrá encontrar la grabación de ésta en el canal de Youtube de la Universidad Politécnica de Madrid.

Page 3: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

15 años atrás..15 años atrás...

Motivaciones:● Fama● Medio para aprender/investigar

Fauna y flora:Virus infectores, primeros troyanos de puerta trasera, gusanos, etc.

Page 4: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

A día de hoy...A día de hoy...

Motivación:● Lucro, lucro, lucro

Fauna y flora:Extorsion DdoS, extorsión ransomware, troyanos bancarios, adware, fake antivirus, etc.

Page 5: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Mr. BurnsMr. BurnsCEO Burns Ltd.

Page 6: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Producción energíaProducción energía

Page 7: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Un negocio muy rentableUn negocio muy rentable

Page 8: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Vida en abundanciaVida en abundanciaVida en abundanciaVida en abundancia

Page 9: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Caprichos exquisitosCaprichos exquisitos

Page 10: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Esclavos a su servicioEsclavos a su servicio

Page 11: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Chicas de moral distraidaChicas de moral distraida

Page 12: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

¿Cómo pagaba por ello?¿Cómo pagaba por ello?

Page 13: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Tarjeta de coordenadasTarjeta de coordenadas

Page 14: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant
Page 15: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Demo sistema limpioDemo sistema limpio

Page 16: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Pajaritos cantando... Pajaritos cantando... violines tocandoviolines tocando

Page 17: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Ni un duroNi un duro

Page 18: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant
Page 19: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Demo infecciónDemo infección

Page 20: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Al menos 3 Al menos 3 mitos rotos...mitos rotos...

Page 21: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Linux no se infecta... Linux no se infecta... Windows cacaWindows caca

Page 22: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Usa Usa Firefox...Firefox... Internet Explorer == coladeroInternet Explorer == coladero

Page 23: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Candadito == Candadito == Totalmente seguroTotalmente seguro

Page 24: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

¿Cómo ¿Cómo demonios...?demonios...?

Page 25: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Atacar la aplicación Atacar la aplicación multiplataforma/multi-osmultiplataforma/multi-os

(analogía con máquina virtual de Java)

Page 26: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant
Page 27: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Interfaz de usuarioInterfaz de usuario

Motor de navegaciónMotor de navegación

Motor de renderizaciónMotor de renderización

Gestorde red

Gestorde red

IntérpreteJavaScriptIntérpreteJavaScript

ParserXML

ParserXML

Backend devisualizaciónBackend de

visualización

Pe rsist en

ci aP

e rsist enci a

Arquitectura conceptual Arquitectura conceptual navegador genériconavegador genérico

Page 28: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Arquitectura conceptual de FirefoxArquitectura conceptual de Firefox

Page 29: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Interfaz de Usuario (XPToolkit) (I)Interfaz de Usuario (XPToolkit) (I)

Page 30: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Interfaz de Usuario (XPToolkit) (II)Interfaz de Usuario (XPToolkit) (II)

Demo:Demo: Live XUL Editor

Page 31: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Motor de navegación y Motor de navegación y renderización (Gecko)renderización (Gecko)

Page 32: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Algo falla...Algo falla...

Page 33: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

¿Y cómo llamo desde JS?¿Y cómo llamo desde JS?

Page 34: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Creando un directorio...Creando un directorio...

● Creamos un directorio llamado DIR en el directorio perfil del usuario:

var file = Components.classes["@mozilla.org/file/directory_service;1"].

getService(Components.interfaces.nsIProperties).

get("ProfD", Components.interfaces.nsIFile);

file.append("DIR");

if( !file.exists() || !file.isDirectory() ) {

// if it doesn't exist, create file.create(Components.interfaces.nsIFile.DIRECTORY_TYPE,

0777);

}

Page 35: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Más simple...Más simple...

Capa presentación: colores, tamaños, fuentes, etc.

Controla todas partes, efectos dinámicos...

Controla estructura

Caja negra para tareas especializadas: acceso a ficheros, creación ficheros, etc.

Page 36: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Análogo a una aplicación webAnálogo a una aplicación web

Estructura

Control

Tareas especializadas

Page 37: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Extensiones para Extensiones para ampliar ampliar

funcionalidadfuncionalidad

Page 38: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Entresijos de una extensiónEntresijos de una extensión

● Paquetes XPI (cross platform installer)... archivos comprimidos en formato ZIP con una determinada estructura de ficheros.

Install.rdfInstall.rdf

Chrome.manifestChrome.manifest

Content/*Content/*

[… otros dirs ...][… otros dirs ...]

Directivas y parámetros de instalación

Archivos JS y XUL que implementan el comportamiento de la extensión

Otros directorios para soporte de idiomas, skins, parámetros por defecto, etc.

Page 39: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Similar a diseño por capasSimilar a diseño por capas

● Capa superior puede modificar capas inferiores y ciertas capas intrínsecas del navegador.

Page 40: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Disección de nuestra Disección de nuestra extensión maliciosaextensión maliciosa

Page 41: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Dentro de FireInject...Dentro de FireInject...

● Chrome.manifest

● Browser Overlay● Sólo carga JavaScript malicioso, no hay cambios

estructurales del navegador

Page 42: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

● BrowserOverlay.js● Registra una callback para cada carga visita de

Page 43: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Instalación y llegada al sistemaInstalación y llegada al sistema

● Paquete XPI, instalación voluntaria desde navegador, e.j. VTzilla.

● Paquete XPI, copiar a carpeta

● Paquete XPI, nombrar extensión como extensión ya instalada y sustituir en

● Actualizaciones maliciosas desde una fuente previamente fiable (posibilidad MITM).

● Instalación tras explotación de vulnerabilidades.

Page 44: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Consideraciones de seguridad (I)Consideraciones de seguridad (I)

● Firefox confía plenamente en el código de las extensiones.

● No hay barreras de seguridad entre extensiones en un mismo perfil.

● No hay políticas de seguridad/permisos a la hora de acceder a la API de Firefox, XPCOM, etc.

● No hay comprobación de integridad a la hora de cargar extensiones ya instaladas (e.j. podemos sustituir con código malicioso).

● Versiones antigüas de Firefox se podía instalar sin ningún tipo de aviso.

● Múltiples mecanismos para ocultar que la extensión está instalada.

Page 45: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

Consideraciones de seguridad (II)Consideraciones de seguridad (II)● No se requiere ser root/administrador para instalar la extensión.

● El código de la extensión se ejecuta en el contexto del proceso del navegador.

● El navegador es el que realiza las peticiones HTTP para comunicación con su C&C.

● Las extensiones tienen acceso no restringido al DOM de las páginas visualizadas.

● El código es completamente multiplataforma.

● A través de XPCOM se puede acceder a otros recursos del sistema: sitema ficheros, Registro (Windows), etc.

● La firma de extensiones (software en general) tan sólo garantiza que alguien ha pagado por un certificado, no suministra ninguna garantía respecto al comportamiento de la extensión.

Page 46: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

¿Qué más podemos ¿Qué más podemos hacer?hacer?

DEMODEMO

Page 47: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant
Page 48: Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código fuente de pági na web. Transparencia 30 – Se usa la extensión Developer Assitant

ACLARACIÓN FINAL

Tal y como ya se ha mencionado en las aclaraciones iniciales de este documento, dado el carácter eminentemente práctico de la charla, este documento sirve de poco sin haber estado presente en ella.

Durante la charla se hacen una serie de demostraciones que no quedan recogidas en estas transparencias:

● Transparencia 15 – Acceso a portal de banca electrónica desde Linux+Firefox previa infección.● Transparencia 19 – Acceso a página que simula ser vídeo pornográfico para distribuir un falso

codec (extensión de Firefox maliciosa) e infectar el sistema. Acceso a banca electrónica con sistema infectado para mostrar como se solicita la tarjeta de coordenadas y se capturan todas las credenciales personales.

● Transparencia 26 – Se muestra código fuente de página web.● Transparencia 30 – Se usa la extensión Developer Assitant para explicar XUL y mostrar como

se renderiza. Se muestra la estructura de directorios de Firefox y se toca su código fuente para demostrar el impacto visual de las modificaciones.

● Transparencia 40 – Se estudia el código fuente de la extensión maliciosa presentada durante la charla.

● Transparencia 43 – Se demuestran cada uno de los mecanismos de instalación reseñados en la transparencia.

● Transparencia 46 – Se muestran otras cosas que se pueden hacer con la extensiones maliciosas: otras inyecciones en páginas de banca electrónica, captura de credenciales en facebook, etc.

● Transparencia 47 – Se demuestra como sería posible conseguir comprometer el sistema por completo (privilegios root) usando la extensión maliciosa.

ACLARACIÓN FINAL

Tal y como ya se ha mencionado en las aclaraciones iniciales de este documento, dado el carácter eminentemente práctico de la charla, este documento sirve de poco sin haber estado presente en ella.

Durante la charla se hacen una serie de demostraciones que no quedan recogidas en estas transparencias:

● Transparencia 15 – Acceso a portal de banca electrónica desde Linux+Firefox previa infección.● Transparencia 19 – Acceso a página que simula ser vídeo pornográfico para distribuir un falso

codec (extensión de Firefox maliciosa) e infectar el sistema. Acceso a banca electrónica con sistema infectado para mostrar como se solicita la tarjeta de coordenadas y se capturan todas las credenciales personales.

● Transparencia 26 – Se muestra código fuente de página web.● Transparencia 30 – Se usa la extensión Developer Assitant para explicar XUL y mostrar como

se renderiza. Se muestra la estructura de directorios de Firefox y se toca su código fuente para demostrar el impacto visual de las modificaciones.

● Transparencia 40 – Se estudia el código fuente de la extensión maliciosa presentada durante la charla.

● Transparencia 43 – Se demuestran cada uno de los mecanismos de instalación reseñados en la transparencia.

● Transparencia 46 – Se muestran otras cosas que se pueden hacer con la extensiones maliciosas: otras inyecciones en páginas de banca electrónica, captura de credenciales en facebook, etc.

● Transparencia 47 – Se demuestra como sería posible conseguir comprometer el sistema por completo (privilegios root) usando la extensión maliciosa.