SlideShare una empresa de Scribd logo
José Manuel Ortega Candel | @jmortegac
https://speakerdeck.
com/jmortega
Testing Android Security
https://www.youtube.com/watch?v=hfaAA7ln-kc
INDEX
Introducción al ciclo de desarrollo
Análisis estático y dinámico
Desarrollo seguro en componentes
Librerías de encriptado
OWASP Mobile Top Risks Security
Ofuscación de aplicaciones
Herramientas de pentesting /forensics
Ciclo de desarrollo
Requerimientos
Análisis
Diseño
Desarollo
Testing / QA
Security review en
cada iteración
+Security
Requirements
Analysis
El Testing de seguridad se debería
integrar en el ciclo de desarrollo e
integración contínua desde las
primeras etapas
El objetivo es detectar posibles riesgos
y minimizar las vulnerabilidades que
nuestra aplicación pueda generar
Security testing
SQLite
• Cifrado
• SQL injection
Cifrado de datos
 HTTPS
 Información sensible
Almacenamiento
• Ficheros
• Shared Preferences
• BD SQLite
• Logs
• Cache
Enfocadas a verificar que el
software está protegido de
ataques externos y a certificar
que se protege la
confidencialidad, integridad
y disponibilidad del sistema y
sus datos
Security testing is a process to
determine that an information
system protects data and maintains
functionality as intended.
Testear seguridad aplicaciones
Análisis estático
Código fuente • Code Review
Binario • Ingeniería inversa
Análisis dinámico • Debug en tiempo de ejecución
• Capturar logs y tráfico que generan
• Llamadas a servicios remotos
• Peticiones de red
Análisis forense • Permisos en ficheros
• Análisis del contenido de ficheros
White box / Black box
 Pruebas de caja blanca
 Pruebas de caja negra
 Análisis estático
 Cobertura de código
 Control de flujo
 Análisis dinámico
 Comportamiento en tiempo de ejecución
 Performance
Análisis estático
 Analizar el código fuente
 Android Lint
 Android Studio > Inspect code > Security issues
 SonarQube > Android Plugin > Rules
 Agnitio Tool
 Androwarn
 Ingeniería inversa
Android Lint
Android Studio inspect code
Android plugin Sonar
https://github.com/SonarCommunity/sonar-android
Android plugin Sonar
https://github.com/SonarCommunity/sonar-android
Sonar security plugin
Android plugin Sonar > Rules
JavascriptInterface [Missing @JavascriptInterface on methods]
As of API 17, you must annotate methods in objects registered with the
addJavascriptInterface
SetJavaScriptEnabled [Using setJavaScriptEnabled in webview]
Your code should not invoke setJavaScriptEnabled if you are not sure that your app really
requires JavaScript support
WorldReadableFiles [openFileOutput() call passing
MODE_WORLD_READABLE]
HardcodedDebugMode [Hardcoded value of android:debuggable in the
manifest]
AllowBackup [Missing allowBackup attribute]
Agnitio tool
 http://sourceforge.net/ projects/agnitiotool
 Análisis estático
 Decompilar APK
Buscar llamadas a funciones
que pueden suponer un
riesgo
Recomendaciones +
checklist
Androwarn
https://github.com/maaaaz/androwarn
python androwarn.py -i my_apk.apk -r html -v 3
Telephony identifiers exfiltration: IMEI, IMSI, MCC, MNC, LAC, CID, operator's name...
Device settings exfiltration: software version, usage statistics, system settings, logs...
Geolocation information leakage: GPS/WiFi geolocation...
Connection interfaces information exfiltration: WiFi credentials, Bluetooth MAC
adress...
Telephony services abuse: premium SMS sending, phone call composition...
Audio/video flow interception: call recording, video capture...
Remote connection establishment: socket open call, Bluetooth pairing, APN settings
edit...
PIM data leakage: contacts, calendar, SMS, mails...
External memory operations: file access on SD card...
PIM data modification: add/delete contacts, calendar events...
Arbitrary code execution: native code using JNI, UNIX command, privilege escalation...
Denial of Service: event notification deactivation, file deletion, process killing, virtual
keyboard disable, terminal shutdown/reboot...
Android
Application
Vulnerability
Scanner tool
Android
Application
Vulnerability
Scanner tool
Ingeniería inversa
 Decompile dalvik to smali / classes.dex in APK
 APKTOOL
 DEX2JAR
 Java Decompiler
APKTOOL / DEX2JAR
Ingeniería inversa
 https://github.com/nkpanda/Android-Testing
 Mobiliz3r
 Script en python
Ingeniería inversa
 DexInspector
 Dalvik bytecode editor
 APK Reverser
 APK Analyzer
APK Multitool
Análisis dinámico
 Monitorizar la aplicación
 Analizar el tráfico de red(Burp Suite,Wireshark,Fiddler)
Inyectar instrucciones para detectar
comportamientos anómalos o sospechosos
 DroidBox
 Drozer
 TraceDroid
Wireshark
https://code.google.com/p/droidbox
Permite monitorizar:
Fugas de información / Operaciones E/S de red y sobre ficheros
Operaciones de cryptografía / Llamadas SMS y telefónicas
DroidBox
DroidBox
https://www.mwrinfosecurity.com/products/drozer
 Analizar vulnerabilidades a través de un agente/proxy
 Permite interactuar con activities,servicios,broadcast
receivers y content providers
Automatizar testing de
seguridad
Drozer
Drozer
Drozer
commands
http://tracedroid.few.vu.nl
 Análisis online de peticiones de red,llamadas,sms
 También realiza un análisis estático y de cobertura
de código
https://github.com/nodoraiz/android-hooker
 Análisis dinámico
https://lab.nowsecure.com
Testing Android Security
Seguridad en componentes
AndroidManifest.xml
Activities
ContentProviders
Services
Sqlite
Shared Preferences
Webview
Permisos en runtime v6
 Normal permissionsSe proporcionan de forma
automática
 Dangerous permissionsEl usuario decide si darle
permiso o no
Factores de riesgo
Permisos en androidManifest.xml
Verificar la firma de la aplicación
Origen de la aplicación
Dispositivo rooteado
Depuración habilitada en androidManifest
<application android:debuggable=“true”/>
Proteger los datos
 set android:allowBackup=false
 Crear ficheros en MODE_PRIVATE
 Evitar almacenar información sensible en la SD CARD
 Filtrar información de log
Almacenamiento
en ficheros
• MODE_WORLD_READABLE
• MODE_WORLD_WRITABLE
• MODE_PRIVATE
/mnt/sdcard is world-
readable and world‐writable
• WRITE_TO_EXTERNAL_STO
RAGE PERMISSION
• Any application can access to
sd-card
WORLD_READABLE / WORLD_WRITABLE
Deprecated API >=17
Otra aplicación podría leer el fichero si conoce la
ruta
Fichero que contengan información
confidencial deberían crearse con el permiso
MODE_PRIVATE
Logs
Sólo mostrar
en modo
debug
Eliminar logs
con proguard
public static final boolean SHOW_LOG =
BuildConfig.DEBUG;
public static void d(final String tag, final String msg)
{
if (SHOW_LOG)
Log.d(tag, msg);
}
-assumenosideeffects class android.util.Log
{
public static boolean isLoggable(java.lang.String, int);
public static *** d(...);
public static *** v(...);
public static *** i(...);
public static *** e(...);
}
Proguard
configuration
Atributo export
 En activity,content providers,broadcast receivers y servicios
debería estar a false
 Por defecto esta a false a partir de la version 4.2 en
content-providers
Limitar acceso desde otras aplicaciones
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
ComponentName v0 = this.getCallingActivity();
if (v0 == null) { this.finish(); }
else if (!"package_name".equals(v0.getPackageName())) { this.finish(); }
}
• Comprobar que quien llama a la activity sea un
componente que se encuentre en el mismo
paquete/proyecto
Custom permissions
<provider android:name="SampleContentProvider"
android:authorities="com.example.app.Provider“
android:export=“true"
android:permission="com.example.app.permission.Provi
der" />
<permission android:protectionLevel="signature"
android:name="com.example.app.permission.Provider">
</permission> protectionLevel="signature" – Permite limitar el acceso a
componentes de aplicaciones firmadas con el mismo certificado
Librerías de terceros
 Analizar posibles vulnerabilidades
 PhoneGap
 Apache Cordova
SQLite / SQLCipher
 Fichero que se guarda en /data/data/<package>/databases
 Permite cifrar la base de datos con el algoritmo de encriptación AES
256 bits
SQLiteDatabase myPrivateDB =
openOrCreateDatabase("Contacts", MODE_PRIVATE, null);
SQLite Extension
Full Database
Encryption
Good Performance
AES-256 Encryption
Portable
Open Source Core
SQLite / SQL injection
Construir consultas mediante ?
Sentencias preparadas
Secure Preferences
https://github.com/scottyab/secure-preferences
 Fichero que se guarda en
/data/data/<package>/shared_prefs
 Librería que permite securizar este fichero
 Permite cifrar keys y values
 AES Encryption(Simétricomisma clave para encriptar y
desencriptar)
 La primera vez que se instancia SecurePreferences,se crea
una clave que permite encriptar y desencriptar los valores
Secure
prefefences
SharedPreferences prefs =
SecurePreferences(context);
Editor edit = prefs.edit();
edit.putString("key", "value");
edit.apply();
Ofuscación / Proguard
http://proguard.sourceforge.net
Habilitar en Android Studio
build.gradle
Proguard
Configuration
1. change names of classes,
methods, fields
2. modify the control flow
3. code optimization
4. dynamic code loading
5. change instructions with
metamorphic technique
Proguard
Detectar Root
 Permisos lectura /escritura sobre la carpeta system
 Comprobar acceso a los ficheros de las aplicaciones dentro
de /data/data/<package_name>
https://code.google.com/p/roottools
if (RootTools.isRootAvailable())
{
// su exists, do something
}
if (RootTools.isAccessGiven()) {
// your app has been granted root access
}
Encriptado
import java.security.*;
Import javax.crypto.*;
AES / RSA
Key 256 bits
SecureRandom
CBC - Cipher Block Chaining
AES/CBC/PKCS5Padding cipher
algorithm
Password-Based Key
Derivation Function
Seguridad certificados
OWASP
Mobile Top 10
Risks
OASAM-
Open Android
Security
Assessment
Methodology
http://oasam.org/en
OASAM-
Open Android
Security
Assessment
Methodology
http://oasam.org/es
Pentesting
Distribuciones que tienen integradas la
mayorías de aplicaciones de análisis
estático y dinámico
 Santoku linux https://santoku-linux.com
 Mobisec http://sourceforge.net/projects/mobisec
Testing Android Security
Pentesting
https://code.google.com/p/c-ray
Permite probar los
intents de forma
manual
Forensics
Forensics
 https://github.com/viaforensics/android-forensics
 https://www.isecpartners.com/tools/mobile-security.aspx
 http://andriller.com
Mobile secure coding
Resources
Developer.android.com
 https://developer.android.com/training/articles/security-tips.html
 https://source.android.com/devices/tech/security
OWASP
 https://www.owasp.org/index.php/OWASP_Mobile_Security_Project
Open Android Security Assessment Methodology
 http://oasam.org/en
Resources
Android libraries security
 https://android-arsenal.com/tag/87
Open Source Security Testing Methodology Manual
(OSSTMM)
 http://www.isecom.org/research/osstmm.html,
Books
Books
Books
José Manuel Ortega Candel | @jmortegac

Más contenido relacionado

PDF
Tema 9 comando kali linux (1)
PDF
Webinar OWASP Zed Attack Proxy (ZAP)
PDF
Webinar Gratuito: Mapear una Aplicación Web con Zed Attack Proxy
PDF
Daniel González & Helena Jalain - DevSecOps y la caída de Babilonia: cómo olv...
PDF
Ramón Pinuaga - Authenticode para malotes [rooted2017]
PDF
Seguridad de las aplicaciones web con Spring Security 3.x
PPT
Spring Security
PDF
Springio2012 taller-seguridad-web-springsecurity-3
Tema 9 comando kali linux (1)
Webinar OWASP Zed Attack Proxy (ZAP)
Webinar Gratuito: Mapear una Aplicación Web con Zed Attack Proxy
Daniel González & Helena Jalain - DevSecOps y la caída de Babilonia: cómo olv...
Ramón Pinuaga - Authenticode para malotes [rooted2017]
Seguridad de las aplicaciones web con Spring Security 3.x
Spring Security
Springio2012 taller-seguridad-web-springsecurity-3

Destacado (20)

PPTX
Seguridad en Android
PDF
How To Improve Your Product Testing Program
PPTX
Product Testing and Refinement
PPTX
Android Mobile Application Testing: Specific Functional, Performance, Device ...
PPTX
Performance Testing on Android
PDF
Product testing methodology & how to conduct a product test
PDF
Security in Android Applications / Александр Смирнов (RedMadRobot)
PDF
Android performance
PPTX
Android Performance and Monitoring - Meetup 3 25-14
PDF
A guide to Android automated testing
PDF
Android verysimplebook... أندرويد ببساطة
PDF
Android Security Overview and Safe Practices for Web-Based Android Applications
PDF
Testing With Open Source
PDF
Unit testing and Android
ODP
Android security in depth
PPSX
Product Testing: Methodological Issues & Design Considerations
PDF
Unit testing in android
PPTX
How to Reliably Measure and Optimize Graphics Performance of Your Android Games
PDF
How ANDROID TESTING changed how we think about Death - Second Edition
PDF
Testing on Android
Seguridad en Android
How To Improve Your Product Testing Program
Product Testing and Refinement
Android Mobile Application Testing: Specific Functional, Performance, Device ...
Performance Testing on Android
Product testing methodology & how to conduct a product test
Security in Android Applications / Александр Смирнов (RedMadRobot)
Android performance
Android Performance and Monitoring - Meetup 3 25-14
A guide to Android automated testing
Android verysimplebook... أندرويد ببساطة
Android Security Overview and Safe Practices for Web-Based Android Applications
Testing With Open Source
Unit testing and Android
Android security in depth
Product Testing: Methodological Issues & Design Considerations
Unit testing in android
How to Reliably Measure and Optimize Graphics Performance of Your Android Games
How ANDROID TESTING changed how we think about Death - Second Edition
Testing on Android
Publicidad

Similar a Testing Android Security (20)

PDF
Testing Android Security
PPTX
Csa Summit 2017 - Obteniendo información de tu organización a través de aplic...
PPTX
Cristian Barrientos - Auditando Aplicaciones Android [rooted2018]
PDF
Lo que las apps esconden
PDF
Pimp your Android. Rooted CON 2012.
PPT
13 Administración Android - Seguridad
PDF
Seguridad Dispositivos móviles Extened Edition
PDF
Mobile apps security. Beyond XSS, CSRF and SQLi
PPTX
Android Security
PDF
Deletreando Android
PDF
Seguridad dispositivos móviles(Android e iOS)
PPTX
Hackeando plataformas móviles
PPTX
Seguridad en android.ppt
PPTX
Seguridad en android.ppt
PPT
PresentacionPFC_ppt
PDF
Sebastián Guerrero - Pimp your Android [RootedCON 2012]
PDF
Estrategias para utilizar android con seguridad
PDF
"Android de la A a la Z" -- Unidad 8
PDF
116 owasp mobile-top_10_security_risks
PDF
2020 enero Argentesting
Testing Android Security
Csa Summit 2017 - Obteniendo información de tu organización a través de aplic...
Cristian Barrientos - Auditando Aplicaciones Android [rooted2018]
Lo que las apps esconden
Pimp your Android. Rooted CON 2012.
13 Administración Android - Seguridad
Seguridad Dispositivos móviles Extened Edition
Mobile apps security. Beyond XSS, CSRF and SQLi
Android Security
Deletreando Android
Seguridad dispositivos móviles(Android e iOS)
Hackeando plataformas móviles
Seguridad en android.ppt
Seguridad en android.ppt
PresentacionPFC_ppt
Sebastián Guerrero - Pimp your Android [RootedCON 2012]
Estrategias para utilizar android con seguridad
"Android de la A a la Z" -- Unidad 8
116 owasp mobile-top_10_security_risks
2020 enero Argentesting
Publicidad

Más de Jose Manuel Ortega Candel (20)

PDF
Seguridad y auditorías en Modelos grandes del lenguaje (LLM)
PDF
Seguridad y auditorías en Modelos grandes del lenguaje (LLM).pdf
PDF
Beyond the hype: The reality of AI security.pdf
PDF
Seguridad de APIs en Drupal_ herramientas, mejores prácticas y estrategias pa...
PDF
Security and auditing tools in Large Language Models (LLM).pdf
PDF
Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...
PDF
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
PDF
PyGoat Analizando la seguridad en aplicaciones Django.pdf
PDF
Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...
PDF
Evolution of security strategies in K8s environments- All day devops
PDF
Evolution of security strategies in K8s environments.pdf
PDF
Implementing Observability for Kubernetes.pdf
PDF
Computación distribuida usando Python
PDF
Seguridad en arquitecturas serverless y entornos cloud
PDF
Construyendo arquitecturas zero trust sobre entornos cloud
PDF
Tips and tricks for data science projects with Python
PDF
Sharing secret keys in Docker containers and K8s
PDF
Implementing cert-manager in K8s
PDF
Python para equipos de ciberseguridad(pycones)
PDF
Python para equipos de ciberseguridad
Seguridad y auditorías en Modelos grandes del lenguaje (LLM)
Seguridad y auditorías en Modelos grandes del lenguaje (LLM).pdf
Beyond the hype: The reality of AI security.pdf
Seguridad de APIs en Drupal_ herramientas, mejores prácticas y estrategias pa...
Security and auditing tools in Large Language Models (LLM).pdf
Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
PyGoat Analizando la seguridad en aplicaciones Django.pdf
Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...
Evolution of security strategies in K8s environments- All day devops
Evolution of security strategies in K8s environments.pdf
Implementing Observability for Kubernetes.pdf
Computación distribuida usando Python
Seguridad en arquitecturas serverless y entornos cloud
Construyendo arquitecturas zero trust sobre entornos cloud
Tips and tricks for data science projects with Python
Sharing secret keys in Docker containers and K8s
Implementing cert-manager in K8s
Python para equipos de ciberseguridad(pycones)
Python para equipos de ciberseguridad

Último (20)

PDF
Maste clas de estructura metálica y arquitectura
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
taller de informática - LEY DE OHM
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Diapositiva proyecto de vida, materia catedra
PPT
Que son las redes de computadores y sus partes
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPTX
Presentación de Redes de Datos modelo osi
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
Calidad desde el Docente y la mejora continua .pdf
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PDF
Estrategia de apoyo tecnología grado 9-3
Maste clas de estructura metálica y arquitectura
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Presentación PASANTIAS AuditorioOO..pptx
taller de informática - LEY DE OHM
Influencia-del-uso-de-redes-sociales.pdf
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Diapositiva proyecto de vida, materia catedra
Que son las redes de computadores y sus partes
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
REDES INFORMATICAS REDES INFORMATICAS.pptx
Presentación de Redes de Datos modelo osi
Sesion 1 de microsoft power point - Clase 1
Calidad desde el Docente y la mejora continua .pdf
Plantilla para Diseño de Narrativas Transmedia.pdf
SAP Transportation Management para LSP, TM140 Col18
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Zarate Quispe Alex aldayir aplicaciones de internet .docx
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Estrategia de apoyo tecnología grado 9-3

Testing Android Security