dwmnds23/android-malware-analysis

GitHub: dwmnds23/android-malware-analysis

一套整合 jadx、apktool 和 Ghidra 的 Android 恶意软件静态分析系统,通过 REST API 自动化逆向 APK 并将结果持久化存储。

Stars: 0 | Forks: 0

<<<<<<< HEAD # APK 逆向工程系统 利用 **jadx**、**apktool** 和 **Ghidra headless** 的自动化 Android APK 静态分析系统。 ## 架构 ``` ┌─────────────────────────────────────────────┐ │ docker-compose │ │ │ │ ┌──────────────────────┐ ┌──────────────┐ │ │ │ api (port 8000) │ │ db │ │ │ │ │ │ PostgreSQL │ │ │ │ FastAPI │ │ (port 5432) │ │ │ │ ├─ apktool │◄─► │ │ │ │ ├─ jadx │ │ analyses │ │ │ │ └─ Ghidra headless │ │ table │ │ │ └──────────────────────┘ └──────────────┘ │ └─────────────────────────────────────────────┘ ``` ### 每个 APK 的分析流程 ``` POST /analyze (APK upload) │ ▼ 1. apktool decode → AndroidManifest.xml + smali/ │ ▼ 2. jadx decompile → Java source files │ ▼ 3. Ghidra headless → .so / .dex → functions + strings + imports (JSON) │ ▼ 4. Heuristic scan → strings_of_interest[] │ ▼ PostgreSQL ← αποθήκευση όλων των αποτελεσμάτων ``` ## 安装与启动 ``` # 克隆 / 克隆文件夹 cd apk-analyzer # 构建并启动(首次运行约 10 分钟,原因:Ghidra 下载) docker compose up --build -d # 查看日志 docker compose logs -f api ``` ## API 端点 ### `POST /analyze` 上传 APK 进行分析。 ``` curl -X POST http://localhost:8000/analyze \ -F "file=@malware_sample.apk" ``` **响应:** ``` { "analysis_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "pending" } ``` ### `GET /analysis/{id}` 获取某次分析的结果。 ``` # 快速概览(无源代码) curl http://localhost:8000/analysis/3fa85f64-... # 带完整源代码 curl "http://localhost:8000/analysis/3fa85f64-...?include_sources=true" ``` **响应 (已完成):** ``` { "id": "3fa85f64-...", "filename": "malware.apk", "sha256": "abc123...", "status": "completed", "package_name": "com.evil.app", "app_version": "1.0", "permissions": ["android.permission.INTERNET", "android.permission.READ_SMS"], "activities": ["com.evil.app.MainActivity"], "services": ["com.evil.app.SmsStealerService"], "strings_of_interest": ["sendTextMessage", "SmsManager", "https://"], "ghidra_report": { "libevil.so": { "functions": [...], "strings": [...] } } } ``` ### `GET /analyses` 列出所有分析记录。 ``` curl "http://localhost:8000/analyses?limit=10&offset=0" ``` ### `GET /health` 健康检查。 ``` curl http://localhost:8000/health ``` ### Swagger UI 自动可用地址: **http://localhost:8000/docs** ## 数据库 使用任意 PostgreSQL 客户端连接 (pgAdmin, DBeaver, psql): ``` Host: localhost Port: 5432 Database: apkdb User: analyst Password: analyst ``` ### 常用查询 ``` -- Όλα τα samples με επικίνδυνα permissions SELECT filename, package_name, permissions FROM analyses WHERE permissions @> '["android.permission.SEND_SMS"]'::jsonb; -- Samples που χρησιμοποιούν SmsManager SELECT id, filename, strings_of_interest FROM analyses WHERE 'SmsManager' = ANY(strings_of_interest); -- Τελευταίες αναλύσεις SELECT id, filename, status, submitted_at, package_name FROM analyses ORDER BY submitted_at DESC LIMIT 20; ``` ## 项目结构 ``` apk-analyzer/ ├── api/ │ ├── main.py # FastAPI app + analysis logic │ └── requirements.txt ├── ghidra_scripts/ │ └── ExportAnalysis.py # Ghidra post-script (εξάγει JSON) ├── docker/ │ └── schema.sql # PostgreSQL schema (documentation) ├── Dockerfile ├── docker-compose.yml └── README.md ``` ## 毕业论文说明 - 本系统运行 **纯静态分析** — 不执行 APK - Ghidra headless 通过 `analyzeHeadless` 脚本在无 GUI 模式下运行 - `.so` 文件 (native libraries) 由 Ghidra 完全分析 - `.dex` 文件主要由 jadx 分析 (Java 反编译) - 生产环境建议: 为 API 添加身份认证和速率限制 ## 扩展 如需添加新的分析步骤: 1. 在 `main.py` 中添加函数 2. 在 `analyze_apk()` 中调用该函数 3. 将输出保存到数据库 (如需要请添加列) ======= # android-malware-analysis Android 恶意软件静态分析系统,使用 Ghidra、jadx 和 apktool。通过 REST API 自动逆向分析 APK 并将结果存储在 PostgreSQL 数据库中。
标签:Amass, AMSI绕过, Android, Apktool, APK反编译, AV绕过, DAST, DEX分析, Docker, Docker Compose, DSL, FastAPI, Ghidra, Jadx, Manifest解析, PostgreSQL, REST API, Smali, SO文件分析, 云安全监控, 云资产清单, 反病毒, 启发式扫描, 威胁检测, 安全防御评估, 恶意软件分析, 测试用例, 目录枚举, 移动安全, 网络测绘, 自动化分析, 自定义DNS解析器, 请求拦截, 跨站脚本, 逆向工具, 逆向工程, 静态分析