This page looks best with JavaScript enabled

Pentesting Mobile 101: Entorno de Android en un contenedor de Docker con ReDroid

 ·   ·   4 min read  ·  Autor - Snifer

Alguna vez pensamos en montar un entorno aislado para trabajar con una APK? quizas para ver el comportamiento de algún malware, o directamente realizar un análisis, proceso de pentesting, pero no contamos con un dispositivo físico para ello podemos usar Genymotion, AVD y adicionalmente contaremos ahora con Docker. Si deseas ver la entrada de como configurar un laboratorio de Android, o ver la serie de entradas de Pentesting Mobile.

Redroid

Estuve por mucho tiempo haciendo pruebas con distintas opciones para llegar a trabajar con Docker y Android, pero ninguno me daba un buen resultado hasta que llegue al proyecto Redroid el cual cuenta con múltiples contenedores de docker de diferentes versiones de Android.

ReDroid (Remote anDroid), se encuentra implementado en Docker, utilizando la GPU, con soporte para las arquitecturas arm64 and amd64.

Cuenta con diferentes versiones de Android:

  • Android 12 (redroid/redroid:12.0.0-latest, redroid/redroid:12.0.0-amd64, redroid/redroid:12.0.0-arm64)
  • Android 12 64bit only (redroid/redroid:12.0.0_64only-latest, redroid/redroid:12.0.0_64only-amd64, redroid/redroid:12.0.0_64only-arm64)
  • Android 11 (redroid/redroid:11.0.0-latest, redroid/redroid:11.0.0-amd64, redroid/redroid:11.0.0-arm64)
  • Android 10 (redroid/redroid:10.0.0-latest, redroid/redroid:10.0.0-amd64, redroid/redroid:10.0.0-arm64)
  • Android 9 (redroid/redroid:9.0.0-latest, redroid/redroid:9.0.0-amd64, redroid/redroid:9.0.0-arm64)
  • Android 8.1 (redroid/redroid:8.1.0-latest, redroid/redroid:8.1.0-amd64, redroid/redroid:8.1.0-arm64)

Se encuentra validado según el repositorio en las siguientes distribuciones.

  • Ubuntu 16.04 / 18.04 / 20.04 (amd64 / arm64)
  • Amazon Linux 2 (amd64 / arm64)
  • Alibaba Cloud Linux 2 (amd64)
  • Alibaba Cloud Linux 3 (amd64 / arm64)
  • WSL 2 (Ubuntu) (amd64)
  • CentOS (amd64*, arm64*)
  • OpenEuler 20.03 (amd64, arm64*)

Adicionalmente, podemos agregar Manjaro que es el equipo que uso de manera personal.

Inicio del contenedor de Android

Si deseas iniciar un Android 8 con arquitectura ARM debemos de ejecutar de la siguiente manera.

1
docker run -itd --rm --memory-swappiness=0 --privileged --pull always -v ~/data:/data -p 5555:5555  redroid/edroid:8.1.0-arm64

Según la arquitectura y versión que usemos cambiamos la última parte para iniciar el contenedor de Docker.

Conexión por ADB

Una vez levantemos la máquina procederemos a verificar con adb la conexión al contenedor de docker para ello ejecutamos

1
adb shell

Si todo está bien tendremos la shell respectiva interactuando con el mismo.

ADB Shell

En caso de no conectarnos haremos la conexión por medio de ADB que veremos a continuación.

Identificación de direcciones IP con ADB

Primero necesitamos conocer la dirección IP del contenedor de Docker, ya que estamos trabajando dentro de una serie de pentesting móvil usaremos un comando de ADB para visualizar la dirección IP.

1
adb shell ip -f inet addr show 

La salida del comando es el siguiente, adicionalmente podemos adicionar después del show la interfaz de red que deseamos obtener la dirección IP.

NOTA: Podemos usar del mismo modo el siguiente comando de Docker para que nos muestre la dirección IP, contando con el ID del contenedor.

1
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ID_CONTENEDOR

Configuración de ADB por direccion IP

El siguiente paso es conectar por la dirección IP y el puerto por ADB.

1
adb connect <IP>:5555

Considera que al levantar el contenedor especificamos el puerto a conectarse 5555 en caso de que deseemos levantar otro contenedor podemos hacerlo sobre otro puerto.

Usando SCRCPY para interactuar con Redroid

Ahora si ejecutamos
un scrcpy al dispositivo que está arriba podremos hacer el mirroring, recordarles que en el blog explicamos el uso de Scrcpy.

1
2
3
4
5
6
7
scrcpy                                                                                                  INFO: scrcpy 1.19 <https://github.com/Genymobile/scrcpy>
/usr/share/scrcpy/scrcpy-server: 1 file pushed, 0 skipped. 74.5 MB/s (37330 bytes in 0.000s)
[server] INFO: Device: redroid redroid11_x86_64 (Android 11)
INFO: Renderer: opengl
INFO: OpenGL version: 4.6 (Compatibility Profile) Mesa 21.2.5
INFO: Trilinear filtering enabled
INFO: Initial texture: 720x1280

O también podemos ejecutar con el flag --serial seguido de la dirección IP y el puerto.

1
scrcpy --serial <IP>:5555

Nos levantará el acceso directamente, llegando a navegar de ser necesario de forma directa desde el mismo dispositivo como se muestra a continuación.

SCRCPY con redroid

Conclusiones

Ya según nuestra necesidad podemos configurar el proxy para que vaya por ejemplo por Burp Suite así como hicimos la entrada de Genymotion, esta entrada forma parte de la serie Pentesting Mobile 101.

En próximas entradas iremos viendo más detalle de la configuración y uso de este contenedor de docker.

Regards,
Snifer

Share on
Support the author with

Avatar
WRITTEN BY
Snifer
Creador del proyecto Snifer@L4b's, Consultor en Seguridad Informática.