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.

0634fb56ef638ebc7814afc716fbc0a1?s=128

Gustavo "Puky" Sorondo

September 24, 2020
Tweet

Transcript

  1. Gustavo M. Sorondo @iampuky #Eko2020 – Mobile Hacking Space

  2. Gustavo M. Sorondo • CTO @

  3. None
  4. ¿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.
  5. None
  6.  Análisis de la mensajería:  Configuración de proxy: 

    Soportada por todos los emuladores y dispositivos, pero… Proxy HTTP(S) HTTP(S)
  7.  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
  8.  Último paso:

  9. None
  10.  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.
  11.  ¿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
  12. None
  13.  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).
  14.  ¿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>
  15.  ¿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!
  16. None
  17.  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?
  18.  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)
  19.  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
  20. None
  21. None
  22.  La historia de este bug…

  23. None
  24.  Como instalar las aplicaciones?

  25.  Después adivinar un poco…

  26.  Y repetir!

  27.  Lo mas divertido? Intentar volver…

  28.  Que pasa con Android?  Google permite un cambio

    de país por año.  Peeero… podemos crear muchas cuentas.
  29. gs@cintainfinita.com.ar @iampuky /in/gustavosorondo

  30. None