讨论证书分析在信息搜集中的一些作用-Certificate-Analysis-技术教程-2024
一、缘起
因为在进行Whois
反查的时候需要用到组织名,邮箱来反查。
对于大公司来说,组织名更准确一些。
而获取组织名最好的方式就是看Tls
证书。
由于一个公司可能曾经用过多个组织名,为了信息搜集的广度,需要使用一种方法来寻找这个公司之前有没有用过别的组织名。
有一个网站可以帮我们寻找相关的证书,从而找到相关的组织名。
二、证书分析的作用
证书查询网站:Crt.sh
1、获取相关组织名
想查哪个公司就输入一个关键字,比如特斯拉就是Tesla
。
这里可以看到好多证书以及他们的组织名。
2、绕过Cdn查找真实Ip
这一部分不太会,可以看这些博主。
使用Crt绕过Cdn教程:使用Crt绕过Cdn
3、通过证书透明度(CT)来探索域名关联性
这一部分更加是云里雾里,有明白的大佬可以出来解释一下它们的逻辑吗?
大概看个意思是,攻击者会将钓鱼网站的证书托管在平台上自动更新,由于攻击者通常将一部分钓鱼网站都集中在一台服务器上,所以当更新证书时,这台服务器上其他的钓鱼网站也会更新证书,于是我们可以通过证书发布的时间戳来寻找其中的关联性。
但是由于我对证书不太熟,钓鱼也不太熟,这一部分暂且放着。
来着这位大佬的文章,如何通过CT(Certificate Transparency)来发现恶意网站:UNsafe
这一篇像是抄上面一篇的:通过证书透明度发现更多相关资产
三、补充
在进行证书分析的过程中,我们对很多专业术语可能不太了解,例如San,Ca,Cn等等。
为了补充这些知识,我们还需要阅读以下的文章。
Tls证书知识科普:Tls证书知识科普
Tls证书中的各个字段:各个字段名称解析
在学习这个的时候最好打开一个证书对照着看,这样体会更深。
还有一些其他字段的解释,上面的文章没有描述,我在这里补充Ai的说法。
1、预证书时间戳
CT Precertificate SCTs(证书透明度预证书时间戳)是用于增强证书透明度的一种机制。它们提供了对预证书的时间戳记录,帮助验证证书的透明性和防止伪造。以下是字段的详细解释:
1. Signed Certificate Timestamp (SCT)
Version
- v1 (0x0): SCT 的版本号,表示使用的是版本 1 的时间戳。
Log Name
DigiCert Yeti 2024: 表示证书时间戳是由 DigiCert 的 Yeti 日志记录系统生成的。
Google Argon 2024: 表示证书时间戳是由 Google 的 Argon 日志记录系统生成的。
Log ID
- 这是每个时间戳记录的唯一标识符。它是一个十六进制字符串,用于区分不同日志系统的时间戳记录。
Timestamp
- 记录时间戳的具体时间。例子中的时间是 Jul 25 08:56:50.383 2024 GMT 和 Jul 25 08:56:50.388 2024 GMT,表明时间戳记录生成的时间。
Extensions
- none: 指定时间戳中没有扩展字段。
Signature
- 时间戳的签名,使用 ecdsa-with-SHA256 签名算法。这个签名用于验证时间戳的完整性和真实性。
总结
CT Precertificate SCTs 的这些信息帮助证书使用者和验证者验证证书的透明性,确保证书的颁发过程是公开和可追踪的。时间戳记录表明证书已经被日志记录,并且时间戳可以被用来验证证书的真实和合规性。
2、证书策略
X509v3 Certificate Policies
扩展字段用于指定证书的使用政策和要求。这个扩展字段包含一个或多个政策标识符,用于描述证书颁发机构(CA)如何颁发证书以及证书的适用范围。让我们详细解析你提到的Policy: 2.23.140.1.2.1
:1. Certificate Policies 扩展
字段内容:
Policy: 2.23.140.1.2.1
解释:
- Certificate Policies 扩展字段定义了与证书相关的政策和标准,帮助证书使用者和验证者了解证书的颁发和使用的背景。
- 每个政策标识符(如
2.23.140.1.2.1
)对应一个特定的政策或标准,通常是由标准化组织或证书颁发机构定义的。2. 政策标识符解释
2.23.140.1.2.1 是一个标识符,遵循了 Object Identifier (OID) 标准。OID 是一种全球唯一的标识符,用于唯一标识各种对象,如政策、标准、协议等。
OID
2.23.140.1.2.1
具体指代的是 Let’s Encrypt 颁发的证书使用的政策。Let’s Encrypt 采用了这样的 OID 来标识其证书政策,确保其证书符合特定的安全标准和要求。3. 实际意义
- 证书政策: 这个政策标识符表明,证书遵循了一个特定的证书政策,这可能包括证书的颁发和管理规则、使用范围、安全要求等。证书使用者可以通过这个标识符查找相关的政策文档,以了解证书的具体使用要求和背景。
总结
X509v3 Certificate Policies
扩展字段中的Policy: 2.23.140.1.2.1
表明该证书遵循特定的政策标准,这个标识符可以用来追踪和验证证书的颁发和使用规则。在这个例子中,它指向 Let’s Encrypt 使用的一个特定的证书政策。通过这种方式,证书持有者、验证者以及相关方可以了解证书的具体政策和标准。
3、密钥用法
这些 X.509v3 扩展字段用于定义证书的使用规则和限制。让我们逐个解释这些扩展字段的含义:
1. X509v3 Key Usage
字段内容:
critical Digital Signature, Key Encipherment
解释:
- Key Usage 扩展定义了证书的密钥可以用于哪些操作。
- critical: 表示这是一个关键扩展,如果应用程序不理解这个扩展,它可能会拒绝使用这个证书。
- Digital Signature: 证书中的密钥可以用于数字签名,这通常用于验证消息的完整性和身份。
- Key Encipherment: 证书中的密钥可以用于加密会话密钥,用于保护数据的加密过程(如在 SSL/TLS 协议中)。
2. X509v3 Extended Key Usage
字段内容:
TLS Web Server Authentication, TLS Web Client Authentication
解释:
- Extended Key Usage 扩展进一步定义了证书可以用于哪些具体的应用场景。
- TLS Web Server Authentication: 证书可以用于 Web 服务器的身份验证,即它可以用来保护与 Web 服务器的 TLS/SSL 连接。
- TLS Web Client Authentication: 证书可以用于客户端的身份验证,即它可以用来对客户端进行身份验证,在某些情况下,服务器可能需要验证客户端的证书。
3. X509v3 Basic Constraints
字段内容:
critical CA:FALSE
解释:
- Basic Constraints 扩展用于定义证书是否可以作为证书颁发机构(CA)使用以及该证书的层级。
- critical: 表示这是一个关键扩展,应用程序必须理解并遵守这个扩展的规则。
- CA:FALSE: 表示这个证书不是一个证书颁发机构(CA)证书。这意味着这个证书不能用于签发其他证书,只能用于实际的身份验证或加密任务。
总结
这些扩展字段共同定义了证书的使用范围和目的:
- Key Usage 指定了密钥的用途,包括数字签名和密钥加密。
- Extended Key Usage 进一步限定了证书的具体应用场景,如 Web 服务器和客户端的 TLS 身份验证。
- Basic Constraints 指明了证书的用途限制,表明它不是一个 CA 证书。
这些信息有助于确保证书在其预定的使用场景中正确、安全地使用。
4、为什么宝马的颁发者Cn是R10,这看起来不像一个域名?
如果这是宝马(BMW)网站的证书信息,但颁发者的 CN(Common Name)字段显示为 "R10",这可能是由于以下几个原因:
证书颁发机构的内部标识: 证书颁发机构(CA)有时会在其证书的颁发者字段中使用内部标识符。例如,"R10" 可能是 Let's Encrypt 作为 CA 内部使用的某种标识符,而不是外部可见的域名。这样的标识符可能用于区分不同的证书颁发模板、服务或证书颁发策略。
多个证书模板: Let's Encrypt 可能使用不同的证书模板来颁发证书。CN 字段的 "R10" 可能指代某个特定的证书模板或颁发策略,而不是实际的域名。这种做法有助于管理大量的证书并跟踪它们的来源。
颁发者与被颁发者的混淆: 在某些情况下,证书的颁发者信息可能与证书持有者的信息混淆。在你提供的例子中,证书的颁发者是 Let's Encrypt,而 CN 字段的 "R10" 可能是 Let's Encrypt 用于内部管理的标识符,而不是宝马网站的实际域名。
证书链中的中间证书: 证书链通常包括根证书和中间证书。Let's Encrypt 作为一个 CA 可能使用不同的中间证书来签发证书,"R10" 可能是其中一个中间证书的标识符。
为了确认具体情况,你可以查看证书链中的其他证书,特别是中间证书和根证书,通常在证书详细信息中会有更多关于证书颁发者和其使用的标识符的说明。如果你需要更详细的信息,建议联系 Let's Encrypt 或证书提供者以获取确切的解释。
5、证书中的San?
San证书:San证书