Skip to content

工作流:网络空间测绘扫描

场景:批量采集一批主机或 CIDR 范围的 TLS 证书,指纹化后匹配已知服务库(识别 C2/CDN/VPN),并随时间追踪证书轮换。这是 cert-skills 测绘能力的核心流水线。

适用边界

  • ✅ 资产盘点、攻击面管理、C2 基础设施发现、CDN/云资产归集
  • ✅ 长期监控自有证书轮换合规性
  • ❌ 单个可疑主机深度取证(用 证书事件应急取证
  • ❌ 仅查历史签发记录(直接用 search-ct 即可)

四阶段流水线

Phase 1 — 批量采集(map-scan)

bash
cert-skills map-scan \
  --hosts a.com,b.com,c.com \
  --cidrs 192.0.2.0/24 \
  --ports 443,8443 \
  --concurrency 100 \
  --timeout 5 \
  --rate-limit 50 \
  -o json > scan.json

产出:每目标的证书链(含 Raw DER)+ TLS 版本 + 套件 + SNI,外加测绘摘要(去重、聚合、拓扑)。默认 InsecureSkipVerify,能看到自签/IP 证书。

扫公网必须限速

扫公网大范围 CIDR 不设 --rate-limit 会触发 IDS/封禁,甚至被当成扫描攻击。建议 --rate-limit 50 起步,根据目标网络承载调整。--timeout 5 + --retries 2 是探测存活与稳定性的平衡点。

Phase 2 — 指纹化并匹配已知服务

对采集到的目标逐个跑指纹化与匹配:

bash
for host in a.com b.com c.com; do
  cert-skills jarm "$host" -o json
  cert-skills ja3 "$host" -o json
  cert-skills match-fp "$host" -o json   # 自动采集全套指纹并查库
done

match-fp 命中库会返回 Label + Category + Confidence,例如:

json
{ "matches": [{ "label": "Cobalt Strike Default", "category": "c2", "confidence": 0.9 }] }

c2 类别命中 = 红队/C2 框架特征,重点跟进。

c2 命中不是定罪证据

JARM 相同可能是同款合法软件(如都用 Nginx/Apache)。c2 命中是强信号不是定罪证据——需结合置信度(≥0.9 才算高)、端口行为、JA3、证书特征综合判断。误报会把合法运维当攻击者。

Phase 3 — 已采集证书的离线分析(map-parse)

Phase 1 产出的证书可离线再分析,不必重新拨号:

bash
# 把扫描导出的证书喂给 map-parse
cert-skills map-parse ./exported-certs/ -o json

也可对每张证跑合规检查:

bash
for cert in ./exported-certs/*.pem; do
  cert-skills check-distrusted-ca "$cert"
  cert-skills check-key-usage "$cert"
  cert-skills check-policy "$cert"
done

Phase 4 — 随时间追踪轮换

bash
# 定期(如每周)对同一批目标采集快照
cert-skills detect-change a.com --save --snapshot-dir ./snaps
cert-skills detect-change b.com --save --snapshot-dir ./snaps

# 任意时刻对比,看哪些资产换了证/换了钥/换了 CA
cert-skills detect-change a.com --snapshot-dir ./snaps

# 汇总成生命周期时间线
cert-skills map-timeline ./snaps/*.json

变更类型:renewed(续期)、replaced(换钥/换 CA)、expirednewunchanged

detect-change 必须配 --save

--save 就没快照,下次跑找不到对比基准。建议固定 --snapshot-dir,按目标名 + 时间戳自动落盘,跨周期对比才有数据。详见 证书变更检测

完整数据流

反模式

  • 🚫 扫描公网大范围 CIDR 不限速——--rate-limit 必设,避免触发 IDS/封禁。
  • 🚫 只看叶子证书不看链——中间 CA 信息(issuer、pathLen)是测绘聚类的重要维度。
  • 🚫 指纹库不更新——C2 框架迭代快,定期 fp-db load 新特征。
  • 🚫 检测到 C2 指纹就下结论——JARM 相同可能是同款软件(如都用 Nginx),需结合上下文与 c2 类别置信度判断。
  • 🚫 detect-change 不 --save——没快照就没法跨周期对比。

下一步