Pimp your Android. Rooted CON 2012.
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Pimp your Android. Rooted CON 2012.

on

  • 452 views

Esta presentación hace un repaso sobre la seguridad en plataformas android, donde se profundiza en aspectos como: análisis estático de aplicaciones, análisis dinámico, análisis forense, ...

Esta presentación hace un repaso sobre la seguridad en plataformas android, donde se profundiza en aspectos como: análisis estático de aplicaciones, análisis dinámico, análisis forense, detección de malware, descubrimiento de vulnerabilidades 0-day y desmantelamiento de centros de control de botnets.

Statistics

Views

Total Views
452
Views on SlideShare
452
Embed Views
0

Actions

Likes
1
Downloads
10
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Pimp your Android. Rooted CON 2012. Presentation Transcript

  • 1. Pimp your Android Sebastián Guerrero – sguerrero@isecauditors.com
  • 2. Agenda • Introducción • Montando lab de investigación. • Trasteando con aplicaciones. • Análisis forense. • Formar un zoológico de malware. • Evolución del malware. • Medidas de seguridad. • Reverseemos algo nuevo. • Desmantelando un C&C • It’s 0-day time. 2
  • 3. Arquitectura
  • 4. Fichero APK • Es un fichero .zip falso • Usado para empacar las aplicaciones • Todo APK incluye: • classes.dex • resources.asc • /res • /META-INF • AndroidManifest.xml
  • 5. AndroidManifest
  • 6. Montando un laboratorio • Utilizar la ISO Android Reverse Engineering (A.R.E.) • Herramientas como Androguard, APKInspector, Apktool, AxmlPrinter, Dex2Jar, etc… • Espacio de trabajo ya configurado. • Ideal para máquinas virtuales. • Utilizar uno de los ports de Androix-x86. • Proyecto OpenSource. • Sistema operativo Android. • Entorno fácilmente configurable. • Fluidez. • Crearnos un lab a nuestra medida.
  • 7. Trasteando con aplicaciones aksmali mali nderstand ndroidSDK Eclipse netbeans ex2jar JD-gui proguArdwireshark
  • 8. Montando un análisis dinámico 1. Creamos una máquina virtual usando el SDK. 2. Lanzamos el emulador y almacenamos las conexiones en un pcap: • emulator –port n @device-name –tcpdump foo.pcap 3. Instalamos la aplicación • adb install appname.apk 4. Lanzamos pruebas sobre el dispositivo y la aplicación • adb shell monkey –v –p package.app n 5. Leemos los logs • adb shell logcat –d 6. Podemos apoyarnos en Wireshark para leer los logs de conexiones.
  • 9. Simulando eventos • Llamadas de teléfono • gsm call p-n • gsm accept p-n • gsm cancel p-n • SMS • sms send prefix-number text • Emular velocidad de red • netspeed gsm n • netspeed umts n • Cambiar coordenadas GPS • geo fix -13… 21…
  • 10. Modus Operandi 1. AXMLPrinter2 – Extraemos la información del AndroidManifest.xml 2. Dex2jar – Convertimos el fichero .dex en un fichero de clases .jar. JAD – Transformamos los ficheros .class en ficheros .jad 3. JDgui – Leemos el código almacenado en el fichero .jar. 4. Understand – Análisis estático del código. 5. Wireshark – Análisis dinámico del código.
  • 11. Analizando la memoria • Trabajamos con arquitectura ARM • Dividida en cinco capas distintas • Cada modelo es diferente, con aplicaciones específicas. • Herramientas de pago. • ¿Qué podemos toquetear aquí? – Tarjeta SIM. – Memoria física (Interna&Externa). – Memoria volátil. (1) Proyecto Android-x86 http://www.android-x86.org/
  • 12. Analizando la memoria • ¿Qué requisitos necesito? – Indispensable ser root en el teléfono: – Tener disponible el Android Debug Driver (ADB) – Es recomendable tener instalado un servicio SSH o FTP • ¿Por dónde empiezo? – Conocer cómo está estructurado el sistema. – Saber cuáles son los directorios asociados a los diferentes puntos de montaje. – Realizar la correlación (NanDroid || (DD && ADB pull)) • ¿Qué técnicas empleo? – Uso de strings y búsqueda de cadenas. – Análisis de las bases de datos. – File carving. – Análisis del sistema de ficheros.
  • 13. Tarjeta SIM • Información a obtener • Número IMSI. • Información sobre localización. • Información sobre tráfico SMS. • Información sobre proveedor. • Información sobre llamadas. • Dispositivo DEKART (35€ ~ 60€) • Características • Dispositivo lectura/escritura USB. • Hace copias de seguridad. • Permite exportar la agenda • Aplicaciones • MOBILedit! • Forensic Card Reader • Oxygen • USIM Detective.
  • 14. Una de strings • Claves WiFi – strings userdata.img | grep psk= • Correos electrónicos – strings userdata.img | egrep “[a-z A-Z_-.]+@[a-z A-Z-.]+.[a-z A-Z-.]+” • Imágenes JPG – strings data.img | grep -oE "(.*.jpe?g|.*.JPE?G)" • Inicios de sesión – Strings userdata.img | grep –n10 “login” • Números de teléfono – strings userdata.img | grep -oE "([0-9]{9})" • Tarjetas de crédito – strings userdata.img | grep -oE "^((4d{3})|(5[1-5]d{2})|(6011))-?d{4}-?d{4}- ?d{4}|3[4,7]d{13}$"
  • 15. Una de BBDDs • Constituye un alto porcentaje del análisis forense. • Toda la información relevante y sensible se encuentra almacenada en estos ficheros. • Suelen encontrarse en /data/data • Backup con adb pull / SSH / FTP / Terminal Emulator… • Consultamos con SQLite3 / SQLviewer…
  • 16. Encryp… What the fcuk! • Llamadas realizadas (com.android.providers.contacts/databases – contacts2.db) • Mensajes (com.android.providers.telephony/databases – mmssms.db) • Whatsapp (com.whatsapp/databases - mgstore.db – wa.db) • Tuenti
  • 17. Encryp… What the fcuk! • Configuración de email (com.google.android.email/databases – EmailProvider.db) • Delicious (Fichero xml) • Facebook
  • 18. La memoria volátil • Debemos de realizar sin tratar de alterar el estado actual del dispositivo. – No podemos apagar o reiniciar el terminal. – Nada de instalar o eliminar aplicaciones. – Cortar todo tipo de acceso a la red. – Modo avión. • Necesitamos ser root. • No disponemos de ninguna API que permita realizar esta labor. • ¿Soluciones? – No es posible acceder a /dev/mem por problemas de seguridad. – Emular dispositivo en /dev/fmem no es posible en Android • Función page_is_ram para comprobar si el desplazamiento a realizar pertenece a la memoria física o no, no existe en arquitectura ARM. • La herramienta DD sólo almacena enteros de 32 bits y desplazamientos más allá de 0x80000000 causan un integer overflow • Volatilitux al poder
  • 19. Volatilitux • Pslist – Listado de los procesos que andan ejecutándose en memoria • Memmap – Mapa de memoria de un proceso. • Memdmp – Memoria direccionable de un proceso. • Filedmp – Dumpea un fichero abierto • Filelist – Muestra ficheros abiertos para un proceso dado
  • 20. Si pierdes el teléfono…
  • 21. Montando SelwoMarina • Android Market • Markets alternativos. – Aptoide – Blapkmarket – snappzmarket • Páginas de aplicaciones. – Mobilism.org – DroidAppz – AndroidFreeware – MalwareDump – Bazaar • Aplicaciones de terceros • Exploits
  • 22. Montando Selwomarina • Organización de información • Almacenamiento y búsqueda por características de las muestras. • Tamaño, tipo, md5, sha1, tags, fechas… • Obtener, almacenar y recuperar elementos de las muestras. • Ficheros generados, Binarios desempaquetados, Exploits, cadenas embebidas. • Almacenar, buscar y devolver información sobre análisis • IDA Pro BD, notas de análisis, artículos y referencias, muestras de red, sistemas • Detección de firmas • Análisis automatizado • Diseño modularizado. • Características de análisis estático • Soporte de múltiples análisis de malware. • Aislamiento de entornos de análisis dinámico.
  • 23. Evolución del malware Nombre Características Riesgo AndroidOS.FakePlayer.a AndroidOS_Droisnake.A AndroidOS.FakePlayer.b AndroidOS.FakePlayer.c Android.Geinimi Android.HongTouTou Android.Pjapps Android.DroidDream Android.BgServ Android.Zeahache Android.Walkinwat Android.Adsms Android.Zsone Android.Spacem Android.LightDD Android/DroidKungFu.A Nombre Características Riesgo Android.Basebridge Android.Uxipp Andr/Plankton-A Android.Jsmshider Android.GGTracker Android.KungFu Variants AndroidOS_Crusewin.A AndroidOS_SpyGold.A DroidDream Light Variant Android.Smssniffer Android.HippoSMS Android.Fokonge Android/Sndapps.A Android.Nickispy Android.Lovetrap Android.Premiumtext Android.NickiBot
  • 24. Vectores de ataque • Amenazas basadas en aplicaciones • Malware • Spyware • Amenazas de privacidad • Vulnerabilidades en aplicaciones • Amenazas basadas en la web • Phishing • Drive-by-downloads • Exploits en navegadores • Amenazas basadas en las redes • Exploits para protocolos de red • Wi-fi sniffing • Amenazas físicas • Pérdida o robo del dispositivo
  • 25. Medidas de seguridad • Da igual si somos usuarios o una entidad corporativa. • Los malos vienen a hacer daño. • Tenemos un tesoro entre nuestras manos. • Somos el eslabón débil. • Toda nuestra vida online (emails, banca, redes sociales, privacidad) está en nuestro teléfono.
  • 26. Medidas de seguridad • Canal de comunicación a través de VPN y enrutar todo el tráfico. • Implementar política de contraseñas fuerte. • Deshabilitar servicios y dispositivos inseguros/innecesarios (GPS/Bluetooth/SDCard/etc…). • Capas de seguridad adicionales • Herramientas de privacidad, antivirus, borrado remoto, localización por GPS. • Deshabilitar instalación de software de terceros. • Habilitar servicios de acceso remoto; SSH, FTP, DropBear, etc…
  • 27. Analizando algo nuevo • Android.FoncySMS • Kaspersky • Risk Level 1: Muy bajo • Descubierto: 15 Enero, 2012 • Actualizado: 30 Enero, 2012 • Actividad: com.android.bot • Descargas: 3370~
  • 28. Información • Investigada por la OCLCTIC. • Investigación durante 2 meses. • “Banda” compuesta por dos miembros (“Cerebro” y técnico). • Envía SMS premium (4.5€). • 100.000€ 20/30€ por cabeza. • Se ha cobrado 2.000 víctimas desde verano del 2011. • Ciudades europeas y Canadá.
  • 29. Lista de permisos • android.permission.READ_LOGS • android.permission.READ_PHONE_STATE • android.permission.WRITE_EXTERNAL_STORAGE • android.permission.INTERNET • android.permission.VIBRATE • android.permission.WAKE_LOCK • android.permission.ACCESS_WIFI_STATE • android.permission.CHANGE_WIFI_STATE • android.permission.CHANGE_NETWORK_STATE • android.permission.ACCESS_NETWORK_STATE • android.permission.MODIFY_AUDIO_SETTINGS com.android.vending.CHECK_LICENSE
  • 30. Instalando la app • Iniciar emulador • Instalar la aplicación. • Revisar el estado actual. • Simular actividad. • Observar el nuevo estado. • Analizar
  • 31. Primer acercamiento
  • 32. Preparando el terreno
  • 33. Estructura de la aplicación • Tras la ejecución inicial… • Boomsh – ELF -32 bits LSB executable, ARM version 1 (SYSV), dynamically linked (uses shared library). • Border01.png – Zip archive data. • Footer01.png – ELF -32 bits LSB executable, ARV version 1 (SYSV), dynamically linked (uses shared libs). • Header01.png – ELF – 32bits LSB executable, ARM version 1 (SYSV), dinamically linked (uses shared library). • Rooted - Text file.
  • 34. Footer.png 1. Deja constancia de que el exploit ha tenido éxito. 2. Modifica los permisos de border01 a lectura/escritura (propietario) y escritura (resto). 3. Instala border01 lanzando el administrador de paquetes
  • 35. Footer.png (Round 2) • IRCConnect – Conectar con un servidor IRC. • IRCGenUser – Genera un usuario apoyándose en rand(). • IRCHandler – Manejador de errores. • IRCLogin – Establece sesión con el canal IRC. • IRCPrivmsgParse&IRCParseLine – Parsean las órdenes recibidas. • IRCSend – Realiza envío de mensajes.
  • 36. Footer (La chicha) 1. Establece conexión con 192.68.196.198. 2. Genera nombre de usuario al azar. 3. Se conecta al canal #andros. 4. Queda a la escucha de recibir órdenes. 5. Parsea las líneas que comienza por PRIVMGS
  • 37. Oído cocina • Comandos a ejecutar – PRIVMGS #andros :[SH] - %COMMAND_TO_RUN% – PRIVMGS #andros :[ID] - %REAL_USER_ID% – PRIVMGS #andros :[EXIT] – exiting ordered…
  • 38. Border01 • Permisos sospechosos – android.permission.RECEIVE_SMS – android.permission.SEND_SMS – android.permission.INTERNET
  • 39. AndroidMeActivity 1. Al iniciar la actividad se solicita el código ISO de la ciudad. 2. En base a esto, se establece un número premium u otro. 3. Se realizan 5 envíos a dicho número. • Ciudades a las que realiza el envío • Spain Number: 35024 Message: GOLD • Great Britain Number: 60999 Message: SP2 • Morocco Number: 2052 Message: CODE • Sierra Leone Number: 7604 Message: PASS • Romania Number: 1339 Message: PASS • Norway Number: 2227 Message: PASS • Sweden Number: 72225 Message: PASS • United States Number: 23333 Message: PASS
  • 40. SMSReceiver 1. Se encarga de la lógica del envío de mensajes. 2. Se reservan dos campos; uno para el número del destinatario y otro para el contenido. 3. Sí el SMS provece del número 81083, 3075, 64747, 60999, 63000, 35024, 2052, 7064, 1339, 9903, 2227, 72225, 23333, el broadcast se corta. 4. Establece conexión con 46.166.146.102 y envía el SMS recibido y el número de origen. 1. http://46.166.146.102/?=STR2(cuerpo mensaje)///STR1(número)
  • 41. IRC Botnet • Servidor: Irc.anonops.li / 6667 • Canal: #xxx • User: user • Pass: pass
  • 42. “Desmontando cúpulas” • ¿Objetivo? – Mostrar cómo está organizado y pensado un pequeño y simple C&C para Android. • ¿Qué malware? – Simple Android SMS Trojan. • ¿Funcionamiento? 1. Se instala en el teléfono una aplicación infectada. 2. Espera a que se realice la activación. 3. Se forma un string con el IMEI del usuario y su teléfono. 4. Se envía al C&C y se almacena en una BBDD.
  • 43. Estructura • BBDD: admin_123/123 • Panel: root/entermoney77 • Infecta varias plataformas – Android: mms.apk – Symbian – Nokia s60v3, s60v5 – mms.sis – Resto de plataformas con soporte java – mms.jar
  • 44. Contenido • Almacena la siguiente información: – Fecha infección. – IMEI teléfono. – OS. – IP. – País – Número – Texto • Panel en ruso y sólo registra teléfonos de Rusia. • Procedencia rusa.
  • 45. TapJacking • Vulnerabilidad Touch-Event Hijacking • Mostramos al usuario una interfaz tapadera. • Podemos obligar al usuario a: – Pagarnos unas vacaciones. – Obtener todos los datos del teléfono. – Capturar los movimientos del dispositivo. – Instalar aplicaciones saltándonos los permisos. – Creatividad… • Basada en toasts. • Bueno… ¿Y Google?
  • 46. Funcionamiento
  • 47. ¿Cómo está organizado? • Se han diseñado un total de 4 payloads • CallPayload.java – Realiza llamadas al número de indicado. • MarketPayload.java – Descarga e instala aplicaciones del market. • ResetPayload.java – Devuelve al estado de fábrica el teléfono. • SMSPayload.java – Envía un mensaje de texto al número indicado. • TweetPayload.java – Publica un tweet en una cuenta de usuario con sesión iniciada. • http://twitter.com/home?status=Yo me he comida más de una concha Codan por día • Está diseñado para que se puedan añadir payloads por el usuario de forma sencilla. • La estructura interna es la siguiente: • Main.java – Ejecuta el servicio y carga los payloads. • MalwarePayload.java – Abstracción para implementar más fácilmente los payloads. • MalwareService.java – Crea el toast e inicia el proceso de tap-jack. • main.xml – Tiene el layout de la aplicación, lanzando con un evento onClick cada payload. • strings.xml – Contiene las cadenas que son utilizadas en la aplicación.
  • 48. ¿Preguntas? ¡MUCHAS GRACIAS! @0xroot