Está en la página 1de 32

Show me your Kung-Fu

Sebastin Guerrero Jorge Mieres


sguerrero@malwareint.com
jamieres@malwareint.com

http://blog.seguesec.com

@0xroot

@jorgemieres

Contenido
Introduccin Anlisis Esttico Anlisis Dinmico Anlisis Forense Nickispy Protecciones Vulnerabilidades Conclusin

Estructura del sistema

Usado para empacar las aplicaciones Todo APK incluye: classes.dex


resources.asc /res /META-INF AndroidManifest.xml

Ficheros APK

Formato de ficheros DEX

Android Manifest

java/Fuente (Compiler) dex/dexdump dex/dex2jar (jdgui) java/jd-gui dex/dexdump (basksmali) - smali/basksmali

Ejemplo de cdigo

Anlisis Esttico

1. 2. 3.

Creamos una mquina virtual usando el SDK. Lanzamos el emulador y almacenamos las conexiones en un pcap:
emulator port n @device-name tcpdump foo.pcap

Instalamos la aplicacin
adb install appname.apk

4.

Lanzamos pruebas sobre el dispositivo y la aplicacin


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.

Anlisis Dinmico

Llamadas de telfono
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

Simular Eventos

1. 2.

AXMLPrinter2 Extraemos la informacin del


AndroidManifest.xml

Dex2jar Convertimos el fichero .dex en un fichero


de clases .jar. JAD Transformamos los ficheros .class en ficheros .jad

3. 4. 5.

JDgui Leemos el cdigo almacenado en el fichero


.jar.

Understand Anlisis esttico del cdigo. Wireshark Anlisis dinmico del cdigo.

Modus Operandi

Noob
Nombrar ficheros de clases con el mismo nombre en minscula/mayscula. Esto ocultar los ficheros en sistemas que no distingan entre minsculas/maysculas: N.class ~ n.class Cifrar las conexiones que realiza el malware (DES) dificultando su anlisis.

Rookie Introducir tcnicas para comprobar si se est ejecutando en un emulador. Mejorar la eficiencia del cdigo y ofuscarlo con alguna aplicacin como ProGuard.
Master of Universe Modificar el propio bytecode para inutilizar las herramientas de reversing.

Tcnicas antianlisis

Android est basado en el ncleo de Linux. Se usa MTD para interactuar con la memoria flash.
Sigue la nomenclatura /dev/mtd* Puntos de montura para /system, /data, /cache estn asociados a diferentes mtdblocks. Cada dispositiva est asociado a un dispositivo ro (Read Only).

Es necesario ser usuario root para poder realizar un anlisis forense.


Exploits. Aplicaciones especficas

A la hora de traernos los ficheros al disco podemos usar: Comando PULL del SDK para descargar/subir ficheros.
Instalar un servidor SSH en el telfono como DropBear. Instalar un servidor FTP.

Hacer correlaciones de los diferentes puntos de montaje. Tener acceso a los datos y bases de datos.

Forensics

Encrip What da fuck?

Si pierdes tu telfono preprate para

Alerta de seguridad - 19 julio Detectado por Symantec ~ 20apps Procedencia Fujian (China) Nombre com.nicky.lyyws.xmall Desarrollado por 56mo http://www.56mo.com Descargar desde http://user.c5005.com/DownList.aspx

NickiSpy

No se distribuy nunca por el Market.


Se puede descargar desde la pgina de la compaa: Elegir marca de Smartphone.
Elegir modelo concreto.

MD5
ad4dbe34853f1d58543b0b8db133eb5b a21ae2802a0ee460ca2d17a9102ff7b1 15afe9bfa1b3139b5727112aa12b8f70 426cedcf268bdf556aa405e0c8e03c16 0d2d9504649a97e7afee2caca61e277e 0d2d9504649a97e7afee2caca61e277e 83a98eabf044826622db7c211764cdf4 298446914e6c845fb331bfbfd2176d9d

Ratio
10/44 14/44 19/44 20/44 15/44 15/44 13/44 26 /44 12/44 23 /44 9 /44 2/44 7/44 9/44 13/44 14/44

Fecha
2011.08.31 2011.09.04 2011.08.31 2011.08.31 2011.09.02 2011.09.02 2011.08.23 2011.08.23 2011.08.23 2011.08.14 2011.08.11 2011.09.02 2011.08.12 2011.08.11 2011.08.10 2011.09.04

Acto seguido fue distribuido por varios Markets chinos CamangiMarket - camangimarket.com
GoAPK - goapk.com

f6cea3c1c0e9d2cf0ec373f142852399 f4514598c47658e513888ae6cb3fd8b1 1cbb2e45356bad1f3ecb103ed76dffdd a72adce41ea55c239ef04fbda446ceb1 edf5d97f1d47bdb3ca9c414f33337a87 0e7989aac352df525e5ebb077c786072

5664e00084e949b07227459d8bdaf9f3 a21ae2802a0ee460ca2d17a9102ff7b1

Estadsticas

18 muestras ~ 1 muestra (19.07) ~ Detectadas (11.08-04.09)

Autor

android.permission.CALL_PHONE android.permission.PROCESS_OUTGOING_CALLS android.permission.INTERNET android.permission.ACCESS_GPS android.permission.ACCESS_COARSE_LOCATION android.permission.ACCESS_COARSE_UPDATES android.permission.ACCESS_FINE_LOCATION android.permission.READ_PHONE_STATE android.permission.READ_CONTACTS android.permission.WRITE_CONTACTS android.permission.ACCESS_WIFI_STATE android.permission.SEND_SMS android.permission.READ_SMS android.permission.WRITE_SMS android.permission.WAKE_LOCK android.permission.RECORD_AUDIO android.permission.WRITE_EXTERNAL_STORAGE

Lista de permisos

Inicializamos el emulador (podemos especificar el puerto, seleccionar la VM, almacenar las conexiones, entre otras opciones).

Instalamos la aplicacin.

rbol inicial (Antes de la infeccin).

Simulamos actividad rbol final (Despus de la infeccin)

Proceso de infeccin

Obtiene el IMEI del dispositivo. Crea un fichero de configuracin


Ruta: com.nicky.lyyws.xamll/lib/shared_prefs Nombre fichero: XM_All_Setting

Fichero de configuracin

Servidor C&C: jin.56mo.com Puerto: 2018

Servidor C&C

Anlisis I

/sdcard/shangzhou/callrecord/ setAudioSource(1)
public static final int MIC Microphone audio source Constant Value: 1 (0x00000001)

setOutputFormat(1)
public static final int THREE_GPP 3GPP media file format Constant Value: 1 (0x00000001)

setAudioEncoder(1) public static final int AMR_NB


AMR (Narrowband) audio codec Constant Value: 1 (0x00000001)

Servicio de grabacin

Nmero SMS Premium: 15859268161. Enva un SMS con el IMEI. El nmero premium pertenece a Fujiance. Comprueba que la aplicacin no corra en un emulador.

Servicio SMS

Formato AMR
AMR (Adaptative Multi-Rate) es un formato de compresin de audio optimizado para la codificacin de voz.

El malware almacena el audio grabado en:


/sdcard/shangzhou/callrecord

El fichero creado tiene como nombre la fecha y hora en que fue creado:
20110907184158001 ao//mes/da hora/minutos

Formato AMR

Se basa en una simple condicin de estado

Usa dos simples mtodos de autentificacin


checkAccess para comprobar que tenemos los suficientes permisos para ejecutar la aplicacin.

handleServiceConnectionError para manejar los errores.

Proteccin en las aplicaciones?

Proceso manual
1. 2. 3. 4. 5. 6. 7. Desempacar el APK usando la herramienta Baksmali. Realizar el cambio de cdigo en los mtodos checkAccess y handleServiceConnectionError . Generar la clave privada con la que firmar el paquete. Empacar el APK usando APKTool Firmar la aplicacin con jargsigner Usar zipalign Instalar y disfrutar.

Proceso automatizado
Slo es necesario revertir la librera encargada de veriticar las licencias (License Verification Library) Usar la herramienta anti-lvl:

Rompiendo la proteccin

Vulnerabilidad Touch-Event Hijacking


Podemos mostrar al usuario una interfaz tapadera. Hacer compras, click en banners de publicidad, instalar aplicaciones, saltarnos los permisos, o incluso robar cualquier tipo de informacin del telfono

Cmo funciona?
A travs de Toasts , que permiten pasar los eventos a las capas inferiores

Qu versiones se ven afectadas?


Segn Google ninguna, esta vulnerabilidad est corregida. Remitindonos a las pruebas, a da de hoy <= 2.3.4

Qu piensa Google de todo esto?

TapJacking

Se han diseado un total de 4 payloads CallPayload.java Realiza llamadas al nmero de indicado.


MarketPayload.java Descarga e instala aplicaciones del market. ResetPayload.java Devuelve al estado de fbrica el telfono. SMSPayload.java Enva un mensaje de texto al nmero indicado. Est diseado para que se puedan aadir payloads por el usuario de forma sencilla.

La estructura interna es la siguiente: Main.java Ejecuta el servicio y carga los payloads.


MalwarePayload.java Abstraccin para implementar ms fcilmente los payloads. MalwareService.java Crea el toast e inicia el proceso de tap-jack. main.xml Tiene el layout de la aplicacin, lanzando con un evento onClick cada payload. strings.xml Contiene las cadenas que son utilizadas en la aplicacin.

El cdigo puede descargarse desde: http://code.google.com/p/tap-android/

Cmo est organizado?

Conclusiones

MUCHAS GRACIAS!
Sebastin Guerrero Jorge Mieres
sguerrero@malwareint.com
jamieres@malwareint.com

http://blog.seguesec.com

@0xroot

@jorgemieres