Damn-Vulnerable-Bank: una app Android insegura para practicar

Damn Vulnerable Bank es una aplicación para Android que simula ser una app de un banco y que nos proporciona una interfaz para realizar pruebas y poder obtener una comprensión detallada de los aspectos internos y de seguridad más comunes.

Cómo utilizar la aplicación

- Clonar el repositorio:

$ git clone https://github.com/rewanth1997/Damn-Vulnerable-Bank.git

Servidor de Backend

$ cd Damn-Vulnerable-Bank/BackendServer


Con docker:

  • $ docker-compose up --build
  • Hacer una petición a /api/health/check para ver el estado
    •     curl <IP>:<magic_port>/api/health/check

Sin docker:

  • Instalar dependencias
    • nodejs (v10.19.0)
    • npm (6.14.4)
    • mysql (Ver 8.0.21)
  • Actualizar la configuración de mysql (campos de nombre de usuario, contraseña) en config/config.json
  • Insertar datos en la base de datos
    • cat database/schema+data.sql | mysql -u root -p 
  • Instalar paquetes npm
    • npm install
  • Iniciar el servidor de aplicaciones
    • npm start
  • Hacer una petición a /api/health/check para ver el estado
    •     curl <IP>:<magic_port>/api/health/check
Aplicación
  • Descargar la apk e instalarla a través de adb o manualmente
  • Abrir la aplicación y agregar la IP de backend en la pantalla de inicio
  • Probar el estado de ejecución presionando verificación de estado
  • Crear una cuenta mediante la opción de registro o signup y luego iniciar sesión con las credenciales
  • Realizar operaciones bancarias
  • Iniciar sesión como administrador para aprobar al beneficiario
*La base de datos se completa previamente con algunos usuarios para una exploración rápida.

UsernamePasswordAccount NumberBeneficiariesAdmin privileges
user1 password1 111111 222222, 333333, 444444 No
user2 password2 222222 None No
user3 password3 333333 None No
user4 password4 444444 None No
admin admin 999999 None Yes

Características
  • Sign up/login
  • Interfaz de profile
  • Cambio de contraseña
  • Interfaz de configuración para actualizar la URL del backend
  • Agregar la verificación de fingerprints antes de transferir/ver fondos
  • Agregar chequeo de PIN antes de transferir/ver fondos
  • Ver saldo
  • Transferir dinero
    • Mediante entrada manual
    • Mediante escaneo QR
  • Agregar/Ver beneficiario (eliminar pendiente)
  • Ver historial de transacciones (descarga pendiente)
Construyendo la Apk con ofuscación
  • Ir a Opciones de compilación y seleccionar Generar paquete firmado/Apk
  • Luego seleccionar Apk como opción y hacer clic en siguiente
  • Crear un nuevo almacén de claves para firmar el apk y recordar la contraseña
  • Seleccionar ese almacén de claves e ingresar la contraseña
  • Ahora seleccionar Build variant como Release y Signature version como V2
  • Construir (build) la apk
Lista de vulnerabilidades en la aplicación (Alerta de spoiler)
  • Detección de root y emulador
  •  Comprobaciones anti-debugging (evita hooking con frida, jdb, etc.)
  • SSL pinning: pinear el certificado/clave pública
  • Ofuscar todo el código
  • Cifrar todas las solicitudes y respuestas
  • Información confidencial encodeada
  • Fuga de Logcat
  • Almacenamiento inseguro (tal vez números de tarjetas de crédito guardados)
  • Actividades exportadas
  • Token JWT
  • Integración de WebView
  • Deep links
  • IDOR
TODO
  • Agregar profile y rutas de cambio de contraseña
  • Crear diferentes secrets para administradores y otros usuarios
  • Agregar generación dinámica de secretos para verificar tokens JWT
  • Introducir error o bug en la verificación de jwt
  • Encontrar una manera de almacenar la base de datos y montarla mientras se usa Docker
  • Entorno dockerizado
Autores

Rewanth Cool (Rest API) Github LinkedIn
Hrushikesh Kakade (Android App) Github LinkedIn
Akshansh Jaiswal (Android App)GithubLinkedIn

Repo: https://github.com/rewanth1997/Damn-Vulnerable-Bank

Comentarios