Kali Linux:高级WLAN攻击
我们可以轻松定位用于向接入点发送密码的HTTP POST请求。下面是之前封包的详细视图。展开HTTP协议头,我们会看到我们所输入的密码并没有以纯文本发送,反之它发送了哈希值。如果我们看一看封包,在上一个截图中标号为64,我们可以看到,有一个/md5.js的请求,这使我们怀疑它是密码的MD5哈希值。有趣的是,在哈希的创建中,如果没有在每个会话层面加盐,这个技巧容易受到重放攻击。我们将其留做一个练习来发现细节,因为这并不是无线安全的一部分,从而超出了这本书的内容。
这展示了在中间人攻击期间,监视器如何轻易窃听由客户端发送的流量。刚刚发生了什么?我们准备的MITM环境现在允许我们窃听受害者的无线流量,而无需让受害者知道。这是因为在MITM中,所有流量都经过攻击者的主机。所以,所有受害者的未加密流量都可被攻击者窃听。试一试 - 发现Google搜索者在当今世界,我们都认为我们在Google上的搜索都是私密的。很不幸,Google搜索上的流量都经过HTTP,并且默认是纯文本。你可以想出一个智能的过滤器,使你能够使用Wireshark来查看受害者所执行的所有Google搜索吗?7.3无线上的会话劫持我们可以基于MITM执行的另一种有趣的攻击就是应用会话劫持。在MITM攻击期间,受害者的封包发往攻击者。攻击者负责将其转发到正常的目的地,并将目的地发回的响应转发给主机。有趣的是,在这个过程中,攻击者可以修改封包的数据(如果没有保护或加密)。这意味着它可以修改、拆解甚至静默丢掉封包。在下一个例子中,我们会使用准备好的MITM环境看一看无线上的DNS劫持。之后利用DNS劫持,我们将浏览器的会话劫持为。
使用DNS过滤器,我们可以看到,受害者发出了的DNS请求:为了劫持浏览器会话,我们需要发送伪造的DNS响应,它会将的IP地址解析为黑客主机的IP 192.168.0.199。我们用户这个目的的工具叫做dnsspoof。它的语法是:dnspoof –i mitm-bridge命令的输出如下:刷新浏览器创建,现在我们可以在Wireshark中看到,只要受害者发送了任何主机(包括Google)的DNS请求,Dnsspoof都会回应。在受害者主机上,我们会看到不能连接的错误。这是因为我们将google.com的IP地址解析为192.168.0.199,这是黑客主机的IP,但是没有监听80端口的服务:让我们在Kali上运行Apache,使用下列命令:apachet2ctl start命令的输出如下:现在,一旦我们刷新了受害者主机上的浏览器,我们都会收到It works!,它是Apache的默认页面。这个示例表明,可以拦截数据并发送伪造的响应,来劫持受害者的会话。刚刚发生了什么?我们使用无线MITM作为基础执行了应用劫持攻击。所以这背后到底发生了什么?MITM准备工作确保了我们能够看到受害者发送的所有封包。只要我们看到了来自受害者的DNS请求封包,运行在攻击者笔记本上的Dnsspoof就会发送DNS响应给受害者,将google.com解析为攻击者的主机IP。受害者笔记本接受这个响应并且浏览器会向攻击者的IP地址的80端口发送HTTP请求。在实验的第一个部分,攻击者机器上没有任何进程监听80端口,于是Firefox返回错误。之后,一旦我们在攻击者主机上的80端口(默认端口)开启了Apache服务器,浏览器的请求就会收到来自攻击者主机的响应,带有默认的It works!页面。这个实验表明,一旦我们完全控制了较低的层级(这里是第二层),我们就能轻易劫持运行在较高层级上的应用,例如DNS客户端和Web浏览器。试一试 - 应用劫持挑战会话劫持的下一步就是修改客户端发送的数据。Kali上可用的软件叫做Ettercap。这会帮助你用于网络的创建搜索和替换的过滤器。这个挑战中,编写一个简单的过滤器,将网络上所有安全的东西变成不安全的。尝试在Google上搜索安全,并看看结果是否显示为不安全。7.4发现客户端的安全配置之前的章节中,我们看到了如何创建开放、WEP和WPA接入点蜜罐,但是当我们看到来自客户端的探测请求时,我们怎么知道探测的SSID属于哪个网络呢?这看起来有些棘手,但解决方案很简单。我们需要创建广播相同SSID的接入点,但是拥有不同的安全配置。当漫游客户端搜索网络时,它会基于储存的网络配置自动连接到这些接入点之一。所以,让我们开始吧!实战时间 - 客户端的解除验证攻击我们假设无线客户端拥有Wireless Lab网络配置,在它没有连接到任何接入点时,它发送了这个网络的探测请求。为了发现该网络的安全配置,我们需要创建多个接入点。出于我们的讨论,我们假设客户端的配置时开放网络、WEP、WPA-SPK或者WPA2-SPK。所以我们需要创建四个接入点。为了完成它,我们首先创建四个虚拟接口 - mon0到mon3,多次使用airmon-ng start wlan0命令:你可以使用ifconfig -a命令看到所有新创建的接口:现在我们在mon0上创建开放AP:我们在mon1上创建WEP保护的AP:WPA-PSK的AP在mon2上:WPA2-PSK的AP在3上:我们可以在相同频道上执行airodump-ng来确保所有四个接入点都启动并且运行,像这样:现在让我们打开漫游客户端上的WIFI。取决于之前连接到哪个Wireless Lab,它会连接到该安全配置。这里,它连接到了WPA-PSK网络,像这样:刚刚发生了什么?我们创建了拥有相同SSID但是不同安全配置的多个蜜罐。取决于客户端为Wireless Lab网络储存哪个配置,它会连接到相应的那个。这个技巧十分实用,因为如果你在执行渗透测试,你不知道客户端的笔记本上是哪个安全配置。这会允许你通过引诱客户端来找到合适的那个。这个技巧也叫作WIFI钓鱼。试一试 - 引诱客户端在客户端上创建相同SSID的不同配置,并检查你的蜜罐是否能检测它们。要注意,许多WIFI客户端可能不探测储存在配置中的网络。这时就不能使用我们讨论的技巧来检测它们。小测验 - 高级WLAN攻击Q1在MITM攻击中,谁是中间人?接入点。攻击者。受害者。都不是。Q2Dnsspoof能够:伪造DNS请求。伪造DNS响应。需要在DNS服务器上运行。需要在接入点上运行。Q3无线MITM攻击可以在__上完成:同时在所有无线客户端上。一次在一个频道上。在任何SSID上。3和4。Q4在我们的MITN准备工作中,那个接口离受害者最近?At0 Eth0 Br0 En0总结这一章中,我们了解了如何使用无线作为基础来实现高级攻击。我们为无线上的MITM攻击做了一些准备,之后用它来窃听受害者的流量。之后我们使用相同的准备工作,通过DNS毒化攻击来劫持受害者的应用层(Web流量)。在下一章中,我们会了解如何按照正确的规划、探索和报告阶段来实施无线攻击。我们也会涉及到保护WLAN的最佳实践。