Malware multiplataforma vía extensiones de Firefox
Transcripción
Malware multiplataforma vía extensiones de Firefox
Emiliano Martínez Contreras [email protected] Hispasec Sistemas www.hispasec.com Malware multiplataforma vía extensiones de Firefox ACLARACIÓN ACLARACIÓNINICIAL INICIAL ● Esta presentación corresponde a una charla ● Esta presentación corresponde a una charla eminentemente eminentemente práctica. práctica. Las Las transparencias no pretenden ser ningún apoyo teórico para la charla, sino transparencias no pretenden ser ningún apoyo teórico para la charla, sino un 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 exclusivamentecon conestas estastransparencias transparenciases esinútil. 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 Youtubede delalaUniversidad UniversidadPolitécnica Politécnicade deMadrid. Madrid. 15 años atrás... 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... Motivación: ● Lucro, lucro, lucro Fauna y flora: Extorsion DdoS, extorsión ransomware, troyanos bancarios, adware, fake antivirus, etc. Mr. Burns CEO Burns Ltd. Producción energía Un negocio muy rentable Vida Vidaen enabundancia abundancia Caprichos exquisitos Esclavos a su servicio Chicas de moral distraida ¿Cómo pagaba por ello? Tarjeta de coordenadas Demo sistema limpio Pajaritos cantando... violines tocando Ni un duro Demo infección Al menos 3 mitos rotos... Linux no se infecta... Windows caca Usa Firefox... Internet Explorer == coladero Candadito == Totalmente seguro ¿Cómo demonios...? Atacar la aplicación multiplataforma/multi-os (analogía con máquina virtual de Java) Arquitectura conceptual navegador genérico Motor Motor de de navegación navegación Motor Motor de de renderización renderización Gestor Gestor de dered red Intérprete Intérprete JavaScript JavaScript Parser Parser XML XML Persistencia Persistencia Interfaz Interfaz de de usuario usuario Backend Backendde de visualización visualización Arquitectura conceptual de Firefox Interfaz de Usuario (XPToolkit) (I) Interfaz de Usuario (XPToolkit) (II) Demo: Live XUL Editor Motor de navegación y renderización (Gecko) Algo falla... ¿Y cómo llamo desde JS? 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... 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 Estructura Control Tareas especializadas Extensiones para ampliar funcionalidad 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 otros dirs 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 ● Capa superior puede modificar capas inferiores y ciertas capas intrínsecas del navegador. Disección de nuestra extensión maliciosa 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 ● 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) ● 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) ● 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 hacer? DEMO ACLARACIÓN ACLARACIÓNFINAL FINAL Tal Tal yy como como ya ya se se ha ha mencionado mencionado en en las las aclaraciones aclaraciones iniciales iniciales de de este este documento, documento, dado dado elel carácter carácter eminentemente eminentemente práctico práctico de de lala charla, charla, este este documento documento sirve sirve de de poco poco sin sin haber haber estado estado presente en ella. presente en ella. Durante Durante lala charla charla se se hacen hacen una una serie serie de de demostraciones demostraciones que que no no quedan quedan recogidas recogidas en en estas estas transparencias: transparencias: ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● Transparencia Transparencia15 15––Acceso Accesoaaportal portalde debanca bancaelectrónica electrónicadesde desdeLinux+Firefox Linux+Firefoxprevia previainfección. infección. Transparencia 19 – Acceso a página que simula ser vídeo pornográfico para distribuir Transparencia 19 – Acceso a página que simula ser vídeo pornográfico para distribuirun unfalso falso codec (extensión de Firefox maliciosa) e infectar el sistema. Acceso a banca electrónica codec (extensión de Firefox maliciosa) e infectar el sistema. Acceso a banca electrónicacon 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 lascredenciales credencialespersonales. personales. Transparencia 26 Transparencia 26––Se Semuestra muestracódigo códigofuente fuentede depágina páginaweb. web. Transparencia 30 – Se usa la extensión Developer Assitant Transparencia 30 – Se usa la extensión Developer Assitantpara paraexplicar explicarXUL XULyymostrar mostrarcomo como se renderiza. Se muestra la estructura de directorios de Firefox y se toca su código fuente se renderiza. Se muestra la estructura de directorios de Firefox y se toca su código fuentepara para demostrar el impacto visual de las modificaciones. demostrar el impacto visual de las modificaciones. Transparencia Transparencia40 40––Se Seestudia estudiaelelcódigo códigofuente fuentede delalaextensión extensiónmaliciosa maliciosapresentada presentadadurante durante lalacharla. charla. Transparencia Transparencia43 43––Se Sedemuestran demuestrancada cadauno unode delos losmecanismos mecanismosde deinstalación instalaciónreseñados reseñadosen en lalatransparencia. transparencia. Transparencia Transparencia 46 46 –– Se Se muestran muestran otras otras cosas cosas que que se se pueden pueden hacer hacer con con lala extensiones extensiones maliciosas: otras inyecciones en páginas de banca electrónica, captura de credenciales maliciosas: otras inyecciones en páginas de banca electrónica, captura de credenciales en en facebook, etc. facebook, etc. Transparencia Transparencia47 47––Se Sedemuestra demuestracomo comosería seríaposible posibleconseguir conseguircomprometer comprometerelelsistema sistemapor por completo (privilegios root) usando la extensión maliciosa. completo (privilegios root) usando la extensión maliciosa.