使用sslsplit嗅探TLS/SSL连接

网友投稿 840 2022-10-07


使用sslsplit嗅探TLS/SSL连接

SSLsplit是一个通用的透明TLS / SSL代理,用于对各种安全通信协议执行中间人***。 使用SSLsplit,可以拦截和保存基于SSL的流量,从而侦听任何安全连接。

1、 工作原理

SSLsplit的工作原理与其他透明SSL代理工具非常相似:它充当客户端和实际服务器之间的中间人。 如果将流量重定向到运行SSLsplit的服务器(通过更改默认网关,ARP欺骗或其他方式,请参见下文),则SSLsplit将选择SSL连接并假装为客户端正在连接的服务器。 为此,它动态生成证书,并使用客户端必须信任的CA证书的私钥对其进行签名。例如,如果客户端希望使用安全的Gmail SMTP服务器(端口465上的smtp.gmail.com)发送电子邮件,则SSLsplit会为“ smtp.gmail.com”创建证书,从而假装为Gmail 邮件服务器发送给客户端。 在上游方向(指向实际的Gmail邮件服务器),SSLsplit像普通客户端一样连接到服务器-转发实际客户端在SSL套接字上写入的所有流量。

2、 SSLsplit的安装与运行

在解释了SSLsplit如何工作的基本概念之后,本节将介绍如何实际使用它来拦截SSL(和非SSL)流量。

2.1 重定向流量

本教程假定您已经将*者系统放置在受害者计算机和服务器之间的某个位置。 这可以通过许多不同的方式完成-以下是一些示例:*>1)使用ARP欺骗通过将错误的映射从标准网关MAC地址发布到者的IP地址来重定向受害者的流量。 您无需物理访问受害者的设备即可执行此操作。 签出arpspoof工具。2)在受害者的网络设置中更改默认网关地址。 如果您可以访问受害者的设备,这是最简单的方法。3)使用DNS服务器伪造DNS条目,该DNS服务器返回者针对某些(或所有)域的IP地址。 有关如何使用Dnsmasq进行DNS欺骗的信息,请参阅我的教程。4)通过修改受害者计算机的/etc/hosts文件中的条目,重定向各个域的流量。如上所述,最简单的方法是将受害者设备中的默认网关地址更改为者的IP地址。 这样可以确保所有流量都通过您的计算机。 而且由于以后我们需要安装CA证书,因此无论如何我们都需要对受害者计算机的物理访问。

2.2 安装

要下载并编译SSLsplit,请运行以下命令:

1)wget bunzip2 sslsplit-0.4.7.tar.bz23) tar xvd sslsplit-0.4.7.tar4) cd sslsplit-0.4.75) apt-get install libssl-dev libevent-dev6) make7) mkdir /tmp/sslsplit

这些命令下载并提取源代码(wget,bunzip2,tar),安装必要的依赖项(apt-get),然后使用make对其进行编译。稍后在/tmp/sslsplit创建的临时目录用于转储连接日志文件以及传入和传出SSL套接字的原始数据。

2.3 创建与安装根CA证书

为了使SSLsplit充当SSL连接的中间人,它需要能够生成并签署受害人信任的证书。 为此,受害者必须在其信任库中拥有***者的根CA证书。 根据客户端的类型(台式浏览器,手机),安装根证书有所不同(有关Firefox,Windows,Android等的信息,请参见此处)。

如果您还没有自签名的CA私钥和证书,则可以使用以下命令生成一个:1) openssl genrsa -out ca.key 40962) openssl req -new -x509 -days 1826 -key ca.key -out ca.crt第一条命令生成4096位RSA私钥PEM格式(ca.key),第二个命令使用此私钥生成自签名根CA证书(ca.crt)。 稍后SSLsplit都需要两者,但是仅证书文件需要安装在浏览器或受害者的操作系统。

2.4 启用IP转发和NAT引擎(iptables)

在此示例中,SSLsplit将在两个端口上运行:8080用于非SSL TCP连接(例如HTTP,SMTP或FTP),以及8443用于SSL连接(例如SMTP over SSL,HTTPS等)。为了转发到达 ***者的计算机访问这些内部端口后,可以使用iptables中的NAT引擎。

1) sysctl -w net.ipv4.ip_forward=12) iptables -t nat -F3) iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT —to-ports 80804) iptables -t nat -A PREROUTING -p tcp —dport 443 -j REDIRECT —to-ports 84435) iptables -t nat -A PREROUTING -p tcp —dport 587 -j REDIRECT —to-ports 84436) iptables -t nat -A PREROUTING -p tcp —dport 456 -j REDIRECT —to-ports 84437) iptables -t nat -A PREROUTING -p tcp —dport 993 -j REDIRECT —to-ports 84438) iptables -t nat -A PREROUTING -p tcp —dport 5222 -j REDIRECT —to-ports 8443

上面的命令首先启用IP转发(sysctl ...)以启用系统的路由器功能。 运行此命令后,Linux会将不打算用于本地计算机的IP数据包转发到其标准/默认网关,从而充当路由器。 为了防止Linux立即转发所有内容,可以定义NAT规则。 在此示例中,某些数据包重定向到本地端口8080和8443。端口HTTP(80)和WhatsApp(5222)上的纯文本流量的数据包重定向到端口8080,端口HTTPS(基于SSL的流量)数据包重定向。 443),基于SSL的IMAP(993),基于SSL的SMTP(465和587)重定向到端口8443。

2.5 运行SSLsplit

一旦启用IP转发并将数据包转发到相关端口,就可以启动SSLsplit。 这听起来比实际要容易,因为SSLsplit是一个非常强大的工具,因此非常灵活。 请查看SSLsplit网站上的简短文档以及更详细的SSLsplit手册页。对于上述用例,明智的参数配置应如下所示:1) ./sslsplit2) -D3) -l connections.log4) -j /tmp/sslsplit/5) -S logdir/6) -k ca.key7) -c ca.cer8) ssl 0.0.0.0 84439) tcp 0.0.0.0 8080此命令以调试模式启动SSLsplit(-D,在前台运行,没有守护程序,输出冗长),并在日志文件“ connections.log”(-l ..)中输出连接尝试。 连接的实际内容被写入“ / tmp / sslsplit / logdir /”(-j ..和-S ..)-每个连接的每个传入/传出TCP流都在单独的文件中。就是这个。 假设您已经正确配置了客户端,则现在可以开始浏览并发送/接收电子邮件。除了控制台输出外,SSLsplit还将TCP套接字会话写到上述日志目录中。 在运行SSLsplit一段时间后,日志目录中将有很多文件,每个都是客户端与服务器之间的连接或TCP套接字。br/>root@pbox:/tmp/sslsplit/logdir#ls每个文件都指示打开TCP套接字的确切时间以及源IP地址和目标IP地址以及端口。 您可以使用head …窥视文件,或使用喜欢的文本编辑器:root@pbox:/tmp/sslsplit/logdir#head ***

3、例子

您可以使用SSLsplit侦听许多不同的协议。 以下是HTTPS,基于SSL的IMAP和基于SSL的SMTP的一些示例。

3.1 嗅探HTTPS

3.2 嗅探IMAP over SSL

3.3 嗅探SMTP over SSL


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一篇文章带你入门Java基本概念
下一篇:BM00011——|zabbix.v03|管理主机、用户和权限/主机维护/基于openldap的用户认证/用户管理权限|
相关文章

 发表评论

暂时没有评论,来抢沙发吧~