☰
Android 恶意 APK 静态分析 API 参考:Anthropic-Cybersecurity-Skills 基于 androguard 的权限、API 调用与风险评分体系
2026/10/18 16:00:42 网站建设 项目流程

Android 恶意 APK 静态分析 API 参考:Anthropic-Cybersecurity-Skills 基于 androguard 的权限、API 调用与风险评分体系

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

本文基于 Anthropic-Cybersecurity-Skills 仓库中analyzing-android-malware-with-apktool技能的 API 参考文档,完整讲解其静态分析 Android APK 的整套接口设计:androguard 库的调用方式、5 个核心分析函数的行为细节、14 类可疑 API 调用模式、IOC 字符串提取的正则规则,以及 0–100 分风险评分模型的计分逻辑与阈值判定,帮助你在不执行样本的前提下对可疑 APK 做结构化恶意性分诊。

技能定位与技术路线

该技能属于仓库 Malware Analysis / Mobile Security 域,目标是在不运行 APK 的情况下完成静态恶意性评估。技能主文档 SKILL.md 定义了三层工具路线:

  • androguard(Python):可编程地解析 APK/DEX,提取 manifest 元数据、权限、组件,并做交叉引用(xref)级别的 API 调用扫描——这是 agent.py 脚本的主引擎;
  • apktool:资源反编译,查看 smali 与资源文件;
  • jadx(可选):恢复 Java 源码。

SKILL.md 的 frontmatter 还声明了该技能的合规与攻击框架映射:NIST CSF 2.0 的DE.AE-02、RS.AN-03、ID.RA-01、DE.CM-01,以及 MITRE ATT&CK Mobile 技术T1406、T1407、T1626.001、T1655.001、T1521.001。技能的核心步骤为:解析 manifest → 枚举权限并标记危险组合 → 列出四大组件 → 扫描可疑 API(反射、加密、短信、通信)→ 检测动态代码加载(DexClassLoader、Runtime.exec)→ 提取硬编码 URL/IP 等 C2 指标 → 生成带 MITRE 映射的风险报告。

依赖与环境

参考文档「Dependencies」一节与源码一致地给出前提:

  • Python 3.9+,androguard >= 3.4.0;
  • apktool(资源反编译)、jadx(可选,Java 源码恢复);
  • 隔离分析环境(虚拟机或沙箱)——静态脚本虽然不执行样本,但样本本身的获取、哈希登记与后续可能的动态复测都应限制在隔离环境中。

脚本对 androguard 的导入做了降级保护(agent.py 中try/except ImportError):未安装时APK与AnalyzeAPK置为None。从源码结构看,只有full分析路径会返回明确的错误信息("androguard not installed: pip install androguard"),而permissions、manifest、apis、strings四个子命令在main()中直接调用AnalyzeAPK(agent.py),缺少库时会以异常形式暴露——因此运行任何子命令前都应确认pip install androguard已完成。

分析引擎依赖的三个库分工如下(对应参考文档「Libraries Used」):

库用途
androguardAnalyzeAPK()解析,权限枚举,API 调用扫描
re从 DEX 字符串中正则提取 URL、IP、base64 模式
json分析结果序列化为 JSON 报告

CLI 接口

脚本 agent.py 提供 6 种调用方式(argparse子命令,agent.py):

python agent.py sample.apk permissions # 权限风险分析 python agent.py sample.apk manifest # manifest 组件提取 python agent.py sample.apk apis # 可疑 API 调用扫描 python agent.py sample.apk strings # URL / IP / base64 字符串提取 python agent.py sample.apk full # 完整恶意性评估(含风险评分) python agent.py sample.apk # 不带子命令时默认执行 full

每个子命令的输出都是json.dumps(result, indent=2, default=str)格式化的 JSON,可直接落盘归档或被下游检测流水线消费。

核心分析函数详解

analyze_permissions(apk)— 权限风险评估

调用apk.get_permissions()拿到全部申请权限,与内置的20 项危险权限清单(agent.py 中的DANGEROUS_PERMISSIONS)求交集,输出总权限数、危险权限列表、危险计数与风险等级:

危险权限恶意用途线索
SEND_SMS/READ_SMS/RECEIVE_SMS短信劫持、扣费、拦截验证码
READ_CONTACTS/READ_CALL_LOG联系人、通话记录窃取
RECORD_AUDIO/CAMERA窃听、偷拍
ACCESS_FINE_LOCATION精确定位跟踪
READ_PHONE_STATE/CALL_PHONE设备标识、自动拨号
WRITE/READ_EXTERNAL_STORAGE批量读取存储文件
INSTALL_PACKAGES/REQUEST_INSTALL_PACKAGES静默安装后续载荷
SYSTEM_ALERT_WINDOW悬浮窗覆盖(UI 伪装/截屏攻击)
BIND_ACCESSIBILITY_SERVICE无障碍服务滥用(键盘记录、自动化操控)
BIND_DEVICE_ADMIN设备管理员权限(锁定设备、擦除数据,勒索型特征)
RECEIVE_BOOT_COMPLETED开机自启,持久化
WRITE_SETTINGS篡改系统设置
CHANGE_WIFI_STATE网络配置操纵

风险分级阈值为:CRITICAL ≥ 8 项危险权限,HIGH ≥ 5,MEDIUM ≥ 2,LOW < 2(agent.py)。例如一个同时申请SEND_SMS+BIND_ACCESSIBILITY_SERVICE+RECEIVE_BOOT_COMPLETED+SYSTEM_ALERT_WINDOW的"手电筒"应用,直接落入 HIGH 区间,值得进入人工深挖。

analyze_manifest(apk)— Manifest 组件提取

调用apk.get_activities()、get_services()、get_receivers()、get_providers(),返回包名、应用名、版本名/版本码、min/target SDK,以及四大组件的完整清单与各自计数(agent.py)。实战关注点:

  • Service 数量异常多(> 5)会触发后文的T1418 Software Discovery技术标注;
  • RECEIVE_BOOT_COMPLETED对应的 Receiver 是开机驻留的常见落点;
  • target_sdk明显偏低的样本更可能利用了旧版本 API 的宽松行为。

scan_suspicious_apis(dx)— 可疑 API 调用检测

该函数不是简单的字符串匹配,而是利用 DEX 分析对象做方法级定位 + 交叉引用:把每条模式拆成类名与方法名,调用dx.find_methods(classname=..., methodname=...)找到被调用的方法对象,再取method.get_xref_from()获得调用方(caller);只有存在调用方的模式才计入结果,并记录调用方数量与首个调用方类名(agent.py)。

参考文档列举了其中 5 条,源码中共定义14 条模式(SUSPICIOUS_API_PATTERNS,agent.py),完整清单如下:

DEX 模式语义
Ljava/lang/Runtime;->exec命令执行
Ljava/lang/ProcessBuilder;->start启动外部进程
Ldalvik/system/DexClassLoader;->loadClass动态代码加载(可加载外置 DEX)
Ljava/lang/reflect/Method;->invoke反射调用
Ljava/lang/Class;->forName反射类型加载
Ljavax/crypto/Cipher;->getInstance加密/解密操作
Landroid/telephony/SmsManager;->sendTextMessage短信滥用
Landroid/app/admin/DevicePolicyManager;->lockNow设备锁定(勒索型样本常见)
Landroid/content/pm/PackageManager;->setComponentEnabledSetting禁用安全类组件
Ljava/net/HttpURLConnection;->connect原生网络连接
Lokhttp3/OkHttpClient;->newCallOkHttp 第三方网络库调用
Landroid/webkit/WebView;->loadUrlWebView 加载 URL
Landroid/os/Build;->SERIAL读取设备序列号
Landroid/provider/Settings\$Secure;->getString读取系统安全设置(如设备标识)

extract_strings(dx, apk)— IOC 提取

遍历dx.get_strings()的全部 DEX 字符串,用三组正则提取指标(agent.py):

  • URL:https?://[\w\-._~:/?#\[\]@!$&\'()*+,;=]+(忽略大小写);
  • IP:\b(?:\d{1,3}\.){3}\d{1,3}\b;
  • base64:[A-Za-z0-9+/]{30,}={0,2}(长度 ≥ 30 的疑似编码块,每条字符串最多取 5 个匹配)。

IP 结果会过滤私网段——以10.、192.168.、172.16.、127.0.开头的地址不计入外网 IOC,避免把内网测试地址误报为 C2。返回字段做了截断控制:URL 最多 30 条、外网 IP 最多 20 条、base64 候选最多 10 条,另附url_count、external_ip_count全量计数。这些 URL/IP 应送入沙箱/威胁情报侧做归属核查,再与 C2 行为关联。

detect_obfuscation(apk, dx)— 混淆指标检测

检查三类指标(agent.py):

  1. 单字母类名:遍历dx.get_classes(),把 DEX 类名(/转.)按包段拆分,若类名段中出现单字母且为字母的片段则计数;计数 > 10时标记single_letter_classes(ProGuard/R8 混淆的典型痕迹);
  2. 多 DEX:apk.get_files()中.dex文件数 > 1 时标记multi_dex(拆分加载可延缓分析);
  3. 原生库:存在.so文件即标记native_libraries(最多列出 10 个)——逻辑下沉到 native 层意味着仅看 DEX 无法覆盖全部行为。

三项中任一项命中,likely_obfuscated即为true,该标志直接参与风险计分。

Androguard API 速查表

参考文档给出的 androguard 方法对照表,配合源码中的实际用法:

方法返回
AnalyzeAPK(path)(APK, list[DEX], Analysis)三元组
apk.get_permissions()Android 权限列表
apk.get_activities()Activity 组件名列表
apk.get_services()Service 组件名列表
apk.get_receivers()BroadcastReceiver 名称列表
apk.get_package()包名字符串
dx.find_methods(classname, methodname)匹配的方法分析对象
dx.get_strings()DEX 文件中的全部字符串
dx.get_classes()全部类分析对象

其中AnalyzeAPK来自androguard.misc,APK与DEX类分别来自androguard.core.apk/androguard.core.dex(agent.py)。full_analysis中只用到三元组的首位a(APK)与末位dx(Analysis);中间位的d(原始 DEX 对象列表)在子命令路径中被解包但主要经由dx访问。除上表外,manifest 分析还调用了get_providers()、get_app_name()、get_androidversion_name()、get_androidversion_code()、get_min_sdk_version()、get_target_sdk_version(),混淆检测调用了get_files(),均为APK对象的常规查询方法。

风险评分模型与结果解读

full_analysis(apk_path)(agent.py)汇总五个子分析并计算 0–100 的风险分。计分规则与参考文档「Risk Scoring」表一致:

因子单项分值封顶
危险权限(每项 8 分)min(危险权限数 × 8, 40)40
可疑 API 调用(每项 10 分)min(命中模式数 × 10, 30)30
外网 IP(每项 5 分)min(外网 IP 数 × 5, 15)15
检测到混淆固定 15 分15

总分再取min(risk_score, 100)。四个因子上限相加恰为 100,对应源码实现:

risk_score += min(perm_analysis["dangerous_count"] * 8, 40) risk_score += min(len(suspicious_apis) * 10, 30) risk_score += min(strings["external_ip_count"] * 5, 15) risk_score += 15 if obfuscation["likely_obfuscated"] else 0 risk_score = min(risk_score, 100)

总分映射到风险等级:

分数区间等级
≥ 70CRITICAL
50 – 69HIGH
25 – 49MEDIUM
< 25LOW

完整报告的 JSON 结构(字段均取自源码返回字典)包括:analysis_type、timestamp(UTC ISO 时间)、file、manifest、permissions、suspicious_apis(最多 20 条)、strings、obfuscation、risk_score、risk_level,以及条件式挂载的mitre_techniques列表——满足条件才写入对应条目,否则该位为null:

技术 ID名称触发条件
T1418Software Discoverymanifest 中 Service 数量 > 5
T1417Input Capture申请了BIND_ACCESSIBILITY_SERVICE
T1582SMS Control申请了SEND_SMS
T1404Exploitation for Privilege Escalation可疑 API 中命中DevicePolicyManager相关模式

这四组 ID 与仓库级 ATTACK_COVERAGE.md 中登记的本技能覆盖技术(T1404 / T1417 / T1418 / T1582)一致。报告中的 MITRE 映射只标注"行为可能性"而非"已确认行为":例如命中T1582说明样本具备发短信的能力与权限,是否真的用于欺诈/扣费仍需动态验证或字符串中的短信内容佐证。

使用前提与局限

  • 静态分析边界:脚本不执行 APK,无法覆盖 native 层逻辑、加密字符串解密后的真实 C2、以及运行期才展开的反射/动态加载行为;detect_obfuscation命中native_libraries或多 DEX 时,应把.so与外置 DEX 转入 IDA/Ghidra 等工具继续分析;
  • 模式库封闭:14 条SUSPICIOUS_API_PATTERNS是固定清单,构建新检测规则时应在该清单基础上扩充(如新增ContentResolver查询、TelephonyManager相关方法),而不是绕过评分框架另起炉灶;
  • base64 候选噪声:30 字符以上的 base64 正则会命中合法资源编码,suspicious_base64只宜作线索队列,需解码后人工确认;
  • 时间戳:报告使用datetime.utcnow()生成 ISO 时间,归档时注意其为 UTC 时间;
  • 运行环境建议按 SKILL.md 的 Prerequisites 保持隔离(VM/沙箱),并只分析授权获取的样本。

相关文件索引

  • API 参考文档:本文的原始依据,含库清单、CLI、核心函数与评分表
  • 技能主文档:frontmatter 框架映射、适用场景与 7 步工作流
  • 分析脚本:全部函数实现、权限/API 模式清单与 CLI 入口
  • ATTACK_COVERAGE.md:仓库级 ATT&CK 技术与技能的覆盖矩阵

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询