MobileAudit - 针对 Android 移动 APK 的 SAST 和恶意软件分析
Mobile Audit 不仅关注安全测试和防御用例,该项目的目标是成为 Android APK 的完整认证,其中包括:
- 静态分析 (SAST):它将执行 APK 的完整反编译并提取它的所有可能信息。它报告了按不同类别分组的源代码中的不同漏洞和发现。此外,它完全支持查找分类(更改状态和重要性)。
- 恶意软件分析:发现危险权限和可疑代码。
- 安全 Android 编码的最佳实践:告诉开发人员他们在代码的哪些部分进行安全编码,哪些部分不安全。
它针对不同的用户配置文件:
- 开发商
- 系统管理员
- 安全工程师
扫描内容:
应用程序信息
安全信息
组件
SAST的发现
已实施的最佳做法
病毒总数信息
证书信息
字符串
数据库
文件
安装需求:
- db: PostgreSQL 13.2
- nginx: Nginx 1.19.10
- rabbitmq: RabbitMQ 3.8.14
- worker: Celery 5.0.5
- web: Mobile Audit App
Docker 镜像
https://hub.docker.com/repository/docker/mpast/mobile_audit
主要特点:
使用Docker以方便在多平台环境中部署
提取APK的所有信息
分析所有的源代码,寻找弱点
所有发现都被分类并遵循CWE标准
所有的发现都是分类的,包括移动十大风险
同时强调APK中安全安卓实施的最佳做法
调查结果可以被编辑,假阳性可以被分流和删除
所有的扫描结果都可以导出为PDF格式
用户认证和用户管理
具有Swagger和ReDoc的API v1
TLS
动态页面重新加载
导出到 Markdown
导出为 CSV
LDAP 集成
该应用程序具有具有不同规则和模式的引擎,这些规则和模式通过结果扫描阶段用于检测 apk 中的漏洞和/或恶意代码。
这些可以在 /patterns
该应用程序为扫描信息的每个实体创建了模型,以便能够为每个 apk 创建关系并获得最佳结论。
病毒总数 (API v3)
它会检查是否已扫描 APK 并提取其所有信息。此外,上传 APK 的可能性是在环境中选择了一个属性(默认禁用)。
缺陷 Dojo (API v2)
可以将结果上传到缺陷管理器。
MalwareDB 和 Maltrail
它会在数据库中检查 APK 中是否存在与恶意软件相关的 URL。
安装
使用 Docker-compose:
提供的docker-compose.yml
文件允许您在开发中本地运行应用程序。
要构建本地映像,并且如果本地应用程序 Dockerfile 发生更改,您可以使用以下命令构建映像:
代码语言:javascript复制docker-compose build
要启动容器,请运行:
代码语言:javascript复制docker-compose up
可选:以分离模式运行(看不到日志)
代码语言:javascript复制docker-compose up -d
应用程序启动后,您可以通过导航到:http://localhost:8888/访问仪表板来测试应用程序。
此外,还有一个使用docker-compose.prod.yaml
在端口 443 中运行的 TLS 版本
使用请执行
代码语言:javascript复制 docker-compose -f docker-compose.prod.yaml up
代码语言:javascript复制
然后,您可以通过导航到:https://localhost/来访问仪表板来测试应用程序。
有关详细信息,请参阅TLS
要停止并删除容器,请运行
代码语言:javascript复制docker-compose down
API v1
REST API 与 Swagger 和 ReDoc 的集成
用法
- 用于身份验证和获取令牌的端点:
/api/v1/auth-token/
- 通过身份验证后,在所有请求中使用标头:
Authorization: Token <ApiKey>
- API 规范的 JSON 视图位于
/swagger.json
- API 规范的 YAML 视图位于
/swagger.yaml
- API 规范的 swagger-ui 视图位于
/swagger/
- API 规范的 ReDoc 视图位于
/redoc/
TLS
条件
- 将证书添加到
nginx/ssl
- 生成自签名证书:
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
nginx配置
- TLS - 端口 443:
nginx/app_tls.conf
- 标准 - 端口 8888:
nginx/app.conf
默认情况下,配置中有一个卷,docker-compose.yml
可用 8888
代码语言:javascript复制- ./nginx/app.conf:/etc/nginx/conf.d/app.conf
代码语言:javascript复制
** 在生产环境中** 使用docker-compose.prod.yaml
端口 443
代码语言:javascript复制- ./nginx/app_tls.conf:/etc/nginx/conf.d/app_tls.conf
环境变量
所有的环境变量都在一个.env
文件中,有一个.env.example
包含所有需要的变量,也有收集在app/config/settings.py
:
CWE_URL = env('CWE_URL', 'https://cwe.mitre.org/data/definitions/')
MALWARE_ENABLED = env('MALWARE_ENABLED', True)
MALWAREDB_URL = env('MALWAREDB_URL', 'https://www.malwaredomainlist.com/mdlcsv.php')
MALTRAILDB_URL = env('MALTRAILDB_URL', 'https://raw.githubusercontent.com/stamparm/aux/master/maltrail-malware-domains.txt')
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', '')
项目:
https://owasp.org/www-project-mobile-audit/