mundo hacker academy 8 noviembre 2019 · 1. android application (apk) • un archivo comprimido •...
TRANSCRIPT
Mundo Hacker Academy 8 noviembre 2019
INSTRUCTOR
Simón Roses Femerling
• Founder & CEO, VULNEX www.vulnex.com • Blog: www.simonroses.com
• Twitter: @simonroses | @vulnexsl
• Former Microsoft, PwC, @Stake
• US DARPA Cyber Fast Track award on software security project
• Black Hat, DEFCON, RSA, HITB, OWASP, SOURCE, AppSec, DeepSec, TECHNET
• CISSP, CSSLP, CEH
GRACIAS
• Organización, sponsors y tu
OBJETIVOS DEL TALLER
• Introducción Android APK
• Herramientas de ingeniería inversa
• Casos reales: Apps inseguras y malware
AGENDA
1. ¿QuéesunAPK?2. OWASPMobileTop103. Herramientasingenieríainversa4. Truquitos5. Recursos
1. ANDROID APPLICATION (APK)
• Un archivo comprimido
• Escrito en Java y XML, pero puede incluir código C nativo (bibliotecas y aplicaciones externas)
• Múltiples puntos de entrada: actividad, servicios, “intents”, proveedores de contenido, etc.
• Un APK tiene que estar firmado para ejecutarse en el teléfono pero: – No requiere estar firmado por una CA – Clave propiedad del desarrollador – Puedes firmar con un certificado de depuración (“debug”)
• Aplicaciones almacenadas en la carpeta /data/data/<app>,y solo son accesibles por su ID de usuario e ID de grupo
1. APK: FICHEROS Y DIRECTORIOS
• AndroidManifest.xml: componentes de la aplicación (actividades, servicios, difusión, receptores y proveedores de contenido) y permisos.
• Directorio META-INF/: – MANIFEST.MF: archivo de manifiesto – CERT.RSA: Certificado de solicitud – CERT.SF: Lista de recursos y resumen SH1 de las líneas correspondientes en
MANIFEST.MF
• Lib/ directorio: código compilado – armeabi: código ARM compilado – armeabi-v7a: código ARMv7 compilado – x86: código compilado x86 – mips: código MIPS compilado
• res/: recursos no compilados en resources.arsc • assets/: evaluaciones de aplicaciones • Classes.dex: clases compiladas en formato dex para DALVIK • Resources.arsc: recursos precompilados, como XML binario
1. COMPONENTES DE UNA APLICACION
• Proveedor de contenido: los proveedores de contenido son la interfaz estándar que conecta los datos en un proceso con el código que se ejecuta en otro proceso. Gestión de datos.
• Actividad: Componente de aplicación que proporciona una pantalla con la cual los usuarios pueden interactuar para hacer algo. Cada actividad tiene una ventana en la cual dibujar su interfaz de usuario.
• Servicios: componente de aplicación que puede realizar operaciones de larga duración en segundo plano y no proporciona una interfaz de usuario.
• Broadcast Receiver: componente de aplicación que responde a anuncios de difusión en todo el sistema.
1. DESARROLLO VS INGENIERÍA INVERSA
Java o Kotlin
DEX Bytecode
DEX Bytecode SMALI Java
Decompilado
DESARROLLO
Ingeniería Inversa
2. OWASP MOBILE 10 (2016)
• Uso inapropiado de la plataforma M1 • Almacenamiento inseguro de datos M2 • Comunicación insegura M3 • Autenticación insegura M4 • Criptografía insuficiente M5 • Autorización insegura M6 • Calidad del código del cliente M7 • Manipulación de código M8 • Ingeniería inversa M9 • Funcionalidad extraña M10
2. M1 – USO INAPROPIADO DE LA PLATAFORMA • Uso indebido de una función de la plataforma o no usar los controles
de seguridad de la plataforma. Puede incluir intentos de Android, permisos de plataforma, uso indebido de TouchID, el llavero o algún otro control de seguridad que sea parte del sistema operativo móvil.
2. M2 – ALMACENAMIENTO INSEGURO DE DATOS • Vulnerabilidades que filtran información personal y brindan acceso a
los atacantes.
2. M2 – ALMACENAMIENTO INSEGURO DE DATOS
2. M2 – ALMACENAMIENTO INSEGURO DE DATOS
2. M2 – ALMACENAMIENTO INSEGURO DE DATOS • STRAVA Privacy leak
https://www.vox.com/technology/2018/2/1/16945120/strava-data-tracking-privacy-military-bases
2. M3 – COMUNICACIÓN INSEGURA
• Las comunicaciones se envían en texto claro u otros métodos inseguros.
2. M4 – AUTENTICACIÓN INSEGURA
• Los atacantes que explotan las vulnerabilidades de autenticación generalmente lo hacen a través de ataques automáticos que utilizan herramientas disponibles o personalizadas.
2. M3 – AUTENTICACIÓN INSEGURA
• Ola App ($1.1B inversión)
• Todas las llamadas API a través de HTTP
• Sin token o cifrado OAuth para proteger la API
• https://thenextweb.com/insider/2015/03/23/how-i-hacked-indias-biggest-startup/
2. M5 – CRIPTOGRAFÍA INSUFICIENTE
• El código aplica la criptografía a un activo de información confidencial. Sin embargo, la criptografía es insuficiente de alguna manera. Tenga en cuenta que todo lo relacionado con TLS o SSL va en M3. Además, si la aplicación no puede utilizar la criptografía cuando debería, eso probablemente pertenezca a M2. Esta categoría es para problemas donde se intentó la criptografía, pero no se realizó correctamente.
2. M5 – CRIPTOGRAFÍA INSUFICIENTE
• Dos categorías: – Implementaciones rotas usando bibliotecas criptográficas fuertes – Implementaciones de cifrado personalizadas y fáciles de derrotar
• La codificación NO es encriptación
• La ofuscación NO es encriptación
• La serialización NO es encriptación
2. M5 – CRIPTOGRAFÍA INSUFICIENTE
2. M5 – CRIPTOGRAFÍA INSUFICIENTE
2. M5 – CRIPTOGRAFÍA INSUFICIENTE
• https://crackstation.net/
• https://hashkiller.co.uk/Cracker/MD5
• https://hashkiller.co.uk/
• https://md5decrypt.net/en/
2. M6 – AUTORIZACIÓN INSEGURA
• Fallo de un servidor para hacer cumplir adecuadamente la identidad y los permisos emitidos por la aplicación.
2. M7 – CALIDAD DEL CÓDIGO DEL CLIENTE
• Riesgos que provienen de vulnerabilidades como desbordamientos de búfer, cadenas de formato y otros errores a nivel de código donde la solución es reescribir algún código que se ejecuta en el dispositivo móvil.
2. M7 – CALIDAD DEL CÓDIGO DEL CLIENTE
2. M7 – CALIDAD DEL CÓDIGO DEL CLIENTE
• Vulnerabilidad AppLovin SDK (+200 millones dispositivos) https://blog.applovin.com/applovin-security-notice/
2. M8 – MANIPULACIÓN DE CÓDIGO
• Los atacantes manipulan o instalan una puerta trasera en una aplicación, la vuelven a firmar y publican la versión maliciosa en los mercados de aplicaciones de terceros.
2. M8 – MANIPULACIÓN DE CÓDIGO
• Pokemon Go (Versión de malware dentro de los 3 días posteriores al lanzamiento inicial en Google Play Store, 500.000 descargas) https://www.kaspersky.com/blog/pokemon-go-malware/12953/
2. M9 – INGENIERÍA INVERSA
• Análisis del binario para determinar su código fuente, bibliotecas, algoritmos y otros activos.
2. M9 – INGENIERÍA INVERSA
2. M9 – INGENIERÍA INVERSA
• Tinder: revertir la aplicación y volver a compilar para que no tuvieran que pagar por contenido premium https://www.forbes.com/sites/thomasbrewster/2016/02/09/tinder-bad-security-design/#669e13d6dc34
2. M10 – FUNCIONALIDAD EXTRAÑA
• A menudo, los desarrolladores incluyen funcionalidad oculta de puerta trasera u otros controles de seguridad de desarrollo interno que no están destinados a ser lanzados a un entorno de producción.
2. M10 – EXTRANEOUS FUNCTIONALITY
• MediaTek Processor Debug Tool https://thehackernews.com/2016/02/mediatek-hacking-mobile.html
3. ADB KUNGFU
• ADB (Android Debug Bridge): herramienta de línea de comandos que le permite comunicarse con una instancia de emulador o un dispositivo con Android conectado.
– Push: Copia un archivo especificado de su computadora de desarrollo a una instancia de emulador / dispositivo.
– Pull: copia un archivo especificado de una instancia de emulador / dispositivo a su computadora de desarrollo.
– Instalar: empuja una aplicación de Android (especificada como una ruta completa a un archivo .apk) a un emulador / dispositivo.
– Reenviar: reenvía las conexiones de socket desde un puerto local especificado a un puerto remoto especificado en la instancia del emulador / dispositivo.
– Shell: inicia un shell remoto en la instancia del emulador / dispositivo de destino.
– Devices: imprime una lista de todas las instancias de emulador / dispositivo adjuntas.
3. ADB EJEMPLOS
• $ adb devices List of devices attached emulator-5554 device
• $ adb –s emulator-5554 install myapp.apk
• $ adb forward tcp:6100 tcp:7100
• $ adb shell
• $ adb push myfile.txt /sdcard/myfile.txt
3. APKTOOL - 1
• Herramienta de ingeniería inversa para aplicaciones Android. Puede decodificar recursos de forma casi original y reconstruirlos después de hacer algunas modificaciones.
• Sigue mejorando • https://ibotpeaches.github.io/Apktool/
3. APKTOOL - 2
3. APKTOOL - 3
3. JDAX - 1
• Descompilador DEX a Java
• Línea de comandos y herramientas GUI para producir código fuente Java a partir de archivos Android DEX y APK
• https://github.com/skylot/jadx
3. JDAX - 2
3. JDAX - 3
3. APK SIGN - 1
• Firma automáticamente un APK con el certificado de prueba de Android.
• https://github.com/appium/sign
3. APK SIGN - 2
3. FRIDA - 1
• Inyecta JavaScript para explorar aplicaciones nativas en Windows, macOS, Linux, iOS, Android y QNX.
• https://www.frida.re/
• $ sudo pip install frida-tools
3. FRIDA - 2
3. FRIDA - 3
3. FRIDA - 4
3. FRIDA - 5
3. FRIDA - 6
4. ADB LOGCAT
• Ver logs
• $ adb logcat
• O • $ adb shell • > logcat
4. CAPTURA DE TRÁFICO - 1
• El emulador incluye tcpdump
• Crea un WIFI AP y conecta al dispositivo para capturar el trafico – Wifi pineapple – Raspberry pi
• Configurar proxy -> Settings -> More -> Mobile Networks -> Access Point Names -> <operator> – Proxy – Port – Username / password: leave blank
• Para tráfico HTTPS, instalar certificado – Copiar el certificado a la SD o bajar por navegador. Instalarlo desde settings.
4. CAPTURA DE TRÁFICO - 2
4. CAPTURA DE TRÁFICO - 3
4. TCPDUMP I
• https://www.androidtcpdump.com/
• Los emuladores Android incluyen tcpdump /system/xbin/tcpdump
4. TCPDUMP II
• $ adb root • $ adb remount • $ adb push ./tcpdump /system/xbin/tcpdump O • $ adb push ./tcpdump /scard/tcpdump • $ adb shell • # tcpdump -vv -i any -s 0 -w /sdcard/dump.pcap • $ adb pull /sdcard/dump.cap .
4. TCPDUMP III
• $ telnet localhost 5554 • > network capture start emulator.cap • > network capture stop
4. TCPDUMP IV
• $ emulator -avd myavd -verbose –tcpdump test.cap • $ wiresshark test.cap
5. LINKS
• Android App Reverse Engineering 101 https://maddiestone.github.io/AndroidAppRE/
• ANDROID APPLICATIONS REVERSING 101 https://www.evilsocket.net/2017/04/27/Android-Applications-Reversing-101/
• Awesome Frida https://github.com/dweinstein/awesome-frida
• The Mobile Security Testing Guide (MSTG) https://github.com/OWASP/owasp-mstg
5. BUG BOUNTY
• Android Security Rewards Program Rules https://www.google.com/about/appsecurity/android-rewards/
• Google Play Security Reward Program (hackerone)
https://hackerone.com/googleplay
5. Q&A
• Gracias!
• Cerveza bienvenida!!!
• @simonroses • @vulnexsl
• www.vulnex.com • www.simonroses.com