- 浏览: 278818 次
文章分类
- 全部博客 (276)
- burp+hydra暴力破解 (1)
- kali linux工具集 (6)
- kali (59)
- linux (54)
- password (14)
- web (63)
- 渗透测试 (50)
- windows (40)
- metasploit (9)
- 信息收集 (32)
- burp suit (4)
- 安全审计 (9)
- https://github.com/secretsquirrel/the-backdoor-factory (0)
- nmap (4)
- arachni (2)
- 工具 (5)
- sql (3)
- 网络 (2)
- 后渗透测试 (10)
- 内网 (5)
- 无线 (2)
- C (3)
- bios (1)
- RoR (12)
- mongodb (1)
- linxu (1)
- gdb (1)
- linux,虚拟化 (1)
- python (4)
最新评论
原文: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由于需要存储加密/解密后的流量,硬盘很重要。
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由于需要存储加密/解密后的流量,硬盘很重要。
发表评论
-
linux 安装scrapy
2015-09-07 13:06 570由于scrapy对python3支持不是很好,所以使用pyth ... -
nginx reverse proxy cofinguration
2015-08-28 15:18 397based on our case, we need to h ... -
wpscan
2015-08-01 10:39 406https://www.digitalocean.com/co ... -
arachni-web-ui使用
2015-06-10 01:04 2120最近在玩儿arachni,想试试arachni-ui-web, ... -
HACKING NODEJS AND MONGODB
2015-06-04 23:52 314http://blog.websecurify.com/201 ... -
php object inject
2015-05-29 00:45 318解释: http://securitycafe.ro/2015 ... -
[转]Forcing XXE Reflection through Server Error Messages
2015-05-19 01:10 417原文地址:https://blog.netspi.com/fo ... -
CVE-2011-2461
2015-03-31 01:19 391http://blog.nibblesec.org/2015/ ... -
[译]从配置错误的web server中dump git数据
2015-03-26 01:07 541原文地址:https://blog.netspi.com/du ... -
[转]Microsoft Access sqli
2015-03-18 00:57 405https://milo2012.wordpress.com/ ... -
[转]sqlmap注入Microsoft Access
2015-03-18 00:49 1558https://github.com/sqlmapprojec ... -
crossdomain.xml
2015-03-12 01:23 624参考: https://hackerone.com/repor ... -
[译]使用wireshark解密TLS浏览器流量
2015-03-12 00:57 4032原文地址:https://jimshaver.net/2015 ... -
xxe方法
2015-02-01 18:32 820原文地址:http://www.christian-schne ... -
owasp zed--Web Sockets
2015-01-31 01:16 612http://digi.ninja/blog/zap_web_ ... -
memcached
2015-01-25 01:56 0http://www.sensepost.com/blog/4 ... -
[译]linux使用软连接读取本地文件
2015-01-25 00:28 1943原文地址:http://josipfranjkovic.blo ... -
linux install firefix&plugin
2015-01-22 20:56 4161. download firefox&plugins ... -
Sinatra--超级轻量级web框架
2015-01-17 00:30 617Sinatra是一个超轻量级web框架 介绍:http://w ... -
Shellshock示例
2014-12-19 01:21 298来自:http://pastebin.com/Qbgn09Wa ...
相关推荐
信息安全概念、信息安全标准与规范、常见攻击手段、基础操作系统安全、防火墙安全策略、防火墙NAT技术、防火墙双机热备技术、入侵防御技术、密码学基础、PKI机制、IPSec/SSL VPN技术、数据监控与分析、电子取证技术...
解密并记录进程的 SSL 流量( Python ) - 通过监控 wifi 信号来计算你周围的人数( Python ) - 一个跨平台的命令行工具,用于通过本地网络发送和接收文件,灵感来自 AirDrop ( Go ) - 显示有关您的域的信息的 DNS ...
haisanidsV1.2-网络连接监控 IP实时数据。自绘了很多控件。自绘CTabCtrl、CToolBar、CMenu、CButton、CHtmlCtrl、CListCtrl。 hyperlink 自绘CStatic,实现超链接。 iconbutton_demo 演示了多种自绘Button。 ...
2012-06-11 21:31 5,665 SSL欺骗全面解析.txt 2012-06-11 21:03 596,394 TC打地鼠.rar 2012-06-11 21:24 10,293 tftp.rar 2012-06-11 21:07 172,570 uC-GUI-字体转换.rar 2012-06-11 21:11 2,872,837 vb酒店客房管理...
haisanidsV1.2-网络连接监控 IP实时数据。自绘了很多控件。自绘CTabCtrl、CToolBar、CMenu、CButton、CHtmlCtrl、CListCtrl。 1.初始状态只监听连接,不捕获IP数据 2.鼠标右击列表选择或取消监控某端口数据 3.为防止...
haisanidsV1.2-网络连接监控 IP实时数据。自绘了很多控件。自绘CTabCtrl、CToolBar、CMenu、CButton、CHtmlCtrl、CListCtrl。 hyperlink 自绘CStatic,实现超链接。 iconbutton_demo 演示了多种自绘Button。 ...
haisanidsV1.2-网络连接监控 IP实时数据。自绘了很多控件。自绘CTabCtrl、CToolBar、CMenu、CButton、CHtmlCtrl、CListCtrl。 hyperlink 自绘CStatic,实现超链接。 iconbutton_demo 演示了多种自绘Button。 ...
haisanidsV1.2-网络连接监控 IP实时数据。自绘了很多控件。自绘CTabCtrl、CToolBar、CMenu、CButton、CHtmlCtrl、CListCtrl。 hyperlink 自绘CStatic,实现超链接。 iconbutton_demo 演示了多种自绘Button。 ...
haisanidsV1.2-网络连接监控 IP实时数据。自绘了很多控件。自绘CTabCtrl、CToolBar、CMenu、CButton、CHtmlCtrl、CListCtrl。 hyperlink 自绘CStatic,实现超链接。 iconbutton_demo 演示了多种自绘Button。 ...
4.9.2 EFS文件夹解密 4.9.3 证书备份与恢复 小结 习题 第5章 网络通信安全 5.1 网络端口安全 5.1.1 端口分类 5.1.2 应用程序和服务端口 5.1.3 端口攻击 5.1.4 查看正在使用的端口 5.1.5 端口的开启与关闭 5.1.6 ...
通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...
通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
第4章 Java网络编程 125 实例45 选择字体 126 实例46 UDP与TCP/IP的简单应用 129 实例47 聊天室 131 实例48 浏览FTP 136 实例49 局域网广播 147 实例50 建立HTTP连接 151 实例51 迷你浏览器 152 实例52 扫描应用端口...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...