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.
|
|
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
|
|
Si todo está bien tendremos la shell respectiva interactuando con el mismo.
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.
|
|
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.
|
|
Configuración de ADB por direccion IP
El siguiente paso es conectar por la dirección IP y el puerto por ADB.
|
|
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.
|
|
O también podemos ejecutar con el flag --serial
seguido de la dirección IP y el puerto.
|
|
Nos levantará el acceso directamente, llegando a navegar de ser necesario de forma directa desde el mismo dispositivo como se muestra a continuación.
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