Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Malware multiplataforma Malware multiplataforma vía extensiones de Firefoxvía extensiones de Firefox
Emiliano Martínez [email protected]
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.