SourceCON - Show me your kung-fu

Post on 22-Nov-2014

1.160 views 3 download

description

 

Transcript of SourceCON - Show me your kung-fu

@jorgemieresJorge Mieresjamieres@malwareint.com

Show me your Kung-Fu ++

Sebastián Guerrerosguerrero@malwareint.com http://blog.seguesec.com

@0xroot

ContenidoContenido

• IntroducciónIntroducción• Análisis EstáticoAnálisis Estático• Análisis DinámicoAnálisis Dinámico• Análisis ForenseAnálisis Forense• Amenazas en los smartphonesAmenazas en los smartphones• Hardening AndroidHardening Android• Evolución del malwareEvolución del malware• NickispyNickispy• ProteccionesProtecciones• VulnerabilidadesVulnerabilidades• ConclusiónConclusión

Estructura del sistemaEstructura del sistema

Ficheros APKFicheros APK

• Usado para empacar las aplicaciones• Todo APK incluye:

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

Formato de ficheros DEXFormato de ficheros DEX

Android ManifestAndroid Manifest

Ejemplo de códigoEjemplo de código

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

Análisis EstáticoAnálisis Estático

Análisis DinámicoAná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.

Simular EventosSimular Eventos

• Llamadas de teléfonoLlamadas de teléfono• gsm call p-n• gsm accept p-n• gsm cancel p-n

• SMSSMS• sms send prefix-number text

• Emular velocidad de redEmular velocidad de red• netspeed gsm n• netspeed umts n

• Cambiar coordenadas GPSCambiar coordenadas GPS• geo fix -13… 21…

Modus OperandiModus Operandi

1. AXMLPrinter2 – Extraemos la información delAndroidManifest.xml

2. Dex2jar – Convertimos el fichero .dex en un ficherode 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.

Técnicas antianálisisTécnicas antianálisis

• Noob• Nombrar ficheros de clases con el mismo nombre en minúscula/mayúscula. Esto ocultará los ficheros en sistemas que no distingan entre minúsculas/mayúsculas:N.class ~ n.class• Cifrar las conexiones que realiza el malware (DES) dificultando su análisis.

• Rookie• Introducir técnicas para comprobar si se está ejecutando en un emulador.• Mejorar la eficiencia del código y ofuscarlo con alguna aplicación como ProGuard.

• Master of Universe• Modificar el propio bytecode para inutilizar las herramientas de reversing.

ForensicsForensics

• Android está basado en el núcleo de Linux.

• Se usa MTD para interactuar con la memoria flash.• Sigue la nomenclatura /dev/mtd*• Puntos de montura para /system, /data, /cache están asociados a diferentes mtdblocks.• Cada dispositivo está asociado a un dispositivo ro (Read Only).

• Es necesario ser usuario root para poder realizar un análisis forense.• Exploits.• Aplicaciones específicas

• 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 teléfono como DropBear.• Instalar un servidor FTP.

• Hacer correlaciones de los diferentes puntos de montaje.

• Tener acceso a los datos y bases de datos.

Encrip… What da fuck?Encrip… What da fuck?

Si pierdes tu teléfono prepárate para…Si pierdes tu teléfono prepárate para…

Amenazas en los smartphonesAmenazas en los smartphones

• Amenazas basadas en aplicacionesAmenazas basadas en aplicaciones• Malware • Spyware• Amenazas de privacidad• Vulnerabilidades en aplicaciones

• Amenazas basadas en la webAmenazas basadas en la web• Phishing• Drive-by-downloads• Exploits en navegadores

• Amenazas basadas en las redesAmenazas basadas en las redes• Exploits para protocolos de red• Wi-fi sniffing

• Amenazas físicasAmenazas físicas• Pérdida o robo del dispositivo

Hardening AndroidHardening Android

• Deshabilitar la instalación de software de terceras entidades.Deshabilitar la instalación de software de terceras entidades.

• Deshabilitar funcionalidades/dispositivos inseguros/innecesarios.Deshabilitar funcionalidades/dispositivos inseguros/innecesarios.

• Hacer uso de “antivirus”Hacer uso de “antivirus”

• LEERLEER, , LEERLEER y y LEERLEER los permisos.los permisos.

• Borrado remoto, localización por GPS.Borrado remoto, localización por GPS.

• No instalar aplicaciones descargadas de markets de terceros.No instalar aplicaciones descargadas de markets de terceros.

Evolución del malwareEvolució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

NickiSpyNickiSpy

• Alerta de seguridad - 19 julioAlerta de seguridad - 19 julio

• Detectado por Symantec ~ 20apps Detectado por Symantec ~ 20apps

• Procedencia – Fujian (China)Procedencia – Fujian (China)

• Nombre – com.nicky.lyyws.xmallNombre – com.nicky.lyyws.xmall

• Desarrollado por – 56mo http://www.56mo.comDesarrollado por – 56mo http://www.56mo.com

• Descargar desde – Descargar desde – http://user.c5005.com/DownList.aspxhttp://user.c5005.com/DownList.aspx

EstadísticasEstadísticas

• No se distribuyó nunca por el Market.

• Se puede descargar desde la página de la compañía:• Elegir marca de Smartphone.• Elegir modelo concreto.

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

•  

MD5 Ratio Fecha

ad4dbe34853f1d58543b0b8db133eb5b 10/44 2011.08.31

a21ae2802a0ee460ca2d17a9102ff7b1 14/44 2011.09.04

15afe9bfa1b3139b5727112aa12b8f70 19/44 2011.08.31

426cedcf268bdf556aa405e0c8e03c16 20/44 2011.08.31

0d2d9504649a97e7afee2caca61e277e 15/44 2011.09.02

0d2d9504649a97e7afee2caca61e277e 15/44 2011.09.02

83a98eabf044826622db7c211764cdf4 13/44 2011.08.23

298446914e6c845fb331bfbfd2176d9d 26 /44 2011.08.23

f6cea3c1c0e9d2cf0ec373f142852399 12/44 2011.08.23

f4514598c47658e513888ae6cb3fd8b1 23 /44 2011.08.14

1cbb2e45356bad1f3ecb103ed76dffdd 9 /44 2011.08.11

a72adce41ea55c239ef04fbda446ceb1 2/44 2011.09.02

edf5d97f1d47bdb3ca9c414f33337a87 7/44 2011.08.12

0e7989aac352df525e5ebb077c786072 9/44 2011.08.11

5664e00084e949b07227459d8bdaf9f3 13/44 2011.08.10

a21ae2802a0ee460ca2d17a9102ff7b1 14/44 2011.09.04

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

AutorAutor

Lista de permisosLista de permisos

•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

Proceso de infecciónProceso de infección

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

• Instalamos la aplicación.

• Árbol inicial (Antes de la infección).

• Simulamos actividad

• Árbol final (Después de la infección)

Fichero de configuraciónFichero de configuración

• Obtiene el IMEI del dispositivo.

• Crea un fichero de configuración• Ruta: com.nicky.lyyws.xamll/lib/shared_prefs • Nombre fichero: XM_All_Setting

Servidor C&CServidor C&C

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

Análisis IAnálisis I

Servicio de grabaciónServicio de grabación

• /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 SMSServicio SMS

• Número SMS Premium: 15859268161.

• Envía un SMS con el IMEI.

• El número premium pertenece a Fujiance.

• Comprueba que la aplicación no corra en un emulador.

Formato “AMR”Formato “AMR”

• Formato AMR• AMR (Adaptative Multi-Rate)  es un formato de compresión de audio optimizado para la codificación 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 – año//mes/día– hora/minutos

¿Protección en las aplicaciones?¿Protección en las aplicaciones?

• Se basa en una simple condición de estado

• Usa dos simples métodos de autentificación• checkAccess para comprobar que tenemos los suficientes permisos para ejecutar la aplicación.

• handleServiceConnectionError para manejar los errores..

Rompiendo la protecciónRompiendo la protección

1. Desempacar el APK usando la herramienta Baksmali.2. Realizar el cambio de código en los métodos checkAccess y handleServiceConnectionError .3. Generar la clave privada con la que firmar el paquete.4. Empacar el APK usando APKTool5. Firmar la aplicación con jargsigner6. Usar zipalign 7. Instalar y disfrutar.

Proceso manual

Proceso automatizado• Sólo es necesario revertir la librería encargada de veriticar las licencias (License

Verification Library)

• Usar la herramienta anti-lvl::

TapJackingTapJacking

• 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 información del teléfono

• ¿Cómo funciona?• A través de Toasts , que permiten pasar los eventos a las capas

inferiores

• ¿Qué versiones se ven afectadas?• Según Google ninguna, esta vulnerabilidad está corregida.• Remitiéndonos a las pruebas, a día de hoy <= 4.0

• ¿Qué piensa Google de todo esto?

¿Cómo está organizado?¿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.

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

• El código puede descargarse desde:• http://code.google.com/p/tap-android/

ConclusionesConclusiones

@jorgemieresJorge Mieresjamieres@malwareint.com

@jorgemieres

¡MUCHAS GRACIAS!Sebastián Guerrerosguerrero@malwareint.com http://blog.seguesec.com

@0xroot