https://www.roe.ch/sslsplit
SSLSPLIT是针对SSL/TLS加密网络连接的中型攻击的工具。它旨在用于网络取证,应用程序安全分析和渗透测试。
SSLSPLIT旨在透明地终止使用网络地址转换引擎重定向到它的连接。然后,SSLSPLIT终止SSL/TLS,并在记录所有数据传输的所有数据时启动新的SSL/TLS连接到原始目标地址。除基于NAT的操作外,SSLSPLIT还支持静态目的地,并使用SNI指示的服务器名称作为上游目的地。 SSLSPLIT纯粹是透明的代理,不能充当浏览器中配置的HTTP或袜子代理。
SSLSPLIT在IPv4和IPv6上支持普通TCP,普通SSL,HTTP和HTTPS连接。它还具有动态升级Plain TCP为SSL的能力,以便通常支持SMTP StartTL和类似的升级机制。 SSLSPLIT完全支持服务器名称指示(SNI),并且能够与RSA,DSA和ECDSA键以及DHE和ECDHE Cipher Suites一起使用。根据构建的OPENSL版本,SSLSPLIT支持SSL 3.0,TLS 1.0,TLS 1.1和TLS 1.2,以及可选的SSL 2.0。
对于SSL和HTTPS连接,SSLSPLIT会生成和符号,并在fly上生成X509V3证书,模仿原始服务器证书的主题DN,subjectaltname扩展名和其他特征。 SSLSPLIT具有使用私钥可用的现有证书,而不是生成伪造的证书。 SSLSPLIT支持NULL-PREFIX CN证书,但在其他方面没有针对SSL/TLS堆栈中的特定证书验证漏洞实施利用。
SSLSPLIT实施了许多防御机制,这些机制通常会防止MITM攻击或使其更加困难。 SSLSPLIT可以以通用的方式拒绝OCSP请求。对于HTTP和HTTPS连接,SSLSPLIT MANGLES标题以防止服务器指导的公共密钥固定(HPKP),避免严格的传输安全限制(HSTS),避免证书透明执行(Expect-CT)并防止切换到Quic/SPDY,QUIC/SPDY,HTTP/2或HTTP/2或Websockockets(Upgrade,替代协议,替代协议)。 http压缩,编码和静脉效果被禁用,以使日志更可读。
记录选项包括传统的SSLSPLIT连接和内容日志文件以及PCAP文件,并将解密流量镜像到网络接口。此外,可以记录证书,主秘密和本地流程信息。
有关使用SSLSPLIT并设置各种NAT引擎的详细信息,请参见“手册”页面SSLSPLIT(1)。
sslsplit取决于openssl,libevent 2.x,libpcap和libnet 1.1.x库默认情况下;如果省略了镜像功能,则不需要libpcap和libnet。构建取决于GNU的制造和POSIX.2 PATH中的环境。如果有的话,PKG-Config用于定位和配置依赖项。可选的单元测试取决于检查库。
SSLSPLIT当前支持以下操作系统和NAT机制:
当前在Mac OS X和FreeBSD上提供了对本地流程信息( -i )的支持。
SSL/TLS功能和兼容性在很大程度上取决于链接的OpenSSL版本。为了获得最佳结果,请使用最近发布的OpenSSL或Libressl。
在上述要求的情况下,运行:
make
make test # optional unit tests
make sudotest # optional unit tests requiring privileges
make install # optional install
使用PKG-Config自动配置依赖项。如果未拾取依赖关系并且修复PKG_CONFIG_PATH无济于事,则可以通过设置OPENSSL_BASE , LIBEVENT_BASE ,LIBPCAP_BASE, LIBPCAP_BASE , LIBNET_BASE和/或CHECK_BASE手动指定其各自的位置。
您可以通过设置PREFIX来覆盖默认安装前缀( /usr/local )。有关更多构建选项和构建时间默认值,请参见GNUmakefile和defaults.h 。
有关用户文档,请参见“手册”页面sslsplit(1)和sslsplit.conf(5) 。有关发行说明,请参见NEWS.md ,以列出版本和SECURITY.md之间的重大更改。有关安全漏洞披露的信息。
SSLSPLIT是根据2条规定的BSD许可提供的。 SSLSPLIT包含在MIT和APSL许可证下许可的组件。有关详细信息,请参见LICENSE , LICENSE.contrib和LICENSE.third以及各自的源文件标头。
有关贡献者列表,请参见AUTHORS.md 。
SSLSPLIT的灵感来自Moxie Marlinspike的Claes M. Nyberg和sslsniff的mitm-ssl启发,但与他们没有任何源代码。