Marco de seguridad móvil (MobSF): un marco de evaluación de seguridad de aplicaciones móviles todo en uno
Mobile Security Framework (MobSF) es una aplicación móvil completa y automatizada (Android / iOS / Windows) para pruebas de penetración, análisis de malware y evaluación de seguridad capaz de realizar análisis estáticos y dinámicos.
MobSF admite binarios de aplicaciones móviles (APK, IPA y APPX) junto con código fuente comprimido y proporciona API REST para una integración perfecta con su canal de CI / CD o DevSecOps. El analizador dinámico le ayuda a realizar evaluaciones de seguridad en tiempo de ejecución y pruebas instrumentadas interactivas.
- Capturas de pantalla:
- Requerimientos:
- Análisis dinámico:
- Instalación:
- Ejecutando MobSF
- Configuración del analizador dinámico
- Contenedor móvil MobSF
- Cursos y certificaciones de e-Learning de MobSF
- Actualización de MobSF
- APKiD
- Escaneo de VirusTotal
- Información sobre la Play Store de AppMonsta para Android
- Análisis de masa estática
- Usando Postgres DB en lugar de SQLite:
- Soporte de directorio raíz:
- Imagen de Docker para análisis estático de MobSF
- API REST
- CI / CD
- Prueba de funcionamiento:
- Presentaciones:
Capturas de pantalla:
- Análisis estático - Android
Requerimientos:
- Mac:
- Instalar Idiota
- Instalar Python 3.6 - 3.7 (3.8 no es compatible)
- Los usuarios de MacOS Catalina deben desinstalar python3 existente e instalarlo desde Python.org. Después de la instalación, vaya a / Aplicaciones / Python 3.7 / y correr Instalar certificados en el comando Y Actualice Shell Profile.com y
- Instalar JDK 8+
- Instalar herramientas de línea de comando xcode-select --instalar
- Descargar e instalar wkhtmltopdf a partir de instrucciones wiki
- Usuarios de MacOS Mojave, instale encabezados si están disponibles:
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
- Linux basado en Ubuntu / Debian:
- Instalar Git sudo apt get install git
- Instalar Python 3.6 - 3,7 sudo apt-get install python3
- Instalar JDK 8+ sudo apt-get install openjdk-8-jdk
- Instale las siguientes dependencias
sudo apt install python3-venv python3-pip python3-dev build-essential libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev wkhtmltopdf
- Ventanas:
- Instalar Idiota
- Instalar Python 3.7
- Instalar JDK 8+
- Instalar Herramientas de compilación de Microsoft Visual C ++
- Instalar SSL abierto
- Descargar e instalar wkhtmltopdf a partir de instrucciones wiki
- Agrega la carpeta que contiene wkhtmltopdf binary a la variable de entorno PATH.
- El análisis estático de las aplicaciones de Windows requiere un host de Windows o una máquina virtual de Windows para Mac y Linux.
Si está ejecutando MobSF en un host de Windows, no necesita configurar nada más que interactuar con el script de instalación automatizado por primera vez cuando ejecuta MobSF. Sin embargo, si está utilizando un sistema operativo host diferente, debe configurar una máquina virtual de Windows. Desafortunadamente binskim solo está disponible en Windows. Entonces, incluso para el análisis estático, se requiere una máquina virtual de Windows.
- Instale los siguientes requisitos en la VM
- Python 3
- rsa (a través de python -m pip instalar rsa)
- Descargar el setup.py script y ejecutarlo
- Hay alguna interacción manual, pero si no hay errores, todo está bien y el servidor RPC debería estar ejecutándose.
Recordar: Utilice Windows-VM independiente para MobSF y no lo exponga a un rango de red del que podría provenir un ataque. La mejor solución es configurarlo en modo de solo host.
- Para integrar una máquina virtual de Windows en MobSF, siga estos pasos.
- Obtenga la IP de su VM y configúrela en el archivo MobSF / settings.py (busque WINDOWS_VM_IP)
- (Si aún no lo ha hecho 🙂 Copie la clave rsa privada de vm a MobSF
Unhandled Exception: System.NotSupportedException: The requested security protocol is not supported. at System.Net.ServicePointManager.set_SecurityProtocol(SecurityProtocolType value) at NuGet.CommandLine.Program.MainCore(String workingDirectory, String[] args) at NuGet.CommandLine.Program.Main(String[] args)
Instalar .NET Framework 4.6
AttributeError: ConfigParser instance has no attribute 'getitem'
El script de instalación de MobSF asume que su máquina virtual o host de Windows tiene una unidad C y que tiene permisos completos para realizar operaciones de lectura / escritura en C: MobSF. Este error ocurre si no tiene los permisos de lectura / escritura adecuados.
- Establezca la variable de entorno JAVA_HOME.
- iOS IPA Analysis solo funciona en contenedores Mac, Linux y Docker.
Análisis dinámico:
- El escaneo dinámico no funcionará si está utilizando el contenedor Docker de MobSF o si está instalando MobSF dentro de una máquina virtual.
- Instalar Gencluyendo
Instalación:
# Please make sure that all the requirements mentioned above are installed first. git clone https://github.com/MobSF/Mobile-Security-Framework-MobSF.git cd Mobile-Security-Framework-MobSF # Linux or Mac users ./setup.sh # Windows users setup.bat
Ejecutando MobSF
- Para Linux y Mac: ./run.sh
- Para ventanas: run.bat
Puedes navegar a http: // localhost: 8000 / para acceder a la interfaz web de MobSF.
Configuración del analizador dinámico
Ejecute una máquina virtual Android Genparmi antes de iniciar MobSF. Todo se configurará automáticamente en tiempo de ejecución. MobSF requiere Genidanza Android x86 VM versión 4.1 a 9.0 para análisis dinámico. Le recomendamos que utilice Android 7.0 y superior.
Las versiones de Android 5 y superiores se MobSFyed automáticamente en la primera ejecución. Para las versiones de Android anteriores a la 5, debe MobSFy el tiempo de ejecución de Android antes del análisis dinámico por primera vez. Haga clic en el botón MobSFy Android Runtime en la página Dynamic Analysis para MobSFy Android Runtime Environment.
Proxy HTTPS
- Para las versiones de Android 4.4 - 9.0, la configuración de proxy global se aplica automáticamente en tiempo de ejecución.
- Para las versiones de Android 4.1 - 4.3, configure el proxy de VM de Android como se muestra en la página Análisis dinámico.
Si Dynamic Analyzer no detecta su dispositivo Android, debe configurarlo manualmente ANALYZER_IDENTIFIER en MobSF / settings.py. Ejemplo: ANALYZER_IDENTIFIER = '192.168.56.101:5555'. Puede encontrar la IP del dispositivo Android en la barra de título de Genparmi, y el puerto predeterminado es 5555.
Contenedor móvil MobSF
¿Le da pereza configurar MobSF? Utilice la imagen más reciente de la ventana acoplable MobSF (no se admite el análisis dinámico)
docker pull opensecurity/mobile-security-framework-mobsf # Static Analysis Only docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
Cursos y certificaciones de e-Learning de MobSF
Tenemos 2 cursos de aprendizaje electrónico a su propio ritmo que cubren MobSF y otras herramientas de seguridad de Android.
- OpSecX - Evaluación automática de la seguridad de aplicaciones móviles con MobSF - MAS (en actualización)
- OpSecX - Experto en herramientas de seguridad de Android - ATX
Actualización de MobSF
Si está actualizando MobSF, en la mayoría de los casos es posible que deba realizar migraciones de base de datos o verá errores como
[ERROR] Saving to DB (E:Mobile-Security-Framework-MobSFStaticAnalyzerviewsandroiddb_interaction.py, LINE 236 "static_db.save()"): table StaticAnalyzer_staticanalyzerandroid has no column named
Ejecute el siguiente comando para migrar su base de datos
python manage.py makemigrations python manage.py makemigrations StaticAnalyzer python manage.py migrate
Si los cambios anteriores no funcionaron, es posible que deba ejecutar setup.sh o setup.bat nuevamente, lo que eliminará los resultados del análisis anterior.
APKiD
APKiD está habilitado de forma predeterminada. Para deshabilitarlo, configure APKID_ENABLED para falso en MobSF / settings.py.
Escaneo de VirusTotal
VirusTotal Scan está desactivado de forma predeterminada. Debe agregar su clave API de VirusTotal antes de habilitarla.
- Obtenga la clave API de VirusTotal aquí
- Accede a tu clave API desde https://www.virustotal.com/en/user/[username]/ superíndice /.
- En MobSF / settings.py, agregue su clave API a VT_API_KEY y establecer VT_ENABLED para Cierto y reinicie MobSF.
Información sobre la Play Store de AppMonsta para Android
Usamos la API de AppMonsta para recuperar detalles de Google Play Store como seguridad para nuestra implementación principal. Está deshabilitado por defecto. Para habilitarlo, se requiere la clave API de AppMonsta.
- Obtenga la clave de API de AppMonsta de: Clave de API de AppMonsta
- En MobSF / settings.py, agregue su clave API a APPMONSTA_KEY y reinicie MobSF.
Análisis de masa estática
MobSF admite análisis estático de masas. A continuación, se explica cómo realizar un análisis de masa estático:
- Ejecute el servidor MobSF.
python manage.py runserver 8000
- Correr mass_static_analysis.py
usage: mass_static_analysis.py [-h] [-d DIRECTORY] [-s IPPORT] optional arguments: -h, --help show this help message and exit -d DIRECTORY, --directory DIRECTORY Path to the directory that contains mobile app binary/zipped source code -s IPPORT, --ipport IPPORT IP address and Port number of a running MobSF Server. (ex: 127.0.0.1:8000)
Ejemplo: python mass_static_analysis.py -s 127.0.0.1:8000 -d / home / files /
Usando Postgres DB en lugar de SQLite:
Instalar psycopg2: pip3 instala psycopg2-binary
Ir a MobSF settings.py
Comente lo siguiente:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': DB_DIR, } }
Ahora descomente lo siguiente:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'mobsf', 'USER': 'postgres', 'PASSWORD': '', 'HOST': 'localhost', 'PORT': '', } }
Cree una base de datos en Postgres llamada mobsf y configure los ajustes anteriores con el nombre de usuario, la contraseña y otros detalles correctos.
Aplicar migraciones:
python3 manage.py makemigrations
python3 manage.py migrate
Ahora puede iniciar el servidor MobSF y haber configurado Postgres correctamente como base de datos.
Soporte de directorio raíz:
Si desea que todas las cargas, descargas y configuraciones de usuario se creen en el directorio raíz, habilite la compatibilidad con el directorio raíz:
Es posible que sea necesario habilitar la compatibilidad con el directorio de inicio para proporcionar una versión personalizada de MobSF a varios usuarios en un sistema operativo o para agrupar MobSF con una distribución pentest.
Para habilitar la compatibilidad con el directorio de inicio, vaya a settings.py y configure USE_HOME a Verdadero.
USE_HOME = True
Esto asegurará
- Todas las cargas, bases de datos y descargas de usuarios ahora se crean en .MobSF directorio en el directorio de inicio del usuario.
- Las configuraciones de usuario se leen desde .MobSF / config.py en el directorio raíz. Si el formato es incorrecto o no se encuentra el archivo, las configuraciones de usuario se leen desde MobSF / settings.py Si.
Imagen de Docker para análisis estático de MobSF
Construyendo imagen a partir de Dockerfile
git clone https://github.com/MobSF/Mobile-Security-Framework-MobSF.git
cd Mobile-Security-Framework-MobSF
docker build -t mobsf .
docker run -it -p 8000:8000 mobsf
Esto ejecutará MobSF en 0.0.0.0:8000
Cree una imagen detrás de un proxy de Dockerfile
docker build --build-arg https_proxy="http://proxy_ip:proxy_port" --build-arg http_proxy="proxy_ip:proxy_port" --build-arg NO_PROXY="127.0.0.1" -t mobsf . (replace `proxy_ip` with the value of your proxy ip address and `proxy_port` with the proxy port used
Reconstrucción de la imagen de Dockerfile desde cero
docker rmi ubuntu:18.04 docker build --no-cache --rm -t mobsf .
Imagen predeterminada de Docker MobSF
https://hub.docker.com/r/opensecurity/mobile-security-framework-mobsf/
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it --name mobsf -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
Por persistencia
docker run -it --name mobsf -p 8000:8000 -v:/root/.MobSF opensecurity/mobile-security-framework-mobsf:latest
Para soporte de postgres
Necesitará docker-compose: consulte https://docs.docker.com/compose/install/
- construir las imágenes construir docker-compose
- servicios de lanzamiento docker-compose up -d (en el fondo) o docker-dial (en primer plano)
Luego verifique que los 2 servicios estén activos:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7de107c5b853 mobile-security-framework-mobsf_mobsf "python3 manage.py r…" 5 weeks ago Up 5 weeks 0.0.0.0:8000->8000/tcp mobile-security-framework-mobsf_mobsf_1 149a3ffa61ca postgres:latest "docker-entrypoint.s…" 5 weeks ago Up 5 weeks 5432/tcp mobile-security-framework-mobsf_postgres_1
Si no desea usar docker-compose, primero deberá iniciar un contenedor de postgres, luego iniciar MobSF usando el dockerfile y la configuración POSTGRES variable a Cierto.
docker build --build-arg POSTGRES=True -t mobsf .
Puede cambiar la información de conexión de Postgres en postgres_support.sh Haz esto antes de construir la imagen.
#!/bin/bash set -e POSTGRES=$1 echo "Postgres support : ${POSTGRES}" if [ "$POSTGRES" == True ]; then echo "Installing Postgres" pip3 install psycopg2-binary #Enable postgres support sed -i '/# Sqlite3 suport/,/# End Sqlite3 support/d' ./MobSF/settings.py && sed -i "/# Postgres DB - Install psycopg2/,/'''/d" ./MobSF/settings.py && sed -i "/# End Postgres support/,/'''/d" ./MobSF/settings.py && sed -i "s/'PASSWORD': '',/'PASSWORD': 'password',/" ./MobSF/settings.py && sed -i "s/'HOST': 'localhost',/'HOST': 'postgres',/" ./MobSF/settings.py fi
Si tiene un error en el primer arranque
docker exec -it mobile-security-framework-mobsf_mobsf_1 python3 manage.py makemigrations docker exec --it mobile-security-framework-mobsf_mobsf_1 python3 manage.py migrate
** Para ver qué sucedió en el contenedor cuando se ejecuta con -d en lugar de -it: **
docker logs -f --tail 100 mobsf
Tener acceso a la cáscara en el contenedor.
docker exec -it mobsf /bin/bash
API REST
MobSF proporciona API REST. Puede acceder a los documentos de la API desde la aplicación.
CI / CD
Para CI / CD, puede aprovechar la API REST de MobSF.
Integración de la canalización MobSF CI / CD
- Utilizando Aplicación Docker:
docker-app render omerl/mobsf-ci:0.3.0 --set target_folder=--set target_apk= --set output_folder= | docker-compose -f - up --exit-code-from scan
Para analizar el informe, utilice Pegamento OWASP.
Uso:
- Clonar el repositorio
- Crea una carpeta llamada objetivo en la carpeta raíz y coloque el destino allí (p. ej. target / my_app.apk).
- Ejecute las pruebas usando:
TARGET_PATH='target/' docker-compose up --build --exit-code-from scan
- Espere a que se complete el comando, tomará algún tiempo. Cuando se complete el comando, verifique el informe a continuación output / report.json.
- Uso Pegamento OWASP para procesar el informe ejecutando:
docker run -it -v $(pwd)/output:/app owasp/glue:raw-latest ruby bin/glue -t Dynamic -T /app/report.json --mapping-file mobsf --finding-file-path /app/android.json -z 2
Prueba de funcionamiento:
Puede ejecutar todas las pruebas unitarias con Tox -e pelusa, prueba (la pelusa no funciona en Windows)
Presentaciones:
- OWASP APPSEC UE 2016
- NULLCON 2016
- c0c0n 2015
- Webcast G4H 2015
Deja una respuesta
Contenido relacionado