拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Anthropic Cybersecurity Skills 实战:基于 crt.sh、pycrtsh 与 certstream 的 TLS 证书透明度日志分析指南

Anthropic Cybersecurity Skills 实战基于 crt.sh、pycrtsh 与 certstream 的 TLS 证书透明度日志分析指南【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, 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-tls-certificate-transparency-logs 技能展开系统讲解如何通过 crt.sh Certificate TransparencyCT数据库发现与组织品牌相近的钓鱼域名、未授权证书签发与影子 IT 基础设施。读完本文你将掌握 pycrtsh、crt.sh REST API、certstream 三套查询/监控接口的完整用法并能够结合仓库提供的 agent.py 实现 typosquatting 域名检测、异常 CA 告警、24 小时新证监控与通配符证书审计的自动化分析流程。一、为什么安全运营要分析证书透明度日志Certificate TransparencyCT是 RFC 6962 定义的一种公开审计机制所有由受信任的 CA 签发的公网 TLS 证书都会被写入多个公开的、可审计的日志服务器。其设计初衷是让任何第三方都能检测出未经授权或欺诈性的证书签发行为。从攻击者的视角看钓鱼攻击的前置步骤往往涉及获取一个看起来合法的域名与证书——这正是 MITRE ATTCK 框架中的侦察Reconnaissance与资源开发Resource Development环节。攻击者注册与目标品牌高度相似的域名typosquatting再为它们签发合法证书随后将钓鱼页面部署其上。由于 CT 日志对全网公开、且 CA 签发的每一张证书都会留痕CT 日志分析因此成为被动发现钓鱼基础设施的早期预警手段——它不需要主动扫描目标网络只要查询公开日志即可。该技能在仓库中被归类于 security-operations 域其定位明确在安全事件调查中分析 TLS 证书透明度日志、为检测规则与威胁狩猎构建查询、为 SOC 分析师提供结构化分析流程并验证相关攻击技法的监控覆盖度。技能元数据还将其映射到 NIST CSF 的 DE.CM-01、DE.AE-02、GV.OV-01、RS.MA-01 等控制项以及 MITRE ATTCK 的 T1583.001Acquire Infrastructure: Domains、T1566.002Spearphishing Link、T1598.003Phishing for Information等技法。二、环境准备与依赖在开始之前请确认满足以下前置条件熟悉安全运营概念与常用工具具备可安全执行测试的实验室环境Python 3.8并安装pycrtsh、requests、certstream依赖拥有对任何测试活动的适当授权。依赖安装方式pip install pycrtsh requests certstream需要注意的是以下所有分析均依赖公开的第三方服务crt.sh、certstream使用前应确认目标查询行为符合你所在组织的合规要求与授权范围。三、pycrtsh结构化的 crt.sh 查询接口pycrtsh 是对 crt.sh 数据库的 Python 封装提供面向对象的查询接口。技能主文档 SKILL.md 给出的最小用法如下from pycrtsh import Crtsh c Crtsh() # 搜索与域名匹配的证书 certs c.search(example.com) for cert in certs: print(cert[id], cert[name_value]) # 获取完整证书详情 details c.get(certs[0][id], typeid)3.1 搜索模式精确匹配与通配符api-reference.md 对search()的两种匹配模式做了明确区分certs c.search(example.com) # 精确匹配 certs c.search(%.example.com) # 通配符匹配所有子域search()返回的每条证书记录包含证书 ID、签发者、域名列表等核心字段。当需要覆盖全部子域包括已知与未知子域时应使用%.example.com通配符查询精确匹配则仅返回证书主体恰好为该域名的记录。这一区别在实际分析中非常关键攻击者签发的钓鱼证书通常覆盖看似随机的子域或近似域名通配符查询是发现它们的第一步。3.2 证书详情三种查询主键get()方法支持按三种主键检索单条证书的完整详情details c.get(cert_id, typeid) # 按 crt.sh 内部证书 ID details c.get(sha1_hash, typesha1) # 按 SHA-1 指纹 details c.get(sha256_hash, typesha256) # 按 SHA-256 指纹其中typeid与search()返回记录中的id字段直接对应SHA-1/SHA-256 指纹则适用于你已有证书哈希、需要回溯其 CT 记录或关联其他情报的场景例如与已知钓鱼证书库交叉比对。四、crt.sh REST API直接调用与 JSON 解析当需要绕过库封装、精确控制请求或仅需一次性查询时可以直接调用 crt.sh 的 REST 接口。api-reference.md 给出了等价实现import requests # JSON 输出 resp requests.get(https://crt.sh/?q%.example.comoutputjson) records resp.json() # 字段: id, issuer_ca_id, issuer_name, common_name, # name_value, not_before, not_after, serial_numberURL 中q参数与 pycrtsh 的search()接受同样的匹配语法%.example.com表示所有子域outputjson指定 JSON 返回格式。在仓库的 scripts/agent.py 中这一调用被封装为search_crtsh_api()函数见 L29-L34并加入了 30 秒超时与raise_for_status()错误处理def search_crtsh_api(domain): Query crt.sh REST API directly for certificate records. url fhttps://crt.sh/?q{domain}outputjson resp requests.get(url, timeout30) resp.raise_for_status() return resp.json()从源码结构可以推断agent.py 的所有分析模块都以search_crtsh_api(f%.{args.domain})的结果作为输入即先拉取目标域名全量子域证书记录再交给后续的 typosquatting、CA 审计、新证监控等模块处理。五、certstream实时证书流监控crt.sh 属于按需查询型接口而 certstream 提供 WebSocket 实时证书推送。对于需要持续监控新签发证书如跟踪攻击者注册新钓鱼域名的场景api-reference.md 给出了回调式监听示例import certstream def callback(message, context): if message[message_type] certificate_update: all_domains message[data][leaf_cert][all_domains] print(all_domains) certstream.listen_for_events(callback, urlwss://certstream.calidog.io/)工作原理如下listen_for_events(callback, url...)建立 WebSocket 长连接默认公共端点即wss://certstream.calidog.io/每收到一条消息即触发callback(message, context)消息类型为certificate_update时从message[data][leaf_cert][all_domains]提取该证书覆盖的全部域名含 SAN。配合 Levenshtein 距离计算certstream 模式可将监控新签发证书升级为实时告警钓鱼域名对每一条流入的证书域名与品牌域名计算编辑距离低于阈值的立即告警。这正是 SKILL.md 描述中Monitors newly issued certificates for typosquatting and brand impersonation using Levenshtein distance的落地方式。六、关键证书字段速查无论通过哪种接口获取证书记录都需要正确解读以下核心字段。api-reference.md 的字段表如下字段含义common_name证书主体主域名name_valueSANSubject Alternative Names主题备用名称issuer_name证书签发机构CAnot_before证书生效时间not_after证书过期时间在分析中这几个字段的组合使用方式common_name与name_value共同构成证书覆盖了哪些域名的完整视图单张证书可包含多个 SANissuer_name用于判断签发者是否为预期 CA——攻击者常使用廉价或自动化 CA 签发钓鱼证书not_before/not_after用于时间维度分析例如最近 24 小时新签发筛选以及判断证书是否仍处于有效期内。七、端到端实战仓库 agent.py 的自动化分析流水线仓库中的 scripts/agent.py 将上述 API 与分析方法整合为一条可命令行驱动的完整分析流水线是本文档的实战落点。其 CLI 接口如下python scripts/agent.py --domain example.com \ --allowed-cas Lets Encrypt DigiCert Sectigo Amazon Google Trust Services \ --action full_scan --output ct_report.json7.1 命令行参数说明参数默认值说明--domain必填目标监控域名--allowed-cas[Lets Encrypt, DigiCert, Sectigo, Amazon, Google Trust Services]可信 CA 名单按子串匹配--actionfull_scan可选search、typosquat、unauthorized_ca、monitor、full_scan--outputct_report.json报告输出路径从参数定义agent.py可见--allowed-cas支持传入多个值nargs*默认可信名单覆盖主流公共 CA--action的五种模式允许只执行某一类检测或一次跑完全量扫描。运行后会打印各模块的命中数量并将结构化结果写入 JSON 报告generated_at时间戳 findings分节。7.2 关键分析模块的实现原理Typosquatting 检测Levenshtein 距离。detect_typosquatting()agent.py以max_distance3为默认阈值提取每个候选域名的第一段split(.)[0]去除通配符与点前缀后与目标品牌词计算编辑距离距离在0 dist 3之间的记录被标记为可疑并按距离升序排序。其底层levenshtein_distance()L37-L52采用经典的动态规划逐行迭代实现insertions / deletions / substitutions 三种操作取最小值无需第三方库。未授权 CA 检测。detect_unauthorized_cas()agent.py将每条记录的issuer_name与allowed_cas名单做不区分大小写的子串匹配凡不在名单内的签发者全部列为未授权 CA 证书并保留域名、签发者、签发时间与证书 ID 供人工复核。该模块默认在full_scan中输出前 50 条unauth[:50]。24 小时新证监控。monitor_new_certificates()agent.py以hours_back24为窗口将not_before解析为时间戳后与当前时间比较筛出最近一天内签发的证书。解析失败的异常记录会被静默跳过except ValueError: continue保证流水线健壮性。通配符证书审计。find_wildcard_certificates()agent.py识别common_name或name_value以*.开头的证书。通配符证书一张即可覆盖大量子域是影子 IT 或内部服务外部化的重要信号值得重点复核。7.3 建议的完整分析步骤结合 SKILL.md 的Key analysis steps与上述模块一份完整的 CT 分析工作流应为以通配符模式查询 crt.sh拉取目标域名全部相关证书对结果执行 Levenshtein 距离检测识别 typosquatting 变体域名标记来自非预期 CA 的证书结合组织既定 CA 名单监控可疑子域上的通配符证书将发现结果与已知钓鱼基础设施情报交叉引用。从源码结构看agent.pyfull_scan模式恰好依次执行以上步骤中的 typosquatting、未授权 CA、24 小时监控三个模块并始终执行通配符证书审计最终把所有发现汇总进单一 JSON 报告——这正是将本文档 API 参考用于真实 SOC 流程的最小可落地形态。八、框架映射与检测覆盖该技能在仓库的技能索引index.json与技能元数据中记录了完整的框架映射可用于检测覆盖度评估与威胁建模MITRE ATTCKT1583.001Acquire Infrastructure: Domains、T1566.002Spearphishing Link、T1598.003Phishing for Information、T1583.006Acquire Infrastructure: Web ServicesMITRE ATLASAML.T0073、AML.T0052MITRE F3reconnaissance / resource-development / initial-access 战术下的 T1598、T1593Search Open Websites/Domains、T1583.001、F1020.002Create Fake Materials: Fake Website、T1660PhishingNIST CSFDE.CM-01Continuous Monitoring、DE.AE-02Anomalous Activity Analysis、GV.OV-01Organizational Communication、RS.MA-01Monitoring。如需查看这些技法在整个仓库 817 项技能中的总体覆盖情况可加载 attack-navigator-layer.json 至 MITRE ATTCK Navigator 进行可视化分析相关方法见 mappings/README.mdanalyzing-certificate-transparency-for-phishing等相邻技能与 T1566.002 的映射记录可参考 mitre-attack 映射文档。九、局限性与注意事项本文所有查询结果均为公开 CT 数据时效与完整性取决于 crt.sh 与 certstream 服务的实际状态crt.sh 的search()与 REST API 结果可能包含已过期证书agent.py 提供了include_expired参数与仅保留未过期证书的过滤逻辑实际使用时请根据分析目标决定是否过滤Levenshtein 阈值max_distance3与 CA 白名单均为启发式配置应根据品牌名称长度、行业与历史攻击模式调优以避免大量误报或漏报CT 日志无法覆盖所有证书签发仅能覆盖提交至 CT 的证书分析结论需与其他威胁情报源WHOIS、被动 DNS、EDR/SIEM 日志交叉验证。通过将 pycrtsh 的结构化查询、crt.sh REST 的原始接口与 certstream 的实时推送相结合并复用仓库 agent.py 的检测流水线SOC 与威胁情报团队可以低成本地建立针对钓鱼域名的被动监测与早期预警能力。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, 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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门