@zallyhg
Android reversing 101
Ingeniera en Sistemas Computacionales.
Experiencia en ciberseguridad:
Pentesting mobile/web
Malware research
Arquitectura de redes/preventa
Cursos online:
Intro a ciberseguridad
Redes Computacionales
Análisis de malware
Speaker, me gusta ayudar y aportar a la comunidad de
ciberseguridad!
Bienvenid@s,
Recuerda que para este taller necesitarás tener :
DIVA APK: https://github.com/payatu/diva-android o
https://github.com/0xArab/diva-apk-file
Emulador de android studio, Genymotion o un telefono de pruebas android
Descargar e instalar docker
Descargar MobSF
Descargar e instalar Burp Suite Community Edition
Descargar Drozer
Un computador, laptop o maquina virtual, que pueda soportar los programas
mencionados
Y mucho entusiasmo por aprender! :-)
Reverse engineering vs Pentesting
Pentesting mindset
Ir más allá del manual de instrucciones, o lo
que se espera de un usuario, explorando los
límites de lo que es posible,
Phases of pentesting
First, the basics
Hablemos un poco de Android, una plataforma usada por más de 3 billones de
usuarios en el mundo;
Y es que una de las mayores ventajas o atractivos de esta plataforma es la base
de las problemáticas de seguridad, el hecho de ser una plataforma abierta.
First, the basics
SMALI
Utilizando smali/baksmali
(ensamblador/desensamb
lador) se puede obtener
una representación en un
lenguaje de bajo nivel con
el que se puede trabajar
más fácilmente
Dalvik Byte Code
Las aplicaciones Android
contienen ficheros .dex
(Dalvik EXecutable). Estos
ficheros se pueden
decompilar para obtener
un código de bajo nivel
llamado Dalvik Bytecode.
Java decompilado
Lo más cercano al código fuente, Android está
basado en Java, aunque también puede ser
escrito en Kotlin.
Public disclosures (CVE)
https://www.cvedetails.com/product/19997/Google-Android.html?vendor_id=1224
Diseño y arquitectura
Android es apodado “Java en Linux” ya que posee una arquitectura muy similar a
la vista en Linux, a continuación veremos un poco de eso,
https://developer.andr
oid.com/guide/platfor
m
Manos a la obra
Para entender mejor la estructura y realizar nuestro primer análisis estático
necesitarás tener instalado docker o MobSF:
Descargar e instalar docker https://docs.docker.com/desktop/install/mac-install/
Descargar repositorio de MobSF o hacer pull del contenedor,
https://hub.docker.com/r/opensecurity/mobile-security-framework-mobsf/
Recomendación personal, usar Docker.
Manos a la obra
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf
Manos a la obra
Download apk https://github.com/0xArab/diva-apk-file
Arrastra o abre el archivo APK en localhost:800
Formato de reporte
https://docs.google.com/document/d/1K_uAQ_lod_atlvr18GDFEeVkSRkRMTdZIX
TAQE-7Las/edit?usp=sharing
Radiografía de una
aplicación
● Android Manifest
● Meta.INF →Certificados
● Classes.dex → Dalvik bytecode
● lib → Librerías nativas
● Assets → Otros archivos que pueda necesitar la app, librerías
adicionales
Entendamos los
puntos de entrada
● Lanzar actividad
● Servicios
● “Receivers”
● “Info Providers”
● Subclases
● Componentes exportados
Tasks by category
M1-Improper Platform Usage
-Manifest analysis
-Permissions analysis
M2-Insecure Data Storage
-Look for insecure logs created by the app
-Use Introspy-Android to verify logs(adb)
-Verify the storage of sensitive information on the mobile
phone like databases or passwords
M3-Insecure Communication
-Get the list of WEB APIs and urls used by the application
-Check that the URLS use SSL encryption
-Check if attacks can be made "Man in the middle"
M4-Insecure Authentication
-Identify weakness in session management
-Identify the problems that involve compromise of user
tokens
M5-Insufficient Cryptography
-Identify insecure cryptographic algorithms used by the
application (like md5)
M6-Insecure Authorization
-Identify if access to an unauthorized resource is
obtained
-Use drozer to see if activities can be launched
Tasks by category
M7-Poor Code Quality
-Identify a buffer overflow
-Identify vulnerabilities of format strings
-Try to find code vulnerabilities with drozer
M8-Code Tampering
-Identify the possibility of changing data and code when the
application is installed, how to replace the system APIs or
resources of the application for own benefit
-Identify the possibility of installing a back door on the
application and return to sign it with tools like FatTheRat
M9-Reverse Engineering
-Statical automated Analysis with Mobile Security Framework
MobSF
-Analysis and validation of vulnerabilities with Mobile Security
Framework MobSF
M10-Extraneous Functionality
-Identify backdoors in the application
-Identify the possibility of disabling 2-step authentication
-Identify controls that are taken from development to
production
https://drive.google.com/file/d/14-9wzSUgaqtUYLb9ng90Ub9BGYH9SAa
6/view?usp=sharing
https://drive.google.com/file/d/17C6k50qXIElINAXaNKtjYaCrYOO9M2xf/view?usp=s
haring

Android reversing 101.pdf

  • 1.
  • 2.
    Ingeniera en SistemasComputacionales. Experiencia en ciberseguridad: Pentesting mobile/web Malware research Arquitectura de redes/preventa Cursos online: Intro a ciberseguridad Redes Computacionales Análisis de malware Speaker, me gusta ayudar y aportar a la comunidad de ciberseguridad!
  • 3.
    Bienvenid@s, Recuerda que paraeste taller necesitarás tener : DIVA APK: https://github.com/payatu/diva-android o https://github.com/0xArab/diva-apk-file Emulador de android studio, Genymotion o un telefono de pruebas android Descargar e instalar docker Descargar MobSF Descargar e instalar Burp Suite Community Edition Descargar Drozer Un computador, laptop o maquina virtual, que pueda soportar los programas mencionados Y mucho entusiasmo por aprender! :-)
  • 4.
  • 5.
    Pentesting mindset Ir másallá del manual de instrucciones, o lo que se espera de un usuario, explorando los límites de lo que es posible,
  • 6.
  • 7.
    First, the basics Hablemosun poco de Android, una plataforma usada por más de 3 billones de usuarios en el mundo; Y es que una de las mayores ventajas o atractivos de esta plataforma es la base de las problemáticas de seguridad, el hecho de ser una plataforma abierta.
  • 8.
    First, the basics SMALI Utilizandosmali/baksmali (ensamblador/desensamb lador) se puede obtener una representación en un lenguaje de bajo nivel con el que se puede trabajar más fácilmente Dalvik Byte Code Las aplicaciones Android contienen ficheros .dex (Dalvik EXecutable). Estos ficheros se pueden decompilar para obtener un código de bajo nivel llamado Dalvik Bytecode. Java decompilado Lo más cercano al código fuente, Android está basado en Java, aunque también puede ser escrito en Kotlin.
  • 9.
  • 10.
    Diseño y arquitectura Androides apodado “Java en Linux” ya que posee una arquitectura muy similar a la vista en Linux, a continuación veremos un poco de eso,
  • 11.
  • 12.
    Manos a laobra Para entender mejor la estructura y realizar nuestro primer análisis estático necesitarás tener instalado docker o MobSF: Descargar e instalar docker https://docs.docker.com/desktop/install/mac-install/ Descargar repositorio de MobSF o hacer pull del contenedor, https://hub.docker.com/r/opensecurity/mobile-security-framework-mobsf/ Recomendación personal, usar Docker.
  • 13.
    Manos a laobra docker pull opensecurity/mobile-security-framework-mobsf docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf
  • 14.
    Manos a laobra Download apk https://github.com/0xArab/diva-apk-file Arrastra o abre el archivo APK en localhost:800 Formato de reporte https://docs.google.com/document/d/1K_uAQ_lod_atlvr18GDFEeVkSRkRMTdZIX TAQE-7Las/edit?usp=sharing
  • 16.
    Radiografía de una aplicación ●Android Manifest ● Meta.INF →Certificados ● Classes.dex → Dalvik bytecode ● lib → Librerías nativas ● Assets → Otros archivos que pueda necesitar la app, librerías adicionales
  • 17.
    Entendamos los puntos deentrada ● Lanzar actividad ● Servicios ● “Receivers” ● “Info Providers” ● Subclases ● Componentes exportados
  • 18.
    Tasks by category M1-ImproperPlatform Usage -Manifest analysis -Permissions analysis M2-Insecure Data Storage -Look for insecure logs created by the app -Use Introspy-Android to verify logs(adb) -Verify the storage of sensitive information on the mobile phone like databases or passwords M3-Insecure Communication -Get the list of WEB APIs and urls used by the application -Check that the URLS use SSL encryption -Check if attacks can be made "Man in the middle" M4-Insecure Authentication -Identify weakness in session management -Identify the problems that involve compromise of user tokens M5-Insufficient Cryptography -Identify insecure cryptographic algorithms used by the application (like md5) M6-Insecure Authorization -Identify if access to an unauthorized resource is obtained -Use drozer to see if activities can be launched
  • 19.
    Tasks by category M7-PoorCode Quality -Identify a buffer overflow -Identify vulnerabilities of format strings -Try to find code vulnerabilities with drozer M8-Code Tampering -Identify the possibility of changing data and code when the application is installed, how to replace the system APIs or resources of the application for own benefit -Identify the possibility of installing a back door on the application and return to sign it with tools like FatTheRat M9-Reverse Engineering -Statical automated Analysis with Mobile Security Framework MobSF -Analysis and validation of vulnerabilities with Mobile Security Framework MobSF M10-Extraneous Functionality -Identify backdoors in the application -Identify the possibility of disabling 2-step authentication -Identify controls that are taken from development to production
  • 20.