通过SSL证书进行信息收集总结

admin 2024年5月9日03:40:47评论8 views字数 9711阅读32分22秒阅读模式

1.相关概念简介

1.1Certificate Transparency(证书透明)

   证书透明(Certificate Transparency)是一项旨在提高SSL/TLS证书系统透明度和安全性的技术标准。它最初由Google提出,并在2013年开始实施。

证书透明的主要目标是通过公开记录所有SSL/TLS证书的签发情况来提高证书系统的透明度。其核心原理是将证书颁发机构(CA)颁发的每个证书都公开记录在一个或多个公共日志中,这些日志可以被任何人查看。

这项技术提供了以下好处:

1.检测恶意行为

公开记录证书可以帮助发现恶意颁发的证书,如假冒证书或恶意颁发机构签发的证书。

2.监控证书使用

网站所有者和安全专家可以监控其域名的证书使用情况,确保没有未经授权的证书。

3.提高透明度

记录所有证书的签发情况增加了证书系统的透明度,有助于公众监督和信任证书颁发机构。

4.安全警报

一些证书透明日志提供了警报功能,可以在发现可疑证书时立即通知相关方。

总的来说,证书透明技术通过增加证书系统的透明度和公开性来提高SSL/TLS证书系统的安全性和信任度。

1.2网站证书

    网站证书通常是指用来加密网站传输的SSL证书,也称为安全套接层证书。这种证书通过部署SSL证书认证用户与服务器,经过SSL层加密将数据准确地发送到服务器。以下是关于网站证书的一些重要信息:

1.作用

部署SSL证书后,采用超强加密方式以防数据中途被盗取,大大降低了第三方窃取信息、篡改冒充身份的风险。

确保用户安全登录后在线提交个人机密信息、公司机密信息和浏览其机密信息时能从用户电脑到网站服务器之间自动加密传输,防止非法窃取和非法篡改。

让用户能在线查询网站服务器的真实身份,防止被假冒网站所欺诈。

对于电子商务网站,部署SSL证书可以让用户放心交易,因为它表明服务提供商采取了可靠的技术措施来保证用户的机密信息安全,并表明网站的真实身份已经通过权威的第三方认证。

2.证书类型

  • 基础型SSL证书:适合小型网站或个人网站,提供基本的加密保护和简单的验证。

  • 中级型SSL证书:适合企业网站或需要提供一定服务的网站,提供较高的加密保护和身份证明。

  • 扩展型SSL证书:适合金融、电商等需要提供高安全性保障的网站,提供最高级别的加密保护。

  • 泛域名SSL证书:适合有多个二级域名的网站,可以保护多个子域名,减少证书购买和管理成本。

  • EV SSL证书:适合需要提供最高安全性保障的网站,如金融、政府等机构。

3.获取途径

  • 通过受信任的证书颁发机构(CA)购买,如JoySSL、GeoTrust、DigiCert等。

  • 云服务商提供的SSL证书服务,如阿里云、腾讯云、AWS等。

  • Web主机或域名注册商处购买。

  • 内部颁发(仅限于企业内部使用场景)。

4.管理和更新

  • 选择可靠的证书颁发机构(CA)。

  • 定期检查证书到期日期,确保在到期之前更新证书。

  • 使用自动化工具来管理证书更新。

  • 在更新证书时,遵循最佳实践来确保安全性。

  • 部署新证书并更新证书链。

1.3SSL证书

1.SSL v2

这是最早的SSL协议版本,但由于存在多处安全漏洞,现已不再安全,也不再被现代系统支持或使用。

2.SSL v3

SSL协议的第三个版本,同样因为发现的安全漏洞(如POODLE攻击)而被现代浏览器和服务器弃用。

3.TLS v1.0

作为SSL v3的后续升级,TLS v1.0修复了一些安全问题,但随着时间推移,也被发现有安全弱点,其使用正在减少。

4.TLS v1.1:

提供了比TLS v1.0更强的安全性,但同样因更安全的版本出现而逐渐被淘汰。

5.TLS v1.2

目前广泛支持并使用的版本,增强了加密算法的选择性和安全性。

6.TLS v1.3

最新的TLS协议版本,进一步提升了效率和安全性,减少了握手时间,优化了加密流程,并禁用了不安全的加密套件。

1.4安全证书安全漏洞或者安全隐患

    安全证书旨在保障网络通信的安全性,但它们并非无懈可击,存在以下一些安全漏洞或隐患:

1.过期问题

安全证书都有有效期限,一旦过期,浏览器会警告用户连接不安全,可能导致用户信任度下降,或者服务中断。过期证书可能使网站容易遭受中间人攻击。

2.证书撤销列表(CRL)与在线证书状态协议(OCSP)问题

证书撤销机制可能因未及时更新或查询失败而失效,使得已被撤销的证书仍能被错误地视为有效。

3.弱加密算法和密钥

早期的SSL/TLS版本或较弱的加密算法(如RSA密钥长度不足,SHA-1哈希算法)可能被现代计算能力破解,使通信内容易受监听和篡改。

4.自签名证书

自签名证书没有经过权威CA认证,浏览器通常会标记为不安全,可能导致用户误入假冒网站,或使合法站点显得不可信。

5.中间人攻击(MITM)

攻击者可能伪造证书,冒充合法服务器,如果用户或系统未严格验证证书链和CA信任,就可能落入圈套。

6.配置错误

错误的SSL/TLS配置,如不支持前向保密(Perfect Forward Secrecy, PFS),或启用不安全的协议版本,都会降低连接的安全性。

7.证书颁发机构(CA)信任危机

如果CA的安全被破坏,导致非法颁发证书,将对整个PKI体系构成威胁,影响众多依赖这些CA的网站和用户。

8.域名不匹配或错误颁发

证书上的域名与实际访问的域名不符,或证书被错误地颁发给了未授权实体,这都可能指示存在安全问题。

9.依赖链问题

证书链中的任何一个环节出现问题,如根证书未被正确安装在客户端,都可能导致证书无法被验证。

10.软件和系统漏洞

实现SSL/TLS协议的软件或操作系统自身存在的漏洞,也可能被利用来绕过证书安全机制。

为减轻这些风险,组织应定期检查和更新其安全证书,采用强加密标准,确保从可信CA获取证书,并且正确配置SSL/TLS协议。同时,终端用户也应该保持系统和浏览器的更新,以利用最新的安全改进和漏洞修复。

1.4.1安全漏洞扫描提示的SSL证书漏洞

进行漏洞扫描时提示的SSL安全漏洞问题主要包括但不限于以下几种:

  1. 过时的SSL/TLS协议版本:使用SSL 2.0或SSL 3.0等已知存在重大安全漏洞的老旧协议,这些协议易受到POODLE等攻击。

  2. Heartbleed漏洞:特定版本的OpenSSL中存在的严重漏洞,允许攻击者通过不安全的心跳扩展窃取服务器内存中的敏感信息,包括私钥和密码。

  3. BEAST攻击:针对TLS 1.0及更低版本的攻击,攻击者能够解密HTTPS会话的部分内容。

  4. CRIME攻击:一种针对压缩的SSL/TLS流量的攻击,可恢复部分敏感信息。

  5. POODLE攻击: Padding Oracle On Downgraded Legacy Encryption (POODLE) 攻击针对SSL 3.0,允许攻击者在降级到SSL 3.0的连接中解密数据。

  6. RC4流加密漏洞:尽管RC4曾被用于规避BEAST攻击,但它本身存在安全问题,可能导致信息泄露。

  7. TLS Renegotiation漏洞:允许攻击者插入内容到正在进行的SSL/TLS会话中。

  8. SWEET32攻击:针对使用弱CBC模式的块加密算法(如3DES)的攻击,可能通过大数据量的流量分析破解加密。

  9. Certificate Transparency问题:缺乏透明度可能导致CA错误颁发证书未被及时发现。

  10. 弱密钥和签名算法:如使用MD5或SHA-1散列算法的证书,这些算法已被证明存在安全弱点。

  11. TLS/SSL信息泄露漏洞:如CVE-2016-2183(DROWN攻击)、CVE-2015-2808(BAR-MITZVAH攻击)等,这些漏洞能泄露加密信息。

  12. 自签名或不受信任的证书:未由受信任CA签发的证书可能导致警告或拒绝服务。

解决这些漏洞通常涉及升级SSL/TLS协议至最新版本(至少TLS 1.2或1.3),禁用不安全的加密套件和算法,定期更换和更新证书,以及遵循行业最佳安全实践。

1.4.2SSL安全漏洞修复及加固建议

修复和加固SSL安全漏洞通常需要一系列的步骤,以下是一些关键措施:

1. 更新协议版本

  • 禁用过时的SSL/TLS版本:确保服务器只支持TLS 1.2及以上版本,TLS 1.3是最安全的选项。

  • 配置协议优先级:在服务器上设置最优的TLS密码套件顺序,优先考虑强加密算法和协议版本。

2. 强化加密套件

  • 禁用弱加密算法:包括RC4、DES、3DES、MD5、SHA-1等,仅使用AES、ChaCha20等强加密算法。

  • 启用前向保密(PFS):确保会话密钥即使服务器私钥泄露也不会被破解,常用PFS套件如ECDHE和DHE。

3. 证书管理

  • 使用受信任的CA:确保SSL证书由知名的证书颁发机构签发,并定期更新证书。

  • 证书有效期:监控并及时续订即将过期的证书,避免服务中断。

  • 证书透明度:确保新颁发的证书加入CT日志,提高证书的可验证性。

4. 配置服务器安全

  • 正确配置SSL设置:根据服务器类型(如Apache、Nginx、IIS)按照最佳实践配置SSL参数。

  • 安全头设置:启用HTTP严格传输安全(HSTS)、X-XSS-Protection、Content-Security-Policy等头部,增强浏览器与服务器间通信的安全性。

5. 定期扫描与监控

  • 漏洞扫描:定期使用安全工具扫描SSL/TLS配置,及时发现并修复新出现的安全漏洞。

  • 监控日志:定期审查服务器和应用程序日志,注意异常行为和潜在的攻击迹象。

6. 操作系统与软件更新

  • 保持系统更新:定期更新操作系统、中间件和所有相关的软件组件,修复已知的安全漏洞。

  • 补丁管理:及时应用安全补丁,特别是针对SSL/TLS协议的补丁。

7. 教育与培训

  • 员工培训:提高团队对网络安全的认识,特别是SSL/TLS安全的重要性,避免内部操作失误。

8. 网络架构优化

  • 网络分段:合理规划网络架构,减少攻击面,确保敏感服务只在必要的端口和路径上可用。

通过上述措施,可以显著提升SSL/TLS的安全性,减少被攻击的风险,保护数据传输的机密性和完整性。

1.5 SSL证书信息查看

     查看网站的安全证书(通常是SSL证书)可以通过多种方法来实现,具体取决于您使用的浏览器和工具。以下是几种常用的方法:

1.通过浏览器地址栏查看

    大多数现代浏览器(如Chrome、Firefox、Safari等)在访问HTTPS网站时,地址栏前面会显示一个锁形状的图标或绿色的安全标志。

点击这个锁图标或安全标志,通常会弹出一个窗口或对话框,其中包含关于该网站SSL证书的详细信息,如颁发机构、有效期、加密套件等。

通过SSL证书进行信息收集总结

2.使用浏览器开发者工具

在Chrome、Firefox等浏览器中,您可以使用开发者工具来查看网站的证书信息。

打开开发者工具(通常可以通过按F12键或右键点击页面并选择“检查”来打开),然后切换到“安全”或“证书”选项卡。

在这里,您可以查看当前网页的证书详情,包括颁发机构、有效期、域名等信息。

通过SSL证书进行信息收集总结

3.命令行工具查看

命令行工具: 如果您使用的是Unix/Linux系统,您可以使用命令行工具如openssl来获取网站证书的信息。例如,您可以运行以下命令来获取Google的证书信息:

echo | openssl s_client -servername google.com -connect google.com:443 2>/dev/null | openssl x509 -noout -text

1.6 SSL证书价格

SSL证书的价格因类型、验证级别以及提供商而异,以下是大致的价格范围:

1.域名验证型(DV SSL)

最基础的类型,主要用于验证网站的域名所有权,价格通常在几百元到几千元人民币之间,具体依品牌和购买渠道而定。

2.企业验证型(OV SSL)

需要验证企业的详细信息,如企业名称、地址和电话等,增加了额外的信任层,价格一般在几千元到上万元人民币之间。

3.扩展验证型(EV SSL)

提供最高等级的信任,除域名和企业信息验证外,还会在浏览器地址栏显示绿色的公司名称,价格大约在几万元到十几万元人民币一年。

4.通配符证书

可以保护一个主域名及其所有子域名,价格通常从几千元到几万元人民币一年起。

5.多域名/SAN证书

可以保护多个不同的域名或子域名,价格范围大约从几百元到几千元人民币一年起,依据包含的域名数量不同而变化。

    请注意,这些价格仅供参考,实际购买时应直接咨询证书颁发机构(CA)或其代理商,因为价格可能会随市场情况、促销活动以及汇率变动而有所不同。另外,一些云服务商或网络服务提供商也可能会提供集成的SSL证书服务,价格和服务内容可能会有所差异。

通过SSL证书进行信息收集总结

1.2域名在线查询证书 

1.2.1 crt.sh网站

     crt.sh 是一个用于查询证书透明数据库(Certificate Transparency,CT)的工具。它可以帮助用户查找为域颁发的证书、日志条目等内容。

具体来说,crt.sh 有以下用途:

  • 证书查询:用户可以通过 crt.sh 搜索证书,了解域名的证书信息,包括颁发机构、有效期等。

  • 子域名收集:crt.sh 可以通过证书查找子域名,这对于安全研究和渗透测试非常有帮助。

  • 指纹识别:crt.sh 还可以用于指纹识别,帮助用户识别特定的证书或域名。

1.域名查询

在输入框中输入域名进行查询,建议使用域名不带www来进行查询,否则只会显示命中结果的查询。

通过SSL证书进行信息收集总结

2.查询子域名信息

子域名信息一般在“Common Name”,对其进行整理即可获取带有证书的子域名信息。

  • 打开 crt.sh 网站:在浏览器中输入 https://crt.sh/

  • 输入域名或 IP:在 crt.sh 网站的搜索框中输入要查询的域名或 IP。

  • 查看证书信息:crt.sh 会显示与输入的域名或 IP 相关的所有证书信息,包括证书的颁发机构、有效期、证书类型等。

有些查询可能没有结果,例如对baidu.com进行查询,其结果就非常多。

通过SSL证书进行信息收集总结

1.2.2 censys

   Censys (https://search.censys.io/)是一家网络安全公司,专门从事互联网资产发现和暴露评估。他们提供了一个基于搜索引擎和数据分析的平台,用于帮助企业和组织识别、监控和保护其互联网资产。Censys 平台可以提供对互联网连接设备、服务、域名和证书的实时洞察。

Censys 的主要功能包括:

1. 互联网资产发现: Censys 能够扫描和识别全球范围内的互联网连接设备和服务,包括主机、端口、协议等。

2. 暴露评估: Censys 平台提供了对组织资产的暴露程度评估,帮助用户识别潜在的安全风险和漏洞。

3. 证书分析: Censys 平台能够跟踪 SSL/TLS 证书,包括证书的签发和失效情况,以及关联的域名和 IP 地址。

4. 搜索和查询: 用户可以使用 Censys 平台的搜索功能来查询特定的互联网资产和服务,从而了解全球范围内互联网活动的情况。

5. 报告和通知: Censys 提供自定义报告和通知功能,帮助用户实时跟踪其资产的状态和安全状况。

Censys 对于安全研究人员、网络安全团队和其他对互联网资产和暴露评估感兴趣的人来说,是一个强大的工具。通过提供对互联网资产的全面洞察,Censys 可以帮助组织更好地保护其网络和数据。

说明:Censys需要注册,对搜索条数也有限制。

通过SSL证书进行信息收集总结

1.2.3其他

1.https://developers.facebook.com/tools/ct/

这个链接指向 Facebook 的证书透明度工具页面。Facebook 提供了这个工具,让用户能够检查并验证 SSL/TLS 证书的合法性,以增强网络安全。

证书透明度工具通常用于以下目的:

验证证书的有效性: 用户可以通过这个工具验证网站使用的 SSL/TLS 证书是否有效,是否符合证书透明度要求。

监控证书的变化: 用户可以监控特定网站的证书变化,包括证书的颁发和更新情况,以及证书的有效期等信息。

识别潜在的安全风险: 通过监控证书透明度日志,用户可以识别潜在的安全风险,如证书的不当颁发或滥用情况。

Facebook 的证书透明度工具可能提供以下功能:

证书查询: 用户可以通过工具查询特定网站的 SSL/TLS 证书信息,包括证书的颁发者、颁发时间、有效期等。

日志检查: 用户可以检查和验证 Facebook 所提供的证书透明度日志,以确保这些日志的完整性和准确性。

报告问题: 如果用户发现了证书透明度日志中的问题或滥用情况,可以通过工具报告问题,Facebook 将会进行调查并采取相应措施。

通过 Facebook 的证书透明度工具,用户可以更好地了解和保护其所访问的网站的安全性。

通过SSL证书进行信息收集总结

2.https://google.com/transparencyreport/https/ct/

谷歌的“透明度报告”主要关注的是谷歌为保障网络安全所做的工作之一,证书透明度是一个公共日志系统,旨在提高 SSL/TLS 证书的可信度和安全性。该系统要求所有颁发 SSL/TLS 证书的机构将证书信息记录在公共日志中,这样任何人都可以检查和验证这些证书。这种机制有助于防止 SSL/TLS 证书的滥用和不当颁发。

谷歌的证书透明度报告页面提供了以下信息:

  1. 已验证的证书: 这部分显示了已经被验证的 SSL/TLS 证书的数量和统计信息,包括证书的颁发者、颁发时间、有效期等。

  2. CT日志: 谷歌提供了一些公共的 CT 日志,用户可以通过这些日志来检查和验证 SSL/TLS 证书的合法性。

  3. 常见问题: 这部分提供了关于证书透明度的常见问题解答,帮助用户了解证书透明度的工作原理和意义。

  4. 报告滥用: 如果用户发现了滥用 CT 日志的情况,可以通过该页面报告问题,谷歌会进行调查并采取相应措施。

1.3工具

1.3.1CTFR

该工具是一个 Python 脚本,用于扫描目标网站并查找隐藏功能。它可以帮助安全专家发现网站中可能存在的未公开功能,从而帮助提高网站的安全性。

1.官方网站

https://github.com/UnaPibaGeek/ctfr

2.安装

git clone  https://github.com/UnaPibaGeek/ctfr.git

cd ctfr

pip3 install -r requirements.txt

通过SSL证书进行信息收集总结

3.使用命令

(1)选项

-h, --help: 显示帮助信息并退出。

-d DOMAIN, --domain DOMAIN: 指定目标域名。

-o OUTPUT, --output OUTPUT: 指定输出文件。

(2)用法示例

指定目标域:

python ctfr.py -d example.com

这将使用 CTFR 工具扫描 example.com 以查找潜在的隐藏子域。

(3)指定输出文件:

python ctfr.py -d example.com -o output.txt

这将把扫描结果保存到 output.txt 文件中。

(4)其他提示

确保你已经安装了 Python,并且在命令行中正确配置了 Python 路径。

例如获取target.com的所有子域名,并且保存为本地me.txt

python3 ctfr.py -d target.com -o  me.txt

通过SSL证书进行信息收集总结

图 获取子域名

通过SSL证书进行信息收集总结

图 查看me.txt文件内容

ctfr使用命令非常简单,但确实非常好用,可以借助该工具获取证书隐藏下的子域名。

1.3.2 Censys提取子域名信息

https://github.com/appsecco/the-art-of-subdomain-enumeration

1.Censys的SSL/TLS证书中收集子域名

pip install -r requirements.txt

需要安装一些依赖:

requests==2.18.4

asn1crypto==0.24.0

cffi==1.11.2

cryptography==2.1.4

enum34==1.1.6

idna==2.6

ipaddress==1.0.19

pycparser==2.18

pyOpenSSL==17.5.0

six==1.11.0

censys==0.0.8

psycopg2

beautifulsoup4

censys安装失败,这个模块没有测试成功。

Censys_subdomain_enum.py


通过SSL证书进行信息收集总结

通过SSL证书进行信息收集总结

2.从Cloudflare提取子域名


python cloudflare_subdomain_enum.py [email protected] target.com

需要Cloudflare账号及密码登录以后才能提权。

通过SSL证书进行信息收集总结

3. crt枚举

python crtsh_enum_web.py baidu.com
通过SSL证书进行信息收集总结

4. SSL/TLS证书中的SAN获取子域名

San_subdomain_enum.py
python  San_subdomain_enum.py qq.com

通过SSL证书进行信息收集总结

1.3.5. GSAN从HTTPS网站的SSL证书中提取子域名

https://github.com/franccesco/getaltname.git

1.安装

pip install --user gsan

2. GSAN crtsh 子命令

通过该命令,你可以直接从 crt.sh 获取子域名。以下是 gsan crtsh 子命令的主要选项:

-m, --match-domain: 仅匹配域名。

-o, --output TEXT: 将结果输出到指定的路径/文件名。

-t, --timeout INTEGER: 设置 crt.sh 的超时时间。

--help: 显示帮助信息并退出。

(1)示例用法

获取特定域名的子域名:gsan crtsh example.com

(2)仅匹配域名:如果你只想要返回匹配域名的结果,而不是完整的证书信息,可以使用 --match-domain 选项:

gsan crtsh --match-domain example.com

(3)指定输出文件:

如果你想将结果保存到特定文件,可以使用 --output 选项:

gsan crtsh example.com --output results.txt

(4)设置超时时间:

如果你需要调整 crt.sh 的超时时间,可以使用 --timeout 选项来设定时间(以秒为单位):

gsan crtsh example.com --timeout 10

通过SSL证书进行信息收集总结

1.4命令行下提取信息

1.4.1证书查询子域名

利用证书查询子域名,crt.sh这个工具可以按通配符域名查询所有证书的详情。

curl'https://crt.sh/?q=%.example.com&output=json'| jq '.name_value'| sed 's/"//g'| sed 's/*.//g'| sort -u

如果没有jq命令就这样

curl -s"https://crt.sh/?q=%.example.com&output=json"| grep -Po '"name_value":.*?[^]",'| cut -d" -f4 | sed 's/*.//g' | sort -u

1.4.2利用web.archive.org收集子域名

原理是利用archive自己抓取的历史页面引用源,筛选去重即可。

web.archive.org互联网档案馆(Internet Archive)是一家以普及利用所有知识为目标的非营利性数字图书馆。它提供永久存储和免费的公共访问的数字化材料信息集合,其中包括:网站、音乐、运动图像、以及近300万册公共领域书籍。它让公众上传和下载数字材料到其数据集群,但其大部分数据是靠其网络爬虫自动收集。它的Web归档文件系统Wayback机器包含了超过1500亿以上的网页存档。它还负责监督世界上最大的图书数字化项目。

命令 :

curl -s"http://web.archive.org/cdx/search/cdx?url=*.qq.com/*&output=text&fl=original&collapse=urlkey"|sort| sed -e's_https*://__'-e"s//.*//"-e's/:.*//'-e's/^www.//'| sort -u

1.5总结

     通过SSL证书可以获取一些子域名信息,包括证书指纹,对子域名信息收集比较有用。目前也有一些开源的脚本支持快捷获取,不用每次都到crt.sh上进行查询。

参考资料:

https://xz.aliyun.com/t/3478?time__1311=n4%2BxnD0DBDgAG%3DQ0QNDsA3xCuExf2qhDWrD


原文始发于微信公众号(小兵搞安全):通过SSL证书进行信息收集总结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月9日03:40:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过SSL证书进行信息收集总结https://cn-sec.com/archives/2722408.html

发表评论

匿名网友 填写信息