48
Pimp your Android Sebastián Guerrero – [email protected]

Pimp your Android. Rooted CON 2012

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Pimp your Android. Rooted CON 2012

Pimp your Android

Sebastián Guerrero – [email protected]

Page 2: Pimp your Android. Rooted CON 2012

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

Page 3: Pimp your Android. Rooted CON 2012

Arquitectura

Page 4: Pimp your Android. Rooted CON 2012

Fichero APK

• Es un fichero .zip falso • Usado para empacar las aplicaciones • Todo APK incluye:

• classes.dex • resources.asc • /res • /META-INF • AndroidManifest.xml

Page 5: Pimp your Android. Rooted CON 2012

AndroidManifest

Page 6: Pimp your Android. Rooted CON 2012

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.

Page 7: Pimp your Android. Rooted CON 2012

Trasteando con aplicaciones

aksmali

mali

nd

erstand

nd

roid

SD

K

Eclipse netbeans

ex2jar

JD-gui proguArd wireshark

Page 8: Pimp your Android. Rooted CON 2012

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.

Page 9: Pimp your Android. Rooted CON 2012

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…

Page 10: Pimp your Android. Rooted CON 2012

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.

Page 11: Pimp your Android. Rooted CON 2012

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/

Page 12: Pimp your Android. Rooted CON 2012

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.

Page 13: Pimp your Android. Rooted CON 2012

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.

Page 14: Pimp your Android. Rooted CON 2012

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 "^((4\d{3})|(5[1-5]\d{2})|(6011))-?\d{4}-?\d{4}-

?\d{4}|3[4,7]\d{13}$"

Page 15: Pimp your Android. Rooted CON 2012

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…

Page 16: Pimp your Android. Rooted CON 2012

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

Page 17: Pimp your Android. Rooted CON 2012

Encryp… What the fcuk! • Configuración de email (com.google.android.email/databases – EmailProvider.db)

• Delicious (Fichero xml)

• Facebook

Page 18: Pimp your Android. Rooted CON 2012

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

Page 19: Pimp your Android. Rooted CON 2012

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

Page 20: Pimp your Android. Rooted CON 2012

Si pierdes el teléfono…

Page 21: Pimp your Android. Rooted CON 2012

Montando SelwoMarina

• Android Market

• Markets alternativos. – Aptoide

– Blapkmarket

– snappzmarket

• Páginas de aplicaciones. – Mobilism.org

– DroidAppz

– AndroidFreeware

– MalwareDump

– Bazaar

• Aplicaciones de terceros

• Exploits

Page 22: Pimp your Android. Rooted CON 2012

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.

Page 23: Pimp your Android. Rooted CON 2012

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

Page 24: Pimp your Android. Rooted CON 2012

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

Page 25: Pimp your Android. Rooted CON 2012

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.

Page 26: Pimp your Android. Rooted CON 2012

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…

Page 27: Pimp your Android. Rooted CON 2012

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~

Page 28: Pimp your Android. Rooted CON 2012

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á.

Page 29: Pimp your Android. Rooted CON 2012

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

Page 30: Pimp your Android. Rooted CON 2012

Instalando la app

• Iniciar emulador

• Instalar la aplicación.

• Revisar el estado actual.

• Simular actividad.

• Observar el nuevo estado.

• Analizar

Page 31: Pimp your Android. Rooted CON 2012

Primer acercamiento

Page 32: Pimp your Android. Rooted CON 2012

Preparando el terreno

Page 33: Pimp your Android. Rooted CON 2012

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.

Page 34: Pimp your Android. Rooted CON 2012

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

Page 35: Pimp your Android. Rooted CON 2012

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.

Page 36: Pimp your Android. Rooted CON 2012

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

Page 37: Pimp your Android. Rooted CON 2012

Oído cocina

• Comandos a ejecutar

– PRIVMGS #andros :[SH] - %COMMAND_TO_RUN%

– PRIVMGS #andros :[ID] - %REAL_USER_ID%

– PRIVMGS #andros :[EXIT] – exiting ordered…

Page 38: Pimp your Android. Rooted CON 2012

Border01

• Permisos sospechosos – android.permission.RECEIVE_SMS

– android.permission.SEND_SMS

– android.permission.INTERNET

Page 39: Pimp your Android. Rooted CON 2012

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

Page 40: Pimp your Android. Rooted CON 2012

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)

Page 41: Pimp your Android. Rooted CON 2012

IRC Botnet

• Servidor: Irc.anonops.li / 6667

• Canal: #xxx

• User: user

• Pass: pass

Page 42: Pimp your Android. Rooted CON 2012

“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.

Page 43: Pimp your Android. Rooted CON 2012

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

Page 44: Pimp your Android. Rooted CON 2012

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.

Page 45: Pimp your Android. Rooted CON 2012

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?

Page 46: Pimp your Android. Rooted CON 2012

Funcionamiento

Page 47: Pimp your Android. Rooted CON 2012

¿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.

Page 48: Pimp your Android. Rooted CON 2012

¿Preguntas?

¡MUCHAS GRACIAS!

@0xroot