Skip to content

Files

Latest commit

c824a0b · Oct 18, 2021

History

History
280 lines (162 loc) · 28.4 KB

File metadata and controls

280 lines (162 loc) · 28.4 KB

八、通过密码测试利用信任

商用加密和加密方法的发展对于互联网作为全球经济引擎的应用至关重要。网络从早期的浏览器(如 Erwise 和 Mosaic)发展到现在已经有很长的路要走了。早期的浏览器主要向教育用户提供静态、开放的信息。很难想象网络是纯文本的时代,信息在没有任何防盗或窥探保护的情况下被传输(和存储)。现在,互联网促进的金融、个人和智能交易受到数学驱动算法的保护,如安全套接字层SSL)/传输层安全TLS)、高级加密标准AES安全哈希算法SHA)和Diffie HelmanDH)。这些标准和更多标准,加上广泛的共享密钥基础设施,使我们能够信任这些交易。这种信任是可以理解的;消费者级电子产品和开源软件随时可用于实施密码技术,以提供信息安全的三个关键原则;保密性完整性可用性CIA),当然,这是假设每个人都在使用正确的标准和协议,并且配置正确。

针对加密方法(以及相关领域,如隐写术)的攻击通常避免试图破坏加密本身。苹果公司与美国司法部争夺 iPhone 后门的战斗说明了这一点;加密通信既便宜又容易,但破解同样的加密却非常困难。攻击者可能转而在关卡上阻止加密;在信息加密之前或在接收方解密之后拦截信息。这在技术上更容易,但实际上,他们必须在这些主机上。欺骗发送者和接收者不是更容易吗;来源地和目的地是否相信自己的系统是两个相关方之一?这实质上是中间人MITM攻击),其用途远远超出了单纯的拦截。这是一种如果你不能打败他们,加入他们的方法。

MITM 攻击因多种形式的黑客攻击而流行;凭据捕获、导致恶意软件交付的有毒 web 流量、重定向到恶意门户或流本身的收集和潜在操纵都是可能的。防御这些恶意使用变得更加困难,因为相同的技术在企业中有合法的用途。Web 代理和防火墙永远使用 SSL/TLS MITM,帮助隐藏和保护最终用户及其客户端,允许进行全面检查和内容过滤,并确保免受拒绝服务攻击和隐私保护。只要这些技术存在这两种相反的用途,攻击者就可以利用它们攻击我们的客户。

我们必须能够通过规避和 MITM 发现并验证所有可察觉的缺陷。在本章中,我们将了解如何在 web 应用通信中使用加密,窥视加密会话,以及如何绕过加密或使用 MITM 攻击破坏加密。在本章中,我们将介绍以下主题:

  • 了解持续攻击者如何破坏弱密码,以及我们如何使用 OpenSSL、SSLyzeSSLscan检测弱密码
  • 体验我们如何对安全连接执行 MITM 攻击,发现有趣的有效负载,并使用SSLsplitSSLsniff操纵它们
  • 通过充当 MITM 并使用SSLstrip从流中删除加密,彻底击败 SSL

你的秘密有多大?


据估计,SSL/TLS 在网络流量中的使用率超过 60%,鉴于公众对黑客和政府的窥探和拦截的看法,我们预计这一比例将继续上升。虽然这在实践中很困难,但如果收集到的数据具有足够的价值,那么攻击者的时间确实是值得的。OWASP 的前 10 名名单中有敏感数据暴露在几个周期内都是最大威胁,2013 年和 2017 年都是如此(https://github.com/OWASP/Top10/blob/master/2017/OWASP%20Top%2010%20-%202017%20RC1 English.pdf?平台=hootsuite迭代次数排名第 6:对 web 应用最令人担忧的威胁。

在敏感数据暴露部分的摘要中(如下面的屏幕截图所示),如果 web 开发人员正确地配置它并使用当前的技术和模块版本来提供保护,那么将更加困难。我们测试的相当一部分将围绕检查过时的包、不足的关键优势和错误配置的端点。也就是说,如果所有这些都已正确配置,我们将看到一些 MITM 攻击如何帮助克服这种保护。

OWASP 的破坏身份验证和会话劫持特性

在开始之前,了解我们正在讨论的加密应用的类型是很有帮助的。鉴于它在信息技术中的广泛应用,我们需要将讨论范围限制在 web 服务器及其服务器-客户机关系上。即使如此,仍有许多潜在的拓扑,但它们都有一些共同的元素,如以下屏幕截图所示:

基本 SSL/TLS 结构和攻击点

一种正在兴起的攻击手段包括利用 DNS 和 PKI 基础设施来增强 MITM,并欺骗谨慎的客户端,使其相信自己确实在连接到适当的服务器或合法代理(未显示)。这里的每个元素都有自己的功能。作为测试人员,我们的工作是找出哪些元素正在端到端地损害完整性。

像专业人士一样评估加密


只要连接到应用并查看协商的内容,就可以识别和验证应用的大部分加密配置和潜在缺陷。这可能是相当劳动密集型的,所以幸运的是,我们有一些快速扫描工具,可以系统地协商服务器的所有潜在配置,以更好地帮助我们了解它们允许什么。

我仍然建议花一些时间来学习如何手动测试 SSL/TLS,因为快速检查以确保版本、密码偏好和类似的版本总是很方便的。在上有一个很好的书写和备忘表 http://www.exploresecurity.com/wp-content/uploads/custom/SSL_manual_cheatsheet.html .

分析——切片,扫描�¦

我们在这方面的第一个工具可能是您唯一需要的工具 https://github.com/iSECPartners/sslyze )将使用当今使用的几乎所有传输协议与服务器进行联系,而且速度非常快!通过跨各种协议启动与服务器的 StartTLS 握手,它可以扫描密码套件问题、协商缺陷、证书不一致性和常见的 SSL 漏洞,这些漏洞已使许多人成为新闻(心血、犯罪等)

使用 SSLyze 是小菜一碟;您可以选择许多要通过的选项,然后同时测试多个服务器。这些选项可以帮助改进被测试的版本、与连接相关的超时和重试、添加客户端证书或证书以测试相互身份验证,以及测试压缩和恢复。我倾向于使用的选项是与 Heartbleed 模块相结合的常规选项,我倾向于将输出写入文本文件。在本例中,我们将针对网站www.hackthissite.org运行:

sslyze [Options] [host:port | host]
sslyze ; regular ; heartbleed www.hackthissite.org:443 >>hackthissite.txt

正如您在下面的屏幕截图中所看到的,在 SSLyze 中,他们为我们轻松地处理了大量的测试。我将大量输入转储到一个文本文件中,以便更好地剪掉空白,但它们提供的主要内容是对站点进行完整的健康检查。

解析扫描输出

正如您从输出中看到的,有很多东西需要消化。第 1 节概述了该工具的实例化和基本连接性。如果服务器未正确输入,则脚本将在此处退出。第 2 节(为简洁起见而删节)介绍了与已知、受信任的 PKI 证书颁发机构进行的证书检查,以确保证书充分关联。证书问题可使攻击者假定合法服务器的身份,从而劫持流量以满足其恶意需求。第 3 节将通过服务器的会话恢复功能,帮助我们查看与诸如 Heartbleed 模块和 Resility 等插件相关的特殊压力测试的结果。第 4 节重点介绍了可用的密码;支持较弱或已知易受攻击的密码套件的服务器只是在自找麻烦。第 5 节相当简单;扫描花了多长时间?在过去,使用 Cisco 防火墙进行测试时,手动推断启用和协商哪些密码套件可能需要几个小时。不错,但偶尔,它可能会提供不同的结果,因此让我们看看另一个工具,它可以帮助交叉检查并为我们提供另一个数据点。

SSLscan 可以做到!

SSLscan 是 Kali 中提供的另一个工具,它擅长于自动化扫描过程,并帮助我们评估软件版本、使用的密码以及安全连接的许多其他方面。SSLscan 内置于 C 并利用 OpenSSL 1.0.1 库,同时也是跨平台的,因此,如果您碰巧需要 Microsoft Windows 或 Mac OS 版本的应用,它们都是可用的。SSLscan 的选项更为简单,它们有助于文件简短,虽然这使得运行起来非常容易,但运行另一个在 PKI 方面有更多细节的工具也很有帮助。要运行 SSLscan,只需在我为此运行的扫描中使用以下语法:

sslscan [Options] [host:port | host]
sslscan www.hackthissite.org

从下面的屏幕截图中可以看到,它提供了更紧凑的输出,但其中一些是以证书检查和在渗透测试中可能有用的细节为代价的。相同的颜色代码和编号方案用于帮助与 SSLyze 输出形成对比:第 1 节概述了该工具的基本连接测试;第 2 节显示了一个不太详细的证书检查;第 3 节仅限于心脏出血扫描结果;第 4 节重点介绍了可用的密码。不包括计时器,但计时与 SSLyze 在公共站点测试中的计时相当。

SSLscan 扫描输出

在这个特定场景中,两个工具都检测到相同的首选密码套件**ECDHE-RSA-AES128-SHA,但在一些测试中,人们报告了 SSLyze 在正确解释或协商 SSLscan 所做的相同密码套件时出现的一些问题。此类问题需要运行这两种工具并使用手动分析来解决任何冲突。Kali 发行版中的另一个工具tlssled**基于底层 SSLscan 结果将输出重新格式化为摘要样式视图,但仅提供 SSLscan 的功能。

Nmap 也有 SSL 技能

我们将研究的通用 SSL/TLS 扫描的最后一个工具是古老的Nmap。通过使用特定于任务(ssl-enum-ciphers的脚本,Nmap 可以枚举主机上可用的所有密码,甚至可以根据当前的最佳实践为每个密码提供分级。虽然它缺乏 SSLyze 和 SSLscan 的完整性,但此功能使它成为向客户提供建议的有用且众所周知的引擎。

以下屏幕截图中的输出显示了针对 OWASP BWA 本身(主页,而非特定应用)的扫描可能是什么样子:

nmap -sV ; script ssl-enum-ciphers -p 443 www.hackthissite.org 

带有 ssl 枚举密码扫描输出的 Nmap

利用缺陷


一旦您扫描了 SSL/TLS 密码问题或证书问题,就可以做很多事情来查找攻击者将要使用的特定漏洞,这些相同的攻击可以通过我们在前几章中已经访问过的一些工具进行。让我们看看一些更著名的漏洞。

狮子狗�� 全部树皮,无咬伤(通常)

在降级的传统加密狮子狗)(CVE-2014-3566)上填充 Oracle 是一个漏洞,允许中间人利用密码向下协商到受影响的 SSLv3.0密码块链接CBC****进行攻击密码套件。使用 MITM 攻击时,POODLE 需要 256 个 SSL 请求来显示每个字节的数据,除非在一段时间内有一个大规模、强大且持久的 MITM 代理,否则它不会经常使用。尽管如此,这是一个热点问题,如果 SSLscan 或 SSLyze 显示存在此组合,您可以推断主机上可能存在此问题,或者您可以选择运行nmap及其ssl-poodle模块以验证条件是否存在。以下脚本将在您的目标上检查它:

**``` nmap -sV ; version-light ; script ssl-poodle -p 443


与针对`ssl-enum-ciphers`脚本的 Nmap 扫描不同,此扫描会短暂停止,只会深入研究此 CVE 的细节(如下面的屏幕截图所示)。您还可以看到,我们在`ssl-enum-ciphers`扫描中检测到了 CVE,但标记了它,而没有通常提到的名称。

![](https://www.packtpub.com/img/9781784395070/img/B03918_08_06.png)

带有 SSL 贵宾犬模块扫描输出的 Nmap

OpenSSL 团队讨论了背景([https://www.openssl.org/~bodo/ssl-poodle.pdf](https://www.openssl.org/~bodo/ssl-poodle.pdf)以及利用此漏洞的方法。我的朋友乔伊·穆尼兹(Joey Muniz)也在他的*安全博客*博客([中写到了这个漏洞 http://www.thesecurityblogger.com/ssl-broken-again-in-poodle-attack/](http://www.thesecurityblogger.com/ssl-broken-again-in-poodle-attack/) ),并在较高层次上描述了其实现方式。**  **### 心碎

另一个备受关注的漏洞是非常严重的**心脏出血**漏洞(CVE-2014-0160,[http://heartbleed.com](http://heartbleed.com) )。与 POODLE 不同的是,这项功能不能直接配置,而是需要一个底层 OpenSSL 软件补丁,当时大约有四分之三的互联网连接主机使用该软件。POODLE 允许攻击者一次猜测一个字节的会话 cookie,Heartbleed 是一个漏洞,允许攻击者读取易受攻击主机上的所有私有加密密钥、用户名和密码、证书以及所有受保护的通信。虽然贵宾犬似乎是一种对抗早已被取代的密码类别的学术活动,但《心血》影响了全球绝大多数网络设备。

我们在 SSLyze 和 SSLscan 中看到,它们都能够检测 Heartbleed 漏洞,但是如果您想利用它作为更大笔测试的一部分,该怎么办?Meta AsPrimIT 刚好能够交付,所以让我们看一看!

启动 Metasploit(使用`msfconsole`命令)后,我们可以使用`auxiliary/scanner/ssl/openssl_heartbleed`模块支持我们利用 Heartbleed。

让我们来看看选项(如下面的截图所示),当我们配置漏洞时,我们需要考虑:

![](https://www.packtpub.com/img/9781784395070/img/B03918_08_07.png)

Metasploit 中 Heartbleed 模块的配置选项

我们将调查 BeeBox 虚拟机([http://www.itsecgames.com 点击下拉列表中的**`Heartbleed Vulnerability`**,如下图所示。请注意,有前面提到的**`POODLE`**等较旧的攻击可供您练习。我们可以看到实验室希望我们在名为`8443`的端口上工作,而我的**RHOSTS**只是一台服务器`172.16.30.134`。我还将**VERBOSE**(选项中未显示,因为它是一个更全局的模块不可知设置)设置为*true*,以便我们可以看到所有事务。我还将保留其余的默认设置。](http://www.itsecgames.com)

![](https://www.packtpub.com/img/9781784395070/img/B03918_08_08.png)

正在查找易受攻击的服务器。

修改这些设置后,我们可以简单地键入`run`或`exploit`,Metasploit 现在将尝试破坏服务器并清除它可以找到的所有凭据和 cookie,如下面的屏幕截图所示。这种致命的东西不应该这么容易,你可以看到为什么我们需要测试和保护这些攻击。

![](https://www.packtpub.com/img/9781784395070/img/B03918_08_09.png)

Metasploit 的 Heartbleed 漏洞是成功的。

### 溺水

**溺水**(CVE-2016-0800)漏洞识别了一台服务器,该服务器会受到依赖 SSLv2 支持的非普通攻击,截至 2016 年 3 月,至少三分之一的互联网服务器易受攻击。攻击者将利用应用支持的 SSLv2,使用与用于*盐*或帮助随机化 TLS(较新的协议版本)相同的密钥。通过启动数以万计的 SSLv2 消息,他们能够收集在更健壮和最新版本的 TLS 中使用的密钥,从而用偷来的私钥打破高级加密。曾经被认为是不切实际的,因为相信需要的信息太多了;他们还称之为*百万条消息攻击;*目前已知,通过商用资源,可以在数小时内使用数万条消息实现这一目标。

检测溺水漏洞就像查看目标服务器或共享相同密钥的任何其他服务器上是否支持 SSLv2 一样简单。另一个可用于识别漏洞的工具位于[上 http://test.drownattack.com](http://test.drownattack.com) 网站。

### 重温经典

随着时间的推移,SSL 和 TLS 都发现了各自的漏洞;考虑到对 OpenSSL 等模块的巨大依赖,这是不可避免的,这些模块由一小群工作过度、支持不足的志愿者维护。我们应该了解并检查的其他一些漏洞如下所述:

*   **BEAST**:我们的客户需要练习良好的补丁和配置卫生,以避免攻击,例如针对 SSL/TLS(CVE-2011-3389)攻击的**浏览器漏洞攻击。BEAST 以 TLSv1.0**初始化向量**(**IVs**为目标,它们是帮助随机加密的种子值。猜测 IVs 有助于攻击者重建对话,并揭示原本应该被掩盖的非常简单的文本。他们可以通过更新版本的 TLS 避免这些问题。**
*   **犯罪**:**压缩比信息泄漏变得容易**(CVE-2012-4929)在旧版本中使用 TLS 压缩时是一个漏洞。通过注入字节和比较响应的大小,黑客可以识别并推断 cookie 本身,从而使他们能够劫持会话用于自己的恶意用途。现代浏览器并不容易受到攻击——因为�� 因此,客户应该始终保持最新。
*   **违约**:**超文本**自适应压缩的浏览器侦察和过滤【CVE-2013-3587】使用了类似的技术,但采用了 HTTP 压缩,因此使用违约不依赖 TLS 压缩。您可以建议客户在多个事务中阻止压缩、分解和隐藏任何密码或身份验证值,也可以使用包装器和操作隐藏请求。**  **## 以中间人的身份出现

* * *

MITM 攻击得到了网络和应用安全供应商的大量关注,这是理所当然的。MITM 攻击可以在应用服务器附近进行,但在客户端附近更常见。MITM 攻击的等级会有很大的不同,从被动监控流量模式到主动干扰和凭证获取。考虑到可能产生相同信息的高优先级妥协的普遍性(例如**跨站点脚本**或**XSS**,web 应用渗透测试人员需要评估进行 MITM 攻击的风险和回报。让我们看一看最流行的工具,并调查一些类似的工具,为不同的 MITM 目标。

### 用 SSLstrip 刮去皱纹

**SSLstrip**[https://moxie.org/software/sslstrip/](https://moxie.org/software/sslstrip/) 是一个名为 Moxie Marlinspike 的黑客创建的 MITM 攻击工具,它透明地拦截 HTTPS 流量,并用 HTTP 外观的类似物替换任何 HTTPS 链接和重定向,我们可以看到这些类似物完全不受保护。这种攻击就像是对浏览器配置和用户尽职调查的测试,但它也可以强调 DNS 安全、PKI、双向证书检查和双因素授权的重要性。

*Jason Beltrame*和我在我们的书*中写到了关于树莓皮渗透测试,第二版*([https://www.packtpub.com/networking-and-servers/penetration-testing-raspberry-pi-second-edition](https://www.packtpub.com/networking-and-servers/penetration-testing-raspberry-pi-second-edition) ),但在这种情况下,我们将放弃物理在线配置,转而通过我们的 Kali VM 将流量固定回 MITM(请注意,这是一种基于 LAN 的攻击,因此您将希望在浏览受害者的 LAN 上)。毫无戒心的受害者相信他/她确实有安全的联系。

以下屏幕截图显示了一个高级概述:

![](https://www.packtpub.com/img/9781784395070/img/B03918_08_10.png)

MITM 拓扑

第一件事优先;我们需要欺骗主机,使其认为我们是真正的默认网关。我们可以通过确定网段上的默认 GW 使用`route -n`的原因,识别浏览受害者的 IP(我使用的是带 IE9 的 Windows 7 虚拟机)来实现这一点。通过几个命令,我们可以打开 IP 转发并使用我们的 MAC 地址`arpspoof`受害者,如下所示:

echo 1 > /proc/sys/net/ipv4/ip_forward arpspoof -i eth0 -t 172.16.30.135 172.16.30.2


我们现在需要修改我们的`iptables`配置。如果您以前没有遇到过 Iptables,它将充当内核基于主机的 Linux 防火墙的接口,因此您可以想象,我们需要一些魔法来允许流量进出,而这并不是我们真正想要的。在我的示例中,我将端口`80`用于 HTTP,端口`1111`用于 SSLstrip,但如果需要,可以随意修改后者:

iptables -t nat -A PREROUTING -p tcp ; destination-port 80 -j REDIRECT ; to-port 1111


现在,我们希望从命令行或 GUI 快捷方式启动 SSLstrip:

sslstrip �l 1111


一旦我这样做了,我通常会浏览一个网站,比如[https://www.aol.com/](https://www.aol.com/) 并输入一些假凭证,希望我能在我的 SSLstrip 日志中捕获它们,如以下屏幕截图所示:

![](https://www.packtpub.com/img/9781784395070/img/B03918_08_11.png)

任何 SSL 站点都可以用于测试。

在调用 SSLstrip 的最后一个终端会话中,我经常会从 Python 脚本中发现一系列错误,但它仍然像 champ 一样工作。只需打开`ssltrip.log`文件(我的文件位于`root`目录中),并滚动到搜索字段字符串之一的末尾;就我而言,我使用了密码。

下面的屏幕截图显示了我希望看到的假凭证:

![](https://www.packtpub.com/img/9781784395070/img/B03918_08_12.png)

SSLstrip 的日志和捕获的 creds。

### 使用 SSLsniff 和 SSLsplit 看起来合法

我们希望我们的客户不会爱上删除 SSL/TLS 保护的 MITM。更精明的客户将培训他们的用户并限制浏览器中的非 HTTPS 流量。在这些案例中,莫西再次回到了 SSLsniff,就像丹尼尔·罗瑟利斯伯格的**SSLsplit**([一样 https://github.com/droe/sslsplit](https://github.com/droe/sslsplit) ),通过充当透明代理并提供与服务器和客户端的 SSL/TLS 连接,可以提供更高级别的 MITM 攻击。SSLsniff 和 SSLsplit 都将伪造 X.509 证书,并在大多数相关证书字段中模拟服务器,因此对于我们怀疑用户没有注意到其证书检查或强制执行可能较弱的环境,这是一种非常好的方法。这两种工具都依赖于伪造的证书,但使用相同的 IP 转发和`iptables`配置来疏通流量。为了实现这一点,您需要有一个正在运行的证书颁发机构;如果你还没有建立自己的网站,这里有一个很棒的教程:[https://jamielinux.com/docs/openssl-certificate-authority/](https://jamielinux.com/docs/openssl-certificate-authority/) 。

#### SSLsniff

我们可以先看看 SSLsniff。然后,SSLsniff 要求您拥有目标 web 应用的私钥和证书(不太可能),或者生成伪造的证书,如以下屏幕截图所示:

openssl req -config openssl.cnf -new -nodes -keyout .key -out .csr -days 365


![](https://www.packtpub.com/img/9781784395070/img/B03918_08_13.png)

为 SSLsniff 和 SSLsplit 欺骗证书。

我们在**通用名**(**CN**中使用 Unicode`\x00`作为占位符,并遵循[上优秀教程提供的指导 http://www.kimiushida.com/bitsandpieces/articles/attacking_ssl_with_sslsniff_and_null_prefixes/](http://www.kimiushida.com/bitsandpieces/articles/attacking_ssl_with_sslsniff_and_null_prefixes/) 。需要创建一个真正的伪造证书作为后端编程,以创建空字符,从而使受害者浏览器将其视为真正的交易。一旦我们创建了`cert`和`key`,我们将需要使用我们自己的 CA 签署证书,将`key`和`cert`连接起来,然后将其放在我们虚假网站的自己目录中:

openssl ca -config openssl.cnf -policy policy_anything -out gmail.crt -infiles gmail.csr cat paypal.crt gmail.key > gmail.pem mkdir -p /usr/share/sslsniff/certs/fakegmail/ cp gmail.pem /usr/share/sslsniff/certs/fakegmail/


假设您已经正确配置了 IP 转发和`iptables`,SSLsniff 可以使用单个命令启动:

sslsniff -t -c /usr/share/sslsniff/certs/fakegmail -s 1111 -w /tmp/sslsniff.log -d �p


现在我们已经有了 SSLsniff 在等待受害者的流量,我们可以开始使用与 SSLstrip 中使用的相同类型的`arpspoof`重定向来自客户端的流量:

arpspoof �I eth0 �t 172.16.30.135 172.16.30.2


您可以显示`sslsniff.log`文件的内容并查看凭证(如以下屏幕截图所示)。这种攻击比 SSLstrip 成功的可能性更大,因为用户仍然会在浏览器的地址栏中看到 HTTPS 会话;而且,根据受信任的 CA 配置,他们可能没有什么警告,说明事情不正常。如果您使用的是真正的伪造证书(请参阅本教程了解可能发生的情况:[https://blog.leetsys.com/2012/01/18/insider-rogue-certification-authority-attack/](https://blog.leetsys.com/2012/01/18/insider-rogue-certification-authority-attack/) ),它甚至看起来是有效的。

![](https://www.packtpub.com/img/9781784395070/img/B03918_08_14.png)

查看 SSLsniff 的凭据刮取

#### SSLsplit

SSLsplit 遵循类似的方法;首先,您需要确保启用了 IP 转发。通常使用更多的`iptables`条目来拉入更多的端口,提供 NAT,并使用典型的重新映射端口`80`、`8080`、`443`和`8443`:

iptables -t nat -F iptables -t nat -A PREROUTING -p tcp �dport 80 -j REDIRECT �to-ports 8080 iptables -t nat -A PREROUTING -p tcp �dport 443 -j REDIRECT �to-ports 8443 iptables -I INPUT -p tcp -m state �state NEW -m tcp �dport 80 -j ACCEPT iptables -I INPUT -p tcp -m state �state NEW -m tcp �dport 443 -j ACCEPT iptables -I INPUT -p tcp -m state �state NEW -m tcp �dport 8443 -j ACCEPT iptables -I INPUT -p tcp -m state �state NEW -m tcp �dport 8080 -j ACCEPT service iptables save


现在,我们可以使用单个命令启动 SSLsplit。请注意,生成伪造证书没有劳动密集型开销;这非常有用,因为我们可以部署它来收集多个站点上的信息,而不必为每个站点生成假证书:

sslsplit -l connections.log -S ~/scrapes/ -k ~/sslsplit-keys/ca.key -c ~/sslsplit-keys/ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080


与 SSLsniff 一样,输出指向一个日志文件,告诉您可以在`~/scrapes`文件夹中找到日志。

#### 其他 MITM 动机

我们可以以 Kali Linux 为基础实现大量的 MITM 攻击方法。如果您正在寻找仅限 HTTP 的 MITM(一些内部站点可能仍然使用未受保护的 HTTP),或者如果您正在寻找非常具体的内容,请查看**漂移网**([http://www.ex-parrot.com/~chris/driftnet/](http://www.ex-parrot.com/~chris/driftnet/)和**Urlsnarf**。其中每一个都使用相同的 IP 转发和 ARPSopof 配置,但提供了一些不同于 SSLstrip 的功能。漂移网专注于从通过 Kali 虚拟机的 HTTP 流中提取图像和多媒体,这有助于拦截企业培训。Urlsnarf 只需拉取主机访问的所有网站,这可以帮助您映射显式访问且可能不会出现在 DNS recon 任务中的内部网站。

## 总结

* * *

虽然一些攻击获得了大量的新闻和荣誉,但推动社会对网络依赖的信任关系至关重要。对这些信任机制的攻击非常令人担忧,因为它们通常会让用户和应用开发人员不知道这种危害。本书中涵盖的以及 OWASP 前 10 名中所代表的许多其他威胁都是 web 应用所有者可以控制或有权补救的。然而,加密或基于 PKI 的攻击涉及其领域之外的其他方面,例如证书颁发机构的完整性、网络对 ARP 注入的容忍度以及应用自身域之外的局域网的完整性。在诸如 Heartbleed 和 POODLE 等攻击的情况下,即使是提供这些服务所依赖的软件也可能造成最终的危害:敏感数据和凭证的泄漏。

在本章中,我们简要介绍了如何扫描运行应用的软件中的已知漏洞。我们还看到了 SSLscan 和 SSLyze 在检测 PKI 细节方面的不同,以及我们如何使用它们和 Nmap 来识别弱点。我们还讨论了两种更普遍的感兴趣的攻击,如何利用 Heartbleed,以及如何以多种方式处理 MITM 攻击。

在[第 9 章](Mastering%20Kali%20Linux%20for%20Web%20Penetration%20Testing_split_000.html#)*、压力测试认证和会话管理*中,我们假设加密状态良好,更容易的途径是在应用端破坏认证。这些身份验证和会话管理攻击更侧重于特定应用配置和维护上的潜在缺陷,而实际上,这些缺陷往往更容易受到攻击。这些攻击还有另外一个好处,即使用合法用户将拥有的相同安全路径进入环境�� 对目标系统的持续测试和深入分析至关重要。[第 9 章](Mastering%20Kali%20Linux%20for%20Web%20Penetration%20Testing_split_000.html#),*压力测试认证和会话管理,*也将标志着我们已经投资的一些工具集的回归,所以喝一杯,我们开始工作吧!**