简介 — 安全保证与 OSINT 探查
公开的 SafeBase 门户 同时服务于两类受众:
- 需要安全态势证明的潜在客户
- 安全研究人员(蓝队和红队成员)
每一个 绿色勾选标记 都揭示了一个(据称)当前存在的控制项;每一个缺失的勾选标记同样清晰地暗示着哪些控制项不存在。
此检测方法的功能
本文概述的方法:
- 使用 Nuclei 无头模式 直接从 HTML 正文中 收集 每个控制项标题
- 通过单一的正则表达式模板将这些标题 规范化 为机器可读的检测结果
- 输出 内部安全控制项的 JSON/CLI 匹配结果
为何收集这些数据?
合规框架如:
- ISO 27001
- SOC 2
- PCI-DSS
- 区域隐私法规
…要求提供安全控制项已到位且正常运行的 证据。
SafeBase 通过消除无休止的电子邮件往来和文档请求来简化这一过程。
为何要抓取自己的 Trust Centre?
即使是您自己构建的,也有充分的理由:
持续保证
审计人员越来越期望持续的实时证据变更检测
控制项名称、分组或策略可能在更新或收购后发生变化第三方映射
JSON 输出允许与 NIST 800-53 等框架进行映射
蓝队与红队的价值对比
| 团队 | 优势 |
|---|---|
| 蓝队 | 确保公开声明保持准确 |
| 红队 | 通过与内部控制库对比来识别差距 |
检测
手动审查有效,但无法规模化。
相对地,此方法使用 ProjectDiscovery / Nuclei——一款由 YAML 模板驱动的高速扫描工具。
为何选择 Nuclei?
- 模板驱动的检测
- 高速扫描
- 易于自定义
- 适合大规模自动化
Matchers
该模板包含 70 个 matcher。
正则表达式 Matcher 示例
- type: regex
name: firewall
regex: ['(?i)Firewall(?:[\s\S]{0,600}?data-testid="enabled")?']
- type: regex
name: incident-response-policy
regex: ['(?i)Incident\s+Response\s+Policy(?:[\s\S]{0,600}?data-testid="enabled")?']
使用的正则表达式技术
| 问题 | 解决方案 |
|---|---|
| 大小写不一致 | (?i) 标志 |
| 混合空格/换行符 | \s+ |
| 标题与图标之间的未知间距 | [\s\S]{0,600}? |
消除误报
DSL matcher 确保更高的准确性:
- type: dsl
name: names
dsl:
- 'status_code == 200'
- 'contains_any(body, "Powered by SafeBase")'
condition: and
检查内容
两个条件必须同时为真:
- 响应状态码为 200
- HTML 包含 "Powered by SafeBase"
绕过 Cloudflare WAF
大多数 SafeBase 门户位于 Cloudflare WAF 后面,会阻止爬取尝试。
解决方案:无头模式
使用 Nuclei 的 无头 Chromium 执行:
- 运行 JavaScript 挑战
- 绕过 Cloudflare Managed Challenge
- 渲染动态内容
无头配置
headless:
- steps:
- action: navigate
args:
url: "{{BaseURL}}"
- action: sleep
args:
duration: 1s
详细说明
navigate
启动 Chromium 并加载目标 URLsleep (1s)
允许:- JavaScript 执行
- Cookie 设置
- 完整页面渲染
如果 HTML 显示不完整,请增加延迟时间。
故障排除
如果结果缺失:
- 您的 IP 可能已被封锁
- 如有必要,请使用代理
大规模扫描
1. 构建目标列表
# domains.txt
https://trust.gitlab.com
https://security.projectdiscovery.io
https://trust.your-vendor-here.com
您也可以包含:
- 子域名
- 已爬取的端点
2. 以并发方式运行 Nuclei
nuclei \
-t safebase-checks-enabled.yaml \
-headless \
-l matches.txt \
-c 50 \
-o safebase-scan.json
关键参数
| 参数 | 用途 |
|---|---|
-l |
输入文件 |
-c 50 |
并行浏览器(资源密集型) |
-o |
输出文件 |
输出选项
- JSON
- CSV
- Stdout
您可以将结果转发至:
- S3
- Slack
- SIEM
模板仓库
https://github.com/rxerium/internal-security-detect
3. 通过 CI/CD 自动化
GitHub Actions 示例
jobs:
safebase-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
nuclei -t safebase-checks-enabled.yaml -headless -l domains.txt -c 50 -o results.json
- name: Upload artefact
uses: actions/upload-artifact@v4
with:
name: safebase-results
path: results.json
总结
此技术仅限于使用 SafeBase 的组织,但它展示了一个强大的概念:
被动 OSINT 可以与合规、保证和检测相交汇。
通过利用公开可访问的信任门户,研究人员可以:
- 分析控制框架
- 验证安全声明
- 自动检测变更
…所有这些都 无需身份验证或直接系统访问。