Mobile Audit Análisis SAST y de Malware para APK Android
Mobile Audit Análisis SAST y de Malware para APK Android

Mobile Audit: Análisis SAST y de Malware para APKs de Android

Mobile Audit es una aplicación web de Django para realizar análisis estáticos (Static Application Security Testing o SAST) y detectar malware en los APKs de Android.

Las pruebas de seguridad de aplicaciones estáticas se utilizan para proteger el software mediante la revisión del código fuente del software para identificar las fuentes de vulnerabilidades.

Wikipedia (Inglés)

Componentes

Componentes de Mobile Audit
Componentes de Mobile Audit
  • db: PostgreSQL 13
  • nginx: Nginx 1.18.0
  • web: Mobile Audit App

Principales Características

  • Utiliza Docker para un fácil despliegue en un entorno multiplataforma
  • Extraer toda la información de la APK
  • Analizar todo el código fuente buscando debilidades
  • Todos los hallazgos están categorizados y siguen las normas de CWE
  • También destacar las Mejores Prácticas en la Implementación de Android Seguros en el APK
  • Los hallazgos pueden ser editados y los falsos positivos pueden ser trillados y eliminados
  • Todos los resultados de los escaneos pueden ser exportados a PDF
  • Autenticación y gestión de usuarios
  • API v1 con Swagger y ReDoc
  • TLS

Integraciones

Virus Total (API v3)

Comprueba si ha habido un escaneo del APK y extrae toda su información. Además, existe la posibilidad de subir el APK si se selecciona una propiedad en el entorno (Desactivado por defecto).

Defect Dojo (API v2)

Es posible subir los hallazgos al gestor de defectos.

MalwareDB

Comprueba en la base de datos si hay URLs en el APK que estén relacionadas con el Malware.

Instalación

Utilizando Docker-compose:

El archivo docker-compose.yml proporcionado permite ejecutar la aplicación localmente en desarrollo. Para iniciar el contenedor, ejecuta:

docker-compose up

Si hay cambios en el Application Dockerfile local, puedes construir la imagen con

docker-compose build

Una vez que la aplicación se haya lanzado, puedes probarla navegando a: http://localhost:8888/ para acceder al panel.

Panel de Mobile Audit
Panel de Mobile Audit

Además, hay una versión TLS que funciona en el puerto 443, así que puedes probar la aplicación navegando a: https://localhost/ para acceder al tablero.

Para más información, lee TLS

En cada uno de los escaneos, tendrías la siguiente información:

  • Información de la aplicación
  • Información de seguridad
  • Componentes
  • Hallazgos de SAST
  • Mejores prácticas aplicadas
  • Información sobre Virus Total
  • Información del certificado
  • Strings
  • Bases de datos
  • Archivos

Para un fácil acceso hay una barra lateral en la página izquierda del escáner:

Menú Lateral
Menú Lateral

API v1

Integración de REST API con Swagger y ReDoc.

Uso

  • El punto final para autentificar y obtener token: /api/v1/auth-token/
  • Una vez autenticado, utiliza el header en todas las solicitudes: Authorization: Token <ApiKey>

Swagger

Swagger
Swagger

ReDoc

Captura ReDoc
Captura ReDoc

Puntos finales

  • Una vista JSON de la especificación de API en /swagger.json
  • Una vista YAML de la especificación de API en /swagger.yaml
  • Una vista swagger-ui de la especificación de API en /swagger/
  • Una vista ReDoc de la especificación de API en /redoc/

TLS

Requisitos previos

  • Añade los certificados en nginx/ssl
  • Para generar un certificado autofirmado:
openssl req -x509 -nodes -days 1 -newkey rsa:4096 -subj "/C=ES/ST=Madrid/L=Madrid/O=Example/OU=IT/CN=localhost" -keyout nginx/ssl/nginx.key -out nginx/ssl/nginx.crt

Configuración de Nginx

  • TLS – puerto 443: nginx/app_tls.conf
  • Estándar – puerto 8888: nginx/app.conf

Configuración de la plataforma

Hay dos volúmenes en docker-compose.yml con las configuraciones. Por defecto estarán disponibles tanto los puertos 443 como el 8888, pero sólo se utilizará la configuración TLS para los despliegues de producción.

- ./nginx/app.conf:/etc/nginx/conf.d/app.conf
- ./nginx/app_tls.conf:/etc/nginx/conf.d/app_tls.conf

Variables de entorno

Todas las variables de entorno están en un archivo .env, hay un ejemplo .env.example con todas las variables necesarias. También están recogidas en app/config/settings.py:

CWE_URL = env('CWE_URL', 'https://cwe.mitre.org/data/definitions/')

MALWAREDB_ENABLED = env('MALWAREDB_ENABLED', True)
MALWAREDB_URL = env('MALWAREDB_URL', 'https://www.malwaredomainlist.com/mdlcsv.php')

VIRUSTOTAL_ENABLED = env('VIRUSTOTAL_ENABLED', False)
VIRUSTOTAL_URL = env('VIRUSTOTAL_URL', 'https://www.virustotal.com/')
VIRUSTOTAL_FILE_URL = env('VIRUSTOTAL_FILE_URL', 'https://www.virustotal.com/gui/file/')
VIRUSTOTAL_API_URL_V3 = env('VIRUSTOTAL_API_URL_V3', 'https://www.virustotal.com/api/v3/')
VIRUSTOTAL_URL_V2 = env('VIRUSTOTAL_API_URL_V2', 'https://www.virustotal.com/vtapi/v2/file/')
VIRUSTOTAL_API_KEY = env('VIRUSTOTAL_API_KEY', '')
VIRUSTOTAL_UPLOAD = env('VIRUSTOTAL_UPLOAD', False)

DEFECTDOJO_ENABLED = env('DEFECTDOJO_ENABLED', False)
DEFECTDOJO_URL = env('DEFECTDOJO_URL', 'http://defectdojo:8080/finding/')
DEFECTDOJO_API_URL = env('DEFECTDOJO_API_URL', 'http://defectdojo:8080/api/v2/')
DEFECTDOJO_API_KEY = env('DEFECTDOJO_API_KEY', '')

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda