找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

5326

积分

0

好友

738

主题
发表于 昨天 23:55 | 查看: 6| 回复: 0

基于 Claude Code Skills 构建 APK 自动化安全分析流水线 - 图片 - 1

做过 Android APK 安全审计的朋友们大概都有这样的体验:一个 APK 甩过来,你得手动打开 jadx 反编译、手工检查是否加壳、再到 Manifest 里找关键字、一行行代码翻看有没有硬编码密钥,最后可能还得调式 SO 文件……

整个过程最让人头疼的往往不是某个技术点有多难,而是步骤繁琐、结果分散。你得像流水线上的工人一样,重复着打开、检查、记录的动作,效率低下不说,还容易遗漏。究其根本,人是这个流程中最慢的环节

今天,我们就来尝试一种新的思路:利用 Claude Code Skills,让 AI 按照预设的工程化流程自动执行 APK 安全分析任务,从检测、分析到生成报告,一气呵成。本次介绍的所有 SKILLS 均由 ID:M1k3 编写。

技术研究过程

SKILLS 简单介绍与使用

什么是 Skill?简单来说,它就是把“如何做好一件事”打包成一个可以反复调用的能力,而不仅仅是写一段长 Prompt 让 AI 临时发挥。它更像一个随时待命的小工具。

一个 Skill 的基本结构如下,其中最核心的是 SKILL.md 文件,AI 读完它就知道该如何执行对应的任务。

.claude/skills/<skill-name>/
├── SKILL.md          # 技能定义(入口)
├── references/       # 参考知识库
├── tools/            # 配套工具脚本
└── rules/            # 规则集

使用前,需要将编写好的 SKILLS 文件夹,放置在你需要分析的 APK 文件所在目录的 .claude\skills\ 子目录中,如下图所示:

Claude skills 目录结构截图

放置完成后,在 Claude Code 界面输入 /skills 命令,即可查看我们自定义的 skill 是否被正确识别。如果未显示,可能需要检查配置文件的位置或格式。

Claude Code 中执行 /skills 命令的输出结果

分析 APK 的 5 个 SKILLS 介绍

这套 APK 分析 SKILLS 采用流水线架构设计,流程清晰高效:

  • 阶段 1(串行入口):对 APK 进行初步处理,包括加固检查、加壳检测及反编译。
  • 阶段 2(并行分析):根据加固状态,自动选择执行 4 个并行分析模块。
  • 阶段 3(汇总输出):将所有分析结果汇总,生成统一的综合报告。
阶段 1(串行)            阶段 2(并行分析)                  阶段 3(汇总)
┌──────────────┐        ┌────────────────────────────┐        ┌──────────────────────────┐
│ 加固检测      │        │        并行分析模块         │        │        综合安全报告        │
│ + 反编译      │───────▶│                            │───────▶│  comprehensive_analysis.md │
│              │        │  ┌──────────────────────┐  │        │                          │
│              │        │  │  Semgrep 扫描        │  │        │                          │
└──────────────┘        │  ├──────────────────────┤  │        └──────────────────────────┘
                        │  │  H5 分析器           │  │
                        │  ├──────────────────────┤  │
                        │  │  Manifest 分析器     │  │
                        │  ├──────────────────────┤  │
                        │  │  SO 分析器           │  │
                        │  └──────────────────────┘  │
                        └──────────────┬─────────────┘
                                       │
                                       ▼

这个设计的关键在于智能的条件分支:加固检测是所有后续分析的前提。如果 APK 已被加固,源码被加密,那么针对源码的深度扫描就失去了意义。系统会根据加固状态,自动调整工作流:

if (已加固) {
    跳过 Semgrep 扫描;     // 源码被加密,扫描无意义
    跳过 H5 分析;          // JSBridge 代码不可读
    执行 Manifest 分析;    // XML 资源未被加密
    执行 SO 分析;          // SO 文件通常不在加固范围
} else {
    执行全部四项分析;
}

参考知识库 references 机制

每个 Skill 都可以携带自己的参考知识库。以 so-analyzer 这个技能为例,其 SKILL.md 文件会控制在 100 行以内,保持简洁(篇幅太长 Claude 可能不会严格执行)。而更详细的知识则通过 @references/ 目录下的文件按需引用。这种方式避免了将所有信息塞进一个超长 Prompt 导致上下文窗口被淹没的问题。

so-analyzer/
├── SKILL.md                          # 精简的执行指令
├── references/
│   ├── sdk_functions.md              # SDK 函数映射表(AI 知识增强)
│   ├── so_auto_analyzer.md           # SO 分析方法论
│   └── example_targets.py            # 目标模式示例
└── scripts/
    └── so_auto_analyzer.py           # 核心分析脚本

五个分析 APK 的 SKILLS

技能一:加固检测与反编译(apk-decompile-check)

这是整个流水线的入口技能,主要完成两项核心任务:

  1. 加固检测:调用 ApkCheckPack 工具识别 APK 是否被主流方案加固(如 360加固、腾讯乐固、梆梆安全等)。
  2. JADX 反编译:将 APK 反编译为 Java 源码和资源文件,为后续分析提供材料。

它的输出报告中会包含加固状态及常见的安全检测特征:

加固状态: 已加固
加固厂商: 360加固
安全检测特征:
- ROOT检测: 有
- 模拟器检测: 有
- 反调试检测: 有

APK 加固检测与反编译技能说明

反编译后的安全检测报告示例

技能二:Semgrep 安全扫描(semgrep-scanner)

该技能使用 16 条自定义规则 对反编译后的 Java 源码进行静态分析,扫描安全漏洞。它不依赖 AI 的主观判断,而是利用确定的 Semgrep 引擎和规则集进行检测,结果更可靠。扫描完成后,会自动调用 semgrep_report_converter.py 脚本将 JSON 结果转换为按高/中/低危分类的 Markdown 报告,便于阅读。

其规则集覆盖了多个关键风险领域:

rules/
├── crypto/
│   ├── keys/          # AES、DES、HMAC 等硬编码密钥检测
│   ├── cloud/         # 阿里云/AWS/腾讯云 AK/SK 泄露检测
│   ├── certificates/  # 硬编码证书检测
│   ├── iv/            # 硬编码 IV 检测
│   ├── salt/          # 硬编码盐值检测
│   └── keystore/      # KeyStore 密码硬编码检测
└── webview/
    ├── webview_insecure_config.yaml   # WebView 不安全配置
    ├── jsbridge_sensitive_data.yaml   # JSBridge 敏感数据传输
    ├── ssl_pinning_bypass.yaml        # SSL Pinning 绕过
    └── intent_url_injection.yaml      # Intent URL 注入

Semgrep 安全扫描器技能说明

技能三:AndroidManifest 安全分析(android-manifest-analyzer)

该技能专注于从 AndroidManifest.xml 及相关的网络安全配置文件中挖掘攻击面。它不仅简单地罗列问题,还会根据风险严重性进行分级(如将未受保护的导出 Activity 标记为「高危」),并给出相应的修复建议。

检查维度 具体内容
安全标志 debuggableallowBackupusesCleartextTraffic
网络安全 network_security_config.xml 的明文策略、证书信任
URL Scheme 自定义协议、Deep Link、潜在的劫持风险
组件导出 四大组件的 exported 状态及权限保护
权限声明 危险权限、自定义权限保护级别

Android Manifest 安全分析器技能说明

技能四:H5/JS 数据返回路径分析(android-app-h5-data-return-analyzer)

随着混合开发模式(WebView + H5)的普及,数据在 Native 和 Web 之间的流转成为新的安全关注点。该技能致力于追踪所有可能的数据通道,特别是可导出 Activity 的 Intent Filter,从而拼凑出完整的 URL Scheme 攻击路径(例如 myapp://h5/open),这些路径可以直接用于渗透测试。

检查清单覆盖了主流混合开发框架的通信方式:

检查清单:
├── WebView + JSBridge(addJavascriptInterface / @JavascriptInterface)
├── Cordova Plugin 回调
├── evaluateJavascript / loadUrl("javascript:...")
├── URL Scheme / shouldOverrideUrlLoading
├── Unity 通信(UnitySendMessage)
└── React Native Bridge(@ReactMethod)

Android App H5 数据返回分析器技能说明

技能五:SO 文件敏感信息提取(so-analyzer)

这是技术含量最高的一个技能。它并非进行简单的字符串搜索,而是通过模拟执行 SO 库中的函数,来捕获运行时才可能产生的密钥、Token 等敏感信息。你可以通过调整 --threshold(置信度阈值)参数,在“快速扫描”和“深度分析”模式间切换——阈值越低,分析的函数越多,适合深度审计。

其执行流程如下:

执行流程:
1. 解析 ELF 结构 → 提取导入/导出符号
2. 生成 Stub → 为外部依赖创建仿真桩
3. 签名解析 → 从 JNI 函数签名推断参数类型
4. 仿真执行 → 用 Unicorn Engine 运行 ARM64 代码
5. 生成报告 → 输出发现的密钥、Token、证书

该技能配备了专门的参考知识库来增强 AI 的分析能力,包括常见 SDK 敏感函数映射表、详细的 SO 文件逆向分析方法论以及典型的目标模式示例。

SO 文件自动分析技能说明

技能六:最佳实践检查器(skill-best-practices-checker)(可选)

这是一个用于“检查检查者”的元技能。它会从 Claude Code 官方文档拉取最佳实践标准,对任何自定义技能进行自动化审查,确保技能本身的质量和规范性。

检查项:
├── Frontmatter 格式是否规范
├── 参数是否使用 $ARGUMENTS 语法
├── SKILL.md 是否控制在 100 行以内
├── 执行步骤是否清晰可执行
├── 是否有验证方式
└── 有副作用的操作是否标记 disable-model-invocation

技能最佳实践检查器说明

输出结果汇总报告

所有技能设计完成后,使用过程变得非常简单直接:

# 1. 反编译(自动检测加固)
/skill: apk-decompile-check /path/to/target.apk

# 2. 并行安全分析(AI 自动根据加固状态选择)
/skill: semgrep-scanner
/skill: android-manifest-analyzer
/skill: so-analyzer
/skill: android-app-h5-data-return-analyzer

# 3. 综合报告(AI 自动汇总所有分析结果)

最终,在 reports/ 目录下,你会获得一份完整、结构化的安全评估报告包:

reports/2026-04-12-143000-target-app/
├── semgrep_report.md         # 硬编码凭据扫描结果
├── manifest_analysis.md      # Manifest 安全配置分析
├── so_analysis.md            # SO 文件敏感信息
├── h5_analysis.md            # H5/JS 数据通道分析
└── comprehensive_analysis.md # 综合安全评估(含风险汇总和修复建议)

综合安全报告中的漏洞详情示例

总结

通过这次实践可以看到,利用 Claude Code Skills 编排的自动化工作流,能够将原本繁琐、重复的 Android APK 安全分析 任务转化为高效、标准的流水线作业。这不仅仅节省了人力和时间成本,更重要的是减少了人为失误和遗漏,提升了审计的全面性和一致性。

这种“技能即工具”的思路,结合 AI 的决策和调度能力,为我们在其他需要固定流程的技术领域(如代码审计、漏洞扫描、数据分析)提供了极具价值的范本。在日常工作中,发掘并构建这样的自动化工作流,是提升工程师效能的关键一步。

希望本文分享的 APK 分析流水线能给你带来启发。如果你对构建自己的自动化技能或探讨更多 Android 安全 话题感兴趣,欢迎到 云栈社区 与更多开发者交流。




上一篇:MIT报告:AI时代软件工程专业的程序员职业规划与避坑指南
下一篇:APT攻击技术:NSA入侵西北工业大学攻击链深度剖析与流程全图解析
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-17 02:15 , Processed in 0.856197 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表