PDF de programación - Malware multiplataforma vía extensiones Firefox

Imágen de pdf Malware multiplataforma vía extensiones Firefox

Malware multiplataforma vía extensiones Firefoxgráfica de visualizaciones

Actualizado el 16 de Junio del 2017 (Publicado el 14 de Enero del 2017)
338 visualizaciones desde el 14 de Enero del 2017
4,1 MB
48 paginas
Creado hace 8a (27/02/2012)
Emiliano Martínez Contreras
emartinez@hispasec.com

Hispasec Sistemas
www.hispasec.com

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



ACLARACIÓN INICIAL
ACLARACIÓN INICIAL

● Esta presentación corresponde a una charla eminentemente práctica. Las
● 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
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
medio para transmitir ideas. Seguir los conceptos y las explicaciones de la charla
exclusivamente con estas transparencias es inútil.
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
● 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.
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. Burns
Mr. Burns
CEO Burns Ltd.



Producción energía
Producción energía



Un negocio muy rentable
Un negocio muy rentable



Vida en abundancia
Vida en abundancia
Vida en abundancia
Vida en abundancia



Caprichos exquisitos
Caprichos exquisitos



Esclavos a su servicio
Esclavos a su servicio



Chicas de moral distraida
Chicas de moral distraida



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



Tarjeta de coordenadas
Tarjeta de coordenadas



Demo sistema limpio
Demo sistema limpio



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



Ni un duro
Ni un duro





Demo infección
Demo infección



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



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



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



Candadito ==
Candadito ==
Totalmente seguro
Totalmente seguro



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



Atacar la aplicación
Atacar la aplicación

multiplataforma/multi-os
multiplataforma/multi-os



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



Arquitectura conceptual
Arquitectura conceptual

navegador genérico
navegador genérico

Interfaz de usuario
Interfaz de usuario

Motor de navegación
Motor de navegación

Motor de renderización
Motor de renderización

i

i

P
P
e
e
r
r
s
s
s
s
t
t
e
e
n
n
c
c
a
a

i

i

Gestor
Gestor
de red
de red

Intérprete
Intérprete
JavaScript
JavaScript



Parser
Parser
XML
XML



Backend de
Backend de
visualización
visualización

Arquitectura conceptual de Firefox
Arquitectura conceptual de Firefox



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



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



Demo: Live XUL Editor
Demo:



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 web
Análogo a una aplicación web

Estructura

Control

Tareas
especializadas



Extensiones para
Extensiones para
ampliar
ampliar
funcionalidad
funcionalidad



Entresijos de una extensión
Entresijos de una extensión

● Paquetes XPI (cross platform installer)...

archivos comprimidos en formato ZIP con una
determinada estructura de ficheros.

Install.rdf
Install.rdf

Chrome.manifest
Chrome.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 capas
Similar 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 maliciosa
extensió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 sistema
Instalació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
ACLARACIÓN FINAL

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

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

● Transparencia 15 – Acceso a portal de banca electrónica desde Linux+Firefox previa infección.
● 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
● 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
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
sistema infectado para mostrar como se solicita la tarjeta de coordenadas y se capturan todas
las credenciales personales.
las credenciales personales.

● Transparencia 26 – Se muestra código fuente de página web.
● 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
● 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
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.
demostrar el impacto visual de las modificaciones.

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

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

la charla.
la charla.

la transparencia.
la transparencia.

● Transparencia 46 – Se muestran otras cosas que
  • Links de descarga
http://lwp-l.com/pdf1755

Comentarios de: Malware multiplataforma vía extensiones Firefox (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad