
Django application that performs SAST and Malware Analysis for Android APKs

MobileAudit - SAST and Malware Analysis for Android Mobile APKs
A Django web application to perform static analysis and detect malicious content inside Android APKs. The project extracts app metadata, scans source code for weaknesses, and aggregates results (SAST findings, best practices, certificate info, strings, databases, files, VirusTotal, and more) into a browsable dashboard and API.
DeepWiki documentation: https://deepwiki.com/mpast/mobileAudit

In each of the scans, it would have the following information:

For easy access there is a sidebar on the left page of the scan:


Image is based on python buster. Link to Docker Hub image
Planned / wishlist
/patterns UI.
The application has an created models for each of the entities of the scans' information to be able to create relations an abtain the best conclusions for each of the apks.

To see the whole model schema, go to models
Using Docker-compose:
The provided docker-compose.yml file allows you to run the app locally in development.
To build the local image and if there are changes to the local Application Dockerfile, you can build the image with:
docker-compose build
Then, to start the container, run:
docker-compose up
Optional: run in detached mode (not see the logs)
docker-compose up -d
Once the application has launched, you can test the application by navigating to: http://localhost:8888/ to access the dashboard.

Also, there is a TLS version using docker-compose.prod.yaml running in port 443
To use it, execute
docker-compose -f docker-compose.prod.yaml up
Then, you can test the application by navigating to: https://localhost/ to access the dashboard.
For more information, see TLS
To stop and remove the containers, run
docker-compose down
REST API integration with Swagger and ReDoc.
/api/v1/auth-token/
Authorization: Token <ApiKey>

/swagger.json/swagger.yaml/swagger//redoc/nginx/sslopenssl 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
nginx/app_tls.confnginx/app.confBy default, there is a volume in docker-compose.yml with the configuration with 8888 available
- ./nginx/app.conf:/etc/nginx/conf.d/app.conf
In a production environment use docker-compose.prod.yaml with port 443
- ./nginx/app_tls.conf:/etc/nginx/conf.d/app_tls.conf
All the environment variables are in a .env file, there is an .env.example with all the variables needed. Also there are collected in app/config/settings.py
Suggested minimum .env adjustments for local dev
If you like to contribute, see Contributing
| Image | Tags | Base |
|---|
| mpast/mobile_audit | 3.0.0 | python:3.9.16-buster |
| mpast/mobile_audit | 2.2.1 | python:3.9.7-buster |
| mpast/mobile_audit | 1.3.8 | python:3.9.4-buster |
| mpast/mobile_audit | 1.0.0 | python:3.9.0-buster |