黑客攻防从入门到精通(Web脚本编程篇·全新升级版)
上QQ阅读APP看书,第一时间看更新

2.1 网络欺骗攻击

计算机系统及网络的信息安全将是21世纪各国面临的重大挑战之一。在我国,这一问题已引起各方面的高度重视,一些典型技术及相关产品如密码与加密、认证与访问控制、入侵检测与响应、安全分析与模拟和灾难恢复都处于如火如荼的研究和开发之中。近年来,在与入侵者周旋的过程中,另一种有效的信息安全技术正渐渐进入人们的视野,那就是网络欺骗。

2.1.1 五种常见的网络欺骗方式

网络欺骗就是使入侵者相信信息系统存在有价值的、可利用的安全弱点,并具有一些可攻击窃取的资源(当然这些资源是伪造的或不重要的),并将入侵者引向这些错误的资源。它能够显著地增加入侵者的工作量、入侵复杂度以及不确定性,从而使入侵者不知道其进攻是否将奏效或成功。而且,它允许防护者跟踪入侵者的行为,并在入侵者之前修补系统可能存在的安全漏洞。比如用户通过IE等浏览器访问各种各样的Web站点时,一般不会意识到有这些问题存在:正在访问的网页已经被黑客篡改过,网页上的信息是虚假的。例如黑客将用户要浏览的网页的URL改写为指向黑客自己的服务器,当用户浏览目标网页的时候,实际上是向黑客服务器发出请求,以实现欺骗的目的。网络欺骗的主要方式有ARP欺骗、IP欺骗、域名欺骗、Web欺骗以及电子邮件欺骗等,下面将分别介绍其攻击原理。

1.ARP欺骗

ARP(地址解析协议)是在仅知道主机的IP地址时确定其物理地址的一种协议。因IPv4和以太网的广泛应用,其主要用来将IP地址翻译为以太网的MAC地址,但也能在ATM和FDDI IP网络中使用。局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输,计算机是根据MAC地址来识别一台机器。

比如区域网内A要向主机B发送报文,会查询本地的ARP缓存表,找到B的IP地址对应的MAC地址后,就会进行数据传输。如果未找到,则A广播一个ARP请求报文(携带主机B的IP地址),网上所有主机包括B都会收到ARP请求,但只有主机B识别自己的IP地址,于是向A主机发回一个ARP响应报文。其中就包含B的MAC地址,A接收到B的应答后,就会更新本地的ARP缓存,接着使用这个MAC地址发送数据(由网卡附加MAC地址)。ARP欺骗主要分为单向欺骗和双向欺骗。

(1)单向欺骗。

A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA

B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB

C的地址为:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC

A和C之间进行通信,但是此时B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方,IP地址是192.168.10.3(C的IP地址),MAC地址是BB-BB-BB-BB-BB-BB(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答时,就会更新本地的ARP缓存(A被欺骗了),B就伪装成C了。同时,B也向C发送一个ARP应答,应答包中发送方IP地址是192.168.10.1(A的IP地址),MAC地址是BB-BB-BB-BB-BB-BB(A的MAC地址本来应该是AA-AA-AA-AA-AA-AA,这里被伪造了)。当C收到B伪造的ARP应答时,也会更新本地ARP缓存(C也被欺骗了),B就伪装成A了。这样主机A和C都被主机B欺骗,A和C之间通信的数据都经过了B,主机B完全可以知道他们之间说了什么。这就是典型的ARP欺骗过程。

掐断A与C的通信,实现原理:B向A发送一条ARP数据包,内容为:C的地址是00:00:00:00:00:00(一个错误的地址),那么A此后向C发的数据包都会发到00,而这个地址是错误的,所以通信中断了。但是要注意,这里只是A→C中断了,C→A没有中断,所以这个叫单向欺骗。

掐断C与A的通信,实现原理和第一条一样,如果和第一条一起发,那么A和C的通信就完全中断了,即A←×→C。

嗅探A与C的通信,实现原理:B向A发送一条ARP数据包,内容为:C的地址是AA:BB:CC:DD:EE:FF(B自己的地址)。也就是说,B对A说:我才是C,于是A把向C发送的数据都发给B了,B得到数据后就可以直接丢弃,那么通信中断;也可以再次转发给C,那么又形成回路,B当了个中间人,监视A和C的通信。此时,你就可以用CAIN等任何抓包工具进行本地嗅探了。

(2)双向欺骗。

A要跟C正常通信,B对A说我是才C,又对C说我才是A,这样就把A跟C的ARP缓存表全部修改了。以后通信过程就是A把数据发送给B,B再发送给C;C把数据发送给B, B再发送给A。

攻击主机发送ARP应答包给被攻击主机和网关,它们分别修改其ARP缓存表为攻击主机的MAC地址,这样它们之间的数据都被攻击主机所截获。

(3)单向欺骗与双向欺骗的区别。

单向欺骗:是指欺骗网关,分别有三个机器A(网关)、 B(server)、C(server)。A要跟C正常通信,B对A说我才是C,此时A就把原本给C的数据给B了。A修改了本地的缓存表,但是C跟A的通信还是正常的,只是A跟C的通信不正常。

双向欺骗:是欺骗网关跟被攻击的两个机器,A(网关)、B(server)、C(server),A要跟C正常通信,B对A说我是C,而对C说我是A,这样A跟C的ARP缓存表全部修改了,数据全部发送到B那里去了。

(4)怎么应对ARP欺骗主机的情况?

① 我们可以利用ARPkiller的"Sniffer杀手"扫描整个局域网IP段,然后查找处于“混杂”模式下的计算机,就可以发现对方了。检测完成后,如果相应的IP是绿帽子图标,说明这个IP处于正常模式;如果是红帽子图标,则说明该网卡处于混杂模式。它就是我们的目标,也就是这个家伙在用网络执法官在捣乱。

② 使用tracert命令在任意一台受影响的主机上,在DOS命令窗口下运行如下命令:tracert61.135.179.148。假定设置的默认网关为10.8.6.1,在跟踪一个外网地址时,第一条却是10.8.6.186,那么10.8.6.186就是病毒源。原理:中毒主机在受影响主机和网关之间,扮演了“中间人”的角色。所有本应该到达网关的数据包,由于错误的MAC地址,均被发到了中毒主机。此时,中毒主机越俎代庖,起了默认网关的作用。

2.IP地址欺骗

IP地址欺骗是指行动产生的IP数据包为伪造的源IP地址,以便冒充其他系统或发件人的身份。这是一种黑客的攻击形式。黑客使用一台计算机上网,而借用另一台机器的IP地址,从而冒充另外一台机器与服务器打交道。IP欺骗就是伪造他人的源IP地址,其实质就是让一台计算机来扮演另一台计算机,即利用主机之间的信任关系以达到欺骗的目的。如果两台主机之间的信任关系是基于IP地址建立起来的,那么在冒充另一台计算机IP地址的前提下,就可以使用rlogin命令登录到该主机上,而不需任何口令验证,这就是IP欺骗最根本的理论依据。

IP欺骗的实现过程如下。

(1)选定目标主机,且其信任模式已被发现,并找到一台被目标主机信任的主机。

(2)一旦发现被信任的主机,为了实现伪装,则往往使其丧失工作能力。由于黑客将要代替真正的被信任主机,所以必须确保真正被信任的主机不能接收到任何有效的网络数据,否则将会被揭穿。

(3)使得被信任的主机丧失工作能力后,伪装成被信任的主机,同时建立起与目标主机基于地址验证的应用连接。如果成功,黑客就会使用一种简单的命令来放置系统后门,以进行非授权操作。

这就是IP欺骗攻击的全过程。该过程看起来很完美简单,但实际上还需要做很多工作。虽然可以通过编程的方法来改变发出的数据包的IP地址,但TCP协议将对IP进行进一步的封装,是不会让黑客轻易得逞的。

由于TCP是面向连接的协议,所以在双方正式传输数据之前,需要使用3次握手来建立一个稳定的连接。假设还是主机A和主机B进行通信,主机B先发送带有SYN标志的数据段通知主机A建立TCP连接,TCP的可靠性就是由数据包中的多位控制字来提供的,其中最重要的是数据序列SYN和数据确认标志ACK,且将TCP报头中的SYN设为自己本次连接中的初始值(ISN)。当主机A收到主机B的SYN包之后,会发送给主机B一个带有SYN+ACK标志的数据段,告知自己的ISN并确认主机A发送来的第一个数据段,将ACK设置成主机B的SYN+1。

当主机B确认收到主机A的SYN+ACK数据包后,将ACK设置成主机A的SYN+1。主机A收到主机B的ACK后,连接成功建立,双方就可以正式传输数据了。假如黑客想冒充主机B对主机A进行攻击,就要先使用主机B的IP地址发送SYN标志给A,但当A收到后,并不会把SYN+ACK发送到黑客的主机上,而是发送到真正的B上,这时IP欺骗就失败了,因为B根本没发送SYN请求。所以如果要冒充B,首先要让B失去工作能力。

此时最难的是对A进行攻击,必须知道A使用的ISN。TCP使用的ISN是一个32位的计数器,即0~4294 967295。TCP为每一个连接选择一个初始序列号ISN,为了防止因为延迟、重传等扰乱三次握手,ISN不能随便选取,不同的系统有着不同的算法。

所以要对目标主机进行攻击,还必须知道目标主机使用的数据包序列号。首先,黑客与被攻击主机的一个端口(如SMTP对应的端口)建立起正常的连接。通常这个过程被重复若干次,并将目标主机最后所发送的ISN存储起来。其次,黑客还需要猜测他的主机与被信任主机之间的RTT时间(往返时间),这个RTT时间是通过多次统计平均求出的。RTT对于估计下一个ISN是非常重要的。每秒钟ISN增加128000,每次连接增加64000。

现在就不难估计出ISN的大小了,它是128000乘以RTT的一半,如果此时目标主机刚刚建立过一个连接,在加上一个64000。在估计出ISN大小后,就立即开始进行攻击。如果攻击者估计正确的话,目标主机将会接收该ACK。至此,将开始数据传输。一般攻击者会在系统中放置一个后门,以便侵入。

3.DNS欺骗

如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,用户上网就只能看到攻击者的主页,而不是自己想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,只是冒名顶替、招摇撞骗罢了。

实际上,就是把攻击者的计算机设成目标域名的代理服务器。这样,所有外界进入目标计算机的数据流都在黑客的监视之下,黑客可以任意窃听甚至修改数据流里的数据,从而收集到大量的信息。和IP欺骗相似,DNS欺骗的技术在实现上仍然有一定的困难,为了克服这些困难,有必要了解DNS查询包的结构。

在DNS查询包中有个标识IP,它是一个很重要的域,其作用是鉴别每个DNS数据包的印记,从客户端设置,由服务器返回,使用户匹配请求与响应。如果某用户要打开百度主页(www.baidu.com),黑客要想通过假的域名服务器(如220.181.6.45)进行欺骗,就要在真正的域名服务器(220.181.6.18)返回响应前先给出查询的用户的IP地址。

但在DNS查询包中有一个重要的域就是标识ID,要使发送伪造的DNS信息包不被识破的话,就必须伪造出正确的ID。如果无法判别该标记,DNS欺骗将无法进行。只要在局域网上安装有嗅探器,就可以通过它知道用户的ID。但要在Internet上实现欺骗,就只有发送大量的一定范围的DNS信息包来得到正确ID。

4.电子邮件欺骗

电子邮件欺骗(email spoofing)是伪造电子邮件头,导致信息看起来是源于某个人或某个地方,而实际却不是真实的源地址。垃圾邮件的发布者通常使用欺骗和恳求的方法尝试让收件人打开邮件,并很有可能让其回复。因此,我们可以合法地使用欺骗。经典的例子有,发件人喜欢伪装电子邮件源地址,而信的内容则包括了发件人所陈述的从被配偶虐待到福利代理,或者害怕报仇的“告密者”等一系列事件。但注意欺骗其他人在某些情况下是违法的。可能发生电子邮件欺骗的原因在于发送电子邮件最主要的协议:简单邮件传输协议(SMTP)不包括某种认证机制。即使SMTP服务扩展(工程任务组,请求注解2554号文件中有详细说明)允许SMTP客户端通过邮件服务器来商议安全级别,但这一预防措施并不是什么时候都会被使用的。如果预防措施没有被使用,具备必要知识的任何人都可以连接到服务器,并使用其发送邮件。为了发送欺骗电子邮件,发件人会输入头部命令,这将会改变邮件的信息。发送一封看起来是任何人、任何地点发送的邮件都很有可能,这取决于发件人如何确定其来源。因此,有些人可以发送看起来信息来源是你的欺骗电子邮件,实际上你并没有写过这封信。

大部分欺骗电子邮件都属于“令人讨厌”的东西,只需不费力气删除即可;不过最恶毒的变种,却能导致严重问题和安全风险。例如,欺骗邮件可以声称是从某个权威之人处发送过来的,询问敏感数据(如密码、信用卡号码或其他个人信息)或任何可以被利用实现各种犯罪目的的信息。美洲银行、eBay网和Wells Fargo最近成为大量欺骗性垃圾邮件的受害者。电子邮件欺骗的一种形式是自发送垃圾邮件,这类邮件信息的发送者和接收者看起来是同一个人。

5.Web欺骗

Web欺骗是一种电子信息欺骗,攻击者在其中创造了整个Web世界的一个令人信服但是完全错误的拷贝。错误的Web看起来十分逼真,拥有相同的网页和链接。然而,攻击者控制着错误的Web站点,这样受攻击者浏览器和Web之间的所有网络信息就完全被攻击者所截获,其工作原理就好像是一个过滤器。

由于攻击者可以观察或者修改任何从受攻击者到Web服务器的信息,同样也控制着从Web服务器至受攻击者的返回数据,这样攻击者就有许多发起攻击的可能性,包括监视和破坏。

攻击者能够监视受攻击者的网络信息,记录他们访问的网页和内容。当受攻击者填写完一个表单并发送后,这些数据将被传送到Web服务器,Web服务器将返回必要的信息。但不幸的是,攻击者完全可以截获并加以使用。大家都知道绝大部分在线公司都是使用表单来完成业务的,这意味着攻击者可以获得用户的账号和密码。下面我们将看到,即使受攻击者有一个“安全”连接(通常是通过Secure Sockets Layer来实现的,用户的浏览器会显示一把锁或钥匙来表示处于安全连接),也无法逃脱被监视的命运。

在得到必要的数据后,攻击者可以通过修改受攻击者和Web服务器之间任何一个方向上的数据来进行某些破坏活动。攻击者能修改受攻击者的确认数据,例如如果受攻击者在线订购某个产品时,攻击者可以修改产品代码、数量或者邮购地址等。攻击者也能修改被Web服务器所返回的数据,例如插入易于误解或者攻击性的资料,破坏用户和在线公司的关系等。

2.1.2 网络钓鱼攻击概念

网络欺骗是黑客经常使用的一种攻击方式,也是一种隐蔽性较高的网络攻击方式。这里以网络钓鱼为例,来介绍其攻击过程和防御措施。

网络钓鱼(Phishing,与钓鱼的英语fishing发音相近,又名钓鱼法或钓鱼式攻击)是通过大量发送声称来自银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出敏感信息(如用户名、口令、账号ID 、 ATM PIN码或信用卡详细信息等)的一种攻击方式。最典型的网络钓鱼攻击是将收信人引诱到一个通过精心设计与目标组织的网站非常相似的钓鱼网站上,并获取收信人在此网站上输入的个人敏感信息,通常这个攻击过程不会让受害者警觉。它是“社会工程攻击”的一种形式。

这些个人信息对黑客们具有非常大的吸引力,因为可以使其假冒受害者进行一系列非法活动,从而获得经济利益。受害者经常遭受显著的经济损失或全部个人信息被窃取并被用于犯罪的危险。虽然网络钓鱼攻击的网站生存的时间只有几天甚至更短,但在所有接触诈骗信息的用户中,仍然会有一部分人对这些骗局做出响应。

由于网络钓鱼是一个非自我复制的恶意代码,所以需要向其他人发送复制文件。网络钓鱼可以作为电子邮件附件传播,或可能隐藏在用户与其他用户进行交流的文档和其他文件中,还可以被其他恶意代码(如蠕虫)所携带。另外,网络钓鱼有时也会隐藏在从互联网上下载的免费软件中。当用户安装这个软件时,木马就会在后台被自动安装。

2.1.3 网络钓鱼攻击的常用手段

钓鱼攻击会采用多种技术,使一封电子邮件信息或网页的显示同其运行表现出欺骗性差异。下面列出了一些较为常见的攻击技术。

1.复制图片和网页设计、相似的域名

用户鉴别网站的一种方法是检查地址栏中显示的URL。为了达到欺骗的目的,攻击者会注册一个域名,使之看起来同要假冒的网站域名相似,有时还会改变大小写或使用特殊字符。由于大多数浏览器是以无衬线字体显示URL的,因此“paypaI.com”可用来假冒“paypal. com”,“barcIays.com”可用来假冒“barclays.com”。更常见的是,假域名只简单地将真域名的一部分插入其中。例如,用“ebay-members-security.com”假冒“ebay.com”,用“users-paypal.com”假冒“paypal.com”。而大多数用户缺少判断一个假域名是否真正为被仿冒公司所拥有的工具和知识。

2.URL隐藏

假冒URL的另一种方法是利用了URL语法中较少用到的特性。用户名和密码可包含在域名前,语法为:http://username:password@domain/。攻击者将一个看起来合理的域名放在用户名位置,并将真实的域名隐藏起来或放在地址栏的最后,例如“http://earthlink. net%6C%6C...%6C@211.112.228.2”。网页浏览器的最近更新已关闭了这个漏洞,其方法是在地址栏显示前将URL中的用户名和密码去掉,或者只是简单地完全禁用含用户名/密码的URL语法,Internet Explorer就使用了后一种方法。

3.IP地址

隐藏一台服务器身份最简单的办法就是使它以IP地址的形式显示,如http://210.93.131.250。这种技术的有效性令人难以置信,由于许多合法的URL也包含一些不透明且不易理解的数字,因此只有懂得解析URL且足够警觉的用户才有可能产生怀疑。

4.欺骗性的超链接

一个超链接的标题完全独立于它实际指向的URL。攻击者会利用这种显示和运行间的内在差异,在链接标题中显示一个URL,而在背后使用一个完全不同的URL。即便是一个有着丰富知识的用户,他在看到消息中显而易见的URL后也可能不会想到去检查其真实的URL。检查超链接目的地址的标准方法是将鼠标放在超链接上,其URL就会在状态栏中显示出来,但这也可能被攻击者利用JavaScript或URL隐藏技术所更改。

5.隐藏提示

还有一种更复杂的攻击,即不是在URL上做文章,而是通过完全替换地址栏或状态栏达到使其提供欺骗性提示信息的目的。最近发生的一次攻击就使用了以JavaScript在Internet Explorer地址栏上创建的一个简单的小窗口,它显示的是一个完全无关的URL。

6.弹出窗口

最近对Citibank客户的一次攻击使网页复制技术前进了一步。它在浏览器中显示的是真实的Citibank网页,但在页面上弹出了一个简单的窗口,要求用户输入个人信息。

7.社会工程

钓鱼攻击还使用非技术手段使用户落入陷阱,其中的一个策略就是急迫性,从而使用户急于采取行动,而较少花时间去核实消息的真实性。另一个策略是威胁用户,如果不按照所要求的去做就会造成可怕的后果,如终止服务或关闭账户。少数攻击还许诺将获得巨额回报(如“你中了一个大奖”),但威胁攻击更为常见,用户往往会对不劳而获产生怀疑,这可能是人类的本能。

2.1.4 网络钓鱼攻击的预防

网络钓鱼攻击从防范的角度来说也可以分为两个方面,一方面是对钓鱼攻击利用的资源进行限制,一般钓鱼攻击所利用的资源是可控的,比如WEB漏洞是Web服务提供商可以直接修补的、邮件服务商可以使用域名反向解析邮件发送服务器提醒用户是否收到匿名邮件、利用IM软件传播的钓鱼URL链接是IM服务提供商可以封杀的。另一方面是不可控制的行为,比如浏览器漏洞,大家就必须打上补丁防御攻击者直接使用客户端软件漏洞发起的钓鱼攻击,各个安全软件 厂商也可以提供修补客户端软件漏洞的功能。同时各大网站有义务保护所有用户的隐私,有义务提醒所有的用户防止钓鱼,以提高用户的安全意识。在日常生活中,广大用户要防范网络钓鱼,就应做到以下几点。

① 不要轻易在网上留下证明自己身份的任何资料,包括手机号码、身份证号、银行卡号码等。

② 不要通过网络传输自己的隐私资料,包括银行卡号码、身份证号、电子商务网站账户等资料不要通过QQ、MSN、E-mail等软件传播,因为这些往往可能被黑客利用来进行诈骗。

③ 不要轻易相信网上的消息,除非得到权威途径的证明。如网络论坛、新闻组、 QQ等往往有人发布谣言,伺机窃取用户的身份资料等。

④ 不要在网站注册时透露自己的真实资料,例如,住址、住宅电话、手机号码、自己使用的银行账号等。骗子们可能利用这些资料去欺骗你的朋友。

⑤ 如果涉及金钱交易、商业合同、工作安排等重大事项,不要仅仅通过网络完成,有心计的骗子们可能通过这些途径了解用户的资料,伺机进行诈骗。

⑥ 不要轻易相信通过电子邮件、网络论坛等发布的中奖信息、促销信息等,除非得到另外途径的证明。因为正规公司一般不会通过电子邮件给用户发送中奖信息和促销信息的。

⑦ 其他网络安全防范措施。一是安装防火墙和防病毒软件,并经常升级;二是注意经常给系统打补丁,堵塞软件漏洞;三是禁止浏览器运行JavaScript和ActiveX代码;四是不要浏览陌生的网站,同时不要执行从网上下载后未经杀毒处理的软件等;五是提高自我保护意识,尽量避免在网吧等公共场所使用网上电子商务服务。