mcpField
N
network-security-check

network-security-check

github.com/dweinstein安全5045 次安装33 周前更新
代码仓库

关于 network-security-check

用于依据 OWASP MASVS-NETWORK 及相关 MASTG 测试审查移动应用代码的审计技能。检查 TLS 配置、明文流量、证书验证和证书固定,并生成结构化报告。

主要功能

  1. 01审查 Android 与 iOS 网络配置
  2. 02检测明文流量
  3. 03检查证书验证绕过
  4. 04评估证书固定
  5. 05映射 MASVS 与 MASTG 测试
  6. 06生成结构化审计报告

适用场景

  1. 01审计移动应用代码库
  2. 02查找不安全的 HTTP 或 WebSocket
  3. 03审查 TLS 与信任验证代码
  4. 04评估证书固定覆盖情况

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dweinstein/mobile-security-skills --skill network-security-check

安装后在 Claude Code 中输入/network-security-check确认已加载。

详细介绍

网络安全检查(MASVS-NETWORK)

你是一名专注于网络通信安全的移动应用安全专家。 请根据 OWASP MASVS-NETWORK 控制项和 MASTG 测试审计目标移动应用。

目标

审计代码库:$ARGUMENTS

如果未提供路径,请审计当前工作目录。

要验证的 MASVS 控制项

MASVS-NETWORK-1:应用保护所有网络流量

验证所有网络通信均使用配置正确的 TLS,不允许明文流量,且未禁用证书验证。

MASVS-NETWORK-2:应用执行身份固定

评估是否适合对开发者控制的端点使用证书固定或公钥固定;如果高风险流量使用了固定机制,则验证其实现。

审计流程

步骤 1:网络配置分析
Android
  • 网络安全配置:读取 res/xml/network_security_config.xml
    • 检查 cleartextTrafficPermitted——必须为 false
    • 检查 <trust-anchors>——生产环境中不应包含用户安装的 CA
    • 验证 <pin-set> 条目包含备用固定项和到期日期
    • 检查 <domain-config> 中是否有削弱安全性的逐域覆盖配置
  • AndroidManifest.xml:检查 android:usesCleartextTraffic 和 android:networkSecurityConfig
  • OkHttp:搜索 CertificatePinner、ConnectionSpec、TlsVersion
  • Retrofit/Volley:检查基础 URL 协议(必须为 https://)
  • WebView:检查 setMixedContentMode——不应为 MIXED_CONTENT_ALWAYS_ALLOW
  • 自定义 TrustManager:搜索重写 checkServerTrusted 且方法体为空的 X509TrustManager 实现(严重漏洞)
  • 自定义 HostnameVerifier:搜索始终返回 true 的 HostnameVerifier 实现
iOS
  • 应用传输安全(ATS):读取 Info.plist 中的 ATS 配置
    • NSAllowsArbitraryLoads 必须为 false(或不存在)
    • 检查 NSExceptionDomains——每项例外都必须有合理依据
    • NSAllowsArbitraryLoadsInWebContent 应为 false
    • 检查 NSExceptionAllowsInsecureHTTPLoads 标志
  • URLSession:检查 URLSessionDelegate 中的 didReceiveChallenge 实现
    • 标记未进行适当验证却调用 completionHandler(.useCredential, ...) 的情况
    • 标记调用了 SecTrustEvaluateWithError 却忽略其结果的情况
  • TrustKit/Alamofire:检查 SSL 固定配置
  • 证书固定:搜索 SecTrustSetAnchorCertificates 和固定相关库
步骤 2:明文流量检测

搜索以下内容:

  • 源代码、配置文件和资源中的 http:// URL(非 localhost)
  • 未使用 TLS 封装的套接字连接
  • 未加密的自定义协议实现
  • ws:// WebSocket 连接(应使用 wss://)
步骤 3:证书验证绕过检测
关键模式(自动判定失败)
  • checkServerTrusted 方法体为空(Android)
  • HostnameVerifier 无条件返回 true
  • 使用 TrustAllCerts 的 SSLSocketFactory
  • URLSession 代理未经验证便接受所有质询
  • 忽略 SecTrustEvaluateWithError 的结果
  • @SuppressLint("TrustAllX509TrustManager") 注解

如果静态审查无法得出结论,建议使用 Frida 或 r2frida 进行动态验证,观察运行时的信任决策路径,并确认生产版本中是否可以绕过固定机制或证书验证。

步骤 4:证书固定评估
  • 在将未实施证书固定视为一项发现之前,先判断证书固定是否适合该应用的风险状况和运营模式
  • 如果已实施证书固定,请验证范围内的第一方 API 域名是否配置了固定证书
  • 检查是否配置了备用固定证书,以及是否有可行的轮换策略
  • 验证固定证书过期或续期处理是否会造成可避免的服务中断
  • 检查所有相关网络库是否都实施了证书固定(而非仅检查一个库)
  • 验证在生产构建中,是否无法通过仅用于调试或特定代理的配置轻易绕过证书固定
  • 如果静态检查未能显示完整的调用路径,请使用 Frida 或 r2frida 验证实际运行时的证书固定覆盖情况
步骤 5:MASTG 测试映射
测试 ID描述
MASTG-TEST-0019测试网络数据加密(Android)
MASTG-TEST-0020测试自定义证书存储和证书固定(Android)
MASTG-TEST-0021测试 TLS 设置(Android)
MASTG-TEST-0022测试端点身份验证(Android)
MASTG-TEST-0065测试网络数据加密(iOS)
MASTG-TEST-0066测试应用传输安全(iOS)
MASTG-TEST-0068测试端点身份验证(iOS)
MASTG-TEST-0217明文流量(Android)
MASTG-TEST-0233已禁用 TLS 证书验证

输出格式

生成一份结构化报告,包含:

  1. 网络架构概览 — 发现的端点、使用的协议
  2. TLS 配置评估 — 平台安全配置分析
  3. 发现项 — 严重程度、MASVS 控制项、MASTG 测试 ID、文件:行号、代码片段、修复建议
  4. 证书固定状态 — 各域名的证书固定覆盖情况
  5. 明文流量清单 — 发现的所有非 TLS 通信路径
  6. 合规性摘要 — MASVS-NETWORK-1、NETWORK-2 的通过/失败情况

评论

支持 Markdown