Ingeniería Inversa en Android. Sebastián Guerrero

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Ingeniería Inversa en Android. Sebastián Guerrero sguerrero@isecauditors.com"

Transcripción

1 Ingeniería Inversa en Android Sebastián Guerrero

2 Agenda 1. Introducción a la plataforma. 2. Análisis estático. 3. Análisis dinámico. 4. Análisis forense. 5. Desarrollando un malware. 2

3 Qué es Android? Android es un conjunto de aplicaciones para dispositivos móviles. Entre las que se incluyen un sistema operativo, aplicaciones nativas y aplicaciones de terceros. El SDK de Android provee de las herramientas y las APIs necesarias para comenzar a desarrollar aplicaciones para la plataforma utilizando el lenguaje de programación Java.

4 Características Framework de aplicaciones Permite la reutilización de los componentes. Máquina virtual de Dalvik Optimizada para dispositivos móviles. Navegador integrado Basado en el motor de código libre WebKit. Sqlite Para almacenamiento estructurado de datos. Soporte multimedia audio, vídeo, imágenes (MPEG4, H.264, Mp3, AAC, AMR, JPG, PNG, GIF) Telefonía GSM Dependiente del hardware. Bluetooth, EDGE, 3g, Wifi Dependiente del hardware. Cámara, GPS, brújula y acelerómetro Dependiente del hardware. Rico entorno de desarrollo Emulador, herramientas de debugging, plugin para Eclipse, etc.

5 Arquitectura La arquitectura de la plataforma se divide en cinco niveles distintos.

6 Arquitectura Nivel 1 - Aplicaciones Plataforma Android viene con un conjunto de aplicaciones por defecto instaladas en su núcleo (Cliente , SMS, Calendario, Maps, Navegador, etc ). - Es el servicio mínimo que la plataforma nos puede ofrecer. - Es posible arrancar el teléfono en un entorno limpio y seguro. - Nivel 2 Framework Aplicaciones Acceso completo a las APIs de las aplicaciones base. Arquitectura basada en la reutilización de componentes. Cualquier aplicación puede hacer pública sus características. Cualquier aplicación puede aprovechar las características de otra aplicación. Los componentes pueden ser reemplazados por los usuarios - Nivel 3 Bibliotecas Conjunto de bibliotecas en C/C++ utilizadas por componentes del sistema. Se exponen a los desarrolladores a través del framework de aplicaciones. Bibliotecas de medios, bibliotecas de gráficos, 3D, SQLite, etc - Nivel 4 Runtime de Android Compartido entre las librerías del núcleo y la máquina virtual de Dalvik. Set de bibliotecas. Funcionalidades incluidas en la biblioteca de Java. Una instancia Dalvik por cada Aplicación. Ejecución de ficheros.dex. Nivel 5 Kernel Núcleo en el que se basa el sistema. Evolucionando a través de varias versiones. Incluye mejoras en la seguridad, administración de energía, drivers para distintos componentes hardware. Su finalidad es ejercer como capa de abstracción entre el hardware y el resto de capas.

7 Dalvik Virtual Machine Su arquitectura está basada en registros. Utiliza una herramienta llamada dx para convertir algunos ficheros.class en ficheros.dex Realiza diversas optimizaciones a la hora de transformar los ficheros a.dex Llamadas a métodos virtuales, reemplaza el índice del método por un índice de vtable. Reemplaza llamadas a métodos como string.length() por métodos inline. Elimina métodos vacíos Añade datos precalculados.

8 Dalvik Virtual Machine Realiza optimización en el uso y asignación de memoria. Tiene dividida la memoria en 4 regiones Clean/Dirty Shared/Private La información en la zona llamada Clean y que es compartida de forma pública o privada contiene las librerías y los ficheros de las aplicaciones. Por otro lado en la zona de memoria Dirty lo que encontramos son la pila, montículos y estructuras de datos de control que necesitan los ficheros.dex. En el núcleo está el Zygote (Cigoto) que es el padre encargado de arrancar todas las máquinas virtuales Dalvik que haya en el sistema. Carga e inicializa todas las clases utilizadas con mayor frecuencia por las aplicaciones. Fomenta el intercambio rápido de código entre las aplicaciones. Recolector de basura que se ejecuta en cada máquina virtual recolectando la basura que queda tras ejecutar una aplicación.

9 Dalvik Virtual Machine Arquitectura basada en registros Requieren un promedio de 48% menos de instrucciones ejecutadas, en comparación a las Mvs basadas en pila. El código generado es un 25% mayor, pero supone una carga del 1.07% superior para el sistema. Tardan un promedio del 32% menos en ejecutar los benchmarks. Google toma esta decisión en base a: Al almacenar las instrucciones en un procesador segmentado, la sobrecarga viene dada por el tiempo que tarda en enviar las instrucciones y reducir el número de estas ejecutadas. La verificación de los bytecodes que integran la máquina virtual es más rápida en máquinas basadas en registros.

10 Principios fundamentales Las aplicaciones de Android son escritas en el lenguaje de programación Java. El SDK de Android es el encargado de compilar el código en un paquete con el sufijo.apk. Los ficheros apk son considerados como aplicaciones que se instalan en los terminales. Una vez instalado cada aplicación se ejecuta en su propia SandBox Sistema multiusuario, cada aplicación pertenece a un usuario. Cada aplicación tiene asignado un UID único. Los ficheros de las aplicaciones tienen asignados unos permisos. Solo el usuario cuyo UID esté asociado con una aplicación puede acceder a los ficheros de esta. Cada aplicación se ejecuta en una instancia de Dalvik. Se fomenta la independencia entre procesos y aplicaciones. Es posible compartir información entre aplicaciones: Pueden compartir el mismo UID, permitiendo acceder a los ficheros de ambas entre ellas. Una aplicación puede solicitar permiso para acceder a la información de los dispositivos. El usuario debe conceder tales permisos en tiempo de instalación.

11 Anatomía de las aplicaciones Los componentes que integran las aplicaciones son el principal núcleo de las mismas. Hay un total de 4 componentes distintos. Donde cada uno posee un propósito distinto y tiene un ciclo de vida de creación y destrucción. Actividades Representa una pantalla con una interfaz de usuario Servicios Componentes que se ejecutan en segundo plano realizando tareas que requieren un tiempo largo de ejecución. También pueden servir para procesar información de forma remota. Proveedores de contenido Manejan conjuntos de datos de las aplicaciones. Podemos almacenar los datos en cualquier sitio que sea requerido posteriormente por nuestra aplicación. Receptores de broadcast Responden a mensajes de difusión en todo el sistema

12 Ficheros APK Usado para empacar las aplicaciones Todo APK incluye: classes.dex resources.asc /res /META-INF AndroidManifest.xml

13 Formato de fichero DEX

14 AndroidManifest Todas las aplicaciones necesitan tener un fichero XML en el directorio raíz. Es utilizado para obtener información sobre la administración y organización de la aplicación. Existen 23 tipos predefinidos de elementos que permiten especificar y amoldar las características de la aplicación. Todos los componentes que van a ser utilizados por la aplicación deben ser declarados aquí. El AndroidManifest realiza otra serie de acciones adicionales Identifica cualquier permiso que requiera la aplicación. Declara el nivel mínimo de API que requiere la aplicación para funcionar. Declara las características de hardware/software que va a utilizar la aplicación. Librerías de la API que la aplicación necesita enlazar para ser utilizadas.

15 Declarando los componentes La primera tarea del AndroidManifest es informar al sistema de los componentes que integran la aplicación. Debemos declararlos de la siguiente manera <activity> para las actividades. <service> para los servicios. <receiver> para los receptores de broadcast. <provider> para los proveedores de contenido.

16 Permisos en Android ACCESS_CHECKIN_PROPERTIES ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION ACCESS_LOCATION_EXTRA_COMMANDS ACCESS_MOCK_LOCATION ACCESS_NETWORK_STATE ACCESS_SURFACE_FLINGER ACCESS_WIFI_STATE ACCOUNT_MANAGER ADD_VOIC AUTHENTICATE_ACCOUNTS BATTERY_STATS BIND_APPWIDGET BIND_DEVICE_ADMIN BIND_INPUT_METHOD BIND_REMOTEVIEWS BIND_TEXT_SERVICE BIND_VPN_SERVICE BIND_WALLPAPER BLUETOOTH BLUETOOTH_ADMIN BRICK BROADCAST_PACKAGE_REMOVED BROADCAST_SMS BROADCAST_STICKY BROADCAST_WAP_PUSH CALL_PHONE CALL_PRIVILEGED CAMERA CHANGE_COMPONENT_ENABLED_STATE CHANGE_CONFIGURATION CHANGE_NETWORK_STATE CHANGE_WIFI_MULTICAST_STATE CHANGE_WIFI_STATE CLEAR_APP_CACHE CLEAR_APP_USER_DATA CONTROL_LOCATION_UPDATES DELETE_CACHE_FILES DELETE_PACKAGES DEVICE_POWER DIAGNOSTIC DISABLE_KEYGUARD DUMP EXPAND_STATUS_BAR FACTORY_TEST FLASHLIGHT FORCE_BACK GET_ACCOUNTS GET_PACKAGE_SIZE GET_TASKS GLOBAL_SEARCH HARDWARE_TEST INJECT_EVENTS INSTALL_LOCATION_PROVIDER INSTALL_PACKAGES INTERNAL_SYSTEM_WINDOW INTERNET KILL_BACKGROUND_PROCESSES MANAGE_ACCOUNTS MANAGE_APP_TOKENS MASTER_CLEAR MODIFY_AUDIO_SETTINGS MODIFY_PHONE_STATE MOUNT_FORMAT_FILESYSTEMS MOUNT_UNMOUNT_FILESYSTEMS NFC PERSISTENT_ACTIVITY PROCESS_OUTGOING_CALLS READ_CALENDAR READ_CONTACTS READ_FRAME_BUFFER READ_HISTORY_BOOKMARKS READ_INPUT_STATE READ_LOGS READ_PHONE_STATE READ_PROFILE READ_SMS READ_SOCIAL_STREAM READ_SYNC_SETTINGS READ_SYNC_STATS REBOOT RECEIVE_BOOT_COMPLETED RECEIVE_MMS RECEIVE_SMS RECEIVE_WAP_PUSH RECORD_AUDIO REORDER_TASKS RESTART_PACKAGES SEND_SMS SET_ACTIVITY_WATCHER SET_ALARM SET_ALWAYS_FINISH SET_ANIMATION_SCALE SET_DEBUG_APP SET_ORIENTATION SET_POINTER_SPEED SET_PREFERRED_APPLICATIONS SET_PROCESS_LIMIT SET_TIME SET_TIME_ZONE SET_WALLPAPER SET_WALLPAPER_HINTS SIGNAL_PERSISTENT_PROCESSES STATUS_BAR SUBSCRIBED_FEEDS_READ SUBSCRIBED_FEEDS_WRITE SYSTEM_ALERT_WINDOW UPDATE_DEVICE_STATS USE_CREDENTIALS USE_SIP VIBRATE WAKE_LOCK WRITE_APN_SETTINGS WRITE_CALENDAR WRITE_CONTACTS WRITE_EXTERNAL_STORAGE WRITE_GSERVICES WRITE_HISTORY_BOOKMARKS WRITE_PROFILE WRITE_SECURE_SETTINGS WRITE_SETTINGS WRITE_SMS WRITE_SOCIAL_STREAM WRITE_SYNC_SETTINGS

17 Montando un laboratorio Podemos hacerlo de dos maneras posibles Máquina virtual A.R.E. (Android Reverse Engineering) Creada por Honeynet Project Combina las últimas herramientas de Android para analizar malware en una única caja de herramientas Listado de aplicaciones AndroGuard, Android sdk/ndk, APKInspector, Apktool, Axmlprinter, Ded, Dex2Jar, Droidbox, Jad, Smali/BakSmali. Instalar las aplicaciones que necesitemos y construirnos nuestro entorno de trabajo de forma manual. Cada una presenta sus propias ventajas y desventajas.

18 Apktool Qué es? Herramienta para hacer reversing en aplicaciones de terceros. Permite obtener los recursos originales y empaquetarlos nuevamente tras realizarles modificaciones. Permite realizar debug de código smali paso a paso. Cómo se instala? Linux 1. Descargar fichero apktool-install-linux-* 2. Descargar fichero apktool-* 3. Chown +R $USER:$USER sobre cada fichero. 4. Chmod +x sobre cada fichero. 5. Descomprimimos ambos ficheros sobre el directorio /usr/local/bin (Permisos de root necesarios). Qué son los ficheros de framework? En ocasiones ciertas aplicaciones hacen uso de código y recursos almacenados e integrados en el sistema Android que ejecuta la aplicación. Cuando se trata de frameworks especiales, es necesario traérnoslo desde el teléfono e instalarlo en apktool. Dónde están? /system/framework o /data/system-framework (Depende del terminal) Nombrados como resources, res, framework, etc.

19 Apktool Uso Para desensamblar una aplicación d[edoce] [OPTS] <file.apk> [<dir>] Desensambla la aplicación file.apk en el directorio dir. -s, --no-src No desensambla los fuentes. -r, --no-res No desensambla los recursos. -d, --debug Desensambla en modo debug. -f. force Fuerza a eliminar el directorio de destino si existe. -t <tag>, --frame-tag<tag> - Utiliza los ficheros framework etiquetados por <tag>. --keep-broken-res Se utiliza cuando obtenemos algún error con los recursos de una aplicación, pero queremos seguir igualmente con el proceso. Para ensamblar una aplicación b[uild] [OPTS] [<app_path>] [<out_files>] Ensambla una aplicación de los fuentes que encuentr en <app_path>. Si se omite alguno de los dos directorios tomará el de por defecto. -f, --force-all Salta la detección de cambios en los ficheros y ensambla todos los ficheros. -d, --debug Ensambla en modo debug. Para comprobar si tenemos un framework instalado o instalarlo en nuestro sistema If install-framework <framework.apk> [<tag>] - Instala el framework especificado en el sistema.

20 Ejemplo en funcionamiento Utilizando la aplicación framework-res.apk vamos a ejemplificar el uso de esta herramienta. 1. Desensamblamos la aplicación 1. $ apktool d framework-res.apk out I: Loading resource table... I: Loaded. I: Decoding file-resources... I: Decoding values*/* XMLs... I: Done. I: Copying assets and libs Revisamos el nuevo directorio cambiado. 1. $ ls -la total 112 drwxr-xr-x 4 sebas sebas :52. drwxr-xr-x 4 sebas sebas :52.. -rw-r--r-- 1 sebas sebas :52 AndroidManifest.xml -rw-r--r-- 1 sebas sebas :52 apktool.yml drwxr-xr-x 5 sebas sebas :52 assets drwxr-xr-x 182 sebas sebas :52 res 1. Ensamblamos de nuevo la aplicación. 1. $ apktool b out Tool W: Could not find sources I: Checking whether resources has changed... : Building resources... I: Building apk file Resultado de cómo ha quedado la aplicación 1. $ ls framework-res.apk out Tool

21 Dex2JAR Permite convertir el formato de ficheros.dex para Android al fomarto.class de Java. Se compone de cuatro componentes principalmente Dex-reader Permite leer ficheros.dex/.odex (Ejecutables Dalvik). Dex-translator Realiza el trabajo de conversión. Lee las instrucciones dex, realiza procesos de optimización y finalmente realiza la conversión a ASM. Dex-ir Utilizado por el dex-translator, se encarga de representar las instrucciones dex. Dex-tools Herramientas para trabajar con los ficheros.class. El proceso para poder obtener el código fuente es el siguiente: 1. Código fuente original (fichero.java tradicional) public String getinitparameter(string name) { ServletConfig sc = getservletconfig(); if (sc == null) { throw new IllegalStateException( lstrings.getstring("err.servlet_config_not_initialized")); } return sc.getinitparameter(name); }

22 Dex2JAR 2. Compilación utilizando javac (fichero.class) 0 aload_0 1 invokevirtual #2 <javax/servlet/genericservlet.getservletconfig> 4 astore_2 5 aload_2 6 ifnonnull 25 (+19) 9 new #3 <java/lang/illegalstateexception> 12 dup 13 getstatic #4 <javax/servlet/genericservlet.lstrings> 16 ldc #5 <err.servlet_config_not_initialized> 18 invokevirtual #6 <java/util/resourcebundle.getstring> 21 invokespecial #7 <java/lang/illegalstateexception.<init>> 24 athrow 25 aload_2 26 aload_1 27 invokeinterface #8 <javax/servlet/servletconfig.getinitparameter> count 2 32 areturn

23 Dex2JAR 3. Traducción utilizando dexdump (dx) : [022644] javax.servlet.genericservlet.getinitparameter:(ljava/lang/string;)ljava/lang/string; : 6e10 d : invoke-virtual {v4}, Ljavax/servlet/GenericServlet;.getServletConfig:()Ljavax/servlet/ServletConfig; // 02265a: 0c : move-result-object v c: : if-nez v0, 0014 // : : new-instance v1, Ljava/lang/IllegalStateException; // : f : sget-object v2, Ljavax/servlet/GenericServlet;.lStrings:Ljava/util/ResourceBundle; // : 1a a: const-string v3, "err.servlet_config_not_initialized" // 02266c: 6e c: invoke-virtual {v2, v3}, Ljava/util/ResourceBundle;.getString:(Ljava/lang/String;)Ljava/lang/String; // : 0c02 000f: move-result-object v : b : invoke-direct {v1, v2}, Ljava/lang/IllegalStateException;.<init>:(Ljava/lang/String;)V // 02267a: : throw v c: 7220 e : invoke-interface {v0, v5}, Ljavax/servlet/ServletConfig;.getInitParameter:(Ljava/lang/String;)Ljava/lang/String; // : 0c : move-result-object v : : return-object v1

24 Dex2JAR 4. Traducción por dex2jar (Al fichero.class nuevamente) 0 aload_0 1 invokevirtual #49 <javax/servlet/genericservlet.getservletconfig> 4 astore_2 5 aload_2 6 ifnonnull 27 (+21) 9 getstatic #37 <javax/servlet/genericservlet.lstrings> 12 ldc #51 <err.servlet_config_not_initialized> 14 invokevirtual #56 <java/util/resourcebundle.getstring> 17 astore_3 18 new #58 <java/lang/illegalstateexception> 21 dup 22 aload_3 23 invokespecial #61 <java/lang/illegalstateexception.<init>> 26 athrow 27 aload_2 28 aload_1 29 invokeinterface #63 <javax/servlet/servletconfig.getinitparameter> count 2 34 areturn

25 Dex2JAR 5. Traducción utilizando jd-gui public String getinitparameter(string paramstring) { ServletConfig localservletconfig = getservletconfig(); if (localservletconfig == null) { String str = lstrings.getstring("err.servlet_config_not_initialized"); throw new IllegalStateException(str); } return localservletconfig.getinitparameter(paramstring); }

26 Dex2JAR Para instalar la aplicación Uso Unzip x dexjar-version.zip z <path_usuario> La aplicación está integrada por un conjunto de herramientas d2j-verify-asm, d2j-dex2jar, d2j-dex-asmifier, d2j-dexdump, d2j-jar2dex, d2j-jar2jasmin, dex2jar, dex-dump. $./dex2jar.sh../classes.dex dex2jar version: reader-1.7, translator , ir-1.4 dex2jar../classes.dex ->../classes_dex2jar.jar Done. Cómo puedo modificar una aplicación con DexTool? Es necesario tener instalado Android-sdk, ant, dex2jar, jdk6 android create project --name test_apk --path test_apk --package a.b --activity Main --target 1 Esto nos creará un Hola mundo básico. cd test_apk ant debug cd bin Instalamos la aplicación en el emulador.

27 Trabajando con DexTools Antes de editar el código necesitamos transformarlo a Jasmin 1. Convertimos el fichero clases.dex de la aplicación test_apk-debug.apk a test_apk-debug_dex2jar.jar d2j-dex2jar.sh test_apk-debug.apk 2. Comprobamos que el fichero.jar está correcto d2j-asm-verify.sh test_apk-debug_dex2jar.jar 3. Realizamos la conversión al formato jasmin d2j-jar2jasmin.sh -f -o test_apk_jasmin test_apk-debug_dex2jar.jar 4. Editamos el fichero test_apk_jasmin/a/b/main.j para que muestre un toast..method public oncreate(landroid/os/bundle;)v aload 0 aload 1 invokespecial android/app/activity/oncreate(landroid/os/bundle;)v aload 0 ldc_w invokevirtual a/b/main/setcontentview(i)v aload 0 invokevirtual android/app/activity/getapplicationcontext()landroid/content/context; ldc "hi" ldc_w 1 invokestatic android/widget/toast/maketext(landroid/content/context;ljava/lang/charsequence;i)landroid/widget/toast; invokevirtual android/widget/toast/show()v return.limit locals 2.limit stack 3.end method

28 Trabajando con DexTools Ensamblamos nuevamente el APK 1. Construimos el jar d2j-jasmin2jar.sh -f -o test_apk_jasmin.jar test_apk_jasmin/ 2. Verificamos que ha sido bien construido d2j-asm-verify.sh test_apk_jasmin.jar 3. Realizamos la conversión a.dex d2j-jar2dex.sh -f -o classes.dex test_apk_jasmin.jar 4. Hacemos una copia de respaldo cp test_apk-debug.apk test_apk-debug-toast.apk 5. Reemplazamos el fichero classes.dex de la aplicación test_apk-debug-toast.apk zip -r test_apk-debug-toast.apk classes.dex 6. Eliminamos el fichero META-INF de test_apk-debug-toast.apk zip -d test_apk-debug-toast.apk "META-INF* 7. Generamos un key para debugging keytool -genkeypair -alias androiddebugkey -keyalg RSA -keysize dname "CN=android-debug" -validity keystore.ks -storepass android -keypass Android 8. Firmamos el apk jarsigner -keystore.ks -storepass android -keypass android test_apk-debug-toast.apk androiddebugkey Ejecutamos la aplicación 1. Desinstalamos la aplicación anterior adb uninstall a.b 2. Instalamos la nueva adb install test_apk-debug-toast.apk 3. Lanzamos la actividad principal adb shell am start -n a.b/.main

29 JD-GUI Decompilador para el lenguaje de programación Java. Provee una interfaz de línea de comandos utilizada para extraer el código fuente y los ficheros de clase. Uso sebas@helios:~/android/tools/jd-gui$./jd-gui -h Usage: jd-gui [-h] [input file ] -h, --help displays this help Para ejecutar la herramienta basta con indicar por terminal: $./jd-gui../classes_dex2jar.jar &

30 DroidBox Sandbox utilizada para ofrecer un análisis dinámico de las aplicaciones en Android. Generando la siguiente información una vez el análisis ha concluido: Hashes para los paquetes analizados. Datos de red entrantes/salientes. Operaciones de lectura/escritura en ficheros. Servicios iniciados y clases cargadas a través de DexClassLoader. Envío de información privada a través de la red, ficheros o SMS. Permisos. Operaciones de criptografía utilizando la API de Android. Broadcast receivers. Envío de SMS y llamadas de teléfono Generas dos imágenes que permiten visualizar el comportamiento de los paquetes.

31 DroidBox Para hacer funcionar DroidBox es necesario tener el SDK instalado y las librerías pylab y matplotlib para poder dibujar los gráficos. Instalación Exportar el path del SDK export PATH=$PATH:/path/to/android-sdk/tools/ export PATH=$PATH:/path/to/android-sdk/platform-tools/ Descargar los ficheros necesarios y descomprimirlos donde sea wget Crear un nuevo emulador con Android 2.1 Android Iniciar el emulador./startemu.sh NameOfAVD Cuando haya arrancado el terminal, analizar la aplicación../droidbox.sh file.apk

32 AXMLPrinter2 Nos devuelve el contenido del fichero AndroidManifest.xml Uso: $java jar AXMLPrinter2\.jar ruta_fichero_xml

33 AndroGuard Herramienta escrita en python para jugar con.dex (Dalvik Virtual Machine), APK (Aplicaciones Android), Ficheros XML,.class (Java Virtual Machine), JAR (Aplicación Java). Entre sus características Trabaja y transforma ficheros DEX/CLASS/APK/JAR en objetos Python. Soporte nativo de código DEX, a través de librería en C++. Análisis estático de código (instrucciónes, bloques básicos, permisos, etc ) Comprueba si una aplicación está en una BBDD (malware, trojan, goodware ) y mide el riesgo que entraña. Diffing de aplicaciones Android Reverse engineering de aplicaciones. Transforma un XML binario a un XML estándar, Dump del proceso jvm para encontrar clases en memoria. Permite analizar, modificar y guardar aplicaciones de forma sencilla, bien sea creando nuestra propia aplicación haciendo uso de la API o utilizando androlyze a través de la línea de comandos

34 Zoológico de malware Obtener una fuente de descargas AndroidMarket Markets de terceros Markets alternativos Honeypots Aplicaciones de orígenes desconocidos. Automatizar las descargas. Decompilar las aplicaciones. Buscar strings que revelen patrones curiosos, delicados y repetitivos. Lanzar herramienta que compruebe contra una BBDD de malware.

35 Análisis estático&dinámico Retos en el análisis estático. Amenazas. Técnicas de ofuscación. Estudiando muestras de malware Trojan.FakePlayer NickiSpy Foncy SMS

36 Amenazas en Android 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

37 Evolución 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

38 Técnicas de ofuscación Nombrar ficheros de clases con el mismo nombre minúscula/mayúscula. Cifrar las conexiones que realiza el malware utilizando DES. Introducir comprobaciones para ver si la aplicación se está ejecutando en un emulador. Hacer vibrar al dispositivo. Comprobar el IMEI del terminal. Mejorar la eficiencia del código y ofuscarlo utilizando Proguard. Modificar el propio bytecode para inutilizar las herramientas de reversing.

39 Trojan SMS-FakePlayer (*) Metodología 1. VirusTotal. 2. Estudiar la estructura de la aplicación. 3. Analizar el fichero AndroidManifest. 4. Understand. 5. Analizando el código. 6. Instalar la aplicación. 7. Estudiar el comportamiento.

40 Virus total A qué nos enfrentamos? Un buen punto de partida es subir el sample que tengamos a VirusTotal, y obtener una ligera de idea de lo que nos traemos entre manos.

41 Virus Total Sample de malware Android FakePlayer.A Ratio de detección 34/43 Nivel de amenaza Bajo Información Primer malware aparecido para plataformas Android. Surge como prueba de concepto, dado que escasea de peligro alguno. Realiza el envío de mensajes de texto

42 Estructura de la aplicación Qué aspecto presenta la aplicación empaquetada? $ tree files files AndroidManifest.xml classes.dex META-INF CERT.RSA CERT.SF MANIFEST.MF res drawable icon.png layout main.xml resources.arsc

43 Estructura de la aplicación Qué nos interesa a primera vista? Desempaquetar el fichero de clases para ver su contenido. Observar el contenido del AndroidManifest Qué sacamos con esto? Determinar los permisos que la aplicación va a solicitar. Hacernos una ligera idea de cómo estará estructurada la aplicación.

44 Obteniendo el fichero.jar Cómo empezamos? Primero debemos de realizar la conversión del fichero.dex a fichero.jar Cómo obtenemos el fichero.jar? Utilizaremos dex2jar, que se encarga de realizar la conversión del fichero de clases basado en los bytecodes de Dalvik a fichero de clases Java. Ejecutando dex2jar $dex2jar fichero_clases.dex Dónde obtenemos la salida? El fichero transformado estará en el mismo directorio donde la muestra que hemos proporcionado como entrada.

45 Obteniendo los ficheros.class Cómo obtenemos los ficheros.class? Descomprimimos el fichero.jar que hemos obtenido al pasar el dex2jar. Para qué necesitamos estos ficheros.class? Los usaremos más adelante para transformarlos a.jad y crear un proyecto en UnderStand, que permita analizarlos. Qué son los ficheros.class? Es el acercamiento más próximo al código original que forma la aplicación a analizar. Permitiéndonos conocer los ficheros de clases, los métodos, y las clases que integran esta.

46 Analizando la nueva estructura Qué aspecto presenta la aplicación después de la transformación? $ tree class/ class/ org me androidapplication1 DataHelper.class DataHelperOpenHelper.class HelloWorld.class MoviePlayer.class Rattr.class R.class Rdrawable.class Rlayout.class Rstring.class Qué ficheros son los que nos interesan? A priori centraremos nuestra atención en los ficheros DataHelper, HelloWorld, y MoviePlayer.

47 Analizando el AndroidManifest Cómo podemos ver el contenido del fichero? $java jar AXMLPrinter2\.jar ruta_fichero_xml Cuál es la salida que vamos a obtener? Obtendremos el contenido del fichero XML que contiene todas las actividades, intents, receivers y permisos que solicitará la aplicación al ser instalada, y que necesitará para el correcto funcionamiento de la misma. Qué nos permite esto? Tener un acercamiento más profundo a la actividad que desempeñará la aplicación. Agilitar el proceso de detección de malware, cuando nos enfrentamos a un gran número de aplicaciónes. Montar listas negras de permisos, parseando y comprobando el contenido del fichero.

48 AndroidManifest de FakePlayer El contenido del fichero AndroidManifest <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="org.me.androidapplication1"> <application <activity android:label="movie Player" android:name=".movieplayer"> <intent-filter> <action android:name="android.intent.action.main"> </action> <category android:name="android.intent.category.launcher"> </category> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.send_sms"> </uses-permission> </manifest>

49 Obteniendo los ficheros.jad Qué es el formato.jad? Java Application Descriptor, extensión asociada a las aplicaciones Java ME, que suelen ser distribuidas como ficheros.jar. Utilizados normalmente para empaquetar juegos y aplicaciones utilizadas en dispositivos móviles Para qué queremos esos ficheros? Obteniendo ese tipo de ficheros, podemos cargarlos directamente en la aplicación Understand, para estudiar las trazas de sus funciones y clases. Además podemos abrirlos con cualquier editor de texto para trabajar sobre ellos. Cómo los podemos obtener? Utilizando la herramienta del mismo nombre JAD (Java Decompiler). Que se encarga de extraer el código fuente de los ficheros de clases contenidos en el fichero.jar

50 Obteniendo los ficheros.jad Recordáis los ficheros que descomprimimos del archivo.jar que se originó al realizar la transformación del fichero de clases para la máquina Dalvik, al fichero de clases java? DataHelper.jad, DataHelper$OpenHelper.jad, R$attr.jad, R$drawable.jad, etc Es necesario eliminar el carácter $ de los ficheros, de lo contrario no obtendremos el resultado esperado con JAD $ for i in *; do mv $i $(echo $i tr -d '$'); done Realizamos la transformación ejecutando JAD $./jad ruta_ficheros/*.class Los resultados obtenidos serán generados en el directorio donde tengamos instalada la herramienta.

51 Utilizando Understand Qué es Understand? Es una herramienta de análisis estático, que nos permite mantener, comprar y analizar proyectos de gran envergadura. Cómo lo configuramos para que acepte ficheros.jad? Por defecto no acepta los ficheros con extensión.jad File > New > Project Seleccionamos nombre y directorio donde albergar nuestro proyecto. Elegimos Java como idioma del código fuente que vamos a cargar. Al añadir los ficheros, pulsamos sobre el botón de Configure Filters Pulsamos sobre Configure. Pulsamos sobre New: Extension: jad ; Language: java

52 Cargando FakePlayer Una vez configurado Understand para ficheros.jad cargamos el código de FakePlayer en este. Automáticamente nos reconoce todos los ficheros en la aplicación y nos permite visualizarlos además de ver las dependencias entre sus métodos, clases, diagramas de clase, etc.

53 Dependencias internas Para dibujar las dependencias entre clases: Graphs > Dependency Graphs > By Directory Structure Lo interesante parece estar en los ficheros MoviePlayer y DataHelper.

54 Diagrama de clases

55 Analizando el código Nuestro punto de partida es el siguiente: Sospechamos de los ficheros MoviePlayer y DataHelper. Tenemos la ligera idea de que la muestra realiza envío de SMS. No lo sabemos con exactitud pero es posible que se realicen operaciones contra una base de datos. Tener una ligera idea del propósito inicial de la aplicación, nos ayudará a la hora de enfrentarnos a la muestra de malware.

56 Observando el código extraemos DataHelper Una base de datos con nombre movieplayer.db es creada. El nombre de la tabla donde se va a insertar la información es table1. Cuando se crea e inicia la actividad principal de la app, se lanza la query: CREATE TABLE table1(was TEXT PRIMARY KEY) Cuando se actualiza la aplicación con una nueva versión, se lanza la query: DROP TABLE IF EXISTS table1 La query encargada de realizar inserciones en la tabla es: INSERT INTO table1(was) VALUES ( was )

57 Observando el código extraemos MoviePlayer Se carga un textview con el siguiente mensaje en ruso: Подождите, запрашивает доступ к медиатеке.. Ahora no hay dudas, procede de Rusia. (Captain Obvious to the rescue). Se realizan dos llamadas al método sendtextmessage ((SmsManager)localObject).sendTextMessage( 3353, null, , null, null). ((SmsManager)localObject).sendTextMessage( 3354, null, , null, null).

58 MoviePlayer Revisando los parámetros que recibe dicho método en la API: Public final void sendtextmessage(string destinationaddress, String scaddress, String text, PendingIntent setintent, PendingIntent deliveryintent). Sabemos que los destinatarios son los números 3353 y Para ambos destinatarios el mensaje de entrega es el número Cuando por distintos motivos la aplicación falla y el mensaje no es entrega, se captura el error y se muestra el siguiente código: Oops in playsound. Los números del destinatario pertenecen a la empresa INcore Media Ltd (Rusia) que ofrece servicios relacionados con telefonía.

59 Instalando la aplicación 1. Levantamos un emulador indicando el puerto a la escucha y reenviando todas las conexiones a un fichero.pcap. Emulator port tcpdump foo.pcacp 2. Instalamos la aplicación./adb install foo.apk 3. Nos dirigimos a la pestaña DDMS de Eclipse y utilizamos File Explorer para ver qué directorios han sido creados en /data/data. Se ha creado org.me.androidapplication1, aunque actualmente está vacío y únicamente contiene una carpeta llamada lib. 4. Lanzamos una batería de pruebas contra la aplicación para ver si se producen cambios./adb shell moneky v p org.me.androidapplication1

60 Instalando la aplicación 1. Realizamos una lectura del log para observar comportamientos anómalos./adb shell logcat D grep SQLite 2. Del directorio padre surge una carpeta llamada databases y dentro encontramos el fichero movieplayer.db

61 Realizando análisis dinámico 1. Nos traemos a local el fichero, bien usando adb o utilizando el botón de pull de la ventana File Explorer en la pestaña DDMS de Eclipse../adb pull /data/data/org.me.androidapplication1/databases/movieplayer.db 2. Analizando la base de datos utilizando SQLite3, extraemos: $ sqlite3./movieplayer.db SQLite version Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite>.tables android_metadata table1 sqlite> select * from android_metadata; en_us sqlite> select * from table1; was

62 Analizando el Pcap con Wireshark A pesar de que en esta muestra de malware, no se realiza ningún tipo de conexión con ningún C&C y no se envía ningún dato a través de Internet, en otras ocasiones este punto resulta fundamental.

63 Modifiquemos el apk El objetivo de este ejercicio será desensamblar el malware y realizarle modificaciones a nivel de código para que el mensaje de texto que envía lo realice al número del emulador (5556 en este caso), empacar la aplicación de nuevo y probarla en el emulador.

64 Modifiquemos el apk Lo primero será asegurarnos de que poseemos una llave privada con la que firmar las aplicaciones de Android. $keytool genkey v keystore millave.keystore alias mi_alias keyalg RSA keysize 2048 validity 1000 El siguiente paso será usar apktool para desempaquetar la aplicación. $./apktool d d ficheromalware.apk directorio_salida La estructura de directorios que obtendremos después de esto será: $ tree.. AndroidManifest.xml apktool.yml build apk AndroidManifest.xml classes.dex res drawable icon.png layout main.xml resources.arsc res drawable icon.png layout main.xml values public.xml strings.xml smali org me androidapplication1 DataHelper$OpenHelper.smali DataHelper.smali HelloWorld.smali MoviePlayer.smali R$attr.smali R$drawable.smali R$layout.smali R.smali R$string.smali 13 directories, 20 files

65 Modifiquemos el apk Nosotros sólo queremos modificar los ficheros que posean el número de teléfono de destino de los SMS: HelloWorld.smali Línea 59 const-string v1, Línea 86 const-string v1, Línea 104 const-string v1, MoviePlayer.smali Línea 77 const-string v1, Línea 104 const-string v1, Línea 122 const-string v1, Sustituimos esos valores por 5556.

66 Modifiquemos el apk Empacamos la aplicación utilizando apktool: $apktool b d directorio_salida Aplicación_modificada.apk Firmamos la aplicación con la llave que creamos anteriormente: $jarsigner verbose keystore millave.keystore Aplicación_modificada.apk mi_alias Ahora podemos instalar la aplicación (PERO ANTES ) $adb install foo.apk

67 Operando entre emuladores Para poder operar entre emuladores y que reciban SMS necesitamos: Levantar dos máquinas Emulator-5554 Emulator-5556 Instalaremos la muestra en emulator 5554 $adb s emulator-5554 install Aplicación_Modificada.apk

68 NickiSpy (***) Metodología 1. VirusTotal. 2. Estudiar la estructura de la aplicación. 3. Analizar el fichero AndroidManifest. 4. Understand. 5. Analizando el código. 6. Instalar la aplicación. 7. Estudiar el comportamiento.

69 VirusTotal Sample de malware Trojan/AndroidOS.Foncy Ratio de detección 18/43 Nivel de amenaza Medio Información Añade técnicas de ofuscación y ocultación a través de ficheros ELF camuflados en PNGs. Incluye un exploit para obtener acceso root y realiza suscripción a servicios premium de mensajes.

70 Estructura de la aplicación Qué aspecto presenta la aplicación empaquetada? $ tree.. AndroidManifest.xml classes.dex META-INF CERT.RSA CERT.SF MANIFEST.MF res drawable icon.png menú menu.xml resources.arsc 4 directories, 8 files

71 Preparando el terreno Procedemos igual que en el caso anterior Transformamos el fichero.dex. $dex2jar fichero_clases.dex Obtenemos los ficheros.class. Descomprimimos el fichero.jar que hemos obtenido al pasar el dex2jar. Transformamos los ficheros.class a.jad $ for i in *; do mv $i $(echo $i tr -d '$'); done $./jad ruta_ficheros/*.class Observamos el contenido del AndroidManifest. $java jar AXMLPrinter2\.jar ruta_fichero_xml

72 Analizando la nueva estructura Qué aspecto presenta la aplicación después de la transformación? $tree.. com nicky lyyws xmall AlarmReceiver.jad BootReceiver.jad GpsService$1.jad GpsService.jad MainService$1.jad MainService.jad oo CallInfo.jad FileInfo.jad GpsInfo.jad HeadInfo.jad LacInfo.jad ParamInfo.jad Result.jad SmsInfo.jad Test.jad UpInfo.jad Qué ficheros nos interesan? R$attr.jad R$drawable.jad RecordService$1.jad RecordService.jad R$id.jad R.jad R$menu.jad R$string.jad SocketService$1.jad SocketService$2.jad SocketService$3.jad SocketService$4.jad SocketService$5.jad SocketService.jad XM_CallListener$CallContent$1.jad XM_CallListener$CallContent.jad XM_CallListener.jad XM_CallRecordService.jad XM_CallRecordService$TeleListener.jad XM_SmsListener.jad XM_SmsListener$SmsContent.jad 5 directories, 37 files A simple vista nos interesan RecordService, MainService, SocketService, SmsListener, entre otros.

73 AndroidManifest NickiSpy El contenido del fichero AndroidManifest: android:name="android.permission.call_phone" android:name="android.permission.process_outgoing_calls" android:name="android.permission.internet" android:name="android.permission.access_gps" android:name="android.permission.access_coarse_location" android:name="android.permission.access_coarse_updates" android:name="android.permission.access_fine_location" android:name="android.permission.read_phone_state" android:name="android.permission.read_contacts" android:name="android.permission.write_contacts" android:name="android.permission.access_wifi_state" android:name="android.permission.permission_name" android:name="android.permission.send_sms" android:name="android.permission.read_sms" android:name="android.permission.write_sms" android:name="android.permission.wake_lock" android:name="android.permission.record_audio" android:name="android.permission.write_external_storage" android:name="android.permission.device_power"

74 Dependencias internas El peso de la aplicación recae en los ficheros SmsContent, CallContent, RecordService además de sus respectivos listeners.

75 Diagrama de clases La importancia recae en ficheros como: RecordService SMSLister GPSInfo SmsInfo Es imposible hacernos una idea fijándonos en el diagrama. Hay que profundizar en el código.

76 Analizando el código Nuestro punto de partida es el siguiente: Tenemos diversos ficheros sospechosos a analizar: RecordService, MainService, SocketService, SmsListener, entre otros. Sospechamos que puede realizar grabaciones de audio y enviar estas a un C&C. Solicita acceso a los mensajes de texto y a la cartera de contactos. Al tratarse de una muestra de unas dimensiones considerables, sólo analizaremos los ficheros que presentan cierta importancia de cara a nuestra investigación.

77 MainService Observando el código extraemos Declaración de diversas variables que hacen apuntar a un panel de control encargado de enviar comandos con las acciones a realizar. Obtiene información de un fichero llamado XM_All_Setting (El método getsharedpreferences permite almacenar y obtener datos almacenados en forma de par clave/valor). Dicha información apunta: Service: jin.56mo.com Port: 2018 Da formato a la fecha utilizando la constante SIMPLIFIED_CHINESE, esto nos permite presuponer que el C&C puede ser de origen chino. Las restantes variables de tipo booleano sirven para controlar el estado de los servicios que han sido lanzados.

78 XM_CallRecordService Observando el código extraemos Contiene una variable llamada callpath con el valor /sdcard/shangzou/callrecord que parece apuntar a la ruta donde se almacenan las llamadas que el teléfono graba. Realiza la comprobación del IMEI, y en caso de que este sea nulo (eso significa que se está ejecutando en un emulador) asigna por defecto el Almacena la información de las llamdas como el id, número, fecha, tipo, duración.

79 XM_SmsListener Observando el código extraemos Monitoriza los mensajes tanto del outbox como del inbox. Para cada uno de ellos recoge datos como el número de origen, el contenido y la fecha.

80 GPSService Observando el código extraemos Un listener encargado de actualizar los datos cuando el teléfono cambia de coordenadas GPS.

81 XM_CallListener Del código destacamos Funcionamiento similar al SmsListener, monitoriza los logs de las llamadas para obtener información como el número de origen, la duración, el tipo o la fecha.

82 SocketService Extraemos del código: Se encarga de recoger toda la información que hemos comentado con anterioridad desde los diferentes ficheros y la envía al C&C.

83 Instalando la aplicación En esta ocasión para estudiar el funcionamiento de la muestra, vamos a levantar dos máquinas de prueba, una donde instalaremos la aplicación y otra donde realizaremos las pruebas. 1. Levantamos un emulador indicando el puerto a la escucha y reenviando todas las conexiones a un fichero.pcap. (Esta será la máquina que infectaremos) Emulator port tcpdump foo.pcacp 2. Instalamos la aplicación./adb s emulator-5556 install ruta/fichero.apk 3. Nos dirigimos a la pestaña DDMS de Eclipse y utilizamos File Explorer para ver qué directorios han sido creados en /data/data. Se crea en /data/data una nueva jerarquía de directorios llamada com.nicky.lyyws.xmal/lib que actualmente está vacía.

84 Instalando la aplicación 1. En este caso en particular no hay evidencias de que ninguna aplicación haya sido instalada. Para activar el malware es necesario reiniciar el terminal. 2. Tras reiniciarlo vemos en la pestaña DDMS que un nuevo paquete comienza a ejecutarse en nuestro terminal: com.nicky.lyyws.xmall 3. Una nueva carpeta es creada dentro del directorio /data/data Bajo el nombre de shared_prefs podemos encontrar el fichero XM_All_Setting.xml 4. Volcando el contenido del fichero: <?xml version='1.0' encoding='utf-8' standalone='yes'?> <map> <string name="move">10</string> <string name="service">jin.56mo.com</string> <int name="port" value="2018" /> <string name="endtime">23:59</string> <string name="time">1</string> <string name="begintime">00:01</string> <boolean name="isfirst" value="false" /> </map>

85 Reproduciendo la actividad Partimos de que poseemos dos máquinas virtuales RootedLabs, emulador sin infectar, conocido internamente por emulator RootedLabs_infectado, emulador infectado, conocido internamente por emulator El nombre realmente no importa, si no lo sabemos, podemos ejecutar adb devices para obtenerlo.

86 Reproduciendo la actividad Desde el emulador no infectado, lanzamos el dialer para realizar llamadas Lo hacemos pulsando sobre el botón del emulador Introducimos el número 5556 (O el asociado al teléfono infectado, que en caso de no ser ese, podemos comprobarlo ejecutando adb devices).

87 Reproduciendo la actividad Acto seguido recibiremos una llamada en el emulador indicado, si procedemos a descolgarla estaremos simulando las llamadas entre terminales.

88 Realizando análisis dinámico Revisando la ventana FileExplorer dentro de la pestaña DDMS de Eclipse, observamos: Se ha creado una nueva carpeta en /sdcard llamada shangzou/callrecord/. Dentro contiene bajo el nombre de la fecha y hora exactas, la conversación grabada que hemos tenido anteriormente.

89 Realizando el análisis dinámico Por último revisamos el fichero pcap: Al poco de ejecutarse la aplicación trata de establecer conexión con el centro de mando, enviando una petición a jin.56mo.com

90 Realizando el análisis dinámico Realiza el envío de un mensaje de texto al C&C con la palabra test

91 Realizando el análisis dinámico Realiza el envío del IMEI del teléfono en cuestión (en este caso al tratarse de un emulador)

92 Realizando el análisis dinámico Realiza el envío de la fecha correspondiente a la que se realizó la grabación de teléfono anterior.

93 Juguemos un poco Si intentamos establecer conexión con la dirección del C&C (jin.56mo.com) obtenemos el siguiente mensaje de error. Si establecemos conexión sin embargo con el dominio 56mo.com, obtenemos: La cadena 您 的 域 名 因 未 备 案 或 其 他 原 因 禁 止 访 问 puede ser traducida por Su dominio ha sido bloqueado.

94 Juguemos un poco Lanzando un whois logramos averiguar qué: El dominio fue creado el El nombre de contacto al que fue registrado es: qmingdeng. La dirección registrada es: 15B Room, B Tower Taiya Building, Xiamen, CN. Localización: China, Provincia: Fujian, Ciudad: Xiameng, CP: Número de teléfono: Dirección de registrada: qmingdeng@163.com

95 Sabemos dónde vives Encadenando los datos obtenidos y jugando con Google Maps:

96 Foncy-SMS (*****) Metodología 1. VirusTotal. 2. Estudiar la estructura de la aplicación. 3. Analizar el fichero AndroidManifest. 4. Understand. 5. Analizando el código. 6. Instalar la aplicación. 7. Estudiar el comportamiento.

97 VirusTotal Sample de malware Trojan/AndroidOS.Foncy Ratio de detección 18/43 Nivel de amenaza Medio Información Añade técnicas de ofuscación y ocultación a través de ficheros ELF camuflados en PNGs. Incluye un exploit para obtener acceso root y realiza suscripción a servicios premium de mensajes.

98 Estructura de la aplicación Qué aspecto presenta la aplicación empaquetada?

99 Preparando el terreno Procedemos igual que en el caso anterior Transformamos el fichero.dex. $dex2jar fichero_clases.dex Obtenemos los ficheros.class. Descomprimimos el fichero.jar que hemos obtenido al pasar el dex2jar. Transformamos los ficheros.class a.jad $ for i in *; do mv $i $(echo $i tr -d '$'); done $./jad ruta_ficheros/*.class Observamos el contenido del AndroidManifest. $java jar AXMLPrinter2\.jar ruta_fichero_xml

100 Analizando la nueva estructura Qué aspecto presenta la aplicación después de la transformación?

101 AndroidManifest FoncySMS El contenido del android manifest es el siguiente android:name="android.permission.read_logs" android:name="android.permission.read_phone_state" android:name="android.permission.write_external_storage" android:name="android.permission.internet" android:name="android.permission.vibrate" android:name="android.permission.wake_lock" android:name="android.permission.access_wifi_state" android:name="android.permission.change_wifi_state" android:name="android.permission.change_network_state" android:name="android.permission.access_network_state" android:name="android.permission.modify_audio_settings" android:name="com.android.vending.check_license" Permisos para leer el estado de los logs y el teléfono, acceso a la vibración del mismo, control sobre el estado del wifi, etc.

102 Dependencias internas El peso de la aplicación recae en el fichero AndroidBotActivity, que conecta los ficheros alojados dentro del directorio shellcommand.

103 Diagramas de clase

104 Analizando el código Nuestro punto de partida es el siguiente: Tenemos diversos ficheros sospechosos a analizar: AndroidBotActivity y ShellCommand Sospechamos que puede tener funcionalidades de botnet y es posible que exista un C&C por detrás. Aunque a simple vista y por lo que hemos analizado no podamos confirmarlo, más adelante veremos que hay muchas más características ocultas en la aplicación.

105 AndroidBotActivity Observando el código extraemos La decompilación generada no es del todo la esperada, mostrando basura de por medio *. Se crea una instancia de la clase ShellCommand al iniciar la actividad de la aplicación. Se crea el directorio /data/data/com.android.bot/files con los permisos de lectura/escritura para todos los ficheros contenidos en él. Se extraen tres ficheros bajo los nombres de: /data/data/com.android.bot/files/header01.png (Ejecutable ELF). /data/data/com.android.bot/file/footer01.png (Ejecutable ELF). /data/data/com.android.bot/file/border01.png (Aplicación Android- Fichero APK) Otorga permisos de lectura/escritura al fichero header01.png Ejecuta el fichero. Muestra un toast con el mensaje (0x14) Error Not registred application * El error mostrado al descompilar se sucede cuando JAD es incapaz de descomponer las construcciones como bloques etiquetados con breaks o bucles anidados controlados por sentencias break/continue, mostrando comúnmente el mensaje Couldn t fully decompile method o Couldn t resolve all exception handlers in method ($apktool d d FoncySms.apk Foncy_smali )

106 Shellcommand Observando el código extraemos Métodos encargados de realizar las labores de ejecución de los comandos que le son pasados por parámetros, además de controlar la salida y los errores de los resultados obtenidos.

107 Instalando la aplicación 1. Levantamos un emulador indicando el puerto a la escucha y reenviando todas las conexiones a un fichero.pcap. (Esta será la máquina que infectaremos) Emulator port tcpdump foo.pcacp 2. Instalamos la aplicación./adb s emulator-5556 install ruta/fichero.apk 3. Nos dirigimos a la pestaña DDMS de Eclipse y utilizamos File Explorer para ver qué directorios han sido creados en /data/data. Se crea en /data/data una nueva jerarquía de directorios llamada com.android.bot/lib que actualmente está vacío. En el menú de apliacciones, aparece una nueva llamada Madden NFL 12. Al ejecutarla lo único que observamos es un mensaje de Hello World, AndroidMeActivity! (En este caso no necesitamos simular la ejecución de eventos con ShellMonkey). 4. Observando la pestaña DDMS vemos una nueva actividad llamada com.android.bot que se está ejecutando en nuestro teléfono, y en el directorio comentado anteriormente han aparecido los ficheros creados por AndroidBotActivity.

108 Instalando la aplicación Lanzando el comando file sobre los ficheros que se han creado averiguamos: Boomsh: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dinamically linked (uses shared libs), not stripped. Border01.png: Zip archive data, at least v2.0 to extract. Footer01.png: ELF 32-bit LSB executable, ARM, version 1(SYSV), dynamically linked (uses shared libs), not stripped. Header01.png: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped. Rooted: ASCII text El siguiente paso es analizar esos ficheros con IDA y ver qué resultados obtenemos.

109 Header01.png Vulnerabilidad en la función handlepartitionadded(). Se asumía que variable part_num >= 1 para acceder a mpartminors[]. Pasando valor negativo referenciar y sobreescribir la memoria (GOT). GOT almacena información de las APIs importadas. (strcmp(), atoi(), ). Sustituimos offset de función por offset de system(). Si pasamos como parámetro a la función la ruta de un fichero o un comando Dicha función solo entra en acción cuando un evento hotplug ocurre. El demonio encargado de quedar a la escucha del socket espera recibir un paquete.

110 Header01.png Abre el fichero /proc/net/netlink y lee su contenido. Construye strings /proc/%pid%/cmdline Abre fichero hasta encontrar /system/bin/vold. Parsea su contenido para recoger princpio y fin del GOT. Llegados a este punto el atacante conoce los límites del GOT y el offset de la instrucción system(). Realiza un ataque de fuerza bruta construyendo la cadena malformada. El valor negativo lo utiliza para comprobar si referencia a una zona de memoria incluida dentro de los limites del GOT. Redirige la excepción ocurrida a /data/local/tmp/crashlog. Parsea el contenido buscando fault addr y compara la dirección con los límites del GOT.

111 Explotando la vulnerabilidad Se construye la cadena malformada. Ejecuta la función system( /data/local/tmp/boomsh ); Comprueba si su nombre contiene el string boomsh El troyano se ejecuta correctamente con permisos administrador. Inicia la segunda fase de su ataque, ejecutando footer01.png

112 Footer01.png Lo primero que hace al ejecutarse es escribir 1 en el fichero /data/data/com.android.bot/files/rooted, indicando que el exploit para conseguir root ha tenido éxito.

113 Footer01.png Elimina el directorio /etc/sent para establecer posteriormente permisos de lectura/escritura (para el propietario) y permisos de sólo lectura para el resto de usuarios al fichero /data/data/com.android.bot/files/border01.png

114 Footer01.png El siguiente paso es instalar la aplicación border01.png utilizando el administrador de paquetes para ello, acto seguido lanza la actividad principal de la misma y establece un flag de activación a 1 en el fichero /etc/sent

115 Footer01.png Realiza conexión con el IRC alojado en la dirección generando un nombre de usuario al azar para utilizarlo a la hora de hacer login en el servidor IRC. El bot se conecta al canal #andros y queda a la espera de recibir mensajes privados con las órdenes a realizar. Una vez el mensaje es recibido, el bot parsea su contenido (normalmente cadenas precedidas por el string PRIVMGS) para ejecutar uno de los 3 posibles comandos: Si el bot recibe el comando sh, ejecutará el ejecutable o comando a través de una llamada a system(), devolviendo el mensaje: PRIVMSG #andros :[SH] - %COMMAND_TO_RUN% Si recibe el comando id, obligará al bot a devolver el ide del usuario que está ejecutando el proceso, obteniéndose con una llamada a getuid(). El mensaje que devuelve es: PRIVMSG #andros :[ID] - %REAL_USER_ID% Comando exit, que fuerza la salida del bot mostrando el mensaje: PRIVMSG #andros :[EXIT] existing ordered.

116 Border01.png Corresponde al fichero APK creado por la aplicación original. Analizando la aplicación sin desempaquetar el fichero de clases observamos la siguiente estructura

117 Border01.png Después de hacer la correspondiente transformación del fichero de clases obtenemos lo siguiente:

118 AndroidManifest Border01 Revisando el fichero AndroidManifest que posee la aplicación descubrimos que solicita: android:name="android.permission.receive_sms android:name="android.permission.send_sms android:name="android.permission.internet Permisos para enviar/recibir mensajes de texto. Podemos encontrarnos ante una aplicación que realiza envíos de SMS premiums además de otros datos de carácter privados.

119 Diagrama de clases Vemos que hace uso del método SMSReceiver por lo que confirmamos nuestras dudas sobre el envío de mensajes.

120 Analizando la aplicación En este caso nuestro punto de partida serán los ficheros AndroidMeActivity.jad y SMSReceiver.jad. Podemos deducir por el nombre de que será en el segundo fichero donde esté implementada la lógico encargada del envío y recepción de mensajes de texto. Revisando el fichero AndroidMeActivity extraemos: Al iniciar la actividad principal, se solicita el código ISO de la ciudad. En base a esto se establece un número Premium u otro donde realizar el envío de mensajes. Se crea una instancia de SmsManager y se realizan un total de 5 envíos.

121 Analizando la aplicación Las ciudades a las que realiza el envío son: Spain Number: Message: GOLD Great Britain Number: 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: Message: PASS United States Number: Message: PASS

122 Analizando la aplicación Analizando el fichero SMSReceiver.class obtenemos: Es la responsable de la lógica encargada de interceptar los mensajes de texto recibidos. Se reservan dos campos donde se almacenan el número del destinatario y el contenido de cada SMS. Si el número del SMS interceptado procede de 81083, 3075, 64747, 60999, 63000, 35024, 2052, 7064, 1339, 9903, 2227, 72225, 23333, entonces el broadcast se aborta. Independientemente de que se aborte o no, el malware envía al centro de mando con IP: el mensaje de texto y el número que ha realizado el envío, formando el string: mensaje)///str1(número)

123 Análisis Forense Introducción. Retos en el análisis forense. Bases del sistema de ficheros. Técnicas en el análisis forense Jerarquía de directorios. Analizando la memoria.

124 Introducción El análisis forense en móviles sigue la misma metodología que en los análisis convencionales: Herramientas forenses. Buenas prácticas. Preservación de la información. Aplicación de métodos. El sector empieza a tener constancia de la importancia de estos dispositivos. Con el auge de los smartphones, el uso intensivo de los mismos propician el uso criminal o fraudulento de ellos.

125 Retos en el análisis forense Arquitectura diferente. Diversidad en los modelos y tecnología. Software de análisis forense y hardware específico. La mayoría de software de forense es de pago. Diseño de aplicaciones específicas e incluso determinado tipo de dispositivos.

126 Técnicas Para realizar un análisis forense en condiciones, es bueno conocer técnicas como: TimeLine Analysis. FileSystem Analysis. File Carving. Strings DataBases Analysis.

127 Tarjeta SIM Tarjeta inteligente, utilizada en teléfonos móviles. Información para identificarnos en la red del operador, además: IMSI Clave autenticado ICCID (Identificador Internacional de la tarjeta de circuito) MSIDSN Información sobre la localización, proveedor y llamadas. Presentan dos mecanismos de protección PIN PUK Aplicaciones para trabajar con este tipo de tarjetas: USIM Detective MOBILedit! Oxygen Forensics Suite 2012

128 Copiar/Clonar tarjeta SIM Conceptos estrechamente ligados. Copiar es generar un nuevo IMSI y Ki y copiar todo el contenido de la otra tarjeta. Clonar es generar una tarjeta exactamente igual, mismo IMSI y Ki. Para poder realizar este proceso A nivel de hardware Grabadora de PIC tipo Ludipipo. Grabadora EEPROM. Tarjeta con microprocesador donde poder volcar y grabar la información A nivel de software ICPRO - Graba el PIC Winexplorer Graba el EEPROM

129 TimeLine Analysis Componente fundamental para cualquier investigación. Existen diversas maneras de realizarlo, aunque es un proceso tedioso sino se realiza con herramientas especializadas. Dependiendo del tipo de sistemas de ficheros que utilicemos en la tarjeta SD se utilizan un tipo de herramientas u otras. La primera fuente para crear un timeline es la información almacenada en los metadatos del sistema de ficheros. Incluyendo la modificación, el acceso, o la modificación y creación de los ficheros.

130 Jugando con los TimeStamps Qué es un timestamp? Suelen ser una secuencia de caracteres que denotan la hora y fecha en la que ocurrió un evento determinado T 10:45 UTC T 11:20 UTC Sat Jul 23 02:16: Qué otros usos tienen? Marca digital usada en criptografía. Código de tiempo usado en redes, o vídeos. Tiempo universal de Linux. ICMP TimeStamp. Tipo de dato T-SQL, que muestra números binarios generados en una base de datos automáticamente.

131 Tipos de TimeStamp Existen 5 tipos de TimeStamps que pueden llevarnos a confusiones

132 Tipos de TimeStamp System TimeStamp Tiempo obtenido del reloj interno del equipo. Formato Año-Mes-Fecha-segundos-milisegundos File Time Local Intervalos de 100 nanosegundos desde el 1 de Enero de System Time Tiempo del sistema convertido al tiempo local del sistema. File Time Tiempo del fichero convertido al tiempo local del sistema. Windows Número de milisegundos desde que se inició el sistema. Ciclos cada 49.7 días.

133 Tipos de TimeStamp Los sistemas FAT12/FAT16 sólo tienen la fecha de la última modificación. Mientras que los sistemas FAT32 y NTFS tiene 3 tipos diferentes de timestamps: Fecha cuando el fichero fue creado. Fecha cuando fue accedido por última vez. Fecha cuando fue modificado por última vez.

134 Ejemplo Tomemos como ejemplo una carpeta FAT al azar, cuyo valor para la última modificación es la siguiente. Convirtiendo 3a75 b9 78 a binario obtenemos la siguiente representación Traduciendo esto a un TimeStamp válido obtenemos :11:48 7 bits = = 29 años desde bits = 0011 = 3 meses. 5 bits = = 21 días. 5 bits = = 23 horas. 6 bits = = 11 minutos. 5 bits = = 24 = 48 segundos.

135 FileSystem Analysis Los directorios y ficheros en un sistema Android son el primer objetivo de un análisis forense. Existen una serie de directorios que son necesarios ser examinados. Pueden variar debido a que los sistemas van creciendo frecuentemente. Cada teléfono es un mundo diferente. La mejor forma de abarcar esta técnica es comprobar: Que sistemas de ficheros están montados. Dónde han sido montados. Qué tipo de sistemas de ficheros son.

136 Ejemplo Analizando los puntos de montaje para un Nexus One: Hay 5 sistemas de ficheros montados donde deberíamos enfocar nuestra investigación

137 Ejemplo Analizando un Motorola Droid Posee 7 sistemas de ficheros interesantes a analizar.

138 Comenzando la investigación Cómo establecemos entonces el punto de partida en nuestra investigación? Es recomendable incluir los siguientes directorios en cualquier investigación forense. Punto de montaje Sistema de ficheros Importancia /proc PROC Recomendable examinarlo lanzando un cat, para obtener datos de relevancia, como metadatos con información acerca de las estadísticas del sistema. /data/data YAFFS2 Contiene toda la información de las aplicaciones. /data EXT3/EXT4/YAFFs2 Contiene los datos de aplicaciones y del sistema que han sido excluidos de /data/data /cache YAFFS2/EXT3 Ficheros de caché utilizados por algunas aplicaciones y el sistema.

139 Comenzando la investigación Punto de montaje Sistema de ficheros Importancia /mnt/asec Tmpfs Ficheros descifrados pertenecientes a las aplicaciones apk. Son los mismos que están en la tarjeta SD pero descifrados debido a su uso por el sistema. /app-cache Tmpfs Temporalmente donde com.android.browser almacena su caché. Otras aplicaciones también pueden usar este directorio. /mnt/sdcard Vfat Sistema de ficheros FAT32 donde se monta la tarjeta SD. /mnt/emmc Vfat Sistema de ficheros FAT32 donde se monta el emmc

140 FileCarving En qué consiste hacer FileCarving? Proceso cuya misión es recuperar ficheros en un escenario forense basado en el análisis en contenidos y no en metadatos. Nos permite recuperar estructuras corruptas. Qué tipos de FileCarving existen? Basados en bloques. Basados en cabeceras. Basados en pies. Limitados en el tamaño del fichero. Carving con validación. Carving semántico. Recuperación de fragmentos. Basado en estructuras de ficheros.

141 Usando Scalpe Scalpe es una herramienta desarrollada por Golden G. Richard. Lee un fichero de configuración para el fichero de cabecera y pie deseado con la intención de extraer los ficheros de una imagen raw. Se puede obtener a través de : sudo apt-get install scalpel

142 Usando Scalpe Las cabeceras del fichero de configuración definen el tipo de fichero que se trata (si es case sensitive o no), el tamaño máximo de carving, la definición de la cabecera, y el footer, si existe.

143 Strings El comando strings, por defecto nos devuelve las cadenas de un fichero que pueden ser imprimidas de cualquier fichero, texto o binario. No es una técnica elegante o sofisticada. Es muy efectiva cuando queremos obtener información rápida y efectiva examinando un fichero binario para hacernos una idea de lo que contiene. Permite utilizar varios parámetros que modificarán considerablemente lo que obtendremos como salida. Podemos automatizar búsquedas apoyándonos en expresiones regulares.

144 Strings Buscando direcciones de correo electrónico Strings userdata.img egrep [a-z A-Z\-\.]+\.[a-z A-Z\-\.]+ Buscando sitios donde se ha realizado inicios de sesión Strings userdata.img grep n10 login Buscando parámetros de sitios visitados strings userdata.img grep oe ((mailto\: (news (ht f)tp(s?))\://){1}\s+) Buscando números de teléfono strings userdata.img grep -oe "([0-9]{9})"

145 Jerarquía de directorios

146 Jerarquía de directorios

147 Jerarquía de directorios

148 Jerarquía de directorios

149 Jerarquía de directorios

150 Realizando un forense Por dónde empezamos? Un buen punto de partida es observar los puntos de montaje

151 Realizando un forense Qué información extraemos de aquí? Apreciamos que para mtdblock3, mtdblock4 y mtdblock5 el sistema de ficheros utiliza yaffs2 y realiza los montajes del sistema, cache y datos. Por otro lado monta la tarjeta SDCARD (En caso de que la tengamos) utilizando vfat. Qué dificultades podemos encontrarnos? Si no tenemos un dispositivo rooteado, no podremos realizar ninguna operación que requiera lectura/escritura de los datos almacenados. Cómo damos el primer paso? Utilizando NanDroid para traernos una imagen del sistema Proceso tedioso, ya que necesitamos desbloquear el bootloader, flashear la imagen del sistema, etc. Utilizando el comando DD.

152 Obteniendo información Antes de realizar nada, vamos a sacar información de los directorios /dev y /proc Cada dispositivo cuenta con una versión ro (read only) asociada al dispositivo original, así tenemos mtd0 con mtd0ro, etc.

153 Obteniendo información Para ver a qué directorio está asociado cada punto de montaje ejecutamos un cat /proc/mtd.

154 Realizando una correlación Utilizando el comando dd vamos a traernos una imagen de los distintos puntos de montaje: Mtd0 misc # dd if=/dev/mtd/mtd0 of=/sdcard/misc.img bs=2048 dd if=/dev/mtd/mtd0 of=/sdcard/misc.img bs= records in records out bytes transferred in secs ( bytes/sec) Mtd1 recovery # dd if=/dev/mtd/mtd1 of=/sdcard/recovery.img bs=2048 dd if=/dev/mtd/mtd1 of=/sdcard/recovery.img bs= records in records out bytes transferred in secs ( bytes/sec)

155 Realizando una correlación Mtd2 boot # dd if=/dev/mtd/mtd2 of=/sdcard/boot.img bs=2048 dd if=/dev/mtd/mtd2 of=/sdcard/boot.img bs= records in records out bytes transferred in secs ( bytes/sec) Mtd3 system # dd if=/dev/mtd/mtd3 of=/sdcard/system.img bs=2048 dd if=/dev/mtd/mtd3 of=/sdcard/system.img bs= records in records out bytes transferred in secs ( bytes/sec)

156 Realizando una correlación Mtd4 cache # dd if=/dev/mtd/mtd4 of=/sdcard/cache.img bs=2048 dd if=/dev/mtd/mtd4 of=/sdcard/cache.img bs= records in records out bytes transferred in secs ( bytes/sec) Mtd5 userdata # dd if=/dev/mtd/mtd5 of=/sdcard/userdata.img bs=2048 dd if=/dev/mtd/mtd5 of=/sdcard/userdata.img bs= records in records out bytes transferred in secs ( bytes/sec)

157 Realizando una correlación Dara como resultado: Donde: Boot.img Contiene los datos relativos al inicio de sistema. Cache.img Contiene los datos volátiles que estaban en la memoria del teléfono en el momento de volcarlos a disco. Data.img Contiene todos los datos de relativa importancia para el móvil, agenda, tareas, llamadas, mensajes, etc. Misc.img Contiene datos relativos de las aplicaciones instaladas. Recovery.img Contiene los datos utilizados por el recovery de nuestro teléfono. System.img Contiene los datos relativos a la configuración del sistema.

158 Trayéndonos los ficheros Es posible instalar un servicio SSH o FTP, en nuestro caso usaremos el comando pull del SDK: Boot.img $./adb pull /mnt/sdcard/boot.img E:/roote/Android/RootedLab/forense/boot.img 1624 KB/s ( bytes in 2.206s) Cache.img $./adb pull /mnt/sdcard/cache.img E:/roote/Android/RootedLab/forense/cache.img 1902 KB/s ( bytes in s) Misc.img $./adb pull /mnt/sdcard/misc.img E:/roote/Android/RootedLab/forense/misc.img 1836 KB/s ( bytes in 0.488s) Recovery.img $./adb pull /mnt/sdcard/recovery.img E:/roote/Android/RootedLab/forense/recovery.img 1873 KB/s ( bytes in 2.186s) System.img $./adb pull /mnt/sdcard/system.img E:/roote/Android/RootedLab/forense/system.img 1900s ( bytes in s) Userdata.img $./adb pull /mnt/sdcard/userdata.img E:/roote/Android/RootedLab/forense/userdata.img 1911 KB/s ( bytes in s)

159 Extrayendo información Podemos empezar analizando los ficheros contenidos en /data/data que contendrán la información almacenada y utilizada por las aplicaciones instaladas en nuestro teléfono. Haremos un análisis de userdata.img. Utilizaremos para empezar el comando strings, posteriormente sqlite3 y por último SQLite Viewer. Buscando direcciones de correo electrónico Strings userdata.img egrep [a-z A-Z_\-\.]+@[a-z A-Z\-\.]+\.[a-z A-Z\-\.]+ Buscando sitios donde se han realizado inicios de sesión Strings userdata.img grep n10 login Buscando parámetros de sitios visitados strings userdata.img grep oe ((mailto\: (news (ht f)tp(s?))\://){1}\s+) Buscando números de teléfono strings userdata.img grep -oe "([0-9]{9})"

160 Extrayendo información Buscando correos electrónicos Strings userdata.img egrep [a-z A-Z\-\.]+\.[a-z A-Z\-\.]+ Buscando imágenes JPG strings data.img grep -oe "(.*\.jpe?g.*\.jpe?g)" Buscando paquetes de programas instalados strings userdata.img grep -oe "(.*\.ptk?g.*\.ptk?g)" Buscando dominios visitados strings userdata.img grep -oe "^[a-za-z0-9\-\.]+\.(es com org net mil edu COM ORG NET MIL EDU)$" Buscando 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}$" Buscando direcciones MAC strings userdata.img grep oe ((\d ([a-f] [A-F])){2}:){5}(\d ([a-f] [A-F])){2} Buscando claves WiFi strings userdata.img grep psk=

161 Jugando con BBDDs Dónde podemos encontrar los datos? Suelen encontrarse en /data/data Podemos averiguar su paradero exacto ejecutando: strings a t x userdata.img grep databases more Cómo nos hacemos un backup? $./adb pull /data/data E:/roote/Android/RootedLab/forense/datosApps En otras ocasiones será necesario instalar alguna aplicación como Terminal Emulator y ejecutar: $ su # cp r L /data/data /sdcard/datosappforense

162 Auditando la BBDD del correo Dónde se encuentra? Se encuentra en el directorio com.google.android. /databases bajo el nombre de Provider.db Cómo la abrimos para trabajar con ella? Lanzando el comando sqlite3 Provider.db Cómo vemos su contenido? Dónde se encuentra la información interesante? En la tabla HostAuth

163 Auditando la BBDD de los contactos Dónde se encuentra? Se encuentra en el directorio com.android.providers.contacts/databases bajo el nombre de contacts2.db Cómo la abrimos para trabajar con ella? Lanzando el comando sqlite3 contacts2.db Cómo vemos su contenido?

164 Auditando la BBDD de los contactos Dónde se encuentra la información interesante? Calls contiene todas las llamadas realizadas por el dispositivo. Settings contiene información sobre las cuentas con las que tenemos sincronizados los contactos en nuestro dispositivo. View_v1_photos contiene información referente a las fotos de los contactos que tenemos añadidos en nuestro dispositivo

165 Auditando la BBDD de los contactos Dónde se encuentra la información interesante? View_v1_phones contiene todos los números de teléfono que tenemos añadidos en nuestra agenda. View_v1_people contiene información de todos los contactos sincronizados que tenemos en nuestro dispositivo, ya sean de twitter, facebook, whatsapp o cualquier servicio que permita añadir información a la lista de contactos de nuestro teléfono

166 Auditando la BBDD de los mensajes Dónde se encuentra? Se encuentra en el directorio com.android.providers.telephony/databases bajo el nombre de mmssms.db Cómo la abrimos para trabajar con ella? Lanzando el comando sqlite3 mmssms.db Cómo vemos su contenido? Dónde se encuentra la información interesante? A pesar de disponer de varias talbas a nosotros sólo nos interesa la llamada sms

167 Auditando la BBDD de los mensajes Dónde se encuentra la información interesante? Como se puede ver los mensajes no usan ningún tipo de cifrado.

168 Auditando la BBDD dewhatsapp Dónde se encuentra? Se encuentra en el directorio com.whatsapp/databases bajo el nombre de mgstore.db y wa.db Mgstore.db contine los mensajes que han sido enviados. Wa.db contiene información sobre nuestros contactos que poseen Whatsapp. Sólo están esos ficheros interesantes? También hay información relevante en la carpeta shared_folders Com.whatsapp_preferences.xml contiene las opciones de configuración que hemos establecido para nuestra cuenta asociada a la aplicación RegisterPhone.xml contiene la información acerca del número de teléfono que hemos registrado para ser usado en whatsapp. Cómo vemos su contenido? Para ver el contenido de los ficheros XML, basta con lanzar el comando cat por terminal para fichero que queramos ver. RegisterPhone.xml

169 Auditando la BBDD de Whatsapp Cómo vemos su contenido? Para ver el contenido de los ficheros XML, basta con lanzar el comando cat por terminal para fichero que queramos ver. Com.whatsapp_preferences.xml

170 Auditando la BBDD de Whatsapp Qué información hay en la BBDD? Comenzaremos auditando la base de datos wa.db abriendolo para ello con sqlite3. Qué estructura presenta? Qué tablas nos interesa? Qué información hay almacenada?

171 Auditando la BBDD de Whatsapp Qué tablas nos interesa? Qué información hay almacenada? Nuevamente todos los mensajes van en claro y sin ningún tipo de cifrado.

172 Auditando la BBDD de Tuenti Para realizar esta auditoría vamos a utilizar la aplicación SQLite Editor. Es necesario disponer de root en el teléfono y hay que pagar una pequeña cuantía por ella. Su funcionamiento es sencillo, primero realiza un análisis en busca de posibles bases de datos y posteriormente muestra todas las aplicaciones que contienen una.

173 Auditando la BBDD de Tuenti Seleccionando la aplicación de tuenti nos mostrará las tablas disponibles por la misma, y dentro de esta las tablas que componen el esquema.

174 Auditando la BBDD de Tuenti Bastará con hacer click sobre cualquiera de las tablas para obtener información sensible almacenada por la aplicación. Nosotros en concreto vamos a observar la tabla profiles. Cuyo contenido es el siguiente. Información sobre el UID del usuario, el correo registrado, nuestro nombre y apellidos, el estado que tenemos establecido y un campo vació con el MD5 de la clave.

175 Auditando la BBDD de Tuenti Otra tabla interesante es la llamada friends, donde está almacenada toda la información que nuestros amigos deciden registrar en la red social. Si el usuario ha decidido registrar su número de teléfono en la red social, aparecerá en este campo.

Tema 2: Introducción a Android

Tema 2: Introducción a Android Tema 2: Introducción a Android Android Android es un sistema operativo basado en el Kernel de Linux diseñado principalmente para dispositivos móviles con pantalla táctil. Android Fue desarrollado originalmente

Más detalles

Diseño de aplicaciones móviles seguras en Android. alvaro.ospina@upb.edu.co aospina@gmail.com

Diseño de aplicaciones móviles seguras en Android. alvaro.ospina@upb.edu.co aospina@gmail.com Diseño de aplicaciones móviles seguras en Android alvaro.ospina@upb.edu.co aospina@gmail.com Agenda Que es Android? Historia? Arquitectura Herramientas Medidas de seguridad Que es Android? Pila de software

Más detalles

Desarrollo de apps para móviles Android. Entorno de desarrollo

Desarrollo de apps para móviles Android. Entorno de desarrollo Desarrollo de apps para móviles Android Entorno de desarrollo Entorno de desarrollo Las aplicaciones Android van a ser implementadas en Java usando Android SDK. El software necesario para realizarlas es

Más detalles

U2. Introducción al desarrollo de aplicaciones móviles Smartphone y Android Desarrollo de Aplicaciones III TIC-UTSV Enero 2015 I.S.C.

U2. Introducción al desarrollo de aplicaciones móviles Smartphone y Android Desarrollo de Aplicaciones III TIC-UTSV Enero 2015 I.S.C. U2. Introducción al desarrollo de aplicaciones móviles Smartphone y Android Desarrollo de Aplicaciones III TIC-UTSV Enero 2015 I.S.C. Rogelio Vázquez Hernández Smartphone Termino utilizado para referirse

Más detalles

Descarga, instalación y uso de herramientas:

Descarga, instalación y uso de herramientas: Descarga, instalación y uso de herramientas: Eclipse: Instalación de Eclipse (Más información en http://www.eclipse.org/) 1. Copiar, descomprimir e instalar si es necesario la última versión de Eclipse

Más detalles

Ejercicios - Persistencia en Android: ficheros y SQLite

Ejercicios - Persistencia en Android: ficheros y SQLite Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base

Más detalles

1. El entorno de desarrollo Eclipse

1. El entorno de desarrollo Eclipse Índice 1. El entorno de desarrollo Eclipse 1 1.1. Qué es Eclipse?........................................................ 1 1.2. Trabajando con Eclipse....................................................

Más detalles

Person IP CRM Manual MOBILE

Person IP CRM Manual MOBILE Manual MOBILE División Informática BuscPerson Telecomunicaciones : Manual MOBILE 0.- Introducción 3 0.1 Configuración de los terminales 3 0.2 Acceso de Usuarios 3 1.- Funcionalidades CRM 5 1.1 Agenda del

Más detalles

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales. www.librosdigitales.

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales. www.librosdigitales. 1 Arquitectura de una Aplicación Android Para empezar con el desarrollo de aplicaciones en Android es importante conocer cómo está estructurado este sistema operativo. A esto le llamamos arquitectura y

Más detalles

http://www.droidlife.com/#47

http://www.droidlife.com/#47 Oct 2003 Fundación de Android, Inc. en Palo Alto, CA. 16 Ago, 2005 Android, Inc. es adquirida por Google. 5 Nov, 2007 Se anuncia el Open Handset Alliance (OHA), una alianza formada por 34 compañías líderes

Más detalles

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian Guía de Instalación Página 1 Índice ESCUDO MOVISTAR.... 3 1. INSTALACIÓN DEL SERVICIO ESCUDO MOVISTAR... 3 1.1. VERSIONES SOPORTADAS... 3

Más detalles

Anexo IV Configuración del Entorno de Desarrollo. Guía de puntos de interés de la Ciudad de Madrid

Anexo IV Configuración del Entorno de Desarrollo. Guía de puntos de interés de la Ciudad de Madrid Anexo IV Configuración del Entorno de Desarrollo Guía de puntos de interés de la Ciudad de Madrid 1. Índice Anexo IV Configuración del Entorno de Desarrollo... 1 1. Índice... 2 2. Entorno de Desarrollo...

Más detalles

http://www.oracle.com/technetwork/es/java/javase/downloads/index.html

http://www.oracle.com/technetwork/es/java/javase/downloads/index.html Introducción En esta primera parte del taller iremos viendo paso a paso como poner a punto todo tu entorno de trabajo para poder empezar cuanto antes a desarrollar tu primera aplicación Android para luego

Más detalles

www.android-spa.com Android Creación de una aplicación sencilla: Forwarding - Página 1 -

www.android-spa.com Android Creación de una aplicación sencilla: Forwarding - Página 1 - Android Creación de una aplicación sencilla: Forwarding - Página 1 - Realización de la aplicación Forwarding en Android Este es un pequeño tutorial con el que se realizará un pequeño programa para Android

Más detalles

APLICATECA. didimo Marketing. Manual de usuario. By DIDIMO Servicios Móviles. www.telefonica.es

APLICATECA. didimo Marketing. Manual de usuario. By DIDIMO Servicios Móviles. www.telefonica.es APLICATECA didimo Marketing Manual de usuario. By DIDIMO Servicios Móviles www.telefonica.es APLICATECA INDICE INDICE... 2 1 QUÉ ES DIDIMO MARKETING?... 3 2 MENÚ PRINCIPAL... 4 2.1 CAMPAÑAS... 4 2.1.1

Más detalles

Manual hosting acens

Manual hosting acens Manual hosting acens Contenido Acceso al panel de control de cliente... 3 Asociar un dominio a mi Hosting... 5 Acceso al panel de administración del hosting... 7 INICIO - Visión general del estado de nuestro

Más detalles

Oficina Online. Manual del administrador

Oficina Online. Manual del administrador Oficina Online Manual del administrador 2/31 ÍNDICE El administrador 3 Consola de Administración 3 Administración 6 Usuarios 6 Ordenar listado de usuarios 6 Cambio de clave del Administrador Principal

Más detalles

Manual de instalación Actualizador masivo de Stocks y Precios

Manual de instalación Actualizador masivo de Stocks y Precios Manual de instalación Actualizador masivo de Stocks y Precios Instrucciones para la instalación de Actualizado masivo de Stocks y Precios Módulo para Prestashop desarrollado por OBSolutions Módulo para

Más detalles

Capitulo 1: Plataforma Android

Capitulo 1: Plataforma Android Capitulo 1: Plataforma Android Elaborado por: Gary Briceño http://gary.pe http://gary.pe 1 Temario 1. Android 2. Evolución 3. Arquitectura Android 4. Paquetes de Trabajo 5. Android y Java http://gary.pe

Más detalles

Programación Android Completo

Programación Android Completo Programación Android Completo Duración: 50.00 horas Descripción Este curso pretende formar al alumno en el desarrollo de aplicaciones para dispositivos Android. Se estudiarán con detalle todos aquellos

Más detalles

Manual CMS Mobincube

Manual CMS Mobincube Manual CMS Mobincube CMS Mobincube Qué es? El CMS (Sistema de Gestión de Contenidos) es un completo website que permite la creación y actualización de contenido remoto. De esta forma, una vez creada una

Más detalles

Introducción a la Firma Electrónica en MIDAS

Introducción a la Firma Electrónica en MIDAS Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento

Más detalles

Programación Android. Rafael Morón Abad rafaelmoron@gmail.com

Programación Android. Rafael Morón Abad rafaelmoron@gmail.com Programación Android Rafael Morón Abad rafaelmoron@gmail.com 3.5. Persistencia Persistencia Para poder almacenar información persistente, Android nos proporciona 3 mecanismos: 1. Preferencias 2. Ficheros

Más detalles

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...

Más detalles

Manual de NetBeans y XAMPP

Manual de NetBeans y XAMPP Three Headed Monkey Manual de NetBeans y XAMPP Versión 1.0 Guillermo Montoro Delgado Raúl Nadal Burgos Juan María Ruiz Tinas Lunes, 22 de marzo de 2010 Contenido NetBeans... 2 Qué es NetBeans?... 2 Instalación

Más detalles

Entorno de desarrollo Instalación y configuración

Entorno de desarrollo Instalación y configuración Entorno de desarrollo Instalación y configuración GExCALL Formación http://gexcall.unex.es/formacion El plugin ADT (Android Development Tools) extiende al IDE Eclipse. Te permite crear y depurar aplicaciones

Más detalles

Móvil Seguro. Guía de Usuario Terminales Android

Móvil Seguro. Guía de Usuario Terminales Android Móvil Seguro Guía de Usuario Terminales Android Índice 1 Introducción...2 2 Descarga e instalación de Móvil Seguro...3 3 Registro del producto...5 4 Funciones de Móvil Seguro...7 4.1 Antivirus... 7 4.1

Más detalles

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS Servicio DNS - 1 - Servicio DNS...- 3 - Definición... - 3 - Instalación... - 5 - Configuración del Servidor DNS...- 10 - - 2 - Servicio DNS Definición

Más detalles

NORMA 34.14(SEPA) 05/11/2013

NORMA 34.14(SEPA) 05/11/2013 NORMA 34.14(SEPA) 05/11/2013 1. Descripción La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que se efectúe el pago de transferencias a los beneficiarios

Más detalles

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC1102 Introducción a la Programación Tutorial eclipse TM Introducción al uso de eclipse TM Contents

Más detalles

Tarea 1 Programación José Luis Comesaña

Tarea 1 Programación José Luis Comesaña Para la descarga de Java he optado por dirigirme a su propietario ORACLE para iniciar la grabación desde su página oficial: http://www.oracle.com/es/index.html donde seleccionamos Java 2 en el apartado

Más detalles

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario 14 CORREO SEGURO. Hay aplicaciones de correo que permiten enviar y recibir correos cifrados y firmados digitalmente utilizando criptografía. Estas operaciones garantizan el intercambio seguro de información,

Más detalles

Programación Android. Alejandro Alcalde. elbauldelprogramador.com

Programación Android. Alejandro Alcalde. elbauldelprogramador.com Programación Android Alejandro Alcalde elbauldelprogramador.com Copyright c 2013 Alejandro Alcalde P L A TEX. Programación Android por Alejandro Alcalde se encuentra bajo una Licencia Creative Commons

Más detalles

Ejercicios - Servicios

Ejercicios - Servicios Índice 1 Contador: Servicio con proceso en background (0.6 puntos)... 2 2 Broadcast Receiver: Captura de llamadas (0.6 puntos)...2 3 Broadcast Receiver: Reenvío de datos (0.6 puntos)...3 4 Arranque: Iniciar

Más detalles

WINDOWS 2008 5: TERMINAL SERVER

WINDOWS 2008 5: TERMINAL SERVER WINDOWS 2008 5: TERMINAL SERVER 1.- INTRODUCCION: Terminal Server proporciona una interfaz de usuario gráfica de Windows a equipos remotos a través de conexiones en una red local o a través de Internet.

Más detalles

Manual LiveBox WEB USUARIO. http://www.liveboxcloud.com

Manual LiveBox WEB USUARIO. http://www.liveboxcloud.com 2014 Manual LiveBox WEB USUARIO http://www.liveboxcloud.com LiveBox Srl no asume responsabilidades o garantías sobre el contenido y uso de ésta documentación y declina cualquier garantía explicita o implícita

Más detalles

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA Autor: Carlos Javier Martín González. Licenciado en Física Teórica por la Universidad Autónoma de Madrid. Analista programador y funcional. Desarrollador

Más detalles

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin. PHPMYADMIN Y MYSQL Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin. PhpMyAdmin es una herramienta para la administración del servidor de base de datos MySQL que dispone

Más detalles

Capítulo V. Implementación

Capítulo V. Implementación Capítulo V Implementación En este capítulo se especifican los recursos utilizados en la implementación de la interfaz, así como se describe su arquitectura funcional y las características principales.

Más detalles

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib Manual de uso de la plataforma para monitores CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib [Manual de uso de la plataforma para monitores] 1. Licencia Autor del documento: Centro de Apoyo Tecnológico

Más detalles

Introducción a la extensión de scripting en gvsig 2.0

Introducción a la extensión de scripting en gvsig 2.0 Introducción a la extensión de scripting en gvsig 2.0 2012 gvsig Association Este documento se distribuye con la licencia Creative Commons 1 2 Índice de contenido 1 Introducción... 3 Instalación de la

Más detalles

TEMA 1. Introducción

TEMA 1. Introducción TEMA 1 Introducción LO QUE ABORDAREMOS Qué es Android? Qué lo hace interesante? Arquitectura del sistema Entorno de desarrollo 2 QUÉ ES ANDROID? Sistema operativo para móviles Desarrollado inicialmente

Más detalles

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX En este manual se presenta el proceso de configuración de una Maquina Virtual en VirtualBox, que será utilizada para instalar un Servidor

Más detalles

Curso de PHP con MySQL Gratis

Curso de PHP con MySQL Gratis Curso de PHP con MySQL Gratis Introducción Este mini curso o mini tutorial de PHP le ayudará a realizar cualquier sistema para que pueda insertar uno o varios registros a una base de datos con MySQL, este

Más detalles

Instalación. Interfaz gráfico. Programación de Backups. Anexo I: Gestión de la seguridad. Manual de Usuario de Backup Online 1/21.

Instalación. Interfaz gráfico. Programación de Backups. Anexo I: Gestión de la seguridad. Manual de Usuario de Backup Online 1/21. 1/21 Instalación Interfaz gráfico Requerimientos Proceso de instalación Pantalla de login Pantalla principal Descripción de los frames y botones Programación de Backups Botones generales Botones de programación

Más detalles

Índice. Herramientas de desarrollo. Historia Qué es Android? Arquitectura del sistema. Componentes Android Modelos de Negocio

Índice. Herramientas de desarrollo. Historia Qué es Android? Arquitectura del sistema. Componentes Android Modelos de Negocio 1 Introducción a Android Índice Historia Qué es Android? Arquitectura del sistema Herramientas de desarrollo Componentes Android Modelos de Negocio 2 Objetivos Herramientas de desarrollo Conocer las herramientas

Más detalles

Redes de área local: Aplicaciones y servicios WINDOWS

Redes de área local: Aplicaciones y servicios WINDOWS Redes de área local: Aplicaciones y servicios WINDOWS 4. Servidor DNS 1 Índice Definición de Servidor DNS... 3 Instalación del Servidor DNS... 5 Configuración del Servidor DNS... 8 2 Definición de Servidor

Más detalles

Guía Rápida de Inicio

Guía Rápida de Inicio Guía Rápida de Inicio 1. Acerca de esta Guía Esta guía le ayudará a instalar y dar los primeros pasos con BitDefender Security for SharePoint. Para disponer de instrucciones detalladas, por favor, diríjase

Más detalles

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La puesta en marcha de WordPress es muy sencilla,

Más detalles

UNIDAD DIDACTICA 6 PERFILES LOCALES Y MÓVILES DE USUARIO

UNIDAD DIDACTICA 6 PERFILES LOCALES Y MÓVILES DE USUARIO UNIDAD DIDACTICA 6 PERFILES LOCALES Y MÓVILES DE USUARIO Eduard Lara 1 1. INTRODUCCIÓN Ya tenemos agregado un equipo cliente Windows al dominio Podemos iniciar sesión en el equipo de dos formas: En el

Más detalles

Manual de usuario administrador. Correo Exchange Administrado

Manual de usuario administrador. Correo Exchange Administrado Manual de usuario administrador Correo Exchange Administrado Triara.com SA de CV Todos los derechos reservados Esta guía no puede ser reproducido ni distribuida en su totalidad ni en parte, en cualquier

Más detalles

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

AGREGAR COMPONENTES ADICIONALES DE WINDOWS INSTALACIÓN DE IIS EN WINDOWS XP El sistema está desarrollado para ejecutarse bajo la plataforma IIS de Windows XP. Por esta razón, incluimos la instalación de IIS (Servidor de Web) para la correcta ejecución

Más detalles

App para realizar consultas al Sistema de Información Estadística de Castilla y León

App para realizar consultas al Sistema de Información Estadística de Castilla y León App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda

Más detalles

SMS Gestión. manual de uso

SMS Gestión. manual de uso SMS Gestión manual de uso índice qué es SMS Gestión 2 acceso al servicio 3 01 acceso con la clave de servicios de Orange 4 02 acceso personalizado 6 02.1 cómo personalizar su acceso a la aplicación 7 02.2

Más detalles

Manual de Usuario de la Herramienta SICRES-Tester. SIR Sistema de Interconexión de Registros. Tipo de documento. Fecha de entrega 08/04/2014

Manual de Usuario de la Herramienta SICRES-Tester. SIR Sistema de Interconexión de Registros. Tipo de documento. Fecha de entrega 08/04/2014 MINISTERIO DE HACIENDA Y ADMINISTRACIONES PÚBLICAS SECRETARÍA DE ESTADO DE ADMINISTRACIONES PÚBLICAS DIRECCIÓN GENERAL DE MODERNIZACIÓN ADMINISTRATIVA, PROCEDIMIENTOS E IMPULSO DE LA ADMINISTRACIÓN ELECTRONICA

Más detalles

Creación de materiales didácticos Aplicaciones para dispositivos móviles Lección 4

Creación de materiales didácticos Aplicaciones para dispositivos móviles Lección 4 Creación de materiales didácticos Aplicaciones para dispositivos móviles Lección 4 Bases de datos Índice de contenido Introducción...3 Bases de datos locales: TinyDB... 4 Compartir datos: TinyWebDB...

Más detalles

SENTINEL REMOTE CONTROL (S.R.C)

SENTINEL REMOTE CONTROL (S.R.C) SENTINEL REMOTE CONTROL (S.R.C) Versión G-0.5 Índice de contenidos 0.Consideraciones acerca de este producto...3 1.Objetivo del SRC...3 2.0 Instalación...3 2.1.Parte cliente (gclient)...4 2.1.Parte servidora

Más detalles

Capacitación Rational Funcional Tester

Capacitación Rational Funcional Tester Capacitación Rational Funcional Tester Clínica Alemana Santiago, 28 de abril de 2009 Introducción La presente exposición es sobre las principales características de Rational Functional Tester Describiendo

Más detalles

SIEWEB. La intranet corporativa de SIE

SIEWEB. La intranet corporativa de SIE La intranet corporativa de SIE por ALBA Software Acceso a los servicios SIE desde páginas Web para los usuarios de sistema *. Administración del Sistema (cuentas de usuarios, permisos, servicios, etc...)

Más detalles

RESUMEN. Solución web usable para la gestión de dispositivos móviles en empresas

RESUMEN. Solución web usable para la gestión de dispositivos móviles en empresas Agradecimientos RESUMEN. Solución web usable para la gestión de dispositivos móviles en empresas ... 1... 1... 1... 2... 3... 4... 4... 5... 6... 6... 9... 12... 13... 24... 25... 29... 30... 32... 33...

Más detalles

UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO

UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO www.ubs-systems.com Teléfono: 91 3681185 UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO Unidesys Versión 2011 1 CONTENIDO 1 INTRODUCCIÓN 3 2 FUENTES DE DATOS 4 3 INSTALACIÓN DEL

Más detalles

Sitios remotos. Configurar un Sitio Remoto

Sitios remotos. Configurar un Sitio Remoto Sitios remotos Definir un sitio remoto significa establecer una configuración de modo que Dreamweaver sea capaz de comunicarse directamente con un servidor en Internet (por eso se llama remoto) y así poder

Más detalles

Iptables, herramienta para controlar el tráfico de un servidor

Iptables, herramienta para controlar el tráfico de un servidor Iptables, herramienta para controlar el tráfico de un servidor La seguridad es punto muy importante a tener en cuenta en cualquier organización de ahí que sea fundamental hacer uso de aquellos mecanismos

Más detalles

Documentación Técnica Conector

Documentación Técnica Conector Documentación Técnica Conector Torre Ejecutiva Sur Liniers 1324, piso 4 Montevideo Uruguay Tel/Fax: (+598) 2901.2929* Email: contacto@agesic.gub.uy www.agesic.gub.uy Indice 1 Introducción...4 2 Casos

Más detalles

Manual Básico de Helm 4.2 para Usuarios:

Manual Básico de Helm 4.2 para Usuarios: Manual Básico de Helm 4.2 para Usuarios: Ante todo queremos agradecerle por elegir a para trabajar junto a usted. Esperamos que este manual lo ayude a trabajar con comodidad y facilidad. Este manual es

Más detalles

CAPÍTULO 3 VISUAL BASIC

CAPÍTULO 3 VISUAL BASIC CAPÍTULO 3 VISUAL BASIC 3.1 Visual Basic Microsoft Visual Basic es la actual y mejor representación del viejo lenguaje BASIC, le proporciona un sistema completo para el desarrollo de aplicaciones para

Más detalles

TOMO II. Línea de Investigación. Redes y Sistema Operativo. Nombre del egresado. Antonio Nicolás Rodríguez Andrade.

TOMO II. Línea de Investigación. Redes y Sistema Operativo. Nombre del egresado. Antonio Nicolás Rodríguez Andrade. TOMO II Línea de Investigación Redes y Sistema Operativo Nombre del egresado Antonio Nicolás Rodríguez Andrade Nombre del Tema Evaluación de la plataforma Android para dispositivos móviles Número de Proyecto

Más detalles

Kosmo Desktop Manual de desarrollo Instalación y configuración del código fuente de Kosmo en Eclipse

Kosmo Desktop Manual de desarrollo Instalación y configuración del código fuente de Kosmo en Eclipse Kosmo Desktop Manual de desarrollo Instalación y configuración del código fuente de Kosmo en Eclipse Versión 3.0 02/12/2010 2 3 1 Control de versiones VERSIÓN AUTOR FECHA CAMBIO 1.0 SAIG, S.L. 22/03/2007

Más detalles

Guía de Instalación para clientes de WebAdmin

Guía de Instalación para clientes de WebAdmin Panda Managed Office Protection Guía de Instalación para clientes de WebAdmin Tabla de contenidos 1. Introducción... 4 2. Instalación de Panda Managed Office Protection a partir de una instalación de Panda

Más detalles

Guí a Ra pida Dropbox.

Guí a Ra pida Dropbox. Guí a Ra pida Dropbox. Software desarrollado para alojar y compartir archivos vía WEB. Ing. Verónica Lisset Nieto Quintanilla vlnietoq@gmail.com http://www.veronicalnieto.blogspot.com/ www.vlnieto.wikispaces.com

Más detalles

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS Página 1 de 20 INSTALACIÓ N A3ERP INTRODUCCIÓN La instalación de a3erp v9 ha sufrido una trasformación importante respecto a sus versiones anteriores. Cualquier instalación exige la existencia de un pc

Más detalles

INSTALACIÓN DE MEDPRO

INSTALACIÓN DE MEDPRO 1 Estimado Cliente: Uno de los objetivos que nos hemos marcado con nuestra nueva plataforma de gestión, es que un cliente pueda instalar MedPro y realizar su puesta en marcha de forma autónoma. Siga paso

Más detalles

MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS

MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS SEGUIMIENTO DE VERSIONES Versión Novedades respecto a la versión anterior Fecha Versión 1.0 14/03/2011 Página 2 ÍNDICE ÍNDICE... 3 1. INTRODUCCIÓN... 4 2. MÓDULO

Más detalles

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS ARCHIVOS ANEXOS Son los documentos, hojas de cálculo o cualquier archivo que se anexa a las carpetas, subcarpetas, hallazgos u otros formularios de papeles de trabajo. Estos archivos constituyen la evidencia

Más detalles

- MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD. Rev. 01- FEBRERO 2013

- MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD. Rev. 01- FEBRERO 2013 - MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD Rev. 01- FEBRERO 2013 Software de diagnóstico de la seguridad de la información y autoimplantación

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en

Más detalles

Correo Electrónico: Webmail: Horde 3.1.1

Correo Electrónico: Webmail: Horde 3.1.1 CONTENIDOS: PAGINA Qué es Webmail?. 2 Acceder a Webmail. 2 Instilación del Certificado UCO. 4 Instilación Certificado I.explorer. 4 Instilación Certificado Firefox. 7 Opciones Webmail. 8 Opciones Información

Más detalles

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez Instituto Tecnológico de Las América Materia Sistemas operativos III Temas Servidor Web Apache Facilitador José Doñe Sustentante Robín Bienvenido Disla Ramirez Matricula 2011-2505 Grupo 1 Servidor Web

Más detalles

Introducción a los sitios de SharePoint en Office 365

Introducción a los sitios de SharePoint en Office 365 Introducción a los sitios de SharePoint en Office 365 Universidad Central del Este Contenido 1. QUÉ ES UN SITIO SHAREPOINT?... 3 2. CÓMO INGRESAR AL ÁREA DE SITIOS?... 3 3. DESCRIPCIÓN GENERAL DEL ÁREA

Más detalles

Backup & Recovery Oracle 9i. Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada.

Backup & Recovery Oracle 9i. Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada. Copias de Seguridad Físicas OFFLINE Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada. Como ya se ha comentado anteriormente, una copia en frío

Más detalles

Desarrollando con android sin conexión

Desarrollando con android sin conexión Desarrollando con android sin conexión Por: Alfonso Alí http://aalih.cubava.cu/2015/01/12/desarrollando-con-android-sin-conexion/ Para nadie es noticia que los dispositivos con

Más detalles

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2 Manual de software Dynamic Cloud 10/2014 MS-Dynamic_Cloud v1.2 ÍNDICE GENERAL 1. INTRODUCCIÓN... 2 1.1 Configuración mínima del PC... 2 2. INSTALAR DYNAMIC CLOUD... 3 2.1 Ejecutar Dynamic Cloud por primera

Más detalles

Compartiendo conocimiento... Guía básica de instalación de Asterisk 11 en Centos6.5

Compartiendo conocimiento... Guía básica de instalación de Asterisk 11 en Centos6.5 Compartiendo conocimiento... Guía básica de instalación de Asterisk 11 en Centos6.5 (c) 2014 Xavier Jiménez Índice de contenido Introducción y propósito del documento...1 Instalación de CentOS...1 Instalación

Más detalles

Escudo Movistar Guía Rápida de Instalación Para Windows

Escudo Movistar Guía Rápida de Instalación Para Windows Escudo Movistar Guía Rápida de Instalación Para Windows Guía de Instalación Página 1 Índice ESCUDO MOVISTAR.... 3 1. INSTALACIÓN DEL SERVICIO ESCUDO MOVISTAR... 3 1.1. VERSIONES SOPORTADAS... 3 1.2. DISPOSITIVOS

Más detalles

Guía de instalación del servidor

Guía de instalación del servidor Guía de instalación del servidor Autores: Versión: 1.0 Jesús Manuel Rodríguez Sánchez Miguel Ángel Lorente López Fecha: 22/01/2009 Tabla de contenido Manual de Instalación del Servidor 4 Paso 1) Instalar

Más detalles

MANUAL BÁSICO WEBMAIL

MANUAL BÁSICO WEBMAIL MANUAL BÁSICO WEBMAIL Procedimiento básico para el uso de nuevo webmail Servicio salud Maule, en esta guía se podrá conocer los aspectos básicos que permiten la utilización de la herramienta webmail. Contenido

Más detalles

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta Configuración de una red con Windows Aunque existen múltiples sistemas operativos, el más utilizado en todo el mundo sigue siendo Windows de Microsoft. Por este motivo, vamos a aprender los pasos para

Más detalles

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa...2. 1.1 Configuración Internet Explorer para ActiveX...

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa...2. 1.1 Configuración Internet Explorer para ActiveX... INDICE 1 Configuración previa...2 1.1 Configuración Internet Explorer para ActiveX...2 1.2 Problemas comunes en sistema operativo Windows...8 1.2.1 Usuarios con sistema operativo Windows XP con el Service

Más detalles

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico) MANUAL DE AYUDA SAT Móvil (Movilidad del Servicio Técnico) Fecha última revisión: Abril 2015 INDICE DE CONTENIDOS INTRODUCCION SAT Móvil... 3 CONFIGURACIONES PREVIAS EN GOTELGEST.NET... 4 1. INSTALACIÓN

Más detalles

Vamos a comenzar creando un nuevo proyecto de Android utilizando los siguientes parámetros en el cuadro de diálogo:

Vamos a comenzar creando un nuevo proyecto de Android utilizando los siguientes parámetros en el cuadro de diálogo: 2.3. MULTIMEDIA En este capítulo vamos a mostrarle cómo añadir multimedia a nuestras aplicaciones Android. 2.3.1. REPRODUCCIÓN DE AUDIO Android es compatible con salidas de sonido y música a través de

Más detalles

Construcción y Empaquetado

Construcción y Empaquetado Curso 12/13 Desarrollo de Aplicaciones Construcción y Empaquetado Contenidos El proceso de construcción Firmado de Comandos para firma y «stripeado» Publicación Construcción y empaquetado Grupo Arco 2

Más detalles

Capitulo 5. Implementación del sistema MDM

Capitulo 5. Implementación del sistema MDM Capitulo 5. Implementación del sistema MDM Una vez que se concluyeron las actividades de análisis y diseño se comenzó la implementación del sistema MDM (Manejador de Documentos de MoProSoft). En este capitulo

Más detalles

Android 4 Principios del desarrollo de aplicaciones Java

Android 4 Principios del desarrollo de aplicaciones Java La plataforma Android 1. Presentación 13 2. Origen 14 3. Google Play 15 3.1. Creación de una cuenta de desarrollador 16 3.2 Publicación de una aplicación 16 3.3. Seguimiento y actualización de una aplicación

Más detalles

CASO PRÁCTICO. CASOS PRÁCTICOS Internet (CP15 y CP16)

CASO PRÁCTICO. CASOS PRÁCTICOS Internet (CP15 y CP16) CASO PRÁCTICO CASOS PRÁCTICOS Internet (CP15 y CP16) Índice Internet CP15: Subir a Internet... 1 CP16: Publicar en blog... 7 Internet Una vez que tenemos un montaje audio realizado, ya tenemos una nueva

Más detalles

MANUAL DE LA APLICACIÓN HELP DESK

MANUAL DE LA APLICACIÓN HELP DESK CASAMOTOR MANUAL DE LA APLICACIÓN HELP DESK Desarrollado por: NOVIEMBRE, 2012 BOGOTÁ D.C. - COLOMBIA INTRODUCCIÓN Este documento es el manual de la aplicación de Help Desk de Casamotor, producto desarrollado

Más detalles

Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences

Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences Índice 1 Compartir datos entre actividades con Shared Preferences (0.75 puntos)... 2 2 Actividad de preferencias (0.75

Más detalles

Práctica 5. Curso 2014-2015

Práctica 5. Curso 2014-2015 Prácticas de Seguridad Informática Práctica 5 Grado Ingeniería Informática Curso 2014-2015 Universidad de Zaragoza Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas

Más detalles

Software Criptográfico FNMT-RCM

Software Criptográfico FNMT-RCM Software Criptográfico FNMT-RCM ÍNDICE 1. DESCARGA E INSTALACIÓN DEL SOFTWARE 2. EXPORTACIÓN DE CERTIFICADOS EN MICROSOFT INTERNET EXPLORER 3. IMPORTACIÓN DEL CERTIFICADO A LA TARJETA CRIPTOGRÁFICA -2-

Más detalles