`

[ssl]解密-网络监控

    博客分类:
  • web
 
阅读更多
原文:http://resources.infosecinstitute.com/ssl-decryption/

SSL和网络监控是最不搭的一对的基友-即使是最高端的监控架构。从被加密的数据流中不会获得很多有价值的信息。考虑到如下图所示的Sguil sensor的处境:

web服务器使用SSL意味着基于事件监控的网络很头疼。Snort也不能很好的帮助发现入侵-它只看到HTTPS。同时,如果一个事件被其他方法发现(通知,web服务器log等),Sguil的全包截获的调查价值也很少。
通过窃取SSL,可以可视化这些捕获的数据流。可以使用下面的方法:
1. 在web server前端结束SSL,可以使用反向代理负载均衡或WAF。然后可以在负载均衡和web server之间监控流量。
2. 在web service进行流量监控,可以增加web和应用程序的log级别
3. 给现存的监控平台提供SSL session解密的方法
每种技术都有优缺点,本文将介绍如何使用最新的技术来让Sguil透明监控流量。

SSL解密
首先需要了解关于SSL解密的一些基本知识。总体来说,需要满足两个条件:
1. 服务器必须使用RSA密钥交换机制,幸运的是大多数基于SSL的服务器都是使用这种机制;如果使用的是DSA密钥对或Diffie-Hellman密钥交换机制,那么可能失败
2. 必须能访问服务器的私有密钥,可以把它拷贝到你的Sguil监控器上。
第二条是说我们只能解密源/目的是我们拥有的server的流量-我们不可能解密任意流量。然而从入侵发现和网络取证的角度来说,已经足够了。
Now, where did I leave my keys…?
导入私有密钥到Sguil监控器需要一些工作。密钥可能存在服务器上的一个.pem文件中,把它copy到Sguil监控器中。然而某些OS例如Windows存储认证和密钥在"certificate store"中而不是.pem文件。为了获得私有密钥,我们需要导出certificate和私有密钥到一个PKCS12文件。一旦我们导出certificate,我们可以像这样使用openssl提取私有密钥。
C:>openssl pkcs12 -in c:myExportedCertificate.pfx –out c:myExportedCertificate.pem -nodes
输入导出certificate和密钥时的密码,myExportedCertificate.pem文件将会包含类似下面的块
—–BEGIN PRIVATE KEY—–
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCvHJFIpFwXZJ0x
2DzEY2B4MDBBu/+jbfUriFI+GKh6Q5oEGTAARh3OAP+UMedNf2t8/MVJdEEAM7TQ
<snip>
EZq3TiCB3e+GSjVRorB0YGvDzHR1V098LEPOvPIKNMcLCC4lGQeTg+usZmtcx4VI
wGI70e4Byd+Lba0lUKY8UIU=
—–END PRIVATE KEY—–
复制粘贴到名为myPrivateKey.pem的文件然后保存到Sguil上。
A word of warning
服务器的私有密钥是敏感信息。通过它,黑客可以解密服务器的SSL流量以及使用它和certificate来伪装成一个合法的服务器。必须小心处理私有密钥-不要放到临时文件夹,确保不会泄露到互联网上,确保Sguil上的密钥也受到保护。
Putting the key to work
拥有了私有密钥,我们可以将Wireshark指向我们捕获全文本的文件夹。这种方法的性能不是很好;如果能够通过使用管道我们可以把我们解密后的流量实时的导入Sguil,充分利用Snort,SANCP,PADS。
Dmitry Plashchynski的 viewssld就是这样的工具。基本上viewssld工作原理如下:

viewssld通过libpcap来监听一个给定的接口。捕获的数据帧传递给Atomic Lab的libdssl库来解密。libdssl是只有解密后的package内容,所以使用libnet来构造伪造的解密后的流量。伪造的流量然后定向到Sguil。
viewssld包含:
1. 输出解密后的TCP三路握手
2. 输出解密后的客户请求和服务响应,保持更新(伪装的)TCP序列号。序列号和其他的TCP/IP头是虚假的一一对应的-因为解密后的流量和压缩的流量大小不一样,所以不可能使用真实的值。解密后的流量可能会不同于原始流量的分包/分段
3. 当一个session结束时输出一个伪造的RST
4. 使用一个简单的标识表明哪些是viewssld的输出
5. 输出的解密帧到不同于他们被截获的端口。
第五条整合viewssld和Sguil如下图:

它的流程如下
1. 原始数据(蓝色)进入Sguil监控接口
2. 这些流量被Sguil和viewssl同时截获
3. viewssl解密数据,然后送回它截获的接口。只用通过使用一个不用的TCP端口接收解密的数据帧才能实现--如果使用相同的端口那么将会重新进入viewssl。
4. 解密的SSL数据流有Sguil捕获
所以可以同时看到加密/解密的数据流。如下图所示:最后面可以看见两行SANCP查询结果。第一行是Sguil捕获的原始SSL数据包。第二行是对应的有viewssld解密的端口号为80的数据包。


一个参考的配置文件:
# PID-file path (default: /var/run/viewssl.pid)
pid = /var/run/viewssl.pid

# daemonize? on/off (default: off)
daemon = on

# loglevel 0-10 (default: 0)
loglevel = 10

# SSL protocols to decrypt

[webserver]
src = eth1
dst = eth1
ip = 10.11.12.13
port = 443
key = /etc/viewssld/webserver.key
dsslport = 80

[mailserverSMTP]
src = eth1
dst = eth1
ip = 20.30.40.50
port = 465
key = /etc/viewssld/mailserver.key
dsslport = 25

[mailserverIMAP]
src = eth1
dst = eth1
ip = 20.30.40.50
port = 993
key = /etc/viewssld/mailserver.key
dsslport = 143

[mailserverPOP3]
src = eth1
dst = eth1
ip = 20.30.40.50
port = 995
key = /etc/viewssld/mailserver.key
dsslport = 110

警告:
在部署viewssl到Sguil监控器上时需要考虑:
1. SSL解密需要耗费大量的CPU计算。如果你的监控器的CPU已经很忙碌,那么额外的负载可能使他崩溃。
2. 解密过程对于package丢失很敏感。如果viewssld缺少一个package,该流量解密将会停止。如果SSL握手丢失,那么根本不会解密。
4由于需要存储加密/解密后的流量,硬盘很重要。

  • 大小: 15.7 KB
  • 大小: 2.6 KB
  • 大小: 3.4 KB
  • 大小: 175.8 KB
分享到:
评论

相关推荐

    Python-ssllogger解密并记录进程的SSL流量

    在本篇中,我们将深入探讨“Python-ssllogger”这个工具,它能够帮助我们解密并记录进程的SSL流量,这对于进行网络安全分析、调试或者监控非常有用。 首先,让我们理解什么是SSL流量。SSL是一种协议,用于在互联网...

    跟踪 SSL 流 - Wireshark 数据包分析实战(第 3 版) - 知乎书店1

    总的来说,跟踪 SSL 流在网络安全和性能监控方面具有重要的实际应用。通过 Wireshark,网络管理员和安全专家可以深入了解加密通信的细节,从而更好地管理和保护网络资源。在后续章节中,你可能会学到更多关于 ...

    精品软件工具--webdav+ssl安装工具软件,运行本软件可以帮你快速搭建一个支持ssl的webdav站点.zip

    SSL/TLS是网络安全的基础,它通过公钥和私钥加密技术,实现数据在互联网上的加密传输,防止中间人攻击和窃听。SSL证书包含公钥,用于加密信息,而私钥则保存在服务器上,用于解密信息。HTTPS是HTTP与SSL/TLS的结合...

    OpenSSL生成的ssl证书

    它包含公钥和私钥对,其中公钥用于加密数据,私钥用于解密数据,确保只有服务器能读取接收到的信息。 **OpenSSL创建证书** 1. **安装OpenSSL**:虽然在描述中提到无需再下载和配置OpenSSL环境,但在实际操作中,你...

    Indy SSL的例程

    Indy SSL(全称Internet Direct SSL)是Indy库的一部分,这是一个强大的、开源的、跨平台的网络通信组件集合,广泛用于Delphi和C++Builder等RAD Studio开发环境中。Indy SSL提供了对SSL/TLS协议的支持,使得开发者...

    HG ep800-s-解密

    在实际操作中,"HG ep800-s"设备的用户可能需要了解如何配置和管理加密设置,包括生成和交换密钥、设置加密策略以及监控解密过程中的安全事件。同时,为了确保合规性,设备可能还需要支持各种安全标准和法规,如ISO ...

    SSL经摘要认证传输

    - `MiniSniffer.exe` 可能是一个网络嗅探工具,用于监控和分析SSL通信,以确保数据传输的安全性。 - `passfile产生工具.exe` 和 `passfile.txt` 可能是用于创建和管理摘要认证所需的密码文件的工具。 - `...

    FTP密文解密工具

    在未经授权的情况下监控他人的网络通信是非法的。因此,这些工具通常只应用于合法的网络安全审计和研究。 6. **文件名列表**:在提供的文件名列表中,“FTP密文解密工具.exe”很可能是一个可执行程序,用于在...

    NetrobocopSetup_v3.56长角牛网络监控机.zip

    在Netrobocop v3.56长角牛版本中,强化了对多协议的支持,包括TCP/IP、UDP、HTTP、FTP等多种常见网络协议,以及对新兴的SSL/TLS加密通信的解密能力。这一改进使得Netrobocop能更好地应对复杂网络环境,提供更全面的...

    网络游戏-网络通信安全处理器及其数据处理方法.zip

    《网络游戏-网络通信安全处理器及其数据处理方法》 在当今数字化时代,网络游戏已经成为了人们娱乐生活的重要组成部分。然而,随着网络技术的发展,网络安全问题日益凸显,尤其是对于网络游戏来说,网络通信安全是...

    3-2019051110-张迈-网络监听1

    1. **加密通信**:使用SSL/TLS等协议对网络通信进行加密,即使数据包被截取,内容也无法解密。 2. **ARP防护**:通过动态或静态ARP绑定,防止ARP欺骗。 3. **端口隔离**:在交换机上隔离不同业务或用户的端口,减少...

    ssl证书批量生成工具

    在网络安全领域,SSL证书是保障网站数据传输安全的重要组件,它通过加密连接确保用户与服务器之间的通信不被第三方窃取或篡改。批量生成SSL证书在多站点管理、大型网络环境或者云服务提供商中尤为实用,可以极大地...

    Wireshark解密https流量.pdf

    它支持多种网络协议,并且具有丰富的过滤和分析功能,广泛应用于网络安全监控、故障排查等领域。 #### 四、解密HTTPS流量的关键步骤 1. **获取SSL/TLS密钥** - HTTPS流量之所以难以被解密,是因为其采用了SSL/TLS...

    软算法支持SSL卸载使用指南v1.03(标准nginx)1

    SSL(Secure Sockets Layer)卸载是网络服务器管理中的一个关键技术,主要用于优化服务器性能和安全。在SSL卸载业务场景中,客户端与服务器之间的加密通信通常由专门的硬件设备或软件模块处理,而不是由服务器本身...

    Win2003 IIS+SSL配置手册

    SSL是一种网络安全协议,它的主要功能是为网络通信提供加密处理,保证数据在传输过程中的隐私和完整性。SSL证书包含了一个公钥和私钥,公钥用于加密数据,私钥用于解密。当用户访问启用SSL的网站时,浏览器会与...

    Implementing SSL TLS Using Cryptography and PKI.pdf

    - **测试与监控**: 对SSL/TLS连接进行彻底测试,并定期监控其性能和安全性,确保没有漏洞或配置错误。 综上所述,SSL/TLS通过结合先进的加密技术和可靠的PKI基础设施,为网络通信提供了一层强大的安全保障。了解...

    ssl java实现

    SSL(Secure Sockets Layer)是网络安全传输协议,用于在互联网上提供加密通信和身份验证。在Java中实现SSL,主要是通过Java的JSSE(Java Secure Socket Extension)框架来完成的。下面将详细介绍Java中实现SSL的...

    Implementing SSL / TLS Using Cryptography and PKI 1st Edition (无水印,数字版)

    - 监控和日志:监控SSL/TLS连接,记录日志以便事后分析和取证。 5. 法律与合规性 - 遵守相关法律:在部署SSL/TLS时,需要考虑遵守有关数据保护和隐私的法律要求。 - 许可证和认证:在某些情况下,可能需要获得法律...

    易语言源码易语言SSL代理客户端源码.rar

    SSL(Secure Sockets Layer)代理客户端则是实现网络通信安全的重要工具,通常用于加密传输数据,确保数据在互联网上传输时的安全性。 在"易语言源码易语言SSL代理客户端源码.rar"这个压缩包中,我们很可能找到的是...

Global site tag (gtag.js) - Google Analytics