Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código...

Post on 25-Jul-2020

3 views 0 download

Transcript of Emiliano Martínez Contreras emartinez@hispasec.com ... · Transparencia 26 – Se muestra código...

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

Emiliano Martínez Contrerasemartinez@hispasec.com

Hispasec Sistemaswww.hispasec.com

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.

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.

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.

Mr. BurnsMr. BurnsCEO Burns Ltd.

Producción energíaProducción energía

Un negocio muy rentableUn negocio muy rentable

Vida en abundanciaVida en abundanciaVida en abundanciaVida en abundancia

Caprichos exquisitosCaprichos exquisitos

Esclavos a su servicioEsclavos a su servicio

Chicas de moral distraidaChicas de moral distraida

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

Tarjeta de coordenadasTarjeta de coordenadas

Demo sistema limpioDemo sistema limpio

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

Ni un duroNi un duro

Demo infecciónDemo infección

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

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

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

Candadito == Candadito == Totalmente seguroTotalmente seguro

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

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

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

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

Arquitectura conceptual de FirefoxArquitectura conceptual de Firefox

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

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

Demo:Demo: Live XUL Editor

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

Algo falla...Algo falla...

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

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

}

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.

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

Estructura

Control

Tareas especializadas

Extensiones para Extensiones para ampliar ampliar

funcionalidadfuncionalidad

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.

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

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

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

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

● Chrome.manifest

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

estructurales del navegador

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

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.

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.

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.

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

DEMODEMO

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.