
mobileAudit v3.2.0
Applicazione Django che esegue SAST e Malware Analysis per APK Android
Mobile Audit

MobileAudit - Analisi SAST e Malware per APK Android Mobile
Un'applicazione web Django per eseguire analisi statiche e rilevare contenuti dannosi all'interno di APK Android. Il progetto estrae i metadati dell'app, analizza il codice sorgente per individuare debolezze e aggrega i risultati (risultati SAST, best practice, informazioni sul certificato, stringhe, database, file, VirusTotal e altro) in una dashboard navigabile e un'API.
Documentazione DeepWiki: https://deepwiki.com/mpast/mobileAudit
- Componenti
- Immagini Docker di base
- Funzionalità principali
- Pattern
- Modelli
- Installazione
- API v1
- TLS
- Variabili d'ambiente

In ogni scansione, saranno disponibili le seguenti informazioni:
- Informazioni e analisi APK: informazioni sull'app, informazioni sulla sicurezza, componenti, informazioni sul certificato, stringhe, database, file
- Risultati SAST categorizzati con mappatura CWE e Mobile Top 10
- Motore di pattern con regole attivabili/disattivabili
- Controllo domini malware contro MalwareDB e Maltrail
- Ricerca VirusTotal (API v3) e upload opzionale (disabilitato per impostazione predefinita)
- Integrazione DefectDojo (API v2) (opzionale) per esportare i risultati
- API con Swagger e ReDoc, più autenticazione basata su token
- Esporta report di scansione in PDF
- Risultati modificabili con triage dei falsi positivi

Per un accesso facile, è presente una barra laterale sulla sinistra della pagina di scansione:

Componenti

- db: PostgreSQL 3.11.5
- nginx: Nginx 1.23.3
- rabbitmq: RabbitMQ 3.11.5
- worker: Celery 5.2.2
- web: App Mobile Audit (Django 3.2.16)
Immagini Docker di base
L'immagine è basata su Python Buster. Link all'immagine Docker Hub
| Immagine | Tag | 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 |
Funzionalità principali
- Viene eseguito in Docker per un deployment semplice e riproducibile
- Estrae e mostra informazioni dettagliate sugli APK
- Regole SAST che mappano a CWE e rischi Mobile Top 10
- Rilevamento di indicatori di malware (MalwareDB / Maltrail)
- Punti di integrazione per VirusTotal e DefectDojo (opzionale)
- Esporta i risultati di scansione in PDF
- Autenticazione utente, gestione e API basata su token
- Documentazione Swagger e ReDoc
- Configurazione Nginx pronta per TLS per la produzione
Pianificato / lista dei desideri
- Integrazione LDAP
- Esportazione in Markdown / CSV
- Miglioramenti al ricaricamento dinamico della pagina (WIP)
Pattern
- L'app include un motore di regole/pattern che rileva potenziali vulnerabilità e snippet dannosi all'interno degli APK.
- I pattern sono configurabili e possono essere abilitati/disabilitati dall'interfaccia
/patterns. - Nota: Alcuni pattern hardcoded derivano dal progetto apkleaks: https://github.com/dwisiswant0/apkleaks

Modelli
L'applicazione ha creato modelli per ciascuna delle entità delle informazioni di scansione per poter creare relazioni e ottenere le migliori conclusioni per ciascuno degli APK.

Per vedere l'intero schema del modello, vai a modelli
Installazione
Utilizzando Docker-compose:
Il file docker-compose.yml fornito ti permette di eseguire l'app localmente in sviluppo.
Per costruire l'immagine locale e se ci sono modifiche al Dockerfile dell'applicazione locale, puoi costruire l'immagine con:
docker-compose build
Poi, per avviare il container, esegui:
docker-compose up
Opzionale: esegui in modalità detached (non vedere i log)
docker-compose up -d
Una volta avviata l'applicazione, puoi testarla navigando su: http://localhost:8888/ per accedere alla dashboard.

Inoltre, esiste una versione TLS che utilizza docker-compose.prod.yaml in esecuzione sulla porta 443
Per usarla, esegui
docker-compose -f docker-compose.prod.yaml up
Poi, puoi testare l'applicazione navigando su: https://localhost/ per accedere alla dashboard.
Per maggiori informazioni, vedi TLS
Per fermare e rimuovere i container, esegui
docker-compose down
API v1
Integrazione API REST con Swagger e ReDoc.
Utilizzo
- Endpoint per autenticarsi e ottenere il token:
/api/v1/auth-token/

- Una volta autenticato, usa l'header in tutte le richieste:
Authorization: Token <ApiKey>
Swagger

ReDoc

Endpoint
- Una vista JSON della specifica API all'indirizzo
/swagger.json - Una vista YAML della specifica API all'indirizzo
/swagger.yaml - Una vista swagger-ui della specifica API all'indirizzo
/swagger/ - Una vista ReDoc della specifica API all'indirizzo
/redoc/
TLS
Prerequisiti
- Aggiungi i certificati in
nginx/ssl - Per generare un certificato auto-firmato:
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
Configurazione di Nginx
- TLS - porta 443:
nginx/app_tls.conf - Standard - porta 8888:
nginx/app.conf
Configurazione Docker
Per impostazione predefinita, c'è un volume in docker-compose.yml con la configurazione con la porta 8888 disponibile
- ./nginx/app.conf:/etc/nginx/conf.d/app.conf
In un ambiente di produzione usa docker-compose.prod.yaml con la porta 443
- ./nginx/app_tls.conf:/etc/nginx/conf.d/app_tls.conf
Variabili d'ambiente
Tutte le variabili d'ambiente sono in un file .env, c'è un .env.example con tutte le variabili necessarie. Inoltre sono raccolte in app/config/settings.py
Regolazioni minime suggerite per il .env per lo sviluppo locale
- Imposta SECRET_KEY, credenziali DB e credenziali utente amministratore.
- Lascia disabilitati VirusTotal / DefectDojo a meno che tu non abbia chiavi API valide e servizi disponibili.
Contribuire
Se desideri contribuire, vedi Contribuire