sábado, 6 de febrero de 2021

Introducción y comandos Android Debug Bridge (adb)

Android Debug Bridge, como poder empezar a trabajar en el desde un sistema Linux o Windows, pasando por los comandos mas usados y dando un enfoque al pentensting usando este servicio. Android Debug Bridge (ADB) es una herramienta de línea de comandos que viene incluida con el SDK de Android, permite a los desarrolladores comunicarse con un emulador o un dispositivo Android conectado directamente desde la línea de comandos.



¿Qué es Android Debug Bridge (adb)?

El comando adb permite realizar una variedad de acciones en el dispositivo, como instalar y depurar apps, y proporciona acceso a un shell de Unix que puedes usar para ejecutar distintos comandos en un dispositivo. Es un programa cliente-servidor que incluye tres componentes:

  • Un cliente, que envía comandos. El cliente se ejecuta en tu máquina de desarrollo. Puedes invocar un cliente desde un terminal de línea de comandos emitiendo un comando adb.
  • Un daemon (adbd), que ejecuta comandos en un dispositivo. El daemon se ejecuta como un proceso en segundo plano en cada dispositivo.
  • Un servidor, que administra la comunicación entre el cliente y el daemon. El servidor se ejecuta como un proceso en segundo plano, en tu máquina de desarrollo.

¿Cómo activar/deshabilitar ADB en android?

Activar ADB

Para tener activada la herramienta en nuestro android primero tenemos que habilitar la opcion de “depuración de USB”, para eso seguimos los siguientes pasos:

1 — En nuesto andoid tenemos que ir a la siguiente ruta: Ajustes/sistema/Acerca del telefono.

En donde encontraremos la información de nuestro dispositivo.

2 — Tenemos que dar pulsar el apartado de compilación hasta que nos salte la siguiente leyenda: “Ya es un desarrollador”:




3 — Una vez hecho el paso anterior se nos desbloqueará una nueva sección de opciones en nuestro android, la cual estará en la siguiente ruta: Ajustes/sistema/Opciones de desarrollador.




4 — Por último, dentro de esa nueva sección encontramos la opción de “Depuración USB” y la activamos.




Listo, de esta manera tendremos activada esta herramienta en nuestro celular.

Deshabilitar ADB

Para deshabilitar esta opción solo volvemos al punto 4 anterior y lo desactivamos.

Instalar el servicio adb en diferentes sistemas

Adb puede ser instalado en muchos sistemas

Windows

Para instalar esta herramienta solo tenemos que irnos al siguiente link y descargar el instalador:

https://dl.google.com/android/installer_r24.4.1-windows.exe

Linux

En linux este paso es dependiendo del sistema. Para sistemas Debian/Ubuntu y Fedora puedes instalar con apt-get y yum/dnf respectivamente los paquetes android-tools-adb y android-tools-fastboot

Debian/Ubuntu

sudo apt-get install android-tools-adb android-tools-fastboot

Fedora

dnf install android-tools

Android

Para instalarlo en android tenemos que hacer uso de una aplicacion para simular una terminal, en este caso la aplicacion de TERMUX:

Entramos a termux y pegamos la siguente linea de comandos:

apt update > /dev/null 2>&1 && apt --assume-yes install wget > /dev/null 2>&1  
&& wget https://github.com/MasterDevX/Termux-ADB/raw/master/InstallTools.sh -q  
&& bash InstallTools.sh

Para desinstalar:

apt update > /dev/null 2>&1 && apt --assume-yes install wget > /dev/null 2>&1
&& wget https://github.com/MasterDevX/Termux-ADB/raw/master/RemoveTools.sh -q
&& bash RemoveTools.sh

Uso básico de ADB

El uso de la herramienta ADB no varia dependiendo en el sistema en que este instalado, es decir, los comandos funcionan exactamente igual aun que se ejecuten desde linux o windows.

Los comandos básicos son los siguientes:

  • Conectar con dispositivo
  • `adb connect [IP]:[PUERTO] (por defecto el 5555)`
  • Listado de dispositivos
  • `adb devices`
  • Desconectar el dispositivo:
  • `adb disconnect [IP]:[PUERTO]`

Listado de comandos ADB más utilizados

  • Copiar un archivo al dispositivo:
  • `adb push [RUTA-LOCAL] [RUTA-DISPOSITIVO]`
  • Descargar un archivo desde el dispositivo:
  • `adb pull [RUTA-DISPOSITIVO] [RUTA-LOCAL]`
  • Reiniciar dispositivo:
  • `adb reboot`
  • Reiniciar dispositivo (arranque):
  • `adb reboot-bootloader`
  • Instalar APK:
  • `adb install [APK]`
  • Reinstalar APK:
  • `adb -r install [APK]`
  • Desinstalar APK:
  • `adb uninstall [NOMBRE-PAQUETE-APLICACION]`
  • Obtener shell del dispositivo:
  • `adb shell`
  • Iniciar una Activity (apk):
  • `adb shell am start -n [PAQUETE-APLICACION]/.[ACTIVITY]` `adb shell am start -n [PAQUETE-APLICACION]/[ACTIVITY]`
  • Tomar captura de pantalla:
  • `adb shell screencap [RUTA-DISPOSITIVO]`
  • Grabar pantalla del dispositivo:
  • `adb shell screenrecord -time-limit [SEGUNDOS] [RUTA-DISPOSITIVO]`
  • Emular botón encendido:
  • `adb shell input keyevent 26`
  • Emular pantalla de desbloqueo:
  • `adb shell input keyevent 82`
  • Listar paquetes instalados:
  • `adb shell pm list packages`
  • Logcat:
  • `adb logcat`
  • Volcar datos del sistema en la pantalla:
  • `adb shell dumpsys`
  • Volcar datos del sistema en la pantalla enfocandonos en los servicios:
  • `dumpsys | grep "DUMP OF SERVICE"`
  • Volcar datos de un servicio específico:
  • `adb shell dumpsys [servicio]`
  • Extraer APK:
  • `adb shell pm path [NOMBRE-PAQUETE]`
  • Mostrar información sobre CPU:
  • `adb shell cat/proc/cpuinfo`
  • Habilitar datos móviles:
  • `adb shell svc data enable`
  • Deshabilitar datos móviles
  • `adb shell svc data disable`
  • Localizar dispositivo
  • `adb shell location`

¿Pentesting con ADB?

Como ya sabemos el Pentesting o también llamado test de penetración está diseñado para determinar el alcance de los fallos de seguridad de un sistema.

En este caso, aprovecharémos un fallo en esta herramienta, el cual perimite que un usuario pueda ver la direccion de los dispositivos que estan usando este servicio. Para esto utilizaremos el buscador SHODAN que es una herramienta fundamental para los pentesters.

Shodan es un motor de búsqueda en el que, a diferencia de Google y otros buscadores, no podemos buscar, por ejemplo, una imagen o un texto, Este motor de búsqueda está enfocado únicamente a buscar sistemas y servicios conectados a internet. Por este motivo, Shodan está clasificado como uno de los motores de búsquedas más peligrosos, por todo el contenido que tiene.

Podemos hacer todo tipo de búsquedas dentro de su ámbito, incluso podemos utilizar los dorks que incluye este motor de búsquedas.

En el buscador shodan usamos el siguiente dork:

`product:”Android Debug Bridge”`

Este dork lo que hace es especificar al buscador que queremos encontrar un producto, y que el producto es android debug bridge, con lo cual nos responderá mostrándonos los dispositivos en los cuales el servicio de adb esta siendo ejecutado de manera online




Como podemos observar, son muchos dispositivos en los cuales podríamos ingresar, esto es muy peligroso por que cualquier persona puede acceder a tu información.

Para iniciar el pentesting usando adb lo primero que tenemos que hacer es verificar que ADB este correctamente instalado, podemos verificar esto usando el comando:

adb --help

En donde se nos mostrará la versión instalada así como también una ayuda para usar la herramienta.




Lo siguiente que harémos es conectarnos a un dispositivo con el comando: 

adb connect [IP]


Image for post

Como pueden ver se nos inicia el daemon para poder conectarse al dispositivo.

Cuando estemos conectados tenemos una gran variedad de cosas que podemos hacer.

En este ejemplo lo primero que vamos a hacer es acceder a la shell del dispositivo para después iniciar a buscar información interesante, lo hacemos con el siguiente comando: 

adb shell



Si se dan cuenta, ya estamos dentro del dispositivo y podemos ejecutar comandos de linux, en este caso usé “ls” para listar los archivos y “pwd” para ver la ruta actual.

Ahora usaremos el comando “dumpsys” para mostral la información del dispositivo, pero este comando tiene un inconveniente al usarse por si solo, ya que este comando nos muestra la información en tiempo real de todos los servicios, debido a eso constantemente se esta actualizando la información haciendo que leer la información sea imposible, para eso usaremos el comando “grep” junto con “dumpsys” para enfocarnos solamente en los servicios:

El comando a usar es el siguiente:

dumpsys | grep "DUMP OF SERVICE"


Image for post

Ahora, se nos muestra la lista de los servicios.

DUMP OF SERVICE CustomFrequencyManagerService:
DUMP OF SERVICE DirEncryptService:
DUMP OF SERVICE FMPlayer:
DUMP OF SERVICE SYSSCOPE:
DUMP OF SERVICE SecTVOutService:
DUMP OF SERVICE SurfaceFlinger:
DUMP OF SERVICE TvoutService_C:
DUMP OF SERVICE accessibility:
DUMP OF SERVICE account:
DUMP OF SERVICE activity:
DUMP OF SERVICE alarm:
DUMP OF SERVICE apn_settings_policy:
DUMP OF SERVICE application_policy:
DUMP OF SERVICE apppermission_control_policy:
DUMP OF SERVICE appwidget:
DUMP OF SERVICE audio:
DUMP OF SERVICE backup:
DUMP OF SERVICE barbeam:
DUMP OF SERVICE battery:
DUMP OF SERVICE batteryinfo:
DUMP OF SERVICE bluetooth:
DUMP OF SERVICE bluetooth_a2dp:
DUMP OF SERVICE bluetooth_avrcp:
DUMP OF SERVICE bluetooth_policy:
DUMP OF SERVICE browser_policy:
DUMP OF SERVICE clipboard:
DUMP OF SERVICE clipboardEx:
DUMP OF SERVICE com.orange.authentication.simcard:
DUMP OF SERVICE commontime_management:
DUMP OF SERVICE connectivity:
DUMP OF SERVICE content:
DUMP OF SERVICE context_aware:
DUMP OF SERVICE country_detector:
DUMP OF SERVICE cpuinfo:
DUMP OF SERVICE date_time_policy:
DUMP OF SERVICE dbinfo:
DUMP OF SERVICE device_info:
DUMP OF SERVICE device_policy:
DUMP OF SERVICE devicestoragemonitor:
DUMP OF SERVICE diskstats:
DUMP OF SERVICE drm.drmManager:
DUMP OF SERVICE dropbox:
DUMP OF SERVICE eas_account_policy:
DUMP OF SERVICE edm_proxy:
DUMP OF SERVICE email_account_policy:
DUMP OF SERVICE email_policy:
DUMP OF SERVICE enterprise_policy:
DUMP OF SERVICE enterprise_vpn_policy:
DUMP OF SERVICE entropy:
DUMP OF SERVICE firewall_policy:
DUMP OF SERVICE gfxinfo:
DUMP OF SERVICE hardware:
DUMP OF SERVICE input:
DUMP OF SERVICE input_method:
DUMP OF SERVICE iphonesubinfo:
DUMP OF SERVICE isms:
DUMP OF SERVICE kioskmode:
DUMP OF SERVICE location:
DUMP OF SERVICE location_policy:
DUMP OF SERVICE lock_settings:
DUMP OF SERVICE mdm.remotedesktop:
DUMP OF SERVICE media.audio_flinger:
DUMP OF SERVICE media.audio_policy:
DUMP OF SERVICE media.camera:
DUMP OF SERVICE media.player:
DUMP OF SERVICE meminfo:
DUMP OF SERVICE mini_mode_app_manager:
DUMP OF SERVICE misc_policy:
DUMP OF SERVICE motion_recognition:
DUMP OF SERVICE mount:
DUMP OF SERVICE netpolicy:
DUMP OF SERVICE netstats:
DUMP OF SERVICE network_management:
DUMP OF SERVICE nfc:
DUMP OF SERVICE notification:
DUMP OF SERVICE package:
DUMP OF SERVICE password_policy:
DUMP OF SERVICE permission:
DUMP OF SERVICE phone:
DUMP OF SERVICE phone_restriction_policy:
DUMP OF SERVICE phoneext:
DUMP OF SERVICE power:
DUMP OF SERVICE remoteinjection:
DUMP OF SERVICE restriction_policy:
DUMP OF SERVICE roaming_policy:
DUMP OF SERVICE samplingprofiler:
DUMP OF SERVICE samsung.facedetection_service:
DUMP OF SERVICE scheduling_policy:
DUMP OF SERVICE scontext:
DUMP OF SERVICE search:
DUMP OF SERVICE security_policy:
DUMP OF SERVICE sensorhubservice:
DUMP OF SERVICE sensorservice:
DUMP OF SERVICE serial:
DUMP OF SERVICE servicediscovery:
DUMP OF SERVICE simphonebook:
DUMP OF SERVICE sip:
DUMP OF SERVICE spell:
DUMP OF SERVICE statusbar:
DUMP OF SERVICE telephony.registry:
DUMP OF SERVICE textservices:
DUMP OF SERVICE throttle:
DUMP OF SERVICE tvoutservice:
DUMP OF SERVICE uimode:
DUMP OF SERVICE updatelock:
DUMP OF SERVICE usagestats:
DUMP OF SERVICE usb:
DUMP OF SERVICE vibrator:
DUMP OF SERVICE voip:
DUMP OF SERVICE vpn_policy:
DUMP OF SERVICE wallpaper:
DUMP OF SERVICE wfd:
DUMP OF SERVICE wifi:
DUMP OF SERVICE wifi_policy:
DUMP OF SERVICE wifip2p:
DUMP OF SERVICE window:

Vamos a ver solo unos ejemplos de la información que podemos recolectar.

Recolectar información con adb

  • Lo primero que vamos a ver es la información de la bateria del dispositivo.

dumpsys battery

Image for post
Image for post
  • El siguiente es para ver el uso de memoria de la CPU:

dumpsys cpuinfo


Image for post
  • Ver la ubicación del dispositivo:

dumpsys location

  • Este comando es muy interesante ya que el dispositivo hace uso de los servicios de Google para mostrarnos la ubicación.

Image for post
  • Para ver el espacio usado en el dispositivo:

dumpsys diskstats


Image for post
  • Ver las aplicaciones instaladas:

pm list packages -f


Image for post

Como pueden ver es muy fácil extraer información de un dispositivo a traves de ADB, también podemos hacer uso de otras técnicas para poder conseguir otras cosas, por ejemplo, podemos crear una apk infectada desde metasploit, ganar una sesión y así tener acceso a mas opciones para un mejor pentesting.

Aquí unos ejemplos:

  • Instalando y ganando una sesión de meterpreter desde un dispositivo vulnerable con adb

1 comentario:

  1. Hola, gracias por la informacion. En mi celular Samsung usé la opción: "pm list packages -f", para listar los paquetes y borrar los preinstalados de fabrica que no uso. Pero quisiera saber si hay la opción de listar el tamaño que ocupa cada paquete, y así borrar los más grandes.

    ResponderEliminar