Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mobile Hacking Tips - Ekoparty 2020 - MHS

Mobile Hacking Tips - Ekoparty 2020 - MHS

En esta pequeña charla se mostrarán algunos tips y trucos que nos ayudarán a la hora de testear una app móvil, y que pueden ahorrarnos algún que otro dolor de cabeza.

Avatar for Gustavo "Puky" Sorondo

Gustavo "Puky" Sorondo

September 24, 2020
Tweet

Other Decks in Technology

Transcript

  1. ¿De que trata esta mini-charla? Cosas que…  yo no

    sabía en algún momento.  probablemente alguno no sepa.  me sirvieron mucho.  tal vez les ahorren algún dolor de cabeza.
  2.  Análisis de la mensajería:  Configuración de proxy: 

    Soportada por todos los emuladores y dispositivos, pero… Proxy HTTP(S) HTTP(S)
  3.  Setup para atrapar todo:  Compartir Internet en el

    Host  sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 8080  sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-ports 8080 Proxy
  4.  Es posible sniffear tráfico directamente del dispositivo iOS desde

    MacOS a través de USB.  No requiere jailbreak.  Muy útil para ver tráfico TCP / UDP.  Nos sirvió mucho para hacer el primer análisis de un jueguito que hablaba UDP.
  5.  ¿Como hacemos? 1. Conectar el dispositivo iOS por USB

    a la Mac, 2. Obtener el UDID del dispositivo (ej. iTunes) 3. En un terminal ejecutar el siguiente comando: $ rvictl –s <udid> 4. Veremos que se creó una interfaz virtual “rvi0” 5. Ya podemos capturar de iOS tráfico con Wireshark o tcpdump $ tcpdump –i rvi0 –w ./output.pcap 6. Cuando terminamos, matamos la interfaz virtual. $ rvictl –x <udid> Para Linux (hasta iOS 12) - https://github.com/gh2o/rvi_capture
  6.  Certificados en Android 7+  Android tiene dos “CA

    stores” (‘user’ y ‘system’)  Hasta Android 7 las apps confiaban en ambos.  Desde Android 7 por defecto confían en ‘system’.  Cada app puede indicar si confía a en ‘user’ (default: no).
  7.  ¿Cómo hacemos? Necesitamos modificar algunos archivos XML. 1. Decompilamos

    sólo los XML con: $ apktool d miapp.apk -s 2. Creamos el archivo /res/xml/network_security_config.xml <?xml version="1.0" encoding="utf-8"?> <network-security-config> <debug-overrides> <trust-anchors> <certificates src="user"/> </trust-anchors> </debug-overrides> </network-security-config>
  8.  ¿Cómo hacemos? 3. Modificamos el AndroidManifest.xml, agregando: <application [...]

    android:networkSecurityConfig="@xml/network_security_config"> 4. Recompilamos: $ apktool b miapp/ miapp-mod.apk 5. Firmamos: $ jarsigner -verbose -keystore ~/.android/debug.keystore -storepass android -keypass android mod.apk androiddebugkey 6. Instalamos y listo!
  9.  Reversing de código:  Buscamos obtener código legible. 

    Entender la lógica de la aplicación.  ¿Leaks en el código? ¿Comentarios?  Apps nativas de Android  jadx  enjarify  dex2jar  ¿Apps híbridas?
  10.  Apps híbridas  ¿Que son?  Muchas tecnologías 

    Xamarin (C# / .NET)  ReactNative (JS / React)  NativeScript (JS / Angular)  Cordova, PhoneGap, Ionic (HTML, CSS, JS)  Flutter (Dart compilado)
  11.  Para las que son JS/HTML  Decompilar con APKTool

    y buscar el código.  Ej: Cordova (/assets/www)  Para Xamarin:  El código se encuentra en archivos DLL dentro de /assemblies.  Se puede utilizar la herramienta ILSpy: https://github.com/icsharpcode/ILSpy
  12.  Que pasa con Android?  Google permite un cambio

    de país por año.  Peeero… podemos crear muchas cuentas.