SourceCON - Show me your kung-fu
Upcoming SlideShare
Loading in...5
×
 

SourceCON - Show me your kung-fu

on

  • 1,093 views

 

Statistics

Views

Total Views
1,093
Slideshare-icon Views on SlideShare
1,081
Embed Views
12

Actions

Likes
0
Downloads
13
Comments
0

2 Embeds 12

http://a0.twimg.com 6
http://paper.li 6

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Arquitectura de android, dividido en varias capas: Capa de la aplicación Máquina virtual basada en registros Usa su propio bytecode, no está basado en el bytecode de Java (Dalvik Bytecode) Es capaz de ejecutarse en un ordenador con poco procesador y RAM Se puede ejecutar en sistemas sin memoria SWAP. Optimizado para hacer un uso eficiente de la memoria. Utiliza su propio formato de ficheros: DEX class.
  • - Toda aplicación debe tener un android manifest y este estará localizado en el directorio raíz - El AndroidManifest tiene la información esencial sobre la aplicación que necesita el sistema para poder ejecutarla
  • Formato de fichero de DEX utilizado por Dalvik para representar las clases en Java
  • Comentar la importancia y utilidad del fichero Android Manifest
  • Vemos como es el código en Java, y cómo es el formato smali Dexdump – herramienta que trae el propio SDK de Android y podemos usarlo para decompilar el código y ver los bytecodes de Dalvik Basksmali – pasa a su propio formato los ficheros .dex y suele echar el cable si el código está ofuscado o tenemos problemas para leerlo Dex2jar – Pasar del formato dex al formato jar, y obtenemos el código listo para poder ejecutarlo con cualquier edito
  • Android SDK Android Emulator smali/Baksmali Eclipse/Netbeans dex2jar/jd-gui/JAD - dex2jar Apktool/Androguard - Pequeña suit AXMLPrinter (1)/Understand (2) – (1) Parsea el fichero AndroidManifest.xml y lo muestra al usuario de una forma legible por consola. (2) Permite hacer un análisis estático del código, mostrando los diagramas de interacción entre las diferentes clases y facilitando la labor de reversing.
  • MTD es un subsistema de linux, para dispositivos flash que no tienen disco duro. Igual que los discos IDE que usan /dev/hd* aquí usamos /dev/mtd* Luego por cada /dev/mtd* tenemos un dispositivo /dev/mtd*ro Mtd1 /system /data /cache, dd imagen del sistema, hacer correlación, luego pull, luego strings y grepear la salida
  • [email_address] Comenta que está desarrollando una aplicación para grabar sonidos (broma), y que cada minuto que Para y reinicia el mediarecorder obtiene un cuelgue.
  • De todos los permisos, quizás los más interesantes sean los mismos de siempre, nada nuevo, a excepción del RECORD_AUDIO, que hace levantar un poco de curiosidad por ver cómo ha implementado dicha funcionalidad. Vemos que tiene entre ellos el CALL_PHONE, INTERNET, READ/WRITE CONTACTS y SEND/READ/WRITE SMS Lo justo y necesario para montarte un dispositivo zombie a la espera de recibir señales de un centro de control.
  • ¿Qué es el IMEI? Comentar el código - Comentar un poco la estructura del fichero
  • Revisando el código destacamos 3 funcionalidades - SMS Listener encargado de estar a la escucha de todos los mensajes que son enviados y recibidos por el dispositivo. Esto explicaría la funcionalidad de botnet que ejercería esta aplicación sobre un smartphone infectado. Quedando totalmente a la espera de recibir órdenes para ejecutar la siguiente acción. CallRecordService – Pertenece a la implementación para poder grabar las conversaciones que tienen lugar en el dispositivo infectado. Estas posteriormente son almacenadas en el sistema, usando la fecha y hora en que fueron grabadas para proceder a su envío una vez el atacante lo haya solicitado. AÑADIR INFORMACIÓN DEL FUNCIONAMIENTO QUE REALIZAR EL TELÉFONO
  • Primera foto (Comentar el código) Segunda foto (Comentar que comprueba si está usando un emulador o no, en caso de ser emulador Establece la variable imei a NULL, siendo descartada una vez sea enviada al servidor. - ¿Para qué es necesario el IMEI?
  • Comentar cómo se han realizado las pruebas Comentar el tema del fichero AMR, que se puede escuchar y tal
  • checkAccess – Comprueba para la aplicación que estamos ejecutando si cumplimos con la política de permisos necesarios para poder utilizarla. En caso de ser así, continuamos la ejecución y devolvemos VERDADERO En caso contrario la ejecución es abortada y se hace saber al usuario que no tiene los suficientes permisos De ejecución. handleServiceConnectionError – Su única finalidad consiste en comprobar que todo está correcto Y manejar los errores que se puedan producir 1
  • Toasts son usados como pop-ups para mostrar pequeños mensajes sobre la superficie de una ventana (Completar información de los toasts)

SourceCON - Show me your kung-fu SourceCON - Show me your kung-fu Presentation Transcript

  • Show me your Kung-Fu ++ Sebastián Guerrero [email_address] http://blog.seguesec.com @0xroot
    • Contenido
      • Introducción
      • Análisis Estático
      • Análisis Dinámico
      • Análisis Forense
      • Amenazas en los smartphones
      • Hardening Android
      • Evolución del malware
      • Nickispy
      • Protecciones
      • Vulnerabilidades
      • Conclusión
  • Estructura del sistema
  • Ficheros APK
    • Usado para empacar las aplicaciones
    • Todo APK incluye:
      • classes.dex
      • resources.asc
      • / res
      • / META-INF
      • AndroidManifest.xml
  • Formato de ficheros DEX
  • Android Manifest
  • Ejemplo de código
    • java/ Fuente ( Compiler ) – dex/ dexdump
    • dex/ dex2jar ( jdgui ) – java/ jd-gui
    • dex/ dexdump ( basksmali ) - smali/ basksmali
  • Análisis Estático
  • Análisis Dinámico
      • Creamos una máquina virtual usando el SDK.
      • Lanzamos el emulador y almacenamos las conexiones en un pcap:
        • emulator –port n @device-name –tcpdump foo.pcap
      • Instalamos la aplicación
        • adb install appname.apk
      • Lanzamos pruebas sobre el dispositivo y la aplicación
        • adb shell monkey –v –p package.app n
      • Leemos los logs
        • adb shell logcat –d
      • Podemos apoyarnos en Wireshark para leer los logs de conexiones.
  • Simular 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…
  • Modus Operandi
      • AXMLPrinter2 – Extraemos la información del AndroidManifest.xml
      • Dex2jar – Convertimos el fichero .dex en un fichero de clases .jar. JAD – Transformamos los ficheros .class en ficheros .jad
      • JDgui – Leemos el código almacenado en el fichero .jar.
      • Understand – Análisis estático del código.
      • Wireshark – Análisis dinámico del código.
  • Té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.
  • Forensics
      • 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?
  • Si pierdes tu teléfono prepárate para…
  • Amenazas en los smartphones
      • 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
  • Hardening Android
      • Deshabilitar la instalación de software de terceras entidades.
      • Deshabilitar funcionalidades/dispositivos inseguros/innecesarios.
      • Hacer uso de “antivirus”
      • LEER , LEER y LEER los permisos.
      • Borrado remoto, localización por GPS.
      • No instalar aplicaciones descargadas de markets de terceros.
  • 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
  • NickiSpy
    • 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
  • Estadí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
      •  
    18 muestras ~ 1ª muestra (19.07) ~ Detectadas (11.08-04.09) 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
  • Autor
  • Lista 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ó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ó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&C
    • Servidor C&C : jin.56mo.com
    • Puerto : 2018
  • Análisis I
  • Servicio 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 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
      • 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?
    • 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ón
    • Desempacar el APK usando la herramienta Baksmali .
    • Realizar el cambio de código en los métodos checkAccess y h andleServiceConnectionError .
    • Generar la clave privada con la que firmar el paquete.
    • Empacar el APK usando APKTool
    • Firmar la aplicación con jargsigner
    • Usar zipalign
    • 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 :
  • TapJacking
    • 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?
    • 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/
  • Conclusiones
  • @jorgemieres ¡MUCHAS GRACIAS! Sebastián Guerrero [email_address] http://blog.seguesec.com @0xroot