前言
本文描述Internet上的一种安全攻击,它可能侵害到WWW用户的隐私和数据完整性。这种攻击可以在现有的系统上实现,危害最普通的Web浏览器用户,包括Netscape Navigator和Microsoft Internet Explorer用户。
允许攻击者创造整个WWW世界的影像拷贝。影像Web的入口进入到攻击者的Web服务器,经过攻击者机器的过滤作用,允许攻击者监控受攻击者的任何活动,包括帐户和口令。攻击者也能以受攻击者的名义将错误或者易于误解的数据发送到真正的Web服务器,以及以任何Web服务器的名义发送数据给受攻击者。简而言之,攻击者观察和控制着受攻击者在Web上做的每一件事。
欺骗攻击
在一次欺骗攻击中,攻击者创造一个易于误解的上下文环境,以诱使受攻击者进入并且做出缺乏安全考虑的决策。欺骗攻击就像是一场虚拟游戏:攻击者在受攻击者的周围建立起一个错误但是令人信服的世界。如果该虚拟世界是真实的话,那么受攻击者所做的一切都是无可厚非的。但遗憾的是,在错误的世界中似乎是合理的活动可能会在现实的世界中导致灾难性的后果。
欺骗攻击在现实的电子交易中也是常见的现象。例如,我们曾经听说过这样的事情:一些西方罪犯分子在公共场合建立起虚假的ATM取款机,该种机器可以接受ATM卡,并且会询问用户的PIN密码。一旦该种机器获得受攻击者的PIN密码,它会要么“吃卡”,要么反馈“故障”,并返回ATM卡。不论哪一种情况,罪犯都会获得足够的信息,以复制出一个完全一样的ATM卡。后面的事情大家可想而知了。在这些攻击中,人们往往被所看到的事物所愚弄:ATM取款机所处的位置,它们的外形和装饰,以及电子显示屏的内容等等。
人们利用计算机系统完成具有安全要求的决策时往往也是基于其所见。例如,在访问网上银行时,你可能根据你所见的银行Web页面,从该行的帐户中提取或存入一定数量的存款。因为你相信你所访问的Web页面就是你所需要的银行的Web页面。无论是页面的外观、URL地址,还是其他一些相关内容,都让你感到非常熟悉,没有理由不相信。但是,你很可能是在被愚弄。
Web欺骗的两个组成部分
为了分析可能出现欺骗攻击的范围和严重性,我们需要深入研究关于Web欺骗的两个部分:安全决策和暗示。
安全决策
安全决策,这里指的是会导致安全问题的一类决策。这类决策往往都含有较为敏感的数据,也就是意味着一个人在做出决策时,可能会因为关键数据的泄露,导致不受欢迎的结果。很可能发生这样的事情:第三方利用各类决策数据攻破某种秘密,进行破坏活动,或者导致不安全的后果。例如,在某种场合输入帐户和密码,就是我们在此谈到的安全决策问题。因为帐户和密码的泄露会产生我们不希望发生的问题。此外,从Internet上下载文件也是一类安全决策问题。不能否认,在下载的文件当中可能会包含有恶意破坏的成分,尽管这样的事情不会经常发生。
安全决策问题无处不在,甚至在我们通过阅读显示信息做出决策时,也存在一个关于信息准确性的安全决策问题。例如,如果你决定根据网上证券站点所提供的证券价格购买某类证券时,那么你必须确保所接收信息的准确性。如果有人故意提供不正确的证券价格,那么不可避免地会有人浪费自己的财富。
暗示
WWW站点提供给用户的是丰富多彩的各类信息,人们通过浏览器任意翻阅网页,根据得到的上下文环境来做出相应的决定。Web页面上的文字、图画与声音可以给人以深刻的印象,也正是在这种背景下,人们往往能够判断出该网页的地址。例如,一个特殊标识的存在一般意味着处于某个公司的Web站点。
我们都知道目标的出现往往传递着某种暗示。在计算机世界中,我们往往都习惯于各类图标、图形,它们分别代表着各类不同的含义。富有经验的浏览器用户对某些信息的反应就如同富有经验的驾驶员对交通信号和标志做出的反应一样。
目标的名字能传达更为充分的信息。人们经常根据一个文件的名称来推断它是关于什么的。manual.doc是用户手册的正文吗?它完全可以是另外一个文件种类,而不是用户手册一类的文档。一个microsoft.com的链接难道就一定指向我们大家都知道的微软公司的URL地址吗?显然可以偷梁换柱,改向其他地址。
人们往往还会在时间的先后顺序中得到某种暗示。如果两个事件同时发生,你自然地会认为它们是有关联的。如果在点击银行的网页时,username对话框同时出现了,你自然地会认为你应该输入你在该银行的帐户与口令。如果你在点击了一个文档链接后,立即就开始了下载,那么你很自然地会认为该文件正从该站点下载。然而,以上的想法不一定都是正确的。
如果你仅仅看到一个弹出窗口,那么你会和一个可视的事件联系起来,而不会认识到一个隐藏在窗口背后的不可视的事件。 现代的用户接口程序设计者花费很大的精力来设计简单易懂的界面,人们感受到了方便,但潜在的问题是人们可能习惯于此,不可避免地被该种暗示所欺骗。
Web欺骗的欺骗手段
TCP和DNS欺骗
除了我们将要讨论的欺骗手段外,还有一些其他手段,在这里我们将不做讨论。这种攻击的例子包括TCP欺骗(在TCP包中使用伪造的IP地址)以及DNS欺骗(攻击者伪造关于机器名称和网络信息)。读者有兴趣可以阅读有关资料。
Web欺骗
Web欺骗是一种电子信息欺骗,攻击者在其中创造了整个Web世界的一个令人信服但是完全错误的拷贝。错误的Web看起来十分逼真,它拥有相同的网页和链接。然而,攻击者控制着错误的Web站点,这样受攻击者浏览器和Web之间的所有网络信息完全被攻击者所截获,其工作原理就好像是一个过滤器。
后果
由于攻击者可以观察或者修改任何从受攻击者到Web服务器的信息;同样地,也控制着从Web服务器至受攻击者的返回数据,这样攻击者就有许多发起攻击的可能性,包括监视和破坏。
攻击者能够监视受攻击者的网络信息,记录他们访问的网页和内容。当受攻击者填写完一个表单并发送后,这些数据将被传送到Web服务器,Web服务器将返回必要的信息,但不幸的是,攻击者完全可以截获并加以使用。大家都知道绝大部分在线公司都是使用表单来完成业务的,这意味着攻击者可以获得用户的帐户和密码。下面我们将看到,即使受攻击者有一个“安全”连接(通常是通过Secure Sockets Layer来实现的,用户的浏览器会显示一把锁或钥匙来表示处于安全连接),也无法逃脱被监视的命运。
在得到必要的数据后,攻击者可以通过修改受攻击者和Web服务器之间任何一个方向上的数据,来进行某些破坏活动。攻击者修改受攻击者的确认数据,例如,如果受攻击者在线订购某个产品时,攻击者可以修改产品代码,数量或者邮购地址等等。攻击者也能修改被Web服务器所返回的数据,例如,插入易于误解或者攻击性的资料,破坏用户和在线公司的关系等等。
欺骗整个Web世界
你可能认为攻击者欺骗整个Web世界是不可能的,但是恰恰相反,攻击者不必存储整个Web世界的内容,他只需要制造出一条通向整个Web世界的链路。当他需要提供关于某个Web站点的错误Web页面时,他只需要在自己的服务器上建立一个该站点的拷贝,由此等待受害者自投罗网。
Web欺骗的细节完善
前面描述的攻击相当有效,但是它还不是十分完美的。黑客往往还要创造一个可信的环境,包括各类图标、文字、链接等,提供给受攻击者各种各样的十分可信的暗示。总之就是隐藏一切尾巴。此时,如果错误的Web是富有敌意的,那么无辜的用户将处于十分危险的境地。
另外,黑客还会注意以下方面。
1. 状态线路
连接状态是位于浏览器底部的提示信息,它提示当前连接的各类信息。Web欺骗中涉及两类信息。首先,当鼠标放置在Web链接上时,连接状态显示链接所指的URL地址,这样,受攻击者可能会注意到重写的URL地址。第二,当Web连接成功时,连接状态将显示所连接的服务器名称。这样,受攻击者可以注意到显示 www.org ,而非自己所希望的站点。
攻击者能够通过_JavaScript编程来弥补这两项不足。由于_JavaScript能够对连接状态进行写操作,而且可以将_JavaScript操作与特定事件绑定在一起,所以,攻击者完全可以将改写的URL状态恢复为改写前的状态。这样Web欺骗将更为可信。
2. 位置状态行
浏览器的位置状态行显示当前所处的URL位置,用户也可以在其中键入新的URL地址进入到另外的URL,如果不进行必要的更改,此时URL会暴露出改写后的URL。同样地,利用_JavaScript可以隐藏掉改写后的URL。_JavaScript能用不真实的URL掩盖真实的URL,也能够接受用户的键盘输入,并将之改写,进入不正确的URL。
Web欺骗的弱点
尽管黑客在进行Web欺骗时已绞尽脑汁,但是还是留有一些不足。
文档信息
攻击者并不是不留丝毫痕迹,HTML源文件就是开启欺骗迷宫的钥匙。攻击者对其无能为力。通过使用浏览器中“viewsource”命令,用户能够阅读当前的HTML源文件。通过阅读HTML源文件,可以发现被改写的URL,因此可以觉察到攻击。遗憾的是,对于初学者而言,HTML源文件实在是有些难懂。
通过使用浏览器中“view document information”命令,用户能够阅读当前URL地址的一些信息。可喜的是这里提供的是真实的URL地址,因此用户能够很容易判断出Web欺骗。不过,绝大多数用户都很少注意以上一些属性,可以说潜在的危险还是存在的。
Web欺骗的预防解决
逃离灾难
受攻击者可以自觉与不自觉地离开攻击者的错误Web页面。这里有若干种方法。访问Bookmark或使用浏览器中提供的“Open location”进入其他Web页面,离开攻击者所设下的陷阱。不过,如果用户使用“Back”按键,则会重新进入原先的错误Web页面。当然,如果用户将所访问的错误Web存入Bookmark,那么下次可能会直接进入攻击者所设下的陷阱。
关于追踪攻击者
有人建议应当通过跟踪来发现并处罚攻击者。确实如此,攻击者如果想进行Web欺骗的话,那么离不开Web服务器的帮助。但是,他们利用的Web服务器很可能是被攻击后的产物,就象罪犯驾驶着盗窃来的汽车去作案一样。
预防办法
Web欺骗是当今Internet上具有相当危险性而不易被察觉的欺骗手法。幸运的是,我们可以采取的一些保护办法。
短期的解决方案
为了取得短期的效果,最好从下面三方面来预防:
1.禁止浏览器中的_JavaScript功能,那么各类改写信息将原形毕露;
2.确保浏览器的连接状态是可见的,它将给你提供当前位置的各类信息;
3.时刻注意你所点击的URL链接会在位置状态行中得到正确的显示。
现在,_JavaScript、ActiveX以及Java提供越来越丰富和强大的功能,而且越来越为黑客们进行攻击活动提供了强大的手段。为了保证安全,建议用户考虑禁止这些功能。
这样做,用户将损失一些功能,但是与可能带来的后果比较起来,每个人会得出自己的结论。
长期的解决方案
1.改变浏览器,使之具有反映真实URL信息的功能,而不会被蒙蔽;
2.对于通过安全连接建立的Web——浏览器对话,浏览器还应该告诉用户谁在另一端,而不只是表明一种安全连接的状态。比如:在建立了安全连接后,给出一个提示信息“NetscapeInc.”等等。
所有的解决方案,可以根据用户的安全要求和实际条件来加以选择。