Emiliano Martínez Contreras
[email protected]
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
Comentarios de: Malware multiplataforma vía extensiones Firefox (0)
No hay comentarios