解析中间人攻击(3/4)---会话劫持
本文我们将探讨会话劫持的理论以及演示,并讨论相关检测和防御技巧。
导言
在前面两篇文章中我们分别探讨了ARP缓存中毒和DNS欺骗,从前面展示的例子我们可以看到,中间人攻击是非常有效的攻击形式,并且越来越难以被察觉。而在本文中,我们将探讨会话劫持攻击的理论以及演示,并讨论相关检测和防御技巧。
会话劫持
我们经常会听到会话劫持,通常情况下,任何涉及对设备间会话的攻击就是会话劫持,这里所说的会话,指的是存在状态的设备间的连接。
在这篇文章中,我们将从cookie盗窃(涉及HTTP会话)角度来探讨会话劫持。大家常常都能见到要求输入登录验证信息的网站,这些网站就是以会话连接的网站。首先访问者必须输入用户名和密码来得到网站的身份验证,也就是正式建立会话,然后网站会保持某种形式的会话追踪以确保访问者的登陆状态,并允许访问者访问网站资源(通常是通过cookie来实现)。当会话要结束时,登陆信息就会被清除,然后会话才会结束。这是常见的会话形式,尽管我们通常没有意识到这种会话,会话总是在不断发生,大部分通信都是依赖于某种形式的会话或者基于状态的活动。
图1:正常会话
正如前面文章中所说,通过互联网的事物都是不安全的,会话数据也同样如此。大多数形式的会话劫持背后的原则都是,如果你能够截取已建立会话的某些部分数据,你就能利用这些数据来假冒通信中所涉及的任何参加者,从而获取会话信息。在上面的例子中,这就意味着,如果我们能够获取用于维持浏览器和登陆网站间会话状态的cookie,我们就能将cookie发给网络服务器并冒充会话连接。从攻击者的角度来看,这似乎听起来很棒,不过确实也是如此。
图2:会话劫持
现在我们对会话劫持有了一些理论基础,让我们从实例中继续深入研究。
窃取Cookies
在我们的示范实例中,我们将通过拦截用户登陆到Gmail帐户的通信来执行会话劫持攻击。利用这个拦截的通信我们就能够冒充用户并从我们的攻击机登录到用户帐号。
为了执行这种攻击,我们将使用名为Hamster和Ferret的工具,大家可以点击此处来下载这两个工具,这两个工具都是命令行工具,这样Hamster文件夹就可以解压到容易获取的位置。
或者你也可以下载并使用Backtrack 4,BT4是专为攻击和渗透测试设计的Linux便携系统,其中包含很多预装和预编译的工具,Hamster和Ferret就是其中之一。你可以在/pentest/sniffers/hamster文件夹找到Hamster。本文中屏幕截图的示例就是来自于BT4。
这种形式的会话攻击所涉及的第一个步骤就是拦截受害者浏览Facebook时的通信,这种拦截实际上可以使用任何数据包嗅探应用程序(例如TCPDump或者 Wireshark)来实现,但是为了拦截正确的数据包,你将需要部署像ARP缓存中毒(上篇文章所讨论的攻击形式)这样的技术。
图3:拦截访问Gmail帐户的用户的流量
拦截到访问Gmail帐户的用户的流量后,你需要将拦截文件存储在Hamster目录中,而在我们的示例中,我们将拦截文件放在名为victim_gmail.pcap的文件夹中,然后我们将利用Ferret来处理文件。这个操作过程是这样实现的:浏览Hamster文件夹,并运行这个命令“ferret –r victim_gmail.pcap”,Ferret将会处理这个文件并创建一个hamster.txt文件,这将用于Hamster用来发起真正会话劫持攻击。
图4:利用Ferret处理拦截文件
用了拦截的HTTP数据后,我们就可以使用Hamster来发起实际攻击。Hamster本身是作为代理服务器运行的,为浏览和使用盗窃的会话cookie提供一个界面。为了启动Hamster代理服务器,你只需要简单地执行没有命令行选项的Hamster即可。
图5:启动Hamster
上述操作执行成功后,你需要打开你的浏览器,并将其代理设置配置为符合Hamster输出提供的设置。默认情况下,这意味着,你需要将你的代理设置配置为使用本地回环地址1234端口的127.0.0.1。要访问IE里面的这个设置,你可以通过选择工具、Internet选项、连接、局域网设置,并勾选“为局域网使用代理服务器”来实现。
图6: 为使用Hamster配置代理设置
现在代理设置已经配置好,你就可以在你的浏览器中输入http://hamster来访问Hamster控制台。Hamster将使用Ferret创建的文件来生成IP地址(会话信息被拦截的IP地址)列表并在浏览器的右窗格显示这些IP地址,我们所创建的文件只包含一个受害者的IP地址,所以我们可以点击左窗格来查找更多可以劫持的会话。
图7: Hamster用户界面
上图所示,我们看到facebook.com也在列表中,如果你点击该链接,你会看到一个成功登陆到受害者的facebook帐户的新窗口。
图8: 成功劫持Gmail帐户
如何抵御会话劫持攻击
目前存在很多种不同的会话劫持攻击,所以抵御方法也有所不同。与前面我们所评估的其他中间人攻击不同,会话劫持是很难检测的,更难以抵御,因为会话劫持攻击基本属于被动攻击形式。除非恶意用户在访问已劫持会话时执行某种明显的操作,否则我们将永远无法知道帐户已经被劫持。但是以下建议可以帮助大家从一定程度上抵御会话劫持攻击:
保护家庭网络中的网络银行帐号 - 攻击者拦截家庭网络的几率比拦截工作网络的几率要低得多。这并不是因为家庭网络更加安全(实际上,家庭网络可能更加不安全),但是如果家里只有一两台计算机,基本不需要担心会话劫持,你最需要担心的就是当你年幼的孩子开始看网上的攻击视频。在企业网络中,你无法知道网络中或者分公司网络的情况,所以潜在的攻击资源比较多。关于会话劫持最大的目标之一就是网上银行帐户,但这也使所有攻击的主要目标。
明察秋毫- 聪明的攻击者不会留下任何证据证明他们曾进入过你的安全帐户,但是即使最老练的攻击者也会发错误。当你登录到基于会话连接的服务时一定要谨慎小心,以确保没有成为攻击者的劫持对象。仔细观察异常情况,并注意上次登陆时间以确保安全。
保护内部设备安全- 像这些中间人攻击通常都是从内部网络执行的,如果你的网络设备十分安全,那么设备被利用来发起会话劫持的几率就会比较低。
结语
我们已经讨论了三种非常致命的中间人攻击类型,这些攻击如果成功执行的话都可能对受害者造成非常严重的后果。有恶意目的利用会话劫持攻击的攻击者可能会访问用户的网上银行、电子邮件或者甚至是重要的内部应用程序。在中间人攻击系列的下一篇文章中,我们将看看另一种知名的中间人攻击,即SSL欺骗。
备注:转自IT专家网