Android Root Atlas/教程库/渗透与恶意软件分析

Android 安全与逆向 / 渗透与恶意软件分析

可疑 APK 安全体检:不碰真机的静态分析与隔离沙箱

用本地 MobSF、JADX 与 Android 模拟器给 OWASP 教学 APK 做安全分诊,产出证据报告并完整回滚实验环境。

本篇完成任务

在不接触真实账号或网络的前提下完成 APK 静态分诊、一次受控动态观察和可重复的清理验证。

这篇教程用 OWASP Reference Apps 中的教学 APK 模拟“收到一个需要分析的安装包”。你会先做本地静态分诊,只有在问题明确后才在可重置 AVD 中运行一次。它不教你收集真实恶意软件、攻击远程系统,或把未知样本上传到会公开共享的云服务。

你会完成什么#

  • 建立包含授权、来源、哈希和时间的样本保管记录。
  • 用本地 MobSF 与 JADX 复核权限、导出组件、域名和动态代码迹象。
  • 在没有账号、共享目录和内网访问的 AVD 中做一次受控观察。
  • 用“观察到 / 未观察到 / 无法判断”写分诊结论,并恢复干净快照。

先看结论#

你的情况建议路线原因
第一次学习 APK 分析使用 OWASP 教学 App行为和来源已知,能检验工具而不处理真实恶意软件
分析自家 App 的可疑版本先比对官方构建哈希与签名,再本地静态分析很多“异常”其实是版本或渠道差异
样本含商业机密只用本地离线工具公共扫描平台可能保存或共享上传内容
来源不明且疑似攻击中隔离保存并交给专业响应团队新手不应在个人电脑上主动执行

心智模型#

取得授权与样本
      ↓
哈希 + 只读原件 ───────┐
      ↓                │
本地静态分诊           │ 不执行
      ↓                │
提出一个动态问题       │
      ↓                │
隔离 AVD + 干净快照 ←─┘
      ↓
一次观察 → 导出证据 → 断网/关机 → 恢复快照

自动扫描报告是线索集合,不是裁决书。危险权限可能有合法用途,低告警也不代表安全。只有“声明了什么、代码引用了什么、运行时做了什么”三层证据相互支持,才能提高结论置信度。

工具清单#

工具角色什么时候用来源与注意
MobSF本地自动化静态/动态分诊先建立权限、组件、域名和代码线索清单用官方容器/源码;绑定本机回环地址,不向公网开放
JADX人工复核 Manifest 和可疑调用点扫描报告出现重要告警时不把反编译结果当原源码
Apktool检查资源、smali 与签名变化边界需要确认资源或字节码结构时本篇不重建样本
Android Emulator隔离执行教学 APK静态阶段提出了明确问题之后AVD 不是对抗高级逃逸的绝对沙箱
AVD Snapshots保存干净基线和恢复状态安装前与每次实验后恢复后仍要验证包、文件和网络状态
PCAPdroid在实验设备记录连接元数据已知安全教学样例的受控动态观察不启用 TLS 解密,不捕获真实凭据

项目全景:渗透与恶意软件分析的 4 个项目,一个不漏#

把四个项目写成一条合法授权的移动安全实验链:先做主机枚举,再做公开攻击面测绘,随后搭建 Kali 实验环境,最后在隔离硬件上理解 Android HID 注入风险。

技术路线项目数处理等级在主题任务中的位置
主机枚举与最小权限审计1候选路线用 rootscan 说明枚举只应针对自有靶机,输出是调查线索而非漏洞结论,并在展示结果前去除凭据和内部域名。
公开攻击面与域名 OSINT1候选路线用 Seekolver 展示从组织到根域、子域和 HTTP 服务的被动发现,强调速率限制、资产所有权确认和不得继续主动利用。
Kali 实验环境初始化1候选路线把 setupkali 放在准备阶段,只自动化新导入虚拟机的配置;要求先看脚本、做快照、锁定软件源并记录所有改动。
移动 HID 演示与恶意载荷边界1隔离审计剩余项目作为隔离实验室中的 HID/载荷案例处理,只解释 Chimera 类工具为何需要明确物理授权、测试键盘输入的无害演示和如何恢复 USB 配置。

1. 主机枚举与最小权限审计 · 1#

用 rootscan 说明枚举只应针对自有靶机,输出是调查线索而非漏洞结论,并在展示结果前去除凭据和内部域名。

本组共 1 项:1 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。

项目上游定位与识别信号状态与采用前检查
Elymaro/rootscan主题用途:将 Elymaro/rootscan 纳入「主机枚举与最小权限审计」候选路线,根据 active-directory · audit · bash · Shell 核对功能、平台与版本适配。 上游自述(保留原文):Speed up your pentest enumeration未归档源项目 · ★ 84 · MIT · 2025-10-05。活跃候选:先核对 README、最新 Release、目标版本与已知问题。

2. 公开攻击面与域名 OSINT · 1#

用 Seekolver 展示从组织到根域、子域和 HTTP 服务的被动发现,强调速率限制、资产所有权确认和不得继续主动利用。

本组共 1 项:1 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。

项目上游定位与识别信号状态与采用前检查
Krypteria/Seekolver主题用途:将 Krypteria/Seekolver 纳入「公开攻击面与域名 OSINT」候选路线,根据 attack-surface · dns · domain-scanner · Python 核对功能、平台与版本适配。 上游自述(保留原文):Seekolver is a tool focused on attack-surface mapping. It performs searches for subdomains associated with root domains and root domains associated with organisations using open sources, additionally, it resolves these domains and subdomains in search of HTTP and HTTPS services and then filters the information obtained based on their response.未归档源项目 · ★ 39 · 协议未声明 · 2023-12-11。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。

3. Kali 实验环境初始化 · 1#

把 setupkali 放在准备阶段,只自动化新导入虚拟机的配置;要求先看脚本、做快照、锁定软件源并记录所有改动。

本组共 1 项:1 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。

项目上游定位与识别信号状态与采用前检查
UCYBERS/setupkali主题用途:将 UCYBERS/setupkali 纳入「Kali 实验环境初始化」候选路线,根据 after-install-kali-linux · after-install-kalilinux · gnome · Shell 核对功能、平台与版本适配。 上游自述(保留原文):Kali Linux Customization and Setup Tool for Newly Imported VM's未归档源项目 · ★ 65 · GPL-3.0 · 2026-07-06。活跃候选:先核对 README、最新 Release、目标版本与已知问题。

4. 移动 HID 演示与恶意载荷边界 · 1#

剩余项目作为隔离实验室中的 HID/载荷案例处理,只解释 Chimera 类工具为何需要明确物理授权、测试键盘输入的无害演示和如何恢复 USB 配置。

本组共 1 项:1 个源项目、0 个 Fork,其中 0 项已归档。它们是风险名录,不是新手安装候选;阅读顺序只用于识别威胁、比较上游与 Fork,或在经授权的隔离环境做防御性审计。

项目上游定位与识别信号状态与采用前检查
cipher-attack/Chimera主题用途:将 cipher-attack/Chimera 作为「移动 HID 演示与恶意载荷边界」的风险识别样本,只根据 android · chimera · configfs · Kotlin 做防御性分流。 为避免转载攻击步骤或载荷,不复制上游操作性简介。未归档源项目 · ★ 22 · MIT · 2026-06-26。隔离条目:只用于风险识别、源码审计或经授权的防御实验;不要在日用机部署,也不要对第三方目标运行。

开始前#

只使用 OWASP Reference Apps 或你有权分析的自家测试 APK。建立 sample-id、来源 URL、取得时间、授权人、SHA-256、文件大小和分析者字段。原件设为只读,所有工具处理工作副本。

新建专用 AVD:不登录任何账号,不连接家庭/办公内网,不启用共享剪贴板、共享目录、USB 直通或真实位置。先完成系统更新与工具安装,再保存 clean-triage 快照。静态分析阶段无需给 AVD 网络。

操作步骤#

1. 建立样本保管记录#

给样本分配不含猜测的编号,例如 LAB-2026-001。运行哈希命令并把输出、命令、时间一起保存。记录 APK 签名证书信息;如果是自家 App,与官方 CI 产物或已知版本证书比较。

不要把文件名中的 “mod”“safe”“official” 写进结论。若哈希在传输前后改变,先解决文件完整性问题,分析暂停。

2. 只做本地静态分诊#

按 MobSF 官方说明在本机运行容器,并将端口限制到 127.0.0.1。上传的是工作副本,不是机密生产包。记录应用 ID、min/target SDK、签名、危险权限、exported 组件、Network Security Config、Native 库、硬编码 URL 和动态加载 API。

对每条高风险线索添加“可能用途”和“需要何种证据”。例如 REQUEST_INSTALL_PACKAGES 只证明 App 请求安装能力,不证明已经静默安装。

3. 人工复核两个关键线索#

在 JADX 中复核最重要的两个项目:一个组件暴露面和一个网络/代码加载线索。追踪从 Manifest 到类,再到具体调用。对域名区分第一方 API、广告/统计、更新服务和无法识别目标。

把结论分为:已确认代码路径、仅声明未找到调用、反编译无法判断。不要用告警数量给 App 打“恶意分数”。

4. 在隔离 AVD 回答一个问题#

恢复 clean-triage,另存 before-run 快照。只安装 OWASP 教学 App,并提出单一问题,例如“启动时是否建立网络连接”。需要网络时使用受控出口,不允许访问家庭/办公网;无需网络则保持飞行模式。

启动 PCAPdroid 或 ADB 日志,再运行一次固定动作,限制观察时间。记录新进程、文件、通知、权限请求和连接元数据。不要输入账号、联系人、短信或支付信息,也不接受设备管理/无障碍授权。

5. 形成报告并证明回滚#

将每项写成“证据—解释—置信度—下一步”,保留无法判断。导出报告和日志后停止捕获、关机并恢复 clean-triage。验证样本包不存在、Download 和共享存储没有新增文件、VPN/证书/辅助功能状态回到基线。

验证#

检查项成功标准失败信号
保管链来源、授权、哈希、时间和工作副本完整只剩一个来源不明 APK
静态报告每个重要告警都有人工复核状态直接复制扫描器结论
动态范围只回答一个预先写下的问题无目的浏览所有功能
数据隔离AVD 无账号、内网、共享目录和真实数据使用日用机或登录真实账号
回滚包、文件、网络配置和快照均恢复只卸载 APK 未检查其他状态

排错#

现象常见原因安全处理
MobSF 容器无法打开端口占用或容器未就绪查看本地容器日志,不把服务暴露到 0.0.0.0
报告有大量高风险项规则是启发式、库代码或旧 SDK人工追踪两个最高影响线索,不按数量定性
AVD 无网络飞行模式、DNS 或本地 VPN 配置若问题不需要联网,保持离线;否则只启用受控出口
App 检测到模拟器并退出教学样例/环境差异或反分析记录限制并停止,不转用日用真机
快照恢复失败AVD 配置或系统镜像发生变化关机后重建干净 AVD,不在未知状态继续运行样本

完成清单#

  • 我使用了 OWASP 教学 App 或明确获授权的自家 APK。
  • 我记录了来源、授权、哈希、证书和工具版本。
  • 我没有把机密样本上传到公共服务。
  • 我人工复核了至少一个组件和一个网络/加载线索。
  • 我只在无账号、无内网、可回滚的 AVD 做动态观察。
  • 我的报告区分了观察、推断和未知,并验证了环境清理。

一手资料#