前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CryptoLyzer:全面的密码设置分析器

CryptoLyzer:全面的密码设置分析器

作者头像
Khan安全团队
发布2022-01-21 14:01:04
7820
发布2022-01-21 14:01:04
举报
文章被收录于专栏:Khan安全团队Khan安全团队

CryptoLyzer 是一个多协议加密设置分析器,具有 SSL/TLS、SSH 和 HTTP 标头分析能力。该工具的主要目的是告诉您在客户端或服务器上启用了哪种加密相关设置。

如果您对项目背后的原理不感兴趣,但对实践感兴趣,请随意跳过下一节并跳到实践部分。

基本原理永久链接

有许多著名的开源项目(SSLyze、CipherScan、testssl.sh、tls-scan ……)和几个 SaaS 解决方案(CryptCheck、CypherCraft、Hardenize、ImmuniWeb、Mozilla Observatory、SSL Labs ……)来进行安全设置分析,尤其是当我们谈论 TLS 时,它是最常见和流行的加密协议。但是,这些工具中的大多数都严重依赖于一个或多个加密协议库的一个或多个版本,例如GnuTLS、OpenSSL或wolfSSL. 但为什么会出现这样的问题?

小问题是依赖很容易将它们卡在SSL / TLS / DTLS中,因为这些库无法直接实现其他加密协议(例如:IPSec VPN、Kerberos、OpenVPN、SSH ……)。分析器应用程序支持它们需要额外的努力。无论如何,对密码设置的大多数分析都不需要任何密码,因为在各方就密码算法达成一致之前,他们使用纯文本。

主要问题是分析应该测试有意触发的协议的特殊和极端情况。使用加密协议库很难做到这一点,该库是为生产而不是渗透测试或设置分析而设计的。在分析期间,尝试使用几乎不支持的、实验性的、过时的甚至不推荐使用的机制或算法来建立连接,以确定给定的客户端或服务器实现支持哪些机制或算法。这些机制和算法可能会或可能不会被任何加密协议实现的最新或任何版本支持。

这就是为什么大多数现有工具都需要依赖库的特殊构建,其中重新启用过去美好时光的所有协议版本和算法,以便有机会设置这些库以将它们作为客户端或服务器提供。但是如果我们想测试一个从未被依赖密码库实现过的算法或机制呢?

这不仅仅是一个理论。由 Pluralsight 作者Peter Mosmans维护的 OpenSSL的一个特殊分支旨在拥有尽可能多的密码。Mozilla Cipherscan 使用并推荐了这个 fork,然而,它可以提供不到 200 个密码套件,但根据Cipher Suite Info ,在不同的RFC中有超过 300 个密码套件。他们中的大多数人都很虚弱或不安全,这使得参与分析变得尤为重要。此外,确实有一些密码套件不在密码套件信息列表中,例如俄罗斯标准 ( GOST ) 密码套件。这些是很少使用的密码套件,但有一个实现它们的OpenSSL 引擎,因此应该检查它们。

TLS 协议的其他部分(如扩展)的情况类似。加密库不太可能支持每个扩展,但其中一些可能由某些库实现。例如, TLS 1.3 中的多证书状态请求扩展和 Diffie-Hellman 密钥交换不是由 OpenSSL 1.x 实现的,而是由 GnuTLS 和 WolfSSL 实现的。另一个例子可以是SSH 协议中基于 X.509 证书的身份验证,它由Tectia SSH支持并具有开源实现,但默认 OpenSSH 不支持。即使它们不那么常见,一个全面的设置分析器工具也应该对它们进行检查。

总结建立一个新项目而不是为现有项目做出贡献的主要原因是这样一种观点,即当我们触发特殊和极端情况时,分析主要是测试,几乎不支持、实验性、过时甚至弃用的机制和算法,所以综合分析器应尽可能独立于当前的加密协议实现来实现。

目标永久链接

CrypytoLyzer 专注于全面性、多协议能力和库独立性。为此,实施加密协议客户端只关注必要的部分(通常是握手)。这种客户端可以根据很少或私人使用、不推荐或完全不安全的算法和机制检查服务器。

  • 零信任
    • 在分析过程中不需要任何特权
    • 不需要任何凭据(除非是绝对必要的)
    • 不应为第 3 方提供任何信息
  • 完整性
    • 应该能够支持尽可能多的加密协议(DTLS、IPSec、OpenVPN、TLS、SSL、SSH……)
    • 应该能够处理加密协议的特殊/极端情况
  • 可用性
    • 应该在公共和私人网络中工作
    • 应该能够给出一个人类可读的摘要(Markdown)
    • 应该能够提供机器可读的详细输出(JSON)
    • 应可定制以满足特殊需求(Python库)

现有的解决方案只关注一种加密协议(TLS 或 SSH),尽管事实上所有加密协议都具有相同的构建块(身份验证、密钥交换、对称密码、完整性),因此它们可以在相同的情况下进行分析(或几乎相同)方式,只有分析所基于的信息可以不同地获取。

特征永久链接

上面的目标只是目标,而不是当前的开发状态,特别是在撰写本文时实际版本号为 0.8.0。目前支持的加密协议系列​​是 SSL/TLS 和 SSH。您可以阅读下面的开源或专有 (SaaS) 解决方案的比较分析。我想像作者一样对竞争对手保持客观,但如果我没有做到,请原谅我。

优势永久链接

传输层安全 (TLS)永久链接

特产永久链接

Cryptolyzer 支持早期和已弃用的安全套接字层 (SSL) 2.0和每个传输层安全版本,直到TLS 1.3版本,包括草稿版本。尽管使用最流行的 SSL/TLS 实现(例如:GnuTLS、 LibreSSL 、OpenSSL、wolfSSL ……)很难或很难检查某些功能,或者只是不在它们的范围内。这些检查是 Cryptolyzer 的特色,例如支持ciphersuite.info(以及更多)上讨论的每个密码套件,包括俄罗斯政府标准 (GOST) 密码套件、Diffie-Hellman 参数检查、JA3 标签生成……

加密分析器

Qualys SSL 实验室

免疫网

硬化

莫兹。观察。

测试.sh

SSL-yze

TLS 1.3 草案版本

TLS 1.3 DH 参数

TLS GOST密码

TLS DH ParamPrime 检查

TLS DHE 参数重用检查

TLS ECDH 参数重用检查

0.9.x

SSH DH参数检查

JA3标签生成

JA3标签解码

89%

33%

0%

11%

0%

0%

22%

0%

机会性 TLS永久链接

一些应用层协议具有扩展以将纯文本连接升级到加密连接 (TLS),而无需使用称为机会 TLS (STARTTLS) 的单独端口。在大多数协议的情况下,分析器都支持这种机制。

加密分析器

Qualys SSL 实验室

免疫网

硬化

莫兹。观察。

测试.sh

SSL-yze

FTP

地图

LDAP

LMTP

MySQL

0.9.x

NNTP

POP3

PostgreSQL

RDP

SMTP

XMPP (Jabber)

92%

0%

8%

17%

0%

83%

67%

扩展永久链接

原始 TLS 规范有几个扩展,它们同时具有安全性和兼容性考虑。与大多数竞争对手相比,CryptoLyzer 可以分析大量的扩展类型。

加密分析器

Qualys SSL 实验室

免疫网

硬化

莫兹。观察。

测试.sh

SSL-yze

后备 SCSV

TLS 时钟偏差

压缩

安全重新协商

不安全的重新协商

0.8.x

会话缓存

会话票务

椭圆曲线

EC 点格式

应用程序。层原型。谈判

下一个协议协商

扩展大师秘密

加密然后mac

润滑脂检查

0.9.x

握手长度不容忍

0.9.x

80%

73%

40%

0%

0%

73%

53%

安全外壳 (SSH)永久链接

除了 TLS,还有一些其他的加密协议,比如 SSH。加密协议具有相同的构建块(身份验证、密钥交换、对称密码、完整性),因此可以以相同的方式对其进行分析,并且可以使用 CryptoLyzer 使用相同的工具完成,而不会妥协。

加密分析器

莫兹。观察。

操作性 SSH 检查

Rebex SSH 检查

SSH 会议。审计师

ssh 审计

SSH 扫描

算法

主机密钥

主机证书

0.9.x

X.509 证书

0.10.x

DH 参数检查

横幅分析

67%

17%

50%

17%

33%

33%

50%

HTTP 标头永久链接

安全永久链接

应用层也有安全机制,不仅在传输层。HTTP 协议就是一个很好的例子,因为加密(HSTS)、身份验证(Expect-CT、Expect-Staple)、内容完整性(子资源完整性、内容安全策略)相关的标头由 CryptoLyzer 详细解析。

加密分析器

Qualys SSL 实验室

免疫网

硬化

莫兹。观察。

测试.sh

SSL-yze

内容安全政策

0.9.x

CSP 报告对象

0.9.x

期望证书透明度

期待 OCSP 主食

HTTP 严格传输安全

HTTP 公钥固定

0.10.x

推荐人政策

子资源完整性

0.8.x

X 内容类型选项

X 框架选项

X XSS 保护

0.8.x

55%

18%

9%

55%

82%

18%

18%

通用的永久链接

有几个 HTTP 标头与安全性没有密切关系。虽然,其中一些,特别是缓存头(Age、Cache-Control、Date、ETag、Expires、Last-Modified)在缓存头指示安全相关信息(例如:CRL)过时时可能具有重要意义。

加密分析器

Qualys SSL 实验室

免疫网

硬化

莫兹。观察。

测试.sh

SSL-yze

内容类型

服务器

应用横幅

0.9.x

年龄

缓存控制

日期

电子标签

过期

上一次更改

编译指示

代理横幅

0.9.x

设置Cookie

0.10.x

75%

0%

0

8%

75%

42%

0%

弱点永久链接

传输层安全 (TLS)永久链接

X.509 扩展永久链接

TLS 中有一些与 X.509 相关的机制可能对安全性产生严重影响,特别是撤销检查,这是公钥基础设施(PKI)的弱点。Cryptolyzer 在该领域落后于竞争对手。

加密分析器

Qualys SSL 实验室

免疫网

硬化

莫兹。观察。

测试.sh

SSL-yze

OCSP 装订

OCSP 必须装订

0.8.x

证书透明度

0.8.x

多个受信任的根 CA 存储

0.9.x

撤销状态

0.10.x

20%

100%

80%

100%

40%

80%

80%

通用的永久链接

可用性是 Cryptolyzer 应该发展的另一个领域。全面性还不够,要突出弱点、漏洞,使分析结果更容易理解。

加密分析器

Qualys SSL 实验室

免疫网

硬化

莫兹。观察。

测试.sh

SSL-yze

客户端仿真

弱点检查

漏洞检查

输出亮点

0%

100%

75%

50%

75%

100%

25%

机会永久链接

DNS 记录永久链接

如今,与安全设置相关的信息尤其存储在 DNS 记录中,但不仅限于 SMTP 协议。CryptoLyzer 可以分析这些记录,并计划很快完成必要的实施。

加密分析器

Qualys SSL 实验室

免疫网

硬化

莫兹。观察。

测试.sh

SSL-yze

DNS CAA

MTA-STS

丹麦人

防晒指数

DMARC

TLS-RPT

0%

17%

17%

100%

17%

17%

0%

其他协议永久链接

一些加密协议使用 TLS 协议的变体。一些协议封装了原来的 TLS 协议,如OpenVPN、QUIC,根据 UDP 的需要,还有一个 TLS 的修改版本,称为DTLS。将来他们的支持将在 CryptoLyzer 中相对容易地实现。

实践永久链接

安装永久链接

CryptoLyzer 可以从Python 包索引(PyPi)轻松安装

代码语言:javascript
复制
$ pip install cryptolyzer

或通过 Docker Hub 容器映像库(docker hub)中的 Docker

代码语言:javascript
复制
$ docker pull coroner/cryptolyzer

并且有用于基于 DEB(Debian、Ubuntu、...)和 RPM(Fedora、RHEL、SUSE)的系统的预构建包。

用法永久链接

命令行界面与 OpenSSL 命令行工具稍有相似。在每个级别的子命令上,都可以使用 –help 选项提供全面的帮助。分析主题可以作为 URL 格式的参数多次给出。URL 的大部分时间方案和端口部分根据分析器具有默认值(例如:tls、ssh)。

代码语言:javascript
复制
$ cryptolyze tls all www.example.com

$ cryptolyze tls1_2 ciphers https://www.example.com:443

$ cryptolyze ssh all www.example.com

$ cryptolyze ssh2 ciphers ssh://www.example.com:22

$ cryptolyze http headers http://www.example.com/path?query#fragment

或者可以通过 Docker 使用

代码语言:javascript
复制
$ docker run --rm coroner/cryptolyzer tls all www.example.com

$ docker run --rm coroner/cryptolyzer tls1_2 ciphers https://www.example.com:443

$ docker run --rm coroner/cryptolyzer ssh all www.example.com

$ docker run --rm coroner/cryptolyzer ssh2 ciphers ssh://www.example.com:22

$ docker run --rm coroner/cryptolyzer http headers http://www.example.com/path?query#fragment

CryptoLyzer:一个全面的密码设置分析器根据知识共享署名-相同方式共享 4.0 国际许可证获得许可

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本原理永久链接
  • 目标永久链接
  • 特征永久链接
    • 优势永久链接
      • 传输层安全 (TLS)永久链接
      • 安全外壳 (SSH)永久链接
      • HTTP 标头永久链接
    • 弱点永久链接
      • 传输层安全 (TLS)永久链接
      • 通用的永久链接
    • 机会永久链接
      • DNS 记录永久链接
      • 其他协议永久链接
  • 实践永久链接
    • 安装永久链接
      • 用法永久链接
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档