An end-to-end automated mobile security assessment pipeline that analyzes Android APK files for vulnerabilities, maps findings to OWASP Mobile Top 10, checks threat intelligence via VirusTotal, and auto-generates professional PDF pentest reports.
- Upload any APK via a Flask web dashboard
- Automated static analysis via MobSF REST API
- Detects dangerous permissions, hardcoded secrets, and insecure endpoints
- Maps every finding to OWASP Mobile Top 10 category with severity rating
- Checks APK hash against VirusTotal (76+ antivirus engines)
- Auto-generates a professional PDF pentest report
- Scan history with one-click PDF download
| App | Security Score | Critical | High | VT Result |
|---|---|---|---|---|
| DIVA | 36/100 | 1 | 2 | 0/76 — Clean |
| InsecureBankv2 | 28/100 | 11 | 2 | 20 detections |
| Tool | Purpose |
|---|---|
| MobSF (Docker) | Static APK analysis via REST API |
| Python + Requests | API calls, JSON parsing, enrichment |
| Flask | Web dashboard — upload, history, download |
| WeasyPrint | HTML to PDF report generation |
| VirusTotal API | Hash-based threat intelligence |
| OWASP Mobile Top 10 | Vulnerability categorization framework |
| Docker | Containerized MobSF deployment |
| Kali Linux | Testing environment |
- Kali Linux / Ubuntu
- Docker installed
- Python 3.x
- VirusTotal API key (free at virustotal.com)
docker run -it --rm \
-p 8000:8000 \
-p 1337:1337 \
opensecurity/mobile-security-framework-mobsf:latestpip install flask requests python-dotenv weasyprintOpen app.py and mobsf_scanner.py and set:
API_KEY = "your_mobsf_api_key" # from localhost:8000/api_docs
VT_API_KEY = "your_virustotal_key" # from virustotal.compython3 app.pyOpen browser at http://localhost:5000, upload any APK and click Scan APK.
python3 mobsf_scanner.py /path/to/app.apkandroid-apk-malware-sandbox/ ├── app.py # Flask web dashboard ├── mobsf_scanner.py # CLI scanner + MobSF API pipeline ├── report_generator.py # PDF report generator └── .gitignore
| Finding Type | OWASP Category | Severity |
|---|---|---|
| WRITE/READ_EXTERNAL_STORAGE | M2 - Insecure Data Storage | High |
| SEND_SMS, READ_CALL_LOG | M6 - Insecure Authorization | Critical |
| Hardcoded secrets/keys | M9 - Reverse Engineering | Critical |
| HTTP endpoints | M3 - Insecure Communication | High |
Azeem Abdulla
SOC Analyst L1 | Cybersecurity Fresher | Offensive & Defensive Security
📧 [email protected]
🔗 LinkedIn
🐙 GitHub
This tool is built for educational purposes and authorized security testing only. Always obtain proper authorization before scanning any application.