Corvus DDoSKrom

ADB y Comandos ADB

19 November 2024
pentest mobile
android
adb
comando
Última actualización:20 December 2024
6 Minutos
1177 Words

ADB (Android Debug Bridge) es una herramienta de línea de comandos que permite la comunicación entre una computadora y un dispositivo Android. ADB ofrece una variedad de comandos que permiten a los desarrolladores y testers de seguridad interactuar con un dispositivo Android, transferir archivos, instalar o eliminar aplicaciones, y recopilar información para depuración o pruebas de seguridad.

Instalación

Para la instalación se puede descargar el software desde la página oficial: http://adbshell.com/ En mi caso como todo lo haré desde Kali Linux lo instalo de la siguiente forma:

Terminal window
1
sudo apt install adb

Conexión

Terminal window
1
adb devices

Esto enumerará los dispositivos conectados; si aparece “unathorised”, esto significa que debes desbloquear tu móvil y aceptar la conexión.

Esto indica al dispositivo que debe iniciar un servidor adb en el puerto 5555:

Terminal window
1
adb tcpip 5555

Conéctate a esa IP y ese Puerto:

Terminal window
1
adb connect <IP>:<PORT>

Si obtienes un error como el siguiente en un software de Android Virtual (como Genymotion):

Terminal window
1
adb server version (41) doesn't match this client (36); killing...

Es porque estás intentando conectarte a un servidor ADB con una versión diferente. Solo intenta encontrar el binario adb que el software está utilizando (ve a C:\Program Files\Genymobile\Genymotion y busca adb.exe)

Varios dispositivos

Siempre que encuentres varios dispositivos conectados a tu máquina necesitarás especificar en cuál deseas ejecutar el comando adb.

Terminal window
1
adb devices
2
List of devices attached
3
192.168.100.32:5555 device

adb devices List of devices attached 10.10.10.247:42135 offline 127.0.0.1:5555 device

Terminal window
1
adb -s 192.168.100.32:5555 shell
2
x86_64:/ # whoami
3
root

Gestor de Paquetes

Instalar/Desinstalar

adb install [opción] <ruta>

Terminal window
1
adb install test.apk
2
3
adb install -l test.apk # aplicación con bloqueo de reenvío
4
5
adb install -r test.apk # reemplazar aplicación existente
6
7
adb install -t test.apk # permitir paquetes de prueba
8
9
adb install -s test.apk # instalar aplicación en la tarjeta SD
10
11
adb install -d test.apk # permitir la reducción del código de versión
12
13
adb install -p test.apk # instalación parcial de la aplicación

adb uninstall [options] <PACKAGE>

Terminal window
1
adb uninstall com.test.app
2
3
adb uninstall -k com.test.app Mantener los directorios de datos y caché después de la eliminación del paquete.

Paquetes

Imprime todos los paquetes, opcionalmente solo aquellos cuyo nombre de paquete contiene el texto en <FILTER>.

Terminal window
1
adb shell pm list packages [opciones] <FILTRO-STR>
2
3
adb shell pm list packages <FILTRO-STR>
4
5
adb shell pm list packages -f <FILTRO-STR> # Ver su archivo asociado.
6
7
adb shell pm list packages -d <FILTRO-STR> # Filtrar para mostrar solo paquetes deshabilitados.
8
9
adb shell pm list packages -e <FILTRO-STR> # Filtrar para mostrar solo paquetes habilitados.
10
11
adb shell pm list packages -s <FILTRO-STR> # Filtrar para mostrar solo paquetes del sistema.
12
13
adb shell pm list packages -3 <FILTRO-STR> # Filtrar para mostrar solo paquetes de terceros.
14
15
adb shell pm list packages -i <FILTRO-STR> # Ver el instalador de los paquetes.
4 collapsed lines
16
17
adb shell pm list packages -u <FILTRO-STR> # Incluir también paquetes desinstalados.
18
19
adb shell pm list packages --user <USER_ID> <FILTRO-STR> # Espacio de usuario a consultar.

adb shell pm path <PACKAGE>

Imprime la ruta al APK del dado.

Terminal window
1
adb shell pm path com.android.phone

adb shell pm clear <PACKAGE>

Elimina todos los datos asociados con un paquete.

Terminal window
1
adb shell pm clear com.test.abc

Administrador de archivos

adb pull <remote> [local]

Descarga un archivo especificado de un emulador/dispositivo a tu computadora.

Terminal window
1
adb pull /sdcard/demo.mp4 ./

adb push <local> <remote>

Sube un archivo especificado desde tu computadora a un emulador/dispositivo.

Terminal window
1
adb push test.apk /sdcard

Captura de pantalla/Grabación de pantalla

adb shell screencap <filename>

Tomando una captura de pantalla de la pantalla del dispositivo.

Terminal window
1
adb shell screencap /sdcard/screen.png

adb shell screenrecord [options] <filename>

Grabando la pantalla de dispositivos que ejecutan Android 4.4 (nivel de API 19) y superior.

Terminal window
1
adb shell screenrecord /sdcard/demo.mp4
2
adb shell screenrecord --size <ANCHOxALTO>
3
adb shell screenrecord --bit-rate <TASA>
4
adb shell screenrecord --time-limit <TIEMPO> # Establece el tiempo máximo de grabación, en segundos. El valor predeterminado y máximo es 180 (3 minutos).
5
adb shell screenrecord --rotate # Gira 90 grados
6
adb shell screenrecord --verbose

(presiona Ctrl-C para detener la grabación)

Puedes descargar los archivos (imágenes y videos) usando _adb pull_

Shell

adb shell

Obtén un shell dentro del dispositivo

Terminal window
1
adb shell

adb shell <CMD>

Ejecuta un comando dentro del dispositivo

Terminal window
1
adb shell ls

pm

Los siguientes comandos se ejecutan dentro de un shell

Terminal window
1
pm list packages #Lista los paquetes instalados
2
pm path <nombre del paquete> #Obtén la ruta del archivo apk del paquete
3
am start [<opciones>] #Inicia una actividad. Sin opciones puedes ver el menú de ayuda
4
am startservice [<opciones>] #Inicia un servicio. Sin opciones puedes ver el menú de ayuda
5
am broadcast [<opciones>] #Envía una difusión. Sin opciones puedes ver el menú de ayuda
6
input [text|keyevent] #Enviar pulsaciones de teclas al dispositivo

Processes

Si deseas obtener el PID del proceso de tu aplicación, puedes ejecutar:

Terminal window
1
adb shell ps

Y busca tu aplicación

O puedes hacer

Terminal window
1
adb shell pidof com.your.application

Y imprimirá el PID de la aplicación

Sistema

Terminal window
1
adb root

Reinicia el demonio adbd con permisos de root. Luego, debes conectarte nuevamente al servidor ADB y serás root (si está disponible).

Terminal window
1
adb sideload <update.zip>

flashear/restaurar paquetes de actualización Android update.zip.

Logs

Logcat

Para filtrar los mensajes de solo una aplicación, obtén el PID de la aplicación y usa grep (linux/macos) o findstr (windows) para filtrar la salida de logcat:

Terminal window
1
adb logcat | grep 4526
2
adb logcat | findstr 4526

adb logcat [opción] [filtro-specs]

Terminal window
1
adb logcat

Notas: presiona Ctrl-C para detener el monitor

Terminal window
1
adb logcat *:V # nivel de prioridad más bajo, filtra para mostrar solo el nivel Verbose
2
adb logcat *:D # filtra para mostrar solo el nivel Debug
3
adb logcat *:I # filtra para mostrar solo el nivel Info
4
adb logcat *:W # filtra para mostrar solo el nivel Warning
5
adb logcat *:E # filtra para mostrar solo el nivel Error
6
adb logcat *:F # filtra para mostrar solo el nivel Fatal
7
adb logcat *:S # Silencioso, la prioridad más alta, en la que nunca se imprime nada

adb logcat -b <Buffer>

Terminal window
1
adb logcat -b # radio Ver el buffer que contiene mensajes relacionados con la radio/telefonía.
2
adb logcat -b # evento Ver el buffer que contiene mensajes relacionados con eventos.
3
adb logcat -b # principal predeterminado
4
adb logcat -c # Borra todo el registro y sale.
5
adb logcat -d # Vuelca el registro en la pantalla y sale.
6
adb logcat -f test.logs # Escribe la salida de los mensajes de registro en test.logs.
7
adb logcat -g # Imprime el tamaño del buffer de registro especificado y sale.
8
adb logcat -n <count> # Establece el número máximo de registros rotados en <count>.

dumpsys

dumps datos del sistema

adb shell dumpsys [opciones]

Terminal window
1
adb shell dumpsys
2
adb shell dumpsys meminfo
3
adb shell dumpsys battery

Notas: Un dispositivo móvil con las Opciones de Desarrollador habilitadas que ejecute Android 5.0 o superior.

Terminal window
1
adb shell dumpsys batterystats # Recopila datos de la batería de tu dispositivo

Notas: Battery Historian convierte esos datos en una visualización HTML. PASO 1 adb shell dumpsys batterystats > batterystats.txt PASO 2 python historian.py batterystats.txt > batterystats.html

Terminal window
1
adb shell dumpsys batterystats --reset # Borra los datos de la colección anterior
2
adb shell dumpsys activity

Backup

Realizar un backup de un dispositivo android desde adb.

Terminal window
1
adb backup [-apk] [-shared] [-system] [-all] -f archivo.backup
2
3
# -apk -- Incluir APK de aplicaciones de terceros
4
# -shared -- Incluir almacenamiento removible
5
# -system -- Incluir aplicaciones del sistema
6
# -all -- Incluir todas las aplicaciones
7
8
adb shell pm list packages -f -3 # Listar paquetes
9
adb backup -f myapp_backup.ab -apk com.myapp # Hacer una copia de seguridad en un dispositivo
10
adb restore myapp_backup.ab # Restaurar en el mismo dispositivo o en cualquier otro

Si deseas inspeccionar el contenido de la copia de seguridad:

Terminal window
1
( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 myapp_backup.ab ) | tar xfvz -
Article title:ADB y Comandos ADB
Article author:Rafael Morinigo
Fecha de publicación:19 November 2024