sourcecon - show me your kung-fu

35
@jorgemier es Jorge Mieres jamieres@malwareint.co m Show me your Kung-Fu ++ astián Guerrero [email protected] http://blog.seguesec.com @0xroot

Upload: sebastian-selma

Post on 22-Nov-2014

1.161 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: SourceCON - Show me your kung-fu

@jorgemieresJorge [email protected]

Show me your Kung-Fu ++

Sebastián [email protected] http://blog.seguesec.com

@0xroot

Page 2: SourceCON - Show me your kung-fu

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

Page 3: SourceCON - Show me your kung-fu

Estructura del sistemaEstructura del sistema

Page 4: SourceCON - Show me your kung-fu

Ficheros APKFicheros APK

• Usado para empacar las aplicaciones• Todo APK incluye:

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

Page 5: SourceCON - Show me your kung-fu

Formato de ficheros DEXFormato de ficheros DEX

Page 6: SourceCON - Show me your kung-fu

Android ManifestAndroid Manifest

Page 7: SourceCON - Show me your kung-fu

Ejemplo de códigoEjemplo de código

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

Page 8: SourceCON - Show me your kung-fu

Análisis EstáticoAnálisis Estático

Page 9: SourceCON - Show me your kung-fu

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.

Page 10: SourceCON - Show me your kung-fu

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…

Page 11: SourceCON - Show me your kung-fu

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.

Page 12: SourceCON - Show me your kung-fu

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.

Page 13: SourceCON - Show me your kung-fu

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.

Page 14: SourceCON - Show me your kung-fu

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

Page 15: SourceCON - Show me your kung-fu

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

Page 16: SourceCON - Show me your kung-fu

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

Page 17: SourceCON - Show me your kung-fu

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.

Page 18: SourceCON - Show me your kung-fu

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

Page 19: SourceCON - Show me your kung-fu

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

Page 20: SourceCON - Show me your kung-fu

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)

Page 21: SourceCON - Show me your kung-fu

AutorAutor

Page 22: SourceCON - Show me your kung-fu

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

Page 23: SourceCON - Show me your kung-fu

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)

Page 24: SourceCON - Show me your kung-fu

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

Page 25: SourceCON - Show me your kung-fu

Servidor C&CServidor C&C

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

Page 26: SourceCON - Show me your kung-fu

Análisis IAnálisis I

Page 27: SourceCON - Show me your kung-fu

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)

Page 28: SourceCON - Show me your kung-fu

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.

Page 29: SourceCON - Show me your kung-fu

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

Page 30: SourceCON - Show me your kung-fu

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

Page 31: SourceCON - Show me your kung-fu

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::

Page 32: SourceCON - Show me your kung-fu

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?

Page 33: SourceCON - Show me your kung-fu

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

Page 34: SourceCON - Show me your kung-fu

ConclusionesConclusiones

Page 35: SourceCON - Show me your kung-fu

@jorgemieresJorge [email protected]

@jorgemieres

¡MUCHAS GRACIAS!Sebastián [email protected] http://blog.seguesec.com

@0xroot