Destripando aplicaciones en Android: Primera parte

Todos somos conscientes, de que si no manejas el programa este te maneja a ti, hoy en día las personas que nos preocupamos por la seguridad y la privacidad, hemos interiorizado, esta frase, y hacemos de ella, una forma de lucha contra el sistema y su “gran hermano” que todo lo vigila y quiere controlar.

Con el boom de las aplicaciones móviles, hemos lidiado, fomentando el software libre de repositorios como fdroid, y hemos intentado inculcar que existe vida mas allá de markets privativos, donde se alojan aplicaciones que no sabemos realmente que es lo que hacen, puesto que su código no esta disponible. Llamémosle paranoia,seguridad, privacidad o como bien quieras llamarlo, pero ¿sabes realmente que hacen las aplicaciones privativas que tienes instaladas en tu teléfono? ¿sabes si realmente aparte de la funcionalidad que “supuestamente” deben de hacer no realizan, otra recolección de datos para otros fines? Se sincero/a no lo sabes, y si no saberlo no te preocupa y prefieres seguir viviendo en “matrix” cierra esta ventana y a otra cosa, pero si de verdad te preocupa y tienes un mínimo interés por ver como funcionan intentaremos explicarlo.

Un sencillo ejemplo Entre las aplicaciones que solemos tener instaladas en el móvil, hay algunas que vienen predefinidas por el fabricante y suelen ser aplicaciones muy básicas como reloj,despertador,calculadora,notas,etc.. Veamos los permisos que android requiere para un simple reloj despertador.

Umm demasiados permisos para un simple reloj despertador ¿no crees?, vamos a empezar nuestra disección por esta aplicación, para ello vamos a conectarnos por adb y copiaremos la aplicación a nuestro disco duro de la siguiente manera:

  • Descargamos el paquete SDK de android (si tenemos instalado android studio no necesitamos descargarlo aparte bien includo)

             wget https://dl.google.com/android/repository/tools_r25.2.3-linux.zip
    
    • Extraemos, el paquete y conectamos nuestro movil al equipo activando la depuracion usb
    • Listamos los dispostivos ejecutando adb de la siguiente manera:

      ./adb devices
      

– Si vemos nuestro dispositivo esta todo bien, por lo que vamos a lanzar el comando para listar todas nuestras aplicaciones:

adb shell pm list packages

– Nos fijamos en el nombre de nuestro aplicacion, en nuestro caso com.sec.android.app.clockpackage y ejecutamos el siguiente comando para ver el path de nuestra aplicación.

adb shell pm path com.sec.android.app.clockpackage

– Ahora que sabemos el path de nuestra aplicacion la copiamos a nuestro sistema

./adb pull /system/app/ClockPackage_ESS.apk
  • Ya tenemos nuestra aplicación en nuestro sistema, ahora vamos a “desguazarla”

Para el proceso de “decodificación” de nuestra aplicación vamos a usar apktool los archivos apk, no son mas que archivos zip que contienen los recursos código ensamblado de java y que podemos descomprimir fácilmente con un simple unzip, pero obviamente no es posible ver o editar archivos compilados con este método, por eso vamos a utilizar apktool.

Instalacion apktool

  • La instalación de la herramienta es muy sencilla:
  • Descargamos el wrapper scrip y lo guardamos como apktool

    wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
    
  • Descargamos la versión mas reciente de apktool y la renombramos como apktool.jar

    wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.2.2.jar
    
    • Activamos el soporte para librerías de 32 bitss(si nuestro sistema es de 64)

      dpkg --add-architecture i386(debian)
      
    • Copiamos apktool y apktool.jar a /usr/local/bin y les damos permisos de ejecución(chmod +x)

Decodificando

  • Ejecutamos apktool indicándole nuestro archivo apk

     apktool d ClockPackage_ESS.apk
    

Por ahora, lo dejaremos aquí,evidentemente hemos omitido algunas cosas como los archivos dex,frameworks,data que veremos mas adelante, pero por ahora tenemos nuestro apk decodificado para que podamos ir curioseando.

Happy Hacking ;)

puppetmaster Written by:

3 Comments

  1. foo bar
    foo bar
    Marzo 20
    Reply

    Muy bueno Puppet, estoy deseando que llegue el siguiente.

  2. Chema Alonso
    Chema Alonso
    Marzo 20
    Reply

    gracias puppet, no lo he podido hacer todavía, pero me parece muy interesante este tema

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax