5.3 Web会话工具
下一节我们会介绍用来对Web会话进行渗透测试的工具。有些工具在Kali 1.0中还没有,但你可以在线获取。
5.3.1 Firefox插件
人工进行会话劫持的方法是窃取受害者的已通过身份认证的cookie。其中一种方式是向已被侵入的Web应用服务器注入一个脚本,这样可以在用户毫不知情的情况下截获cookie。从这里开始,攻击者就能够拿到已认证cookie,并用cookie注入工具来用窃取的已认证cookie来替换攻击者的cookie。其他用于窃取cookie的方法还包括数据包嗅探(Packet Sniffing)、网络数据和攻击主机。在本书后面的章节中,我们会介绍和窃取cookie相关的内容。
Firefox浏览器提供了许多可以用来将窃取的cookie注入到攻击者浏览器的插件。其中一些例子包括GreaseMonkey、Cookies Manager和Firesheep。我们建议读者通过浏览Firefox的插件商店来找寻满足渗透测试需要的各种cookie管理工具。
Kali Linux 1.0中并未默认安装Firefox和所有相关插件。
5.3.2 Firesheep(Firefox插件)
Firesheep是一个典型的用于对Web会话进行审计的渗透测试工具。Firesheep是Firefox的一个扩展,不过,有些版本跟Firefox的最近几个版本不太兼容。Firesheep充当着数据包在网络上传送时拦截网站未加密的cookie的数据包嗅探器的角色。
Firefox Firesheep插件官方支持的是Windows版本和Mac版本,这使其在Linux上操作起来略显笨拙。通过一些定制动作,我们可以让Firesheep在Linux环境中的可操作性更强。不过,我们建议大家使用更主流的工具。
5.3.3 Web Developer(Firefox插件)
Web Developer是一款为Web开发者提供了编辑和调试功能的Firefox扩展。Web Developer可以从Firefox的插件市场免费下载。Web Developer中对会话劫持很有用的功能是编辑cookie。安装好Web Developer之后,你可以从Firefox浏览器的一个下拉选单中看到。如下面的截图所示:
选择View Cookie Information ,你能看到已经保存的cookie。你可以点击Edit Cookie 来调起cookie编辑器,用窃来的受害者的cookie替换当前cookie。
5.3.4 GreaseMonkey(Firefox插件)
GreaseMonkey是一款Firefox插件,它允许用户安装脚本在页面加载前和加载后直接修改Web页面的内容。GreaseMonkey可以用来定制Web页面的外观、Web功能、调试,合并其他页面的数据,以及其他用途。其他有些工具也会依赖GreaseMonkey来正常工作,比如Cookie Injector。
5.3.5 Cookie Injector(Firefox插件)
Cookie Injector是一个用户脚本,用于简化篡改浏览器cookie的过程。将Wireshark一类工具中抓取的cookie导入到浏览器中需要很多人工步骤。Cookie Injector允许用户从转存中直接复制粘贴cookie部分,这样就能在当前浏览的Web页面中自动生成转存中的cookie。
你必须在使用Cookie Injector脚本之前先安装GreaseMonkey。
要安装Cookie Injector,你可以在谷歌中搜索Cookie Injector来找到下载该脚本的链接。在你选择下载Cookie Injector时,GreaseMonkey会弹出来,提示你已经确认安装了。
安装好Cookie Injector脚本后,按下Alt+C来显示cookie对话框。将复制好的Wireshark字符串粘贴到输入框中,点击OK来将cookie注入到当前页面。你可以参考5.3.8节的内容了解如何在Wireshark中通过Copy、Bytes并选择Printable Text Only 来为Cookie Injector复制cookie。下面两个截图显示的是按下Alt+C、粘贴Wireshark Cookie Dump 并点击OK ,然后弹出框说明截获的cookie已被成功写入Web浏览器的情形。
5.3.6 Cookies Manager+(Firefox插件)
Cookies Manager+是一个用于查看、编辑和创建cookie的工具。Cookies Manager+会显示有关cookie的详细信息,并支持批量编辑cookie。Cookies Manager+也可以用于备份和还原cookie。你也可以从Firefox插件商店下载Cookies Manager+。
安装好之后,你可以在Tools 中选择Cookies Manager+ 来访问该工具。
Cookies Manager+会显示Firefox截获的所有cookie。你可以通过向下滚动或是搜索特定cookie来查看和/或编辑。在下面的例子中,我在查找所有跟www.thesecurityblogger.com 关联的cookie。
Cookies Manager+使得编辑已有cookie非常容易。这有助于进行各种类型的攻击,比如会话劫持和SQL注入。
5.3.7 Cookie Cadger
Cookie Cadger是一个用于对Web会话进行审计的渗透测试工具。Cookie Cadger支持截获详细的HTTP请求并回放非安全的HTTP GET请求,比如请求的资源、用户代理、网站来路和基本认证。Cookie Cadger可以提供针对Wi-Fi和有线网络的实时分析,以及加载数据包捕捉文件(PCAP)的功能。Cookie Cadger还提供了会话检测功能来判断用户是否已经登录了站点,如Wordpress和Facebook。有些人也会将Cookie Cadger当做Firesheep的替代品。
Kali 1.0中没有带Cookie Cadger。
Cookie Cadger可以从www.cookiecadger.com 下载。下载文件是个JAR文件。双击文件打开Cookie Cadger。它会弹出个警告来询问你是否要启用会话检测功能。点击Yes ,就会弹出主界面。下面两个截图显示的是Cookie Cadger 1.0 JAR文件弹出的警告消息窗口和主界面。
要启动,选择相应的界面,点击Start Capture 。如果有多个网卡,Cookie Cadger还提供了多个网卡抓包的功能。
Cookie Cadger可以枚举可用网络中发现的所有设备。举个例子,下面截图显示的是一台使用Firefox和Iceweasel的Linux i686主机。
Cookie Cadger检测到的最新事件的各个字段会以蓝色文本显示。你可以查看主机正在浏览内容的详情,比如netbios名称和主机名。你可以将请求复制到剪贴板并导出信息,如用户信息和MAC地址等。各部分都具备过滤器标签,用来缩小特定目标的范围(举个例子,只查看Facebook域名)。
只要Cookie Cadger识别出一个登录会话,它就会截获会话,并提供了加载会话的功能。下一个截图显示的是截获的管理员登录到www.thesecurityblogger.com 的会话。Cookie Cadger会显示一个图标,并解释截获的会话类型。它可能是Hotmail、Facebook,或是本例中所示的,Wordpress的登录。
要查看已经识别的会话,点击名为Recognized Sessions 的标签,从窗口中选择一个会话,如前面的截图中所示。一量高亮显示,就点击Load Selected Session 按钮来重放会话。Cookie Cadger会在底部窗口中显示加载过程,它还会打开一个浏览器并以截获的会话中的用户身份登录。下面的截图显示的是打开截获的受害者的一个域cookie。完成加载后,它会用默认的Web浏览器以跟窃取的cookie关联的权限打开截获的页面。
要查看会话的请求信息,右击已抓取的会话图标,选择View Associated Request 。它会将你带回Requests 标签,并显示该会话。
5.3.8 Wireshark
Wireshark是最流行的免费开源网络协议分析工具之一。Wireshark已在Kali中预装,是理想的网络问题排查和分析工具。在本章中,它是用作监测发自潜在目标来截获会话令牌的最佳工具。Wireshark使用GTK+组件工具集来实现它的用户界面,用pcap来进行包抓取。它跟tcpdump 命令的工作原理非常类似,不过它的作用是带有集成的排序和过滤功能的图形化前端。
Wireshark可以在Sniffing/Spoofing > Network Sniffers > Wireshark 中找到,或是在Top 10 Security Tools 分类中找到。
要开始抓取网络上的包,选择Capture 标签和Interfaces 。你能够看到用以抓包的网卡。在这个例子中,我要点击eth0 旁边的勾选框并选择Start 来选择eth0 进行抓包。
如果你抓包用的网卡不支持混杂模式或是你的操作系统无法启用该网卡的混杂模式,那么你可能无法看到任何包。有关不同抓包模式和问题排查的更多信息可以在www.wireshark.org 上找到。
Wireshark会截获线上的所有网络数据。网络数据可以通过在过滤字段输入特定内容或是在上部的表(如协议或目的地)中调整数据的组织形式来进行过滤。
Wireshark抓取了大量的细节信息,所以过滤出特定内容很重要,比如不安全的cookie(如http.cookie)的参数。举个例子,Gmail默认是加密的,不过,你可以关闭https并找出http.cookie中包含的GX参数来识别不安全的Gmail cookie。下面的截图显示的是从登录Wordpress blog过程中截获的cookie:
完成截获非安全的cookie后,你必须使用其他工具来将它注入到你的浏览器中,以完成会话劫持。选取受害者的cookie,右击该行,选择Copy > Bytes > Printable Text Only 。现在,你可以将其粘贴到cookie注入工具中,比如Firefox的插件Cookie Injector。查看Firefox插件下的Cookie Injector来完成会话劫持攻击。
你必须同时安装GreaseMonkey和Cookie Injector来复制/粘贴到Firefox浏览器。
有许多有用的工具支持Wireshark的抓包数据和简化找到的数据。举个例子,NetWitness Investigator可以从www.emc.com 免费下载。
5.3.9 Hamster和Ferret
Hamster是一款用于通过HTTP会话劫持窃取cookie的工具,它使用的是被动嗅探,也称为旁路劫持(sidejacking)。Hamster会窃听网络上的数据,抓取所有可见的会话cookie,然后将窃取的cookie导入到浏览器的GUI环境中,这样攻击者就能回放该会话。Hamster使用Ferret来抓取会话cookie。
Hamster可以通过浏览Sniffing/Spoofing > Web Sniffers ,选取Hamster 来启动。
在启动Hamster时,它会打开一个终端窗口来启动Hamster服务。默认的代理IP是127.0.0.1:1234。
你可以通过打开一个浏览器并将其指向http://127.0.0.1:1234来访问Hamster。
网络数据要完成它的功能必须流经Hamster。你可以选择点击适配器链接来选择要使用的网卡。举个例子,这里我要监测的是eth0 。
Hamster会将你重定向到一个劫持活动页面。你会注意到你并没有收到任何数据包。Hamster需要一个嗅探器来抓取网络数据。你可以通过浏览Sniffing/Spoofing > Web Sniffers 并选择Ferret 来使用Ferret。它会打开一个终端窗口,并显示一些选项。输入“ferret -i ”网卡名来选择要用Ferret进行嗅探的网卡。Ferret会告诉你它正在嗅探,该命令行提示符会悬停在运行状态。在你查看网络数据的同时,在Ferret中抓取的网络数据包会显示为文本。
Ferret运行起来后,浏览回Hamster,你应该开始查看数据包了。网络上的所有目标都会显示出来。点击你要查看的目标来查看截获的cookie。
点击任意cookie来访问截获的cookie。在这个例子中,我回放的是访问www.thesecurityblogger.com 。
5.3.10 中间人攻击(MITM)
中间人攻击是主动窃听的一种形式。其中攻击者会跟受害者建立一个连接,并在受害者之间中转消息,使他们以为他们正在直接跟对方对话。这类攻击有许多形式,比如使用Hak5的菠萝型无线路由器并将其伪装成可信的无线网络接入点,而实际上扮演的是受害者和无线网络之间的中间人。另一个例子是使用Kali来在受害者和默认路由器之间转发网络数据,而同时嗅探着有用信息,比如登录凭据。
许多云服务比如Facebook和Gmail都通过HTTPS来实施安全登录,这能够防止普通的中间人攻击。要绕过HTTPS,你可以使用SSLstrip工具。它能够显示所有可用于你的中间人攻击的登录信息。SSLstrip/中间人攻击组合是窃取受害者登录凭据的一个非常有效的方法,如果你有跟目标系统处于同一网络中的攻击系统的话。
5.3.11 dsniff和arpspoof
dsniff是一组密码嗅探和网络数据分析工具,用于解析不同的应用协议和提取相关信息。arpspoof用于帮助攻击者向本地网络发送伪造的地址解析协议 (ARP,Address Resolution Protocol)消息。这么做的目的是要将攻击者的MAC地址和其他主机的IP地址关联起来,从而将发往该IP地址的网络数据都发送给攻击者。
一个人工进行中间人攻击的方法是将arpspoof和dsniff用在系统间。第一步是用第2章 中介绍的技术找出受害者的IP地址和网络的默认网关。找出IP地址后,你需要告诉受害者你真的是另一个系统或是默认网关。举个例子,如果受害者一的IP是172.16.76.128,默认网关是172.16.76.2,攻击者是172.16.76.131,你应该用arpspoof命令将你那个为131的IP地址设置得看起来像是受害者的和默认网关的。
打开两个终端窗口,在每个窗口中输入如下命令来欺骗受害者:
终端一:
arpspoof -t 172.16.76.128 172.16.76.2 // 告诉受害者2你就是默认网关
终端二:
arpspoof -t 172.16.76.2 172.16.76.128 // 告诉受害者1你就是默认网关 2
2 此处的代码原注释有问题。它将两条命令都解释为将本机扮演成默认网关的角色。实际上它是一边扮演默认网关的形象,一边扮演另一台主机的形象。——译者注
如果正确输入了命令,你应该能看到网络数据正在通过攻击系统回放。这些网络数据不是直接跟受害者交互,所以这时受害者不会发现数据流出了网络。要完成攻击,你需要启用IP转发功能,这样网络数据会继续从默认网关流向受害者,反之亦然;虽然攻击者已经在观察受害者和默认网关之间的网络数据了。
打开第三个终端窗口,输入:
echo 1> /proc/sys/net/ipv4/ip_forward
此刻,网络数据应该已经能在流经攻击者系统的同时在受害者和默认网关之间流动了。下面的截图显示的是在没有启用IP转发时ping回显失败的情况。
下一步,启动dsniff来观察网络数据。dsniff可以通过浏览Sniffing/Spoofing > Network Sniffers 并选择dsniff 找到。它会打开一个终端窗口,显示dsniff 的用法,如下面的截图所示:
要启动dsniff ,输入dsniff 命令并用-i 后跟网卡来选定嗅探用的网卡。举个例子,我输入了如下图所示的dsniff 来嗅探eth0 上的所有网络数据:
dsniff会截获所有的登录信息。举个例子,如果受害者是通过FTP登录到系统上的,该会话一结束,你就能看到登录的尝试和凭据信息,因为dsniff需要看到完整的会话。
5.3.12 Ettercap
Ettercap是一个用于基于中间人方式的攻击的免费的开源综合工具套件。
Ettercap可用于计算机网络协议分析和安全审计,它的功能有嗅探活动的连接、内容过滤,以及对多种协议的主动和被动解析的支持。Ettercap通过将攻击者的网卡置入混杂模式以及对受害者的机器进行ARP污染来工作。
要启动Ettercap,浏览到Sniffing/Spoofing > Network Sniffers ,并选择Ettercap图形 。
第一步是选择打算用于嗅探的网卡。切换到Sniff 标签,选择嗅探类型(Unified sniffing 或Bridged sniffing )和你打算用于嗅探的网卡。
现在,Ettercap会显示更多菜单选项,如下面的截图所示:
我们先来对网络扫描一下可用的主机。切换到Hosts 界面,选择Scan for hosts 。Ettercap会快速扫描整个C类网络,并列出所有找出的主机。通常,路由器是第一个找到的主机。下面的截图显示的是在某次扫描中发现的四台设备。
在本例中,我们找到了四台设备。我们假设.1那个IP对应的是路由器,而且我们要针对的受害者机器的IP是.128。我们将路由器选作目标1,受害者.128选作目标2。这会将我们的系统放在受害者和路由器的中间,整个都是经典的中间人攻击形式。选择每个目标,点击对应的勾选框,你可以切换到Targets 页面并选择Current Targets 来验证目标。
下一步,让我们来看一下在Mitm 下面的中间人选项。这里还有Arp poisoning... 、ICMP redirect... 、Port stealing... 和Dhcp spoofing... 等选项。举个例子,我们选择了Arp poisoning... 选项,并选用了Sniff remote connections 参数。
现在,我们可以抓取路由器和受害者机器之间的网络数据了。我们感兴趣的信息,比如用户名和密码信息等,可以被截获并显示在执行窗口汇中。
5.3.13 Driftnet
Driftnet是一款用于从活动的网络数据中抓取图片的中间人工具。Driftnet要求在一切工作之前先建立一个中间人攻击。你可以在启动Driftnet之前,利用前面介绍的arpspoof和dsniff或是Ettercap方法来启动中间人攻击。Driftnet可以同时并行运行多个,以便快速呈现线上数据中的所有图片。
Driftnet可以在Sniffing/Spoofing > Web Sniffers 中选择Driftnet 。Driftnet会以终端形式打开并显示如何使用该工具的帮助信息。你需要指定你想用哪个网卡来嗅探数据以及你想将截获的图片用作什么用途。举个例子,你可以选择用-b 选项来为每个图片发出一声哔哔的声音,或是将图片显示在终端屏幕上,或是将截获的图片发送到某个目录。下面提供的截图显示的是从eth0 抓取图片,并将图片放到位于/root/Desktop/CapturedImages目录中。
下面的例子假设我们已经用eth0 作为监听端口建立了一个中间人攻击环境。
Driftnet启动后,它会打开一个新的空白终端窗口。如果你让Driftnet显示图片,图片就会显示在这个窗口。如果你选择不要显示图片,比如用了选项-a,那么图片就不会出现在这里,不过,图片会发送到命令中指定的目录。下面的截图显示的是从正在浏览www.drchaos.com 的受害者那里抓取图片。