OWASP移动审计 - Android APK 恶意软件分析应用程序

2021-09-18 11:48:20 浏览数 (1)

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
  • 生成自签名证书:
代码语言:javascript复制
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复制
代码语言:javascript复制
- ./nginx/app.conf:/etc/nginx/conf.d/app.conf
代码语言:javascript复制

** 在生产环境中** 使用docker-compose.prod.yaml端口 443

代码语言:javascript复制
代码语言:javascript复制
- ./nginx/app_tls.conf:/etc/nginx/conf.d/app_tls.conf

环境变量

所有的环境变量都在一个.env文件中,有一个.env.example包含所有需要的变量,也有收集在app/config/settings.py

代码语言:javascript复制
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/

0 人点赞