Cómo usar ANDROID DEBUG BRIDGE – ADB Android hack (Parte I)

El rooteo de smartphones se ha convertido en un tema muy popular, pero antes de revisar el proceso es necesario comprender la arquitectura del sistema operativo Android y el kernel del sistema Linux. Estos son temas recurrentes en los cursos de hacking ético del Instituto Internacional de Seguridad Cibernética (IICS). Los componentes de hardware son la capa de nivel más bajo proporcionando servicios al kernel Linux, que posteriormente conecta el hardware a los elementos de software que lo controlan.

Arquitectura del sistema operativo Android

Componentes de hardware

  • El hardware interactúa con su respectivo controlador para interactuar con capas superiores. Cuando se recibe una señal desde una app de usuario final, esta capa convierte las señales de hardware a capas de software, como los sistemas de llamadas, cámaras WiFi, antenas y otros equipos. La mayoría de los dispositivos con Android OS usan procesadores ARM
  • ARM se usa para diseñar arquitecturas y conjuntos de instrucciones que posteriormente otorgan licencias a compañías fabricantes de chips para dispositivos móviles. Qualcomm, por ejemplo, vende los chips Snapdragon, ampliamente usados por los más recientes modelos de dispositivos Android.
  • Algunas otras compañías como Mediatek, ARM, Qualcomm Snapdragon, AMD, Nvidia, Samsung, IBM, Broadcom INC e Intel crean chips especialmente para equipos de cómputo
  • ARM se basa en el protocolo RISC (Reduced Instruction Set Computer) para realizar millones de instrucciones a la mayor velocidad posible; además, la instrucción requiere menos transistores, por lo que es más económico y fácil de producir.
  • La mayoría de las instrucciones se completan en un ciclo, lo que puede permitir que el procesador maneje más instrucciones al mismo tiempoç

Kernel de Linux

  • El kernel de Linux es el componente principal que se encarga de conectarse con las bibliotecas de Android, el marco de Android y las aplicaciones de usuario final. El kernel de Linux actúa como un nivel de abstracción (Nivel de abstracción: el nivel más alto con menos detalles y el nivel más bajo con detalles altos). Es importante tener en cuenta que Android se ejecuta completamente en el kernel de Linux
  • Para verificar la versión del kernel de Linux en cualquier dispositivo móvil Android, vaya a la sección Acerca del teléfono/Acerca del dispositivo en la configuración. Allí encontrará la versión del kernel de Linux

Android Debug Bridge (ADB)

  • Android debug bridge (ADB) es una herramienta de línea de comandos que permite a los usuarios acceder a los archivos internos del dispositivo. Los comandos ADB pueden ayudar en la depuración de aplicaciones. Asimismo, ADB actúa como un programa cliente-servidor que incluye tres componentes principales:
    • Cliente: se utiliza para interactuar enviando comandos a ADB. Aquí podemos usar la computadora como cliente conectándola con el móvil
    • Daemon (ADBD): El daemon ejecuta el comando en dispositivos móviles. Proporciona servicio para los objetos que se están ejecutando
    • Servidor: el servidor administra la comunicación y los servicios entre el daemon y el cliente. El servidor se ejecuta en proceso en segundo plano en su dispositivo móvil, mencionan los expertos en hacking ético

Para acceder a ADB

  • Si descarga y ejecuta el emulador de terminal en dispositivos no rooteados el comando ADB no funcionará. Como emulador de terminal necesita permiso de superusuario, que solo se puede otorgar si el dispositivo está rooteado. De lo contrario, el comando ADB responderá con “ADB no encontrado”. Si ejecuta ADB en versiones recientes de Android sin rootear, no se encontrará la respuesta que se muestra a continuación. Según investigadores de hacking ético del Instituto Internacional de Seguridad Cibernética (IICS), las empresas actualizan periódicamente los parches de seguridad para bloquear el acceso del administrador
  • Desde el móvil: Use la aplicación Terminal Emulator para acceder al shell de Android. Descargue la aplicación desde la siguiente ubicación: https://play.google.com/store/apps/details?id=jackpal.androidterm&hl=en_IN
  • Para usar todas las funciones de Android Shell el móvil debe estar rooteado
  • Asegúrese de que la aplicación se conceda en Superuser.apk o Kingoroot superuser.apk
  • Escriba adb root para obtener acceso root en la app
  • Para conocer la versión del kernel, escriba uname –a  
  • Uso de ADB en la computadora: descargue el archivo en su computadora para acceder a dispositivos móviles usando ADB:

https://forum.xda-developers.com/showthread.php?t=2588979

  • Descargue la versión 1.3. Instale y ejecute el programa. Ingrese Y, luego presione enter
  • Escriba Y
  • Ingrese Y, aparecerá una ventana emergente para instalar ADB
  • Instale ADB y su computadora se configurará para ejecutar adb shell en el símbolo del sistema de Windows
  • Para ejecutar abra el cmd como administrador
  • Conecte su dispositivo a la computadora. Asegúrese de que los controladores del dispositivo estén instalados en su computadora. Para las pruebas, estamos utilizando el Samsung Galaxy Grand Neo plus I9060 rooteado. Descargue el controlador para este modelo desde la siguiente dirección: https://www.samsungusbdrivers.net/2017/02/samsung-galaxy-grand-neo-2014-usb.html
  • Abra el cmd como administrador. Escriba adb devices
  • Arriba se muestra la lista de dispositivos disponibles. Puede obtener la versión del kernel de su dispositivo móvil Android a través de la computadora. Escriba adb shell para conocer la versión del kernel
  • La captura de pantalla anterior muestra la versión del kernel de su dispositivo Android
  • ADB tiene muchas más funciones, incluso se usa para el desarrollo de apps, mencionan los expertos en hacking ético

Funciones de ADB

Descifrar una contraseña de WiFi

  • Se usa para conocer la contraseña de la red WiFi a la que estamos conectados
  • Ingrese el siguiente comando en el shell adb que obtuvimos en los últimos pasos: cat /data/misc/wifi/wpa_supplicant.conf. El elemento supplicant.conf almacena la contraseña de la red WiFi en texto sin formato
  • Por seguridad, ocultamos el nombre de red y contraseña en los ejemplos mostrados

Respaldo de información

  • Escriba adb backup -all -f E:\backup.ab
  • -all respaldarán toda la configuración de su dispositivo
  • E:\backup.ab es el archivo de copia de seguridad
  • Después de ingresar el comando anterior, presione enter y aparecerá una ventana emergente en su teléfono móvil para cifrar ese archivo con una contraseña. Introduzca la contraseña
  • Arriba se muestra que la copia de seguridad se ha guardado en la ubicación deseada. Puede guardar diferentes archivos, pero solo guardará la configuración de esa aplicación, según los expertos en hacking ético
  • Diferentes formatos:
    • .apk solo guardará su configuración
    • .obb guardará los archivos .obb
    • .shared guardará los archivos de la tarjeta SD

Restablecer archivos respaldados

  • Escriba adb restore E:\backup.ab
  • El la captura anterior se muestra que el archivo se ha restaurado en su dispositivo móvil

Instalar múltiples aplicaciones

  • Si desea instalar varias aplicaciones en su dispositivo ingrese el siguiente comando:

For %f in (E:\android_apps*.apk) do adb install “%f”

  • La captura de pantalla anterior muestra que se han instalado tres aplicaciones en su dispositivo

Copiar cualquier aplicación a su smartphone

  • Ingrese adb shell pm list package, que enumerará todas las aplicaciones de su dispositivo móvil
  • Según los expertos en hacking ético del IICS, puede usar este comando para encontrar cualquier aplicación espía en su teléfono móvil
  • Para extraer aplicaciones, escriba: adb shell pm path com.package /data/app/com.sec.android.app.samsungapps-1.apk
  • com.package–  Puede ingresar cualquier nombre de paquete
  • Ingrese la ubicación de la aplicación
  • Para encontrar la ubicación, abra otro cmd como administrador
  • Conecte su dispositivo con ADB, escriba cd/data/app
  • Luego ejecute el siguiente comando:
  • Para extraer la APK, escriba adb pull/data/app/com.sec.android.app.samsungapps-1.apk E:\application
  • La captura de pantalla anterior muestra que esa aplicación se retiró de la unidad local
  • Arriba está la aplicación que se ha extraído del dispositivo

Recolección de información del dispositivo

  • Este comando muestra todos los detalles del dispositivo, incluyendo servicios en ejecución, volcado de azul en la pantalla, detalles de la cuenta y muchos otros detalles del móvil
  • Escriba adb shell dumpsys o escriba adb logcat

  • El comando anterior muestra mucha información sobre el dispositivo. Este comando se puede utilizar para recopilar información que puede ayudar en muchas fases de la informática forense
  • Para buscar cualquier servicio en particular, por ejemplo: teclee adb shell dumpsys battery
  • La captura de pantalla anterior muestra la información sobre la batería, incluyendo su voltaje con el nombre de la compañía de la batería

Bibliotecas de Linux/Tiempo de ejecución de Android OS

  • Las bibliotecas de Android están en la parte superior del kernel de Linux. La biblioteca de Android es responsable de reproducir o grabar videos, audios con formatos definidos. Algunas bibliotecas nativas comunes son Media, Webkit, SqLite, OpenGL, FreeType, etc. La biblioteca de Android consiste en una biblioteca C/C ++ basada en Java
    • Open GL: es un programa de aplicación multiplataforma que se utiliza para crear gráficos
    • Webkit: proporciona la función de mostrar contenido web para acortar la carga de la página
    • Media Framework: esta biblioteca proporciona para reproducir o grabar audio y video
    • Secure Socket Layer (SSL): esta biblioteca se utiliza para proporcionar seguridad en Internet