802.11无线网络之端到端攻击

2019 年 4 月 1 日 计算机与网络安全

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

微信群回复公众号:微信群QQ群460500587


微信公众号:计算机与网络安全

ID:Computer-network

在推出Windows Vista的时候,Microsoft公司针对无线网络的模式做了重大的改变,这些改变主要体现在两个地方,其一是设计了“网络驱动程序接口规范6.0版本”(Network Driver Interface Specification 6.0,NDIS)模型,其二是设计了“本地Wi-Fi接口”(native Wi-Fi driver)驱动程序,二者共同取代了原有的古板、缺乏特色的Windows XP无线网络接口。在其后继各个版本中,如Windows 7中的NDIS 6.20、Windows 8中的NDIS 6.30、Windows 8.1中的NDIS 6.40,这些版本一起使Windows的无线功能更加强大。Windows的用户可以在“无线协议集”(wireless stack)里享受更大的灵活性,以及在允许新的应用程序运行、在安全模式、在更好地访问无线服务方面,都比以前的版本有了更大的进步。


这种新的访问方式在给Windows使用者带来方便的同时,也同时为黑客提供了一种新的能力,该能力允许黑客从命令行(command-line)或图形用户界面(Graphical User Interface,GUI)将无线协议用于恶意的目的,进而攻击附近的其他网络。我们将从攻击者的角度,来检验Windows 的“本地Wi-Fi接口”驱动程序上的功能,然后借助这些功能,跨越半个地球,去攻击位于另一个远端的一个无线网络


下面将带您穿越“端到端”(end-to-end)的攻击过程,从攻击前的准备,侦察对方的弱点,占领一个无线客户端,到攻击远端的整个无线网络。在这种情况下,我们将着重突出一个常见的攻击线路:在该线路上,攻击者会先在安全薄弱的环节入手,攻击这一个客户端。当这个被攻占过的客户端离开当前的环境,回到了他自己的另一个网络环境(比如他单位的网络或他家里的网络)时,这个原本对于我们来说是“隔断”式的网络环境,突然因为有一个被我们攻击的主机可以合法的进入,而对我们开放了。也就是说,在这个客户端返回到自己网络的时候,借助于该被攻占的客户端的资源,我们通过“架桥过隙”(bridge the air-gap)的方式同样可以访问或攻击他的那个系统上的计算机,甚至是整个网络。


 攻击的案例 


“无线热点”指的是在公共场所提供的,通过无线局域网Wi-Fi技术接入Internet服务的地点。在这种服务中,用户只要拿着无线终端(手机、iPad等),找到“无线热点”的网络名称(即“基本服务集标识”),如果有密码,则输入密码,随后连接到“无线热点”的无线路由器(即“AP接入点”)上,然后就可以访问互联网了。无疑,“无线热点”的环境为我们攻击客户系统提供了一个极好的机会。通过使用诸如Airpwn这样的工具,可以操控Web浏览器的活动,进而就可以侦听到很多敏感的内容。如没有加保护措施的电子邮件和其他的网络活动,再如冒充网络的服务。总之,一个攻击者有多项选择可以用来对“已占领了的客户端”系统实施操作。当然,如果您不是“打哪儿指哪儿”,而是“指哪儿打哪儿”,那么在完成上面操作的时候,还有一个重要的前提,那就是您得先找到要攻击的目标。


“热点攻击”(hotspot attack)属于投机取巧型的攻击方式,黑客实施这种攻击有两种方式,一种是“打哪儿指哪儿”式,利用这种方式,在攻击的范围,发现有漏洞的客户端后,就对它实施攻击,并在成功后将它们添加到自己的“僵尸网络”(botnet)中。另一种是“打哪儿指哪儿”式,用户先选中一个目标,然后在其客户端上找漏洞,最后实施攻击。无论是哪一种,现在面临的问题都是:选择合适的“热点攻击”的地点。针对一个具体的目标地址,“谷歌地图”(Google Map)可以准确地实施定位,比如它可以告诉您,“这个点”就是某个员工在中午用餐时间经常光顾的餐馆所在的地址。将这种定位技术,结合上述可用的“热点”功能,黑客可以预先在某个商店旁边搭建一个可以实施某种攻击的“热点”,然后诱惑被锁定的用户连接到这个“热点”,并使用该“热点”进行上网的操作。


在几乎每一个大城市中,“无线热点”广受其用户的欢迎,同时也为黑客提供了很多机会。在下面的这次攻击的例子中,我们将描述一个虚构的攻击目标,名叫“羹美食品”(Potage Food)。这是一家提供有“热点”环境的餐馆,并为客户提供免费Wi-Fi服务,所使用的“服务集标识”是“POTAGE”。


在这种攻击中,我们将演示如何颠覆无线客户端系统,让其执行恶意的可执行文件,并授权我们去访问其客户端系统。当这个客户端返回到他家里,开始使用家庭网络的时候,我们将通过“架桥过隙”的方式远程访问他的计算机系统和他的家庭网络系统。本文中,用于完成破解这种远程网络的工具,都是使用Windows 7或Windows 8的客户端。


一、攻击准备


要攻击一个对我们实施“隔断”策略的网络,对于这个网络,我们是一个“air-gap”主机,所以即使是再高水平的黑客,也是“巧妇难为无米之炊”。但是现在,我们发现了一个可以合法进入这个网络中的客户端,那么“架桥过隙”式攻击就成了当务之急,首先,我们通过某种方法,确定了我们要攻击的客户端就在某个无线热点所在的区域内。然后,我们建立起发动攻击的基础设施,如图1所示。在这里,我们(即图中“Attacker”)将在“热点”环境(即图中“AP SSID:POTAGE”)中定位好事先要攻击的主机系统(即图中下边的“Victim”),在这个客户端返回到他自己的公司网络环境(即图中“AP SSID:VOIP”)之前,我们需要在他的电脑上开启一个“远程访问进程”(remote access process),该进程即使在他(即图中左边的“Victim”)回到他们公司的网络环境之后,仍可以与我们(即图中“Hack Server”)连接,并授权我们访问他们公司的内部网络(即图中“AP SSID:VOIP”)和附近的各种资源。

图1  我们的目标和配套的网络环境

作为我们远程访问的一种方法,我们将利用“Metasploit框架”(Metasploit framework)中“Meterpreter有效载荷”(Meterpreter payload)机制进行攻击。在“被占领主机”(comp-romise computer)的Windows操作系统上,通过手动或自动交互的方式使用“Meterpreter有效载荷”可以显示出巨大威力,在攻击成功后,攻击者可以在“被占领主机”上访问文件系统、注册表,在“命令提示符”中运行shell命令,开启系统进程等操作。在利用“Metasploit框架”中,要使用“Meterpreter有效载荷”机制,仍然还是使用msfconsole工具。在我们的“入侵服务器”(Hack Server)平台上,我们将启动Metasploit的msfconsole工具,并启动Meterpreter处理程序,显示效果如下所示。

在上面Metasploit框架下msfconsole工具的例子中,“LHOST”参数指定所使用的无线网络接口,也就是攻击者的系统将用来从Meterpreter的会话中监听和接受“进接口”的连接。如果该值指定为0.0.0.0,则表示Metasploit将接受攻击系统上任意接口上发来的连接。


msfconsole的提示符停留在最后一行,等待Meterpreter客户端连接到系统。在整个攻击期间,我们都把这个进程放在一边,让它处于运行状态即可。对应于上面的TCP连接,就是服务端处于“监听”状态,一旦有Meterpreter客户端的“连接”,则新建一个线程,在新建线程中“接受”客户端的“连接”,然后进行数据“接收/发送”通信,最后双方“关闭”连接。但整个主线程则一直处于“监听”状态,所以上面的msfconsole只需要放在那里,不再需要用户的干预。


下一步,我们要做的就是准备发动“Meterpreter有效载荷”攻击的“原材料”,即创建Meterpreter客户端中要发送的有效载荷,并最终将这些内容发送给被攻击的目标主机。由于许多“防病毒”(antiviru)软件会把Meterpreter的客户端识别为恶意软件,所以我们需要执行一些额外步骤,把可执行文件重新以另一种形式编码,从而避免”防病毒”软件的检测。一个不错的选择就是使用同为“Metasploit构架”中的另一个程序msfpayload,这个工具所生成的可执行文件中,使用的是另一个由Christopher Truncer所发明的机制,这个机制在躲避“防病毒”软件的检查方面,具有更好的检查效果。除此之外,Veil是一个基于Python菜单驱动(menu-driven)的工具,通过这个工具编码生成的二进制可执行文件中,使用了好几种技术,这些技术都可以较好地躲避“防病毒”软件的扫描。该系统还可以在现代较新的Ubuntu版Linux分布式操作系统上使用。


要下载Veil系统,我们使用git下载工具克隆一个GitHub的储存库(repository)。下一步,我们修改Veil的目录,然后运行Veil.py这个脚本文件,这将生成该系统的菜单界面,其显示效果如图2所示。

图2  Veil系统用于生成可执行编码的菜单驱动界面

Veil系统在生成可执行的有效载荷方面,为用户提供了好几种选择。每种选择都可以较好地躲避“防病毒”软件的恶意程序扫描,包括将一个可执行文件编码成一个PowerShell的脚本,或者是使用PyInstaller或Py2Exe程序生成Python的可执行文件。在下面的这个案例中,我们将使用Viel生成Python的编码机制。


先在Viel的菜单界面上输入菜单项所代表的那个“有效命令”(available command),然后按回车键。在这里,我们选择其中的list命令列出“可用的‘语言/有效载荷’攻击方式”(list avalialbe Lanauage/playload);我们使用python/AESVirtualVlloc“有效载荷”攻击方式,如图3所示。

图3  Veil的AESVirtualAlloc“有效载荷”攻击选择

选择完编码机制之后,Veil提醒我们生成shellcode代码。默认情况下,生成的将是Meterpreter下的reverse_ccp的shellcode有效载荷。我们保持默认的设置,使用IP地址和端口号都是“入侵服务器”所提供的IP地址和端口号,如图4所示。

图4  Veil生成shellcode有效载荷式攻击代码

遇到提示的时候,我们输入一个名字,该名字将作为生成编码可执行文件的文件名,该文件名不需要扩展名。假设我们输入“potage”,然后选择PyInstaller作为可执行文件的生成器。在可执行文件创建成功以后,Veil显示了一个编码过程的总结信息,以便提醒用户。在提示信息中包括了exe文件、py文件的输出路径,如图5所示。另外,Veil也提醒我们不要上传这些创建好的可执行文件到任何带有在线杀毒扫描的网站或提交到杀毒软件中进行扫描测试,这也是该软件在每个许可证书(license)中明确限定的。我们按回车返回到Veil的主菜单,然后输入exit命令退出Veil程序。

图5  Veil完成生成可执行文件

最后,我们将生成的potage.exe可执行编码文件复制到U盘中,这个文件将在后面的“热点攻击”中使用。使用配套基础设施组件,在攻击完成之后,我们将准备去“热点”的位置部署上去,静待目标出现并使用。


1、利用“热点”环境进行攻击


虽然有好几次机会都可以用来利用“热点”环境进行攻击,不过,这次我们打算把重点放在攻击“客户端下载会话”(HTTP download session)这个漏洞上,通过“I-love my neighbors”虚拟机的环境进行漏洞检测,并准备把potage.exe可执行文件,以及其他附加的文档,采用“客户端下载会话”攻击的方式,通过HTTP协议“植入”到用户的客户端中。


重新启动I-love-my-neighbors的虚拟机以后,我们需要为我们以后的攻击做一些设置。首先,我们重新配置设备,仍然使用“I-love-my-neighbors”默认的“服务集标识”名称“victor-timko”配置作为“热点”的名称。部署好无线“热点”以后,“热点”覆盖范围内的用户将在漫游的时候自动找到我们这个“热点”,这既取决于我们的信号质量,也取决于他本地无线网卡的质量。如果他们的无线终端在无线连接的配置文件里将连接方式设置为“自动连接”(automatically reconnect),那么当我们的“热点”添加到他的Windows中的“附近无线站点列表”中时,这对我们来说将是一个非常好的状况。不过,需要记住的是,“服务集标识”是区分大小写的,所以如果您要冒充被攻击客户端的热点环境,就一定要输入一个完全相同的“服务集标识”名称。


从I-love-my-neighbors服务器上的shell命令输入框中,我们可以通过vi命令编辑/etc/hostapd/hostapd.conf.def文件,主要修改的内容是,将其中原来默认的“服务集标识”改为新的标识。即将“SSID=victor-timko”改为“SSID=POTAGE”,这就对应于图1中下面的那个AP接入点。

为了实施攻击,我们将在I-love-my-neighbors服务器上使用replaceExes.pl服务,每次当客户端访问网页的时候,我们的AP接入点将会偷偷将/var/www/setup.exe文件,在客户端的浏览器通过HTTP协议下载可执行文件的时候,将其注入到客户端的主机里。在最后一步,由于setup.exe文件其实并不是我们真正想要的,所以我们还会用前面准备工作中,用PyInstaller生成的potage.exe文件代替这里的setup.exe文件。具体的操作就是拿出之前保存potage.exe文件的U盘,然后通过如下格式的命令完成替换操作。

下一步,我们运行neighbor.sh脚本,在这个脚本中,会指示程序使用无线网卡的wlan0接口,“I-love-my-neighbors”虚拟机的以太网卡接口eth0,并且服务文件的名字是刚编辑的replaceExes.pl。当我们要攻击的这个客户端漫游到这个冒名顶替的AP接入点时,我们就可以从控制台上看到有状态信息出现。当然这里的客户端还是相对于我们的AP接入点“POTAGE”而言的,其实这是一个完全独立的笔记本电脑主机。

接下来,我们等待这个要攻击的客户端下载并运行我们蓄意专业为他安排的恶意可执行文件,就是上面的那个potage.exe文件。其实,不难想象,我们的“热点”也是冒名顶替的,而且在现在这个“羹美食品”餐馆里,还有一个名正言顺的正牌同名“热点”也在工作,很有可能我们要攻击这个主机因为离那个热点近,而因为那个“热点”的信号更强而实际连接上了正宗的“热点”。所以如果这个时候,您没有耐心这样傻等,那就使用“I-love-my-neighbors”虚拟机上的第二块无线网卡wlan1,利用“拒绝服务”攻击技术让正宗的“热点”暂时“休息一会”,这样可以让被攻击的主机无可选择,从而加速被攻击主机漫游的过程。终于,被攻击主机就范了,它连到了我们的AP接入点“热点”上,并且开始读取网页,借此机会,我们在它通过HTTP下载任何可执行文件的时候,要下载的可执行文件偷偷地被potage.exe文件所取代,整个过程都是透明的,客户端也无从察觉。与此同时,这个“入侵服务器”上,一个Meterpreter会话偷偷地打开了,这之后,我们可以随时连接具体会话。具体过程如下所示。

现在,我们已在被攻击者的客户端上“植入”了Meterpreter工具,并且具有了随时访问它系统的能力。接下来我们要讨论的技术分别是如何控制客户端、在被攻击的电脑上建立一个持久的立足点,然后利用被攻击电脑控制那个我们无法使用,但他却可以访问的远程无线网络,达到“架桥过隙”的初衷。


2、控制客户端


一旦可以访问到客户端主机上的Meterpreter服务端,我们就可以安装一个永久的系统“后门”(backdoor)机制,以后这个客户端系统在离开当前“羹美食品”这个“热点”环境后换到新的网络中,或者重启了系统后,我们仍然可以方便地重新获得系统的访问。Meterpreter系统中,有一个名为persistence.rb的脚本可以让这件事易如反掌。只要运行该脚本,以后只要这个被攻击客户端上网,那么这个后门就会自动连接攻击者的Meterpreter系统。


首先,我们先运行一次不带参数的persistence.rb脚本,在没有参数的情况下,由于脚本不知道要干什么,就只能把当前所有可能的参数选项列出来,以供参考。接下来,我们运行persistence.rb脚本,使用的参数使得用户在登录的时候,会以每30秒一次的频率与攻击者“入侵服务器”建立连接。

通过使用Meterpreter的persistence脚本,被攻击主机会自动反向回连“入侵服务器”的指定端口,端口就是上面参数中指定的nPort值。终于完成了各项工作,这时,我们可以停止“热点”的“模拟攻击”,让这个被攻击的客户端连回合法的“热点”上,进行其原来的正常上网活动。剩下的,就是等待它最终离开“羹美食品”网站,在它回到自己的企业网络后,再进行下一步攻击。


二、本地无线侦察


虽然我们之前就试过通过自己电脑上的Meterpreter客户端访问被攻击主机上Meterpreter的服务端,Meterpreter可以偷偷地授权我们访问被攻击主机的本地系统。不过,我们的兴趣不在于这个被攻击的主机本身,而在于借助这个被攻击主机的“桥”,去探索和攻击它所在的网络。那个网络对我们来说是无法访问的,但对于这个被攻击主机来说,却可以合法地访问,所以只要它回到它所在的公司网络环境中,就同时给了我们访问其公司网络的机会。当被攻击主机回到公司,它又恢复了客户端的身份,不同的是,这时的客户端有两层含义:一层是对于它公司的网络,这台主机是个客户端;另一层含义是,对于“入侵服务器”上的Meterpreter服务端,它上面被我们偷偷植入的Meterpreter客户端也让它具有了客户端的身份。

使用Meterpreter工具访问被攻击主机,我们可以运行一个shell命令,并进行无线网络的侦察(reconnaissance)。在这一步里,我们可以列举出被攻占主机上的配置(configuration)和它系统中我们关注的无线参数。如有几个无线接口、每个无线接口的使用情况、现在配置中首选连接的网络(preferred network)是哪一个,以及其他敏感的信息细节。首先,我们依次使用Meterprecer工具中的sysinfo命令、getuid命令以及idletime命令,检查一些关于系统的基本信息。

通过这些远端主机的基本信息,我们可以尝试升级通过getsystem和getprivs命令升级我们的系统权限:

在Meterpreter工具中,权力选项称为“技能”,在这个例子中,选择第1个“技能”,Meterpreter工具的getsystem命令可以让我们获得在Windows 8上管理员的访问权限。在Windows 8操作系统中,几乎没有什么已知的破解工具可以用一类进行权力升级和躲避“用户账户控制”(User Account Control,UAC)的审查,所以“用户账户控制”在被攻击系统中通常都是禁用的。不过,即使没有访问该主机的特权,我们也可以从被攻击主机上进行各种浏览和获得不少数据信息,但是在改变系统设置,并拿到一些敏感认证证书时,我们的访问权限也受到了部分限制。


接下来,我们可以指导Meterpreter直接使用Windows 8自带的cmd.exe程序,cmd.exe程序本来就是Windows 8的shell程序,所以使用cmd.exe可以使我们能够与系统进行交互操作。

在Meterpreter-spawned工具中,通过shell命令就可以调用cmd.exe。在shell中,所有命令返回到屏幕(console)两次。在下面的例子中,为了使界面清楚,我们忽略了多余显示出来的重复命令。


shell命令的界面中,我们可以在系统目录间随意转换,从中可以查看目录和基本文件的内容,在查看结束后,在Meterpreter工具中输入“exit”命令就可以下载所需要的文件。

在开始使用被攻击者的无线接口来攻击其他网络之前,我们要先确定一下哪个接口正在使用,以及这个接口的配置是什么。最好的情况是,发现我们所“占领”的这台主机当前正在使用一个有线的接口进行网络的连接操作,并且该主机有无线接口,且无线接口可以使用,但却没在使用。要检测这样的网络连接参数,以及这些网络接口是否在使用,可以通过Windows自带的ipconfig命令。

这里使用的命令,其显示结果的例子都已被修改,主要为了显示上的简洁,删除多余的回车换行(carriage return)。所以您在实际使用中看到的例子,和这里显示的例子会略有不同,除了回车换行之外,在每个标题和随后的数据之间,也会为了清楚起见,加入一些换行符。


在这个例子中,您可以看到无线局域网适配器是在“连接断开”(media disconnected)状态,而以太网适配器配置上配置了一个IP地址,说明被攻击者连接其公司网络所使用的适配器是有线接口,而没有使用无线接口。您可以通过Windows自带的netsh命令搜集关于其无线网卡上的更多信息:

“netsh wlan show interfaces” 命令输出的是和被攻击主机有关的一些附加信息。比如接口的“全局唯一标识符”(Globally Unique Identifier,GUID),以及其他描述信息,通过这些信息,我们可以看出被攻击电脑所用的网卡芯片组是“Intel Centrino Advanced-N 6205”。如果接口正在使用,那么命令输出的“状态”(State)显示的是“已连接”(connected),那么下面的附加信息就会显示出“服务集标识”、“基本服务集标识”、无线协议类型(比如802.lla、b、g或n),以及认证及加密数据包的信息,同时也会显示出信号强度的百分比值以及发送和接收的速率。


我们还可以收集更多与驱动程序相关的详细信息,包括驱动程序的创建日期和能力等:

在上面“netsh wlan show drivers”命令的输出格式中,我们最感兴趣的就是“类型”(Type)那一行中的缩写,这里显示的是“本地Wi-Fi驱动程序”(Native Wi-Fi Driver)。这表示这个无线网卡驱动程序是一个“本地”的Wi-Fi驱动程序,这意味着这个驱动程序是基于NDIS6.2规范(网络驱动程序接口规范)编译的,所包含的重要功能都是基于比较过时的“肥”(fat)驱动程序,并且这种驱动程序也可以在Windows 7或Windows 8上使用。


现在,我们知道了,原来这个被攻击的客户端主机所使用的无线网络接口是“本地Wi-Fi驱动程序”,我们可以在这个被攻击的主机系统中再翻翻看,看是否能从其主机上找到它的“偏爱网络列表”中所有曾经访问过的网络信息。

从“netsh wlan show profiles”命令的输出中,我们可以确定所有的“个人定制”(profile information)信息,这些信息都是通过“组策略”(group policy)继承下来的(这些信息在上面的运行结果中并没有显示出来,您可以通过在自己的计算机上运行该命令看到实例的效果),每个用户都有自己的“个人定制”文件,并且其文件名一般会与网络的“服务集标识”一样。如果在上面命令中指定了名称,那系统就会显示出这个用户“个人定制”选项里的附加数据。

在这个例子中,“POTAGE”这个SSID的“个人定制”信息显露无遗,从中我们可以看到一个开放的网络环境,连安全密钥也没有配置。下面是一个缩短后的例子,它是使用了加密和认证的另一个无线网络例子,作为参照,其显示结果如下。

在这个例子中,一个叫“somethingclever”的“个人定制”信息表明了这个无线网络配置了“Wi-Fi保护访问下的预共享密钥版本2”(WPA2-PSK)的网络认证,使用的是AES-CCMP加密算法。其实密钥就在这个“个人定制”文件中,但是没有显示出来。只有用管理员账户访问这个Windows主机时,我们才能显示出明文的密码来。显示效果如下。

作为一种手工从“被占领主机”上搜集Wi-Fi数据的替代工具,我们还可以使用Meterpreter工具调用“post-exploitation wlan_profile”模块进行搜集。


 WPA2-PSK密钥的泄露 


在使用WPA-PSK和WPA2-PSK这两种认证方式的网络里,维持“预共享密钥”自身的保密是其重中之重,而对它的威胁之一,就是对“预共享密钥”的挑战。许多安全防护组织都采取了措施,防止网络中的用户泄露“预共享密钥”。比如不允许直接从工作站访问网络,或不能通过客户端管理类似于“活动目录组策略”(Active Directory Group Policy)等软件。

然而,任何一个用户,只要他在他的工作站上可以以本地管理员的身份具有运行一个软件的权限,那么他的工作站就可以在访问网络的时候还原“预共享密钥”,或被动地解密来自网络上的加密数据包。此外,一旦某个管理员用户获得“预共享密钥”,他就可以与本机器上任何其他用户分享这个密钥,甚至包括把该用户的认证信息发布到网上。


即使是嵌入式设备,也很容易泄露“预共享密钥”信息。最终,所有加入到WPA2-PSK或WPA-PSK网络的设备都需要至少保存网络认证证书信息,这个信息可以“从设备”运行的内存或配置文件中提取出来。


获得了本地客户端的信息之后,我们可以继续下一步,那就是攻击那台“我们已成功占领主机”功率覆盖范围内的本地网络。


三、远程无线侦察


在连接到“被占领主机”之后,我们现在可以通过使用“主动式扫描器”来列举(enumerate)和“发现”(discover)其功率覆盖范围内的网络。几个版本的Windows系统都支持用户通过命令行的方式,找到周围可用的网络,所用的命令就是内置于系统中的netsh命令。

在这次的输出中,我们可以确定发现了多个网络,其中包括一个WPA2认证的“企业模式”网络,其“服务集标识”是“CORPNET”;还有一个使用WPA2-PSK认证的的消费者网络,其“服务集标识”为“tomethingclever”;以及一个带以WEP作为加密算法的开放式身份验证的网络,其“服务集标识”为“VOIP”。


一看到这个三个可用的网络目标,我们就可以很容易地做出将WEP作业适合攻击网络的选择。这个网络的“服务集标识”是“VOIP”,看上去有点像“老式基于IP的手持机”(older VoIP handset)连接的网络,所以这也是将其设定为攻击目标的另一个原因,选定这个目录以后,我们还会做进一步的分析。


 使用主机网络中“骗子”AP接入点的功能 


在这个案例中,我们通过几个方面试试我们的技术。其一就是在一个远程无线网络中进行探测,查找有用信息;其二就是通过一个“已占领的主机”作为“桥”,有效地从“隙”上跨越过去,到达一个我们原本无法企及的组织网络中。而这里完成跨越的切入点,就是依靠对方网络最脆弱的点,即借助这个“已占领的主机”随后的访问,远程入侵WEP认证的网络。当然,真要使选择WPA2-PSK认证的网络,也不是不行的。


在这个案例中,从“被占领主机”上,虽然有几个曾经访问的网络记录,但还没有哪一个无线网络可以立即访问,可以当成是我们的运气有点背好了。不过没关系,我们可以在随后通过使用“被占领主机”的Windows系统创建一个新的无线网络


在“网络驱动程序接口规范”(NDIS 6)中,Microsoft公司提供了一个叫作“无线承载网络”(Wireless Hosted Network)的功能,该功能允许Windows Vista或以后版本的主机上,可以使用一个可用的Wi-Fi网络接口创建一个“软AP接入点”(soft AP),该“软AP接入点”就相当于将这个无线网络接口转化成一个无线AP接入点,可以接受其他无线客户端的访问请求,并且“软AP接入点”可以自动桥接本机上的有线接口,通过有线接口实现上网数据的转发。尽管该“无线承载网络”功能上只支持WPA2-PSK认证方式,但攻击者仍然可以使用这一特征,将这个被攻击过的主机(即当年我们“羹美食品”点上的客户端,如今的“被占领主机”)转换成一个“骗子”AP接入点,以便借助于这个AP接入点,实现随后的通过有线网络的访问,虽然只是访问他们的本地内网,而不是访问Internet网,但这本来也是我们的目的。


从一个shell命令,我们可以创建这个“无线承载网络”,设置“服务集标识”为“NAME”,以及选择一个“p@sswOrd”的密码,其启动界面如下所示:

黑客来说,在“无线承载网络”上还有个功能,那就是允许一个实实在在的本地攻击者通过其无线连接到AP接入点上,然后反向通过“被攻击主机”的有线网络访问该网络的功能。即使攻击者已经通过Meterpreter工具具备远程访问这个有线网络的能力,现在这种通过无线接入网络然后再访问有线网络的方式,在特定的有线攻击方式中会显得更有用。比如,对于一些特定的有线攻击,根本就不适合在Windows操作系统上再通过“隧道技术”(tunneling)实施攻击。


停止“无线承载网络”的无线接口,可以通过“stop”命令。这个命令无疑会停止无线网卡作为“骗子”AP接入点的使命,而恢复为原来的无线接口,并且断开与有线以太网接口上桥接(bridge connection)的那个连接。

1、Windows的监测模式


在“网络驱动程序接口规范”模型中,Microsoft公司要求所有本地的Wi-Fi驱动程序网络接口都要包括对“监测模式”(monitor mode)访问的支持,这样可以让用户有能力在当前信道上观察到的网络上的所有活动,并且可以按802.11格式搜集所有的通信数据包。该功能很显然是参照了Linux操作系统和OS X操作系统用户多年来喜欢的“监测模式”功能,同时也意味着,对于一个黑客,他开始在Windows上也有新的机会,即通过使用一个“被占领的主机”实施攻击一个附近无线网络的能力。


不过,这并不表示您可以马上使用这样的功能,Microsoft公司在Windows中,既不包括在本地用于在“监测模式”下控制一个接口的用户工具(user-space tool),也不包括可以在监测模式下用于查看和处理捕获数据包的工具。在针对“网络驱动程序接口规范”的“Microsoft开发人员网络文档”(Microsoft Developer Network,MSDN)中,Microsoft公司表示开发人员可以创建自己的工具,并在工具中将接口设置到“监测模式”下,也可以捕获802.11数据包,还可以控制无线接口的信道以及进行“模式设置”,这里的模式是指802.11标准的版本,例如,驱动程序是在802.11b模式下还是在802.11n模式下进行捕获。另外,值得提醒的是,要开发这么一个“轻量级过滤器驱动”(Lightweight Filter Driver,LWF),但开发与使用本功能,都需要在Windows上具有比运行标准的用户应用程序更高的权限级别。


2、Microsoft公司的NetMon程序


NetMon程序(网络监视器)是一款由Microsoft公司设计开发的数据包嗅探工具,该工具与Windows紧密集成,效仿了很多原本应用于Wireshark中的功能,如数据包的分析、解码和过滤功能。同时,在Windows上,NetMon程序具有作为“Microsoft公司制造”的名声大、值得信赖的应用程序的优势。包括NetMon软件在内,所有的嗅探软件,都是在使用本地Wi-Fi“监测模式”这一功能而做的工具或驱动程序。这可以让我们在远程模式下,在Windows操作系统上,实现“监测模式”下数据包的嗅探能力。


如前所述,在Windows默认安装中,并没有这个样的嗅探工具,所以,如果要使用NetMon程序,首先,我们需要下载并在目标主机上安装NetMon程序。在Windows操作系统上,“正常”安装一个Microsoft自己编写的程序是件非常容易的事,但是现在的问题在于我们是“不正常”安装,是偷偷地安装在远程“被占领的主机”上,所以就变得有点棘手了。尽管我们可以从命令行安装和运行NetMon程序,以防止安装的时候会创建一些明显的安装痕迹(如用户的桌面会新增一个NetMon图标),但如果要控制无线驱动程序的信道,那么唯一的方法只能是通过图形用户界面来执行安装程序。因此,我们必须在“被占领主机”上有运行图形用户界面的权限和访问能力。


3、建立远程桌面访问


要获得目标主机远程桌面访问权限,有多种选择可以使用。内置的“远程桌面协议”(Remote Desktop Protocol,RDP)服务可以自动配置所需的参数,并且正当地通过防火墙的监管,然后通过netcat工具所分配的协议重定向功能,主动地推送到攻击者主机屏幕上,但这种方法的缺点是:需要在目标主机上进行几步操作,其中包括Windows防火墙服务的修改。相比于采用“远程桌面协议”进行远程桌面访问,一个简单的选择是利用Meterpreter软件的“虚拟网络计算”(Virtual Network Computing,VNC),通过有效载荷在内存中实现数据包的注入能力。


首先,我们需要确认已将vncviewer工具安装在攻击者的系统上:

如果上面的“which”命令没有返回输出结果,然后查阅一下Linux操作系统分布版在发布时的使用手册,找到“虚拟网络计算”的viewer程序包安装之前所有必须安装的其他程序,然后再继续上面的操作,直到成功。


“远程桌面协议”是Windows自带的一个协议,与此同名,在Windows上还有一个“远程桌面”的程序,通过该程序,在Windows下,一旦有用户通过远程桌面连接,本机的桌面将出现锁屏的状况;而通过该协议,则可以做到不锁屏的前提下使用远程屏幕,但即使如此,当我们有动作的时候,由我们打开的应用程序就会显示在用户本地的屏幕上,所以在运行“虚拟网络计算”客户端有效载荷,使用“被占领主机”电脑的远程桌面时,很显然要等到没有人坐在这个被攻击电脑前时才能进行。那么怎么判断对方没有在使用电脑呢?事实上,我们可以通过Meterpreter工具的idletime命令读取对方的“空闲时间”来间接地判断对方电脑上的“活动水平”(activity level):

既然现在用户的工作站是闲置的,那么我们就可以运行vncwiewer工具的“反向TCP连接有效载荷”(reverse_tcp payload)攻击方式,来获取“被占领主机”的远端桌面的访问权限。在使用Meterpreter工具的“有效载荷注入”(payload_inject)功能的时候,可以添加“虚拟网络计算”工具的“反向TCP连接有效载荷”到内存中存在的一个会话中。这个过程并不会对“被占领主机”的硬件做任何操作,所以极具隐蔽性。另外,使用这种攻击方式的优点就是对“被占领主机”系统的改变非常小,并且很容易躲开防病毒系统的监视:

运行完“虚拟网络计算”工具的“反向TCP连接有效载荷”攻击以后,“植入”到“被占领主机”上的程序会反向连接(connects back)攻击主机,连接的方式是TCP,使用的端口是5900。所以在进行上述操作之前或同时,最好先在我们自己的主机上运行vncviewer程序的服务端。一旦服务端程序运行,就可以接到由“被占领主机”上程序授予的访问对方桌面的权力。在上面运行cmd.exe的shell程序,对方就会自动接受由vncinject程序注入的有效载荷,对方运行的shell程序名叫“Metasploit绅士外壳”(Metasploit Courtesy Shell),这时的程序界面如图6所示。

图6  通过“Metasploit绅士外壳”看到的“被占领主机”的桌面视图

一旦我们获得了“被占领主机”的图形用户界面,就可以在其主机上安装NetMon程序了。


4、安装NetMon程序


随着我们可以使用“图形用户界面”的方式访问“被占领主机”,我们就可以在“被占领主机”的本地用Web浏览器访问Microsoft公司的下载页面,下载NetMon程序,并运行安装。因为“虚拟网络计算”的桌面屏幕刷新相对滞后,所以这个过程看上去是相对较慢的,因此,我们应将尽可能从命令行上运行,而只在必要的时候才用“图形用户界面”运行。


在攻击者的服务器上,我们将下载最新版本的NetMon程序,解压缩可执行文件,可以显示嵌入式“MSI安装器”(MSI installer)。注意该安装包中包含两个安装器:一个是安装具有嗅探功能的NetMon程序本身,其文件名是“netmon.msi”;一个是安装解析器(parsers)程序,该程序主要是解析由NetMon程序在嗅探过程中保存的数据包文件,其文件名是“NetworkMonitor_Parsers.msi”。我们将二者都上传到“被占领主机”上,以便在安装此工具后,既能捕获数据包,也能解析数据包。

返回到Meterpreter的Shell程序,上传netmon.msi安装程序包到“被占领主机”的临时目录中:

接下来,我们可以使用Windows内置msiexec工具,“悄悄地”运行“NetMon的安装程序”。为了避免安装程序在“被占领主机”的桌面上为NetMon程序工具创建图标,我们将在安装NetMon程序之前,在“所有用户的桌面”目录中暂时申请一个“只读访问控制列表”(read-only access control list)的权限:

随着NetMon程序安装完成,我们可以充分利用当地的无线网卡的能力,去攻击之前三个网络中最弱的那个,即“服务集标识”为“VOIP”,采用WEP认证的那个无线网络


5、监视模式捕获数据包


NetMon程序为我们提供了一个“图形化网络监控”(GUI Network Monitor)的进程,大多数NetMon的用户使用这个程序的目的就是使用其数据包的捕获(capture)和数据分析(data analysis)的功能。然而,在我们的攻击设计中,我们安装和使用NetMon程序,目的是为了在我们攻击过程中管理那些NetMon安装配套的可执行文件。


NetMon程序中的一个工具,名叫nmwifi,可以与NetMon的LWF过滤器进行交互式的命令操作。通过nmwifi程序,我们可以控制无线接口的访问,将无线网络接口设置为“监测模式”或“托管模式”(managed mode),以及指定一个信道和“物理层”(PHY)通信协议(如802.11a协议或802.11b协议)。不幸的是,nmwifi只能从图形用户接口才能使用,因为NetMon程序安装程序会自动在系统搜索路径“PATH变量”(即Windows的环境变量中的“PATH”)中添加一个“网络监控程序目录文件”(Network Monitor Program File)的值,所以我们既可以从图形用户界面通过Windows中使用“开始(Start)|运行(Run)”系统级菜单运行nmwifi,也可以从Meterpreter的提示符状态启动该程序。一旦启动成功,nmwifi的图形用户界面将显示一个可用的“本地Wi-Fi驱动程序”的下拉列表,该下拉列表中的选项可以使系统处于“监测模式”,也可以控制信道的设置,如图7所示。

图7  可用的“本地Wi-Fi驱动程序”下拉列表

如果您正在使用的这个无线“连接”控制“被占领主机”时,不要试图把它设置为“监测模式”,这样做的后果,就是当您把这个无线接口设置为“监测模式”时,系统会中断(terminate)所有使用该接口访问的所有连接,进而导致监测连接的丢失。


为了攻击“服务集标识”为“VOIP”的无线网络,我们选择“切换到监测模式”(Switch to Monitor Mode)复选框,然后在“选择一个层和一个通道”(Select a layer and channel)的文本框中,将“通道”设置11,将“层”设置为IEEE 802.11g。上面的这些参数都是在之前基于“netsh wlan show networks”命令时输出的结果。完成上述设置以后,单击“应用”(Apply)按钮。当下面的状态栏中显示“监控模式:对,已选择”(Monitor Mode:On,Select),并且在状态栏的右边显示出刚才输入的正确的信道(即图上“Channel”)和物理层类型(即图上“Layer”)时,我们将nmwifi程序最小化显示。


如果关闭了nmwifi程序,系统的无线接口将由“监测模式”恢复到“托管模式”,并且会禁用“监控模式”的访问。所以最小化nmwifi程序,让程序保持运行状态,以便在随后,其他的程序还能在“监测模式”下捕获会话数据包。


回到Meterpreter cmd.exe的shell程序上,我们可以启动命令行的NetMon抓包工具,它的名字叫nmcap。通过这个工具,我们可以设置捕获数据包的无线接口,过滤后只保存无线数据包,以及将结果保存到voip.cap文件中。

这些跟在“已接收”(Received)之后的值表示通过nmcap进程所发现的数据包(frame)的数量,随后跟在“已保存”(Saved)后面的值表示的是匹配到保存在voip.cap文件中的Wi-Fi.Data过滤器的数据包的数量。我们可以留着这个进程在目的网络上运行捕获数据帧,直到我们抓获了约100000个数据包为止。一旦完成后,按Ctrl+C组合键终止Meterpreter在这一信道上的捕获操作,然后通过Meterpreter中ps命令和kill命令关闭nmcap进程。

不幸的是,在“被占领主机”上,通过使用本地Wi-Fi的驱动程序,利用“ARP重播”攻击(ARP replay)或其他WEP认证,是不能完成Windows操作系统上加速攻击的。究其原因,是因为这些在NetMon的LWF过滤器中,在这种情况下,缺乏“数据包注入”的能力。


下一步,我们将捕获到的voip.cap文件传到我们攻击者的系统中:

既然我们已完成了在被占领的Windows主机上的数据捕获操作,下面就可以删除nmwifi.exe进程,清理一下现场。

在“被占领主机”上,利用Windows操作系统操作远程无线功能,我们就可以在对方的网络中,在“监测模式”下搜集通信的数据包,并且保存这些数据包捕获文件。下一步,还要利用这些信息攻击这个“服务集标识”为“VOIP”的无线网络


 Microsoft的消息分析器 


Microsoft公司在2010年6月24日推出NetMon3.4版本的发布以后,就停止了NetMon软件的开发工作。取代NetMon程序的是一款新的工具,其名称为Microsoft的“消息分析器”(Message Analyzer)。与传统的单纯依靠捕获数据包的网络监视器不同,“消息分析器”使用“基于Windows的事件根据”(Event Tracing for Windows,ETW)机制作为要捕获的数据源,可以允许用户动态地捕获到多种信息,这不仅包含传统基于网络接口的数据包,也包括Windows防火墙的、系统代理服务器(WebProxy)的,以及VPN适配器的全部信息,并且如果涉及加密,还可以包括加密前、加密后、解密前、解密后的全部信息。


和NetMon程序一样,“消息分析器”也是免费的,并且可以直接从Microsoft公司的“微软公司下载中心”(Microsoft Download Center)下载。尽管从“消息分析器”程序的宣传中,我们知道相比于NetMon程序,该程序有很多新的、吸引眼球的特色功能加入,但与NetMon程序是在“监测模式”下捕获数据包有所不同的是,“消息分析器”程序并不支持在“监测模式”进行数据包的捕获。这些令人印象深刻的特点中,比如在很多相关事件之间建立一种关联,比如在数据包捕获文件和其他结构数据源(比如日志文件中的)之间就存在这种关联。那么通过“消息分析器”程序可以互查和一并显示。不过,从攻击者的角度来看,上面这种特点并没有多大意义,因为对于一个黑客来说,建立这种关联本来就是小菜一碟。所以如果坚持要在“被占领主机”的Windows系统下使用无线网卡“监测模式”下对嗅探技术的支持,那您只需要继续使用Microsoft公司著名的NetMon程序即可。如果您要使用“消息分析器”工具,也是要付出一点代价的,比如,就算您只是想使用新的“消息分析器”程序看看NetMon程序所截的数据包,那您要花一些时间熟悉这个软件了。不过,就“消息分析器”程序中的“数据测试”(Diagnoscics)功能还是挺强大的,在NetMon程序所截的数据中,通过该功能,您可以查看那些“畸形”的数据包。

四、对无线目标网络攻击


nmcap进程创建的这个数据包捕获文件保存了大量数据,这些数据足以攻击WEP认证,还原“服务集标识”为“VOIP”的网络的密钥。然而,Microsoft公司的NetMon程序,在保存这些数据包捕获文件时,是以自己定义的格式保存的,不是以libpcap格式进行保存。而libpcap格式是像Aircrack-ng这样的工具所需要的格式,虽然新版的Wireshark也可以解析NetMon程序的数据包格式了,但是Wireshark也只是能查看这种格式,而不能将其转换或导出为libpcap格式的文件。幸运的是,我们可以通过nm21p工具软件将这种格式的文件转换为libpcap格式的文件。


 用nm2lp转换数据包格式 


nm2lp工具的设计目的是将Microsoft公司的NetMon程序所捕获到的无线数据包专有格式转换为嗅探界事实上的工业标准libpcap格式,该格式可用来做通用的libpcap分析,并且可以被Aircrack-ng、Ettercap和Wireshark等软件使用来作为攻击工具。nm2lp程序已被移植性重写,现在可以运行在Linux操作系统上,用于取代运行在Windows操作系统上的1.0版本。nm21p程序目前需要libwiretap库和libpcap库的支持,这两个库文件都可以在Ubuntu系统上,通过apt-get命令下载并安装。命令显示如下。

安装nm2lp程序的依赖库后,就可以下载nm21p.tgz的源代码和“make”命令创建这个工具软件了。然后通过运行“sudo make install”命令安装文件,如下所示:

nm21p命令的用法非常简单,我们指定NetMon程序所捕获的数据包所在文件的文件名,再指定一个输出libpcap格式的数据包捕获文件名即可。

现在,这个voip.pcap文件已经是libpcap格式的数据包捕获文件了,下面我们可以通过aircrack-ng程序来还原其中的WEP密钥。

拿到了WEP密钥,我们就可以启动解密进程检查捕获到的数据包了。首先,我们使用airdecap-ng工具,将加密的libpcap数据包的捕获文件转换到一个解密文件的libpcap文件中。

输出文件voip-dec.pcap,是由airdecap-ng程序创建,其格式是libpcap格式,所以看上去和通过以太网上捕获的数据格式相似。这种格式可以和很多不同的主流分析工具格式兼容,包括Massimiliano Montoro设计的Cain程序。将这个解密文件复制到一个Windows操作系统里,我们就可以快速方便地进行流量识别,当然识别的目的是为了获得明文密码或其他敏感数据,显示如图8所示。在这个例子中,Cain分析了解密的数据,并显示出这是两次“IP电话”(Voice over IP,VoIP)的语音对话。在Cain软件中,右击选中的“IP电话”列表中的项,就可以选择和播放所录的音频对话文件。

图8  Cain软件上的“IP电话”语音对话

在那个“服务集标识”为“VOIP”的无线网络上,由于我们知道它使用的是WEP密钥的背景知识,所以我们可以在“被占领主机”上配置,让它的无线网线接口也连接到这个网络上。这对于我们后面在“被占领主机”所在的网络中继续其他工作是很有用的;否则,我们就不能从“被占领主机”的以太网连接访问这个网络。对于这部分的攻击,我们需要访问一个有Windows操作系统的主机。


在这个例子中,我们研究了如何用命令行从“被占领主机”的系统中连接到无线网络,所使用的方法就是组合使用了攻击者的Windows主机和“被占领主机”的Windows主机。在整个运行过程中,将“图形用户界面”在不能关闭的前提下,采用最小化的方式是一个不错的选择,因为在“被占领主机”上,图形界面最小化可以在任何时候躲避被检测到的可能。不过,即使如此,您还可以用其他的办法,如借助于以前我们创建的VNC连接,通过使用反向的VNC连接,在“被占领主机”上单独完成所有这些步骤。


在攻击者的主机上,如果使用的是Windows 8或更新版本操作系统,那么按下WinKey+I组合键就可以打开Windows桌面的“魅力边栏”(charm sidebar),然后单击上面的“无线网络图标”(wireless network icon)。下面选择的不是从可用的网络图标中选择一个,而是选择“其他网络”(Other Network)图标。在“手动连接到无线网络”(Manually Connect To A Wireless Network)的对话框中输入设置,其内容是“被占领主机”附近的目标Wi-Fi网络,主要包括一些安全参数。取消“自动连接到网络”的选项。完成该向导之后,单击“完成”(Finish)按钮关闭“手动连接到无线网络”(Manually Connect To A Wireless Network)的对话框。


一旦当前用户的“个人定制”文件被添加到攻击者的主机中,我们就可以以XML配置文件的格式导出上述配置,并将其传送到“被占领主机”的系统中。下面的命令就是在攻击者的系统中,导出新的网络配置文件的步骤:

XML文件创建成功,我们就可以如上所述地把它复制到负责攻击的服务器上。下一步,我们就可以返回到Meterpreter的shell中,上传上面刚刚生成并改为voip.xml名称的XML文件,复制到“被占领主机”上。

仅仅是上传复制voip.xml文件还不够,要使文件的配置生效,还要在“被占领主机”上完成导入操作。现在,我们可以在“被占领主机”上运行一个cmd.exe shell,并在命令提示符中运行netsh命令。在这里,要做的是导入XML文件中的配置信息。

因为我们创建的“个人定制”文件中,有一个选项是不要“自动连接到网络”,所以下面需要手工连接到“VOIP”网络上。注意,有许多无线适配器在取消“监测模式”,恢复为“托管模式”的时候,需要重启一下无线网卡适配器才能生效。在图形用户界面,这种“重启”操作其实是由“禁用”(disable)和“恢复”(enable)两步完成的,在命令行的界面中,不但有这样的命令,而且其原理和方式也是一样的。我们可以在命令行中,按如下的命令格式和序列完成这一操作。

在“被占领主机”上,我们现在有了访问“服务集标识”为“VOIP”的无线网络的权限,即我们可以回到Meterpreter的接口上,开始浏览这个内部网络。如果想快速访问,并在访问中识别出可用的系统和端口,有一个很实用的工具可以胜任,这个工具的名字叫作MSFMap,这是Meterprecer程序自带的一个模块。


MSFMap是Meterpreter程序的一个可加载模块,是由Spencer McIntyre和SecureState LLC共同编写。通过使用MSFMap,我们可以使用“被占领主机”上的TCP栈,可以通过其Windows系统进行内部网络的扫描。这种方法比传统方法快,因为这种方法使用的是“被占领主机”本地的TCP协议栈进行扫描的,而不是在传统方式下,在攻击者的系统上借助于Meterpreter的隧道技术所进行的远端主机方式下的扫描。


安装MSFMap的步骤很简单:下载源代码,运行安装脚本,设置将其作为模块进行调用的主程序Metasploit的位置即可。整个步骤如下所示:

返回到Meterpreter会话上,通过“load msfmap”命令,Meterpreter程序就可以加载MSFMap模块。如果在加载的时候没有带参数,那么MSFMap模块并不会真正执行,而是将其所有的选项参数以列表的方式全列出来。

在“被占领主机”上,通过Windows操作系统使用MSFMap模块,我们可以快速扫描大量主机的一些常用端口。

在上面的例子中,由MSFMap模块所进行的“端口扫描”(port scan)中,考虑到显示结果中空间的限制,大多数扫描结果都没有列上去。


从MSFMap结果中,我们看到几个系统可以作为进一步分析优选的目标。Meterpreter程序也可以提供网络的“绕轴旋转攻击”(pivoting attack),也就是在攻击者的电脑上,通过端口重定向实施对远程目标系统的攻击。例如,如果攻击者想要通过MSFMap模块攻击IP地址为10.0.0.2的“文件传输协议”(File Transfer Protocol,FTP)服务器,我们就可以设置本地攻击程序的攻击端口为FTP常用的21端口,并设置重定向本地主机,其命令格式如下:

portfwd命令可以在攻击主机的Metasploit系统中,打开一个新的端口,端口号是2121。随后Metasploit程序就会监听这个端口,任何与攻击者本机建立连接并发向2121端口的数据都将被Meterpreter的会话进行重定向。然后通过Windows的无线网卡,转发到上面IP地址为10.0.0.2的主机上21号端口,完成对这个FTP服务器的攻击。

通过上面的访问方式,我们可以完成对远程主机的侦察、分析和入侵,其示意图如图9所示。

图9  攻击者借助于“被占领主机2”通过架桥过隙的方式对“被占领主机1”实施重定向攻击

 无线网络的深度防御 


我们通过一步步分解最终完成了一个完整的攻击案例。首先是针对我们虚构的“羹美食品”餐馆无线环境实施入侵,并占领其中一个客户端系统,然后借助这个客户端系统对其内部网络的访问,我们又破解了更多的内部系统。针对这种风格攻击的应对措施,对这些防御机制的深入的应用可以阻止来自无线客户端的攻击方的进一步攻击,从而避免危及企业内部全部网络的威胁,避免网络被扫描和内部主机被对方进行目标的列举,主要的应对措施有:


禁止开放的网络。允许外界用户访问的开放网络(open network),比如一些免费的“热点”环境,这是将攻击者“引狼入室”的请柬。攻击者可以利用软件升级机制,或其他存在弱点但却非常主流的协议(如DNS协议)进行攻击。其抵御方式就是:通过在用户工作站上的管理控制可以中止开放的网络,继而限制客户端暴露给攻击者。


上层加密。如果您的外界用户必须要访问开放的网络,即必须为对方提供开放式的访问的话,则可以考虑要求上层加密(upper-layer encryption)的服务来强制安全政策,例如,如在支持“Internet协议安全性”(IPSec)的“开放标准的框架结构”上使用的VPN技术,就可以很好地防止攻击者的侦听,防止攻击者操纵客户端的活动。


禁止未经过滤的“出接口”数据包。攻击者在成功占领一个客户端系统后,利用Meterpreter工具集中的Metasploit程序,使用了从“被占领主机”到攻击者系统之间所架起的Metasploit VNC模块隧道技术,实现了获得对内部整个网络的访问机制。如果在公司的网络中,通过防火墙、强制代理服务器系统来禁用未经过滤的“出接口”数据包,那么从整个网络来看,就可以限制攻击者由外部向内部网络的访问,从而缓解随后网络访问机制所带来的风险。


五、结语


在本文中,我们看到一个“端到端”的攻击,即在盯一个客户端在一个不安全的“热点”环境中下载和运行软件安装工具的时候,攻击者借助于使用Veil编码工具,将带有Meterpreter工具的“反向TCP连接有效载荷”攻击方式“植入”到一个可执行文件中,并用这个可执行文件代替这个客户端要下载和安装的可执行文件。一旦用户运行这个可执行文件并中招,这个客户端就成为我们的“被攻击主机”,我们可以控制“被攻击主机”的系统,并躲避其防病毒软件的监看。随后,当“被攻击主机”离开这个“热点”环境,回到他的公司网络的时候,我们使用Meterpreter工具的persistence.rb模块,就可以获得访问“被攻击主机”的系统的能力。至此,我们相当于完成了“架桥”的工作。


远程访问“被攻击主机”系统的时候,我们可以攻击那些由于物理距离上的限制而无法采用各种方式访问的无线网络。使用内置的工具和其他Microsoft公司软件,我们能够将Windows 的“被攻占主机”作为一个不情愿的参与者加入到对WEP网络的攻击行列,在列举附近首选的无线网络配置以后,就可以使用Microsoft公司的NetMon去完成远端数据包的收集。在另外的网络中,例如WPA2-PSK的网络,或一个开放的未加密的网络环境,也可以通过相同的方式进行攻击。


一旦收集到足以破解还原WEP密钥数量的数据以后,nm2lp程序可以将我们的数据格式从NetMon的格式转换成libpcap的格式,这样我们就可以采用包括aircrack-ng在内的通用攻击工具。一旦我们破解还原了密钥值,就可以以被动的方式解密所捕获的数据包,并可以从VoIP数据通信中提取敏感的信息。其次,我们返回到“被攻击主机”的系统中,添加了一个目标网络作为一个新的连接配置“个人定制”文件的内容,然后连接到这个“被占领的网络”上,从攻击者主机通过被控主机之间进行路由,最后利用发现的目标“架桥”跨过中间的“缝隙”连接到新的被控网络上。


在有些情况下,“被攻击主机”上没有可用的无线网络,这时,您就可以使用Windows“无线承载网络”的功能,将“被攻击主机”的系统变成一个“热点”环境。虽然这需要物理上接近“被攻击主机”所在的网络,但攻击者可以在Windows主机上放弃Meterpreter远程访问连接的限制,还可以通过“被攻击主机”连接到新成立的WPA2-PSK系统上。结合Windows系统,“桥接功能”(bridging functionality)的自动使用,攻击者可以访问“被攻击主机”的有线网络,就好像自己通过有线直接插到对方的有线网络中一样。


Microsoft公司“本地Wi-Fi模型”(Native Wi-Fi model)在Windows主机上增加了超强的功能,这给开发人员提供了与无线网络进行交互的新能力。这个模型还为攻击者利用“被占领主机”去攻击远程无线网络提供了新的机遇,通过这种能力,即使某无线网络在攻击者的物理覆盖范围之外,也变得可以访问。对那些只想依靠物理距离就避免无线连接的组织来说,又增加了危险。

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】
登录查看更多
0

相关内容

Windows 8 是微软继 Windows 7 后的下一代操作系统。
最新《深度多模态数据分析》综述论文,26页pdf
专知会员服务
298+阅读 · 2020年6月16日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
125+阅读 · 2020年5月22日
【ICMR2020】持续健康状态接口事件检索
专知会员服务
17+阅读 · 2020年4月18日
德勤:2020技术趋势报告,120页pdf
专知会员服务
190+阅读 · 2020年3月31日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
ZigBee 网络安全攻防
计算机与网络安全
14+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
被动DNS,一个被忽视的安全利器
运维帮
11+阅读 · 2019年3月8日
IPSec | IKE密钥交换原理
计算机与网络安全
18+阅读 · 2018年12月23日
网络舆情分析
计算机与网络安全
20+阅读 · 2018年10月18日
网络安全态势感知
计算机与网络安全
26+阅读 · 2018年10月14日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
Arxiv
6+阅读 · 2018年1月14日
VIP会员
相关资讯
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
ZigBee 网络安全攻防
计算机与网络安全
14+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
被动DNS,一个被忽视的安全利器
运维帮
11+阅读 · 2019年3月8日
IPSec | IKE密钥交换原理
计算机与网络安全
18+阅读 · 2018年12月23日
网络舆情分析
计算机与网络安全
20+阅读 · 2018年10月18日
网络安全态势感知
计算机与网络安全
26+阅读 · 2018年10月14日
Top
微信扫码咨询专知VIP会员