busqueda de vulnerabilidades - an alisis din...

36
usqueda de vulnerabilidades - An´ alisis din´ amico Juan Heguiabehere Joaqu´ ın Rinaudo 22 o Escuela de Verano de Ciencias Inform´ aticas RIO 2015

Upload: vantram

Post on 02-Dec-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Busqueda de vulnerabilidades - Analisis

dinamico

Juan Heguiabehere Joaquın Rinaudo

22o Escuela de Verano de Ciencias InformaticasRIO 2015

Page 2: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Sobre el curso

I Lunes: Android como plataforma de desarrollo - Malware

I Martes: Malware (cont) - Diseno seguro en aplicaciones

I Jueves: Busqueda de vulnerabilidades - Analisis estatico

I Viernes: Busqueda de vulnerabilidades - Analisis dinamico

Page 3: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Contenidos

Sobre el curso

Analisis dinamico

Herramientas

Caso 1: Incorrecta validacion de certificados

Caso 2: Logging de informacion privada

Caso 3: Server local expuesto a otras apps

Caso 4: Transmision insegura de datos

Caso 5: Incorrecta validacion del servidor

Caso 6: Almacenamiento de informacion privada en SD

Caso 7: Inyectando Javascript en un contexto

Caso 8: Interfaces Javascript-Java / comunicacion HTTP

Page 4: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

¿Que es analisis dinamico?

I Analisis a partir de la ejecucion del programa yobservacion de comportamientos

I Ejecucion en entorno controlado

I Tipos de analisis dinamicos que vamos a ver:I TraficoI IPCI Acceso y modificaciones a recursos, archivos, etcI Acceso a informacion privada del usuario

Page 5: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

adb (Android Debug Bridge)

I Inspeccionar almacenamiento interno de la aplicacion:/data/data/PKGNAME

I Subir o bajar archivos del dispositivo: adb push/pull

I Logs de aplicaciones: logcat

I am para comenzar Activity, Service o Receiver

I sqlite3 para analizar bases sql

Page 6: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Proxies

I Utilizar proxy para capturar y modificar HTTP/HTTPS:I BurpI ZAPI mitmproxy

I Wireshark para capturar el resto del trafico

Page 7: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

mitmproxy

I Sitio:—http://mitmproxy.org/

I Instalacion

Page 8: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Drozer

I Framework de testing de seguridad para Android

I Buscar vulnerabilidades asumiendo rol de app permite:I Buscar informacion de aplicaciones instaladasI Interactuar con Activities, Receivers, Content Providers

y Servicios de otras appsI Utilizar un shell para comunicarse con el OS de linuxI Buscar la superficie de ataque de otras apps y

vulnerabilidades conocidas

Page 9: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Como conectarse a Drozer

I Instalar:I Consola que corre en la PCI Agente en el dispositivo o emuladorI Prender el agente desde el dispositivoI adb forward tcp:31415 tcp:31415I drozer console connect

Page 10: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Usando la consola Drozer

I shell: Shell del dispositivo en el contexto del agente

I list: Lista modulos Drozer que se pueden ejecutar en lasesion

I run: Correr un moduloI run app.package.attacksurface PKG: Lista

componentes exportadosI run app.package.info PKG: Informacion general de la

appI run app.COMPONENT.info -p PKG: Informacion

detallada de cada tipo de componente exportadoI run run scanner.misc.readablefiles: Buscar

archivos leıbles para todas las appsI help MODULE: Explicacion y parametros para cada

modulo

Page 11: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Cydia Substrate

I Instrumentacion dinamica: Modifica la aplicacion enRuntime

I Permite agregar codigo/hooks a metodos existentes

I Crear extensiones de aplicaciones modificando susmetodos

I Sin necesidad de desensamblar, modificar y recompilarnuevamente la aplicacion

I No se modifica el apk

I Sı hay que desensamblar los apks para encontrar cosasinteresantes para instrumentar

Page 12: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Extensiones de Cydia

I Android-SSL-TrustKillerI Fuerza a las apps a no validar certificados al

comunicarse con servidores via HTTPSI Analizar trafico con un proxy de apps que hacen

Certificate Pinning o usan certificados validos

Page 13: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Extensiones de Cydia

I IntroSpyI Ayuda a entender que hace una app cuando correI Logea:

I Uso general criptografıaI HashingI Claves utilizadasI Accesos a archivos en la memoria internaI Lectura y escritura a SDI Mecanismos de IPC utilizados e Intents enviadosI Lectura y escritura de shared prefsI Uso de SSL, falta de validacionI Uso de Webviews y si hay JS, FS y JSinterfaces

habilitadosI Accesos a base SQL

Page 14: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Creando tu propia extension de Cydia

Page 15: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 1: Incorrecta validacion de certificados

I Si proxy captura https, la app no valida los certificadoscorrectamente

I Si no, se puede instalar Android-SSL-TrustKiller o instalarel certificado del proxy en el dispositivo

I Una vez que se encontro que es vulnerable, estaticamentebuscar la causa:

I TrustManager customI HostNameVerifier customI Override de onReceiveSSLErrorI SSLSocketFactory getInsecureI HttpsURLConnection setDefaultSSLSocketFactory

Page 16: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 1: MercadoLibre

I MercadoLibre hasta 3.10.6

I Atacantes podıan montar ataques de Man-in-the-Middle

I Android apps that fail to validate SSL: Documento con23 mil apps que fallan

Page 17: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 2: Logging de informacion privada

I Clase android.util.Log para logear informacion:I Log.d(Debug)/Log.e(Error)I Log.i(Info)/Log.v(Verbose)/Log.w(Warn)

I Permiso android.permission.READ LOGS para leer

I adb logcat para leer los logs de todas las aplicaciones

Page 18: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 2: Logging de informacion privada

I Hasta 4.0, una aplicacion con READ LOGS obtenıa los logsde todas las apps

Page 19: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 2: Logging de informacion privada

I Ahora, una aplicacion con READ LOGS NO obtiene los logsde las otras apps

I Pero conectando el dispositivo a una PC, se puedenseguir obteniendo todos los logs

Page 20: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 2: Facebook SDKI Facebook SDK permite a integrar funcionalidades de

Facebook a aplicaciones de tercerosI Token de acceso es un identificador de FB dado a una

app para hacer pedidos por el usuarioI Cuando un usuario se logea utilizando Facebook a la app

se le da un token

Page 21: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 2: Facebook SDK

I Vulnerabilidad: SDK logeaba los tokens cuando unusuario se logeaba con esa app

I Apps maliciosas podıan leer los logs y obtener estostokens y usarlos para publicar como el usuario

Page 22: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 3: Server local expuesto a otras apps

I Algunas aplicaciones utilizan servidores locales HTTP

I Bind en localhost o 0.0.0.0

I localhost: Aplicaciones maliciosas

I global: Atacantes en LAN,WAN

Page 23: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 3: Facebook

I Facebook hasta la version 13

I Incluıa un servidor que funcionaba como caching proxypara los video

I GenericHttpServer que es escuchaba en 0.0.0.0

I Un atacante podıa conectarse:I Utilizarlo como Open ProxyI Agotar la memoria del dispositivoI Consumirle datos de la red 3g o LTE de la vıctima

I Solucion: Escuchar en 127.0.0.1

Page 24: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 4: Transmision insegura de datos

I La red es insegura:I SniffingI Inyeccion de datosI Hijacking de sesionI Man-in-the-MiddleI DNS PoisoningI SSL Strip

I Informacion privada debe utilizar protocolos seguros(no HTTP, UDP, TCP, VOIP)

Page 25: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 4: Facebook

I Facebook hasta la version 10

I App enviaba y recibıa las grabaciones de audio demensajes privados por HTTP

I App enviaba pedidos a CDNs por HTTP para reproducirlos videos

Page 26: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 4: InstagramI Instagram todavıa utiliza HTTPI Session Hijacking

Page 27: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 5: Incorrecta validacion del servidor

I Los servidores deberıan:I Validar el formato de inputs que vienen de la aplicacionI Prevenir ataques de replayI Validar que el pedido esta siguiendo la logica esperada:

I AutenticacionI AutorizacionI Control de recursos

Page 28: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 5: PicsArt

I Todavıa es explotable!

I Se puede enviar pedidos maliciosos para bypassear laautenticacion

I Desde la cuenta, se puede obtener tokens de acceso deredes sociales asociadas

Page 29: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 6: Almacenamiento de informacion privada en

SDI Almacenamiento externo (/sdcard,/mnt/sdcard) es

compartido con otras aplicacionesI Leıble para todas las apps hasta 4.3 y antes o las que

declaren READ EXTERNAL STORAGE para 4.4 en adelanteI Escritura para todos bajo WRITE EXTERNAL STORAGEI Si se va a guardar contenido sensible en la SD, encriptarlo

Page 30: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 6: Evernote

I Evernote guardaba todas las notas en/sdcard/Android/data/com.evernote/files/

I Contenido sin encriptar

Page 31: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 7: Inyectando Javascript en un contexto

I Aplicacion con una actividad exportada con una Webview(p.e. navegadores)

I Actividad anotada como singleTask

I Ademas intent-filter con:<data android:scheme="javascript"/>

I Aplicacion maliciosa puede correr JS en un contextodeterminado para robar cookies

I Ataque consiste en:I Enviar un Intent para cargar la pagina vıctima (p.e.www.google.com)

I Enviar otro Intent, usando el esquema javascript, paracorrer JS en el contexto de esa pagina

Page 32: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 7: Sleipnir Browser

Page 33: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 7: Sleipnir Browser

Page 34: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 8: Interfaces Javascript-Java / comunicacion

HTTP

I Webview y addJavascriptInterface

I Utilizado en librerıas de ads, Phonegap, navegadores

I Ataque: Inyectar JS a pedidos HTTP a librerıas o codigoJS con MITM

I Abusar interfaz para correr codigo nativo u exfiltrar datos

I Codigo a inyectar depende de:I Metodos interfaz expuestaI target-SDK de la aplicacion / Version de AndroidI Permisos de la aplicacion

Page 35: Busqueda de vulnerabilidades - An alisis din amicodc.exa.unrc.edu.ar/rio2015/sites/default/files/clase4.pdf · I DNS Poisoning I SSL Strip I Informaci on privada debe utilizar protocolos

Caso 8: Interfaces Javascript-Java / comunicacion

HTTP