一 Web欺骗攻击
Web欺骗的行为特点 Web站点的广泛用,诱惑着网上的欺诈行为。这种欺诈行为是由于铺天盖地的信息,让人们无法辨别其真伪造成的。用户在使用计算机时总是根据他们所看到的内容做出一些关于安全性的决定。如:你也许在看到银行的Web页面时输入你在该银行的帐户和口令,而很少去想,这Web页面究竟是不是来自银行的信息。 攻击者建立一个人们相信的Web站点的拷贝,然后控制这个Web站点的拷贝,攻击者控制被攻击对象和真的Web服务器之间的所有信息流。攻击者既可以假冒用户给服务器发送数据,也可以假冒服务器给用户发送假冒的信息。 1、静态观察 被动地观察整个数据流。 记录浏览者所访问的页面和页面的内容。 记录用户输入的数据和服务器的响应。 大多数在线商务都要填充表格,所以可简单地获得用户的口令。 2、实施破坏 攻击者可以随意修改来往于浏览者和服务器间的信息。 攻击者可以随意修改来往于浏览者和服务器间的信息。攻击者可以修改服务器发送给浏览者的信息,如插入些误导性的数据欺骗浏览者或引起用户再也不信任这个网站。 3、攻击的简单性 攻击者伪装Web站点较为容易,因为不需要存储整个Web站点的内容,整个Web站点的内容可以在线得到,攻击者只要及时获得所需的Web页面就行了。 攻击原理与过程 1、攻击原理 攻击的关键在于攻击者的Web服务器能够插在浏览者和其他Web服务器之间。攻击者改写某个页面上的URL使得连接都指向攻击者的机器。如攻击者的服务器在机器http://bbs./www.上运行,那么攻击者要在页面上所有的URL前加上http://www./。如原来的URL为http://home./就变成http://www./http://www.。 浏览者请求一个页面时将发生如下事情: 浏览者请求来自于攻击者服务器的页面。 攻击服务器请求真正的服务器的相应页面。 真正服务器向攻击服务器提供真正页面。 攻击服务器重写页面。 攻击服务器向浏览者提供一个经过修改的页面。 2、攻击过程 可通过下列方法诱惑被攻击对象连接到攻击者的假Web上: 把一个指向假Web的链接放到一个流行的Web页上。 使用电子邮件系统发邮件引诱。 使Web搜索引擎指向假Web。 当浏览者浏览页面时,他实际上向攻击服务器询问这个文档,而攻击服务器再去真正的服务器取回这个文档。文档取回后,攻击者在该文档的所有URL前面加上自己的地址来改写这个文档,攻击者向浏览者提供改写后的文档。 攻击者通常都会对攻击过程进行伪装,以防浏览者发现。 状态行:状态行是在浏览器窗口底边的一行文本,会显示不同的信息,通常是正在传输的Web,从这里可以看到浏览器真正连接的服务器。这会留下痕迹。攻击者可以通过加一个JavaScript程序来消除痕迹。JavaScript程序可以写状态行,因此可以让某个事件的发生结合某个JavaScript的行动,在状态行上显示应该的内容。 地址行:浏览器的地址行,攻击会在地址行上显示一个被篡改的URL,从而给用户一个被攻击的提示。这个线索同样可以用JavaScript来隐藏。一个JavaScript程序可以用一个假的地址行来代替一个真的地址行。 防范措施 Web欺骗攻击的危害性很大,上当的用户不但会泄露机密信息,还可能会蒙受经济等方面的损失。上网的用户应该提高警惕,不要成为牺牲品。 为确保安全,用户可以采取一些应急的措施: 关闭浏览器的JavaScript选项,使得攻击者不能隐藏攻击的痕迹。 确信你的浏览器的地址行总是可见的。注意浏览器地址行上显示的URL,确信他们一定指向所希望的服务器。 进入SSL安全连接时,仔细查看站点的证书是否与其声称的一致,不要被相似的字符所欺骗。 对访问进行限制: IP地址、子网、域的限制。预先对允许的IP地址子网和域进行授权。 使用用户名和密码。 加密。所有传输内容加密,除接收者外无人能懂。 JavaScript,ActiveX和Java都使得假冒越来越方便了,最好在浏览器上全部关闭它们。 二 分布式拒绝服务攻击
DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存或者网络带宽等各项性能指标不高时,它的攻击效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了。目标对恶意攻击包的“消化能力”加强了不少,例如你的攻击软件每秒钟可以发送2,000个攻击包,但我的主机与网络带宽每秒钟可以处理8,000个包,这样一来攻击就不会产生什么效果了。 1. 拒绝服务攻击的含义 拒绝服务攻击是指一个用户占用了大量的共享资源,使系统没有其他的资源给其他用户使用的攻击。拒绝服务攻击降低了系统资源的可用性。 系统资源包括:CPU时间、磁盘空间、网络带宽、打印机、MODEM、甚至是系统管理员的时间。攻击的结果是减低或失去服务。 2. 拒绝服务攻击分类 拒绝服务攻击可分为两类: A、试图破坏和毁坏资源,使得无人可以使用这个资源。如删除文件,格式化磁盘或切断电源等。 B、过载一系列服务或者消耗一些资源,这些行为也许是攻击者故意的行为,也许是用户无意中的错误所致。通过这些方式,阻止其他用户使用这些服务。如添满磁盘空间等。 过载攻击 在过载攻击中,一个共享的资源或者服务由于需要处理大量的请求,以致于无法满足从其他用户到来的请求。典型的有下列几种: 1. 进程过载 在进程攻击中,一个用户可以阻止在同时间内另一个用户使用计算机,进程攻击通常发生在共享的计算机中。进行这种攻击的用户消耗的是他自己的进程数目,而不是别人的。用户产生的许多进程,会消耗大量的CPU时间,使系统运行变的 十分缓慢。在目前的操作系统中,用户所能创建的最大进程数是受到限制的,只有超级用户没有限制。 遇到这种情况,只能杀掉这些进程或关机重起。 2. 磁盘攻击 如果一个用户向磁盘填充了大量的文件,其他用户便不能生成文件。 网络拒绝服务攻击 网络对拒绝服务的抵抗力很有限,攻击者可以通过攻击阻止合法用户使用网络和服务。 1. 服务过载 当大量的服务请求发向一台计算机中的服务守护进程时,就会发生服务过载。这些请求许多是故意的,如潮的请求会使计算机十分忙碌地处理不断到来的服务请求,而无法处理常规任务。 由于没有空间存放这些请求,许多新到请求被丢弃,如果是TCP协议的服务,这些请求的包还会重发,结果更加重了网络的负担。可以使用网络监视工具来发现这类攻击,甚至发现攻击的来源。 2. 粘住攻击 使用TCP的半连接耗尽系统资源。TCP连接通过三次握手来建立一个连接, 如果攻击者发出许多连接请求,初步建立了连接,但又没有完成其后的连接步骤,于是接收者便保留了许多这种半连接,占据着有限的系统资源。 通常这类连接使用的是伪造的源地址,根本没有办法去跟踪这个连接,唯一可做的是等待,等待这个连接超时释放。 3. SYN-Flooding攻击 在SYN-Flooding攻击中,使用一个伪装的地址向目标计算机发送TCP请求, 黑客尽可能地发送这些请求,以便占用目标计算机尽可能多的资源。 当目标计算机收到请求后,会恢复请求一个确认答复(SYN-ACK)。由于SYN-ACK是返回到一个伪装的地址,没有任何响应,于是目标计算机将继续设法发送SYN-ACK。 一些系统都有缺省的恢复次数和超时时间,只有恢复一定的次数或者超时后,才会释放占用的系统资源。 在Windows NT 3.5和4.0中,缺省设置为可重复发送SYN-ACK答复5次,每次重发后,等待时间翻番。第一次等待时间为3秒,到第五次重发时,机器要等待48秒,如果还收不到响应机器还要等待96秒,才取消分配给连接的资源,在这些资源获得释放前,已经过去了189秒。 最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存或者网络带宽等各项性能指标不高时,它的攻击效果是明显的。 分布式的拒绝服务攻击(DDoS)的原理就很简单。如果说计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用的话,攻击者使用10台或100台器机同时攻击就会产生预想的效果。DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。 高速广泛连接的网络为DDoS攻击创造了极为有利的条件。在低速网络时代时,黑客占领攻击用的傀儡机时,总是会优先考虑离目标网络距离近的机器,因为经过路由器的跳数少,效果好。而现在电信骨干结点之间的连接都是以千兆为级别,这使得攻击可以从更远的地方或者其他城市发起,攻击者的傀儡机位置可以分布在更大的范围,选择起来更灵活。 攻击原理 如图所示,一个比较完善的DDoS攻击体系分成四大部分,先来看一下最重要的第2和第3部分:它们分别用做控制和实际发起攻击,请注意控制机与攻击机的区别。对第4部分的受害者来说,DDoS的实际攻击包是从第3部分攻击傀儡机上发出的,第2部分的控制机只发布命令而不参与实际的攻击。对第2和第3部分计算机,黑客有控制权或者是部分的控制权,并把相应的DDoS程序上传到这些平台上,这些程序与正常的程序一样运行并等待来自黑客的指令,通常它还会利用各种手段隐藏自己不被别人发现。在平时,这些傀儡机器并没有什么异常,只是一旦黑客连接到它们进行控制,并发出指令的时候,攻击傀儡机就成为害人者去发起攻击了。 为什么黑客不直接去控制攻击傀儡机,而要从控制傀儡机上转一下呢?这是导致DDoS攻击难以追查的原因之一。从攻击者的角度来说,肯定不愿意被追查到,而攻击者使用的傀儡机越多,实际上提供给受害者的分析的依据就越多。另一方面,为了不给日后的追查留下痕迹,攻击者会清理掉被占主机中的相关日志记录,由于参与攻击的傀儡机数量较多,在攻击傀儡机上清理日志实在是一项庞大的工程,即使在很好的日志清理工具的帮助下。这就导致了有些攻击机日志清理的不彻底,通过这些线索可以找到控制它的上一级计算机。由于控制傀儡机的数目相对很少,一般一台就可以控制几十台攻击机,清理一台计算机的日志对黑客来讲就轻松多了,这样从控制机再找到黑客的可能性也大大降低。 攻击过程 DDoS并不象**一台主机那样简单。一般来说,黑客进行DDoS攻击时会经过这样的步骤: 搜集了解目标的情况(被攻击目标主机数目、地址情况;目标主机的配置、性能;目标的带宽;有多少台主机在支持这个站点 )。 占领傀儡机。黑客最感兴趣的是有下列特点的主机:链路状态好的主机、性能好的主机、安全管理水平差的主机。 实际攻击。如果前面的准备工作做得好,实际攻击过程反而是比较简单的。黑客登录到作为控制台的傀儡机,向所有的攻击机发出命令,潜伏在攻击机中的DDoS攻击程序就会响应控制台的命令,一起向受害主机以高速度发送大量的数据包,导致目标死机或是无法响应正常的请求。 黑客一般会以远远超出受害方处理能力的速度进行攻击,决不会手下留情。 防范措施 遭受DDoS攻击的主机和网络会有一些表现特征,有助于管理人员及时发现问题并采取对应措施。 被攻击主机上有大量等待的TCP连接。 网络中充斥着大量的无用的数据包,源地址为假。 制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯。 利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求。 严重时会造成系统死机。 到目前为止,进行DDoS攻击的防御还是比较困难的。首先,这种攻击的特点是它利用了TCP/IP协议的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻击。对DDoS攻击有个形象的比喻:DDoS就好象有100个人同时给你家里打电话,这时候你的朋友还打得进来吗? 当然,防止DDoS也绝不是不可行的事情。核心的目标就是大家都应力争不要成为黑客的傀儡机。对于网络管理员来说,如果所维护的网络中有一些服务器需要向外提供WWW服务,就要注意不要成为DDoS的攻击目标,具体可以从主机与网络设备两个角度去考虑。 1、主机设置 几乎所有的主机平台都有抵御DoS的设置,总结一下,基本的有以下几种: 关闭不必要的服务 限制同时打开的Syn半连接数目 缩短Syn半连接的time out 时间 及时更新系统补丁 2、网络设备设置 网络设备的设置可以从防火墙与路由器上考虑。 防火墙:禁止对主机的非开放服务的访问;限制同时打开的SYN最大连接数;限制特定IP地址的访问;启用防火墙的防DDoS属性;严格限制对外开放的服务器的向外访问。 路由器:(以Cisco路由器为例)Cisco Express Forwarding(CEF);使用 unicast reverse-path;访问控制列表(ACL)过滤;设置SYN数据包流量速率;升级版本过低的IOS;为路由器建立log server。其中使用CEF和Unicast设置时要特别注意,使用不当会造成路由器工作效率严重下降,升级IOS也应谨慎。 三 缓冲区溢出攻击
缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统关机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。 攻击原理 通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。 造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。例如下面程序:
随便往缓冲区中填东西造成它溢出一般只会出现“分段错误”(Segmentation fault),而不能达到攻击的目的。最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。如果该程序属于root且有suid权限的话,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作了。 缓冲区溢出攻击之所以成为一种常见安全攻击手段其原因在于缓冲区溢出漏洞太普遍了,并且易于实现。缓冲区溢出成为远程攻击的主要手段,其原因在于缓冲区溢出漏洞给予了攻击者所想要的一切:植入并且执行攻击代码。被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被攻击主机的控制权。 攻击过程 缓冲区溢出攻击的目的在于扰乱具有某些特权运行的程序的功能,这样可以使得攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。一般而言,攻击者攻击具有root权限的程序,然后执行类似“exec(sh)”的执行代码来获得root权限的shell。为了达到这个目的,攻击者必须达到如下两个目标: 在程序的地址空间里安排适当的代码。 通过适当的初始化寄存器和内存,让程序跳转到**者安排的地址空间执行。 1、在程序地址空间中安排适当代码的方法 有两种在被攻击程序地址空间里安排攻击代码的方法: 植入法:攻击者向被攻击的程序输入一个字符串,程序会把这个字符串放到缓冲区里。这个字符串包含的资料是可以在这个被攻击的硬件平台上运行的指令序列。在这里,攻击者用被攻击程序的缓冲区来存放攻击代码。缓冲区可以设在任何地方:堆栈(stack,自动变量)、堆(heap,动态分配的内存区)和静态资料区。 利用已经存在的代码:有时,攻击者想要的代码已经在被攻击的程序中了,攻击者所要做的只是对代码传递一些参数。比如,攻击代码要求执行“exec (“/bin/sh”)”,而在libc库中的代码执行“exec (arg)”,其中arg是一个指向一个字符串的指针参数,那么攻击者只要把传入的参数指针改向指向”/bin/sh”即可。 2、控制程序转移到攻击代码的方法 所有的这些方法都是在寻求改变程序的执行流程,使之跳转到攻击代码。最基本的思想就是溢出一个没有边界检查或者具有其它弱点的缓冲区,这样就扰乱了程序的正常的执行顺序。通过溢出一个缓冲区,攻击者可以用暴力的方法改写相邻的程序空间而直接跳过了系统的检查。 分类的原则是攻击者所寻求的缓冲区溢出的程序空间类型。原则上是可以任意的空间。实际上,许多的缓冲区溢出是用暴力的方法来寻求改变程序指针的。这类程序的不同之处就是程序空间的突破和内存空间的定位不同。主要有以下三种: 活动纪录(Activation Records):每当一个函数调用发生时,调用者会在堆栈中留下一个活动纪录,它包含了函数结束时返回的地址。攻击者通过溢出堆栈中的自动变量,使返回地址指向攻击代码。通过改变程序的返回地址,当函数调用结束时,程序就跳转到攻击者设定的地址,而不是原先的地址。这类的缓冲区溢出被称为堆栈溢出攻击(Stack Smashing Attack),是目前最常用的缓冲区溢出攻击方式。 函数指针(Function Pointers):函数指针可以用来定位任何地址空间。例如:“void (* foo)()”声明了一个返回值为void的函数指针变量foo。所以攻击者只需在任何空间内的函数指针附近找到一个能够溢出的缓冲区,然后溢出这个缓冲区来改变函数指针。在某一时刻,当程序通过函数指针调用函数时,程序的流程就按攻击者的意图实现了。它的一个攻击范例就是在Linux系统下的superprobe程序。 长跳转缓冲区(Longjmp buffers):在C语言中包含了一个简单的检验/恢复系统,称为setjmp/longjmp。意思是在检验点设定“setjmp(buffer)”,用“longjmp(buffer)”来恢复检验点。然而,如果攻击者能够进入缓冲区的空间,那么“longjmp(buffer)”实际上是跳转到攻击者的代码。象函数指针一样,longjmp缓冲区能够指向任何地方,所以攻击者所要做的就是找到一个可供溢出的缓冲区。 防范措施 缓冲区溢出攻击在远程网络攻击中占了大多数,这种攻击可以使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权。如果能有效地消除缓冲区溢出的漏洞,则很大一部分安全威胁可以得到缓解。 目前有四种基本的方法保护主机免受缓冲区溢出的攻击和影响。 1、非执行缓冲区 通过使被攻击程序的数据段地址空间不可执行,从而使得攻击者不可能执行已植入到被攻击程序输入缓冲区的代码,这种技术被称为非执行的缓冲区技术。在早期的Unix系统设计中,只允许程序代码在代码段中执行。但是近来的Unix和MS Windows系统由于要实现更好的性能和功能,往往在数据段中动态地放入可执行的代码,这也是缓冲区溢出的根源。为了保持程序的兼容性,不可能使得所有程序的数据段不可执行。但是可以设定堆栈数据段不可执行,这样可以保证程序的兼容性。 2、编写正确的代码 编写正确的代码是一件非常有意义的工作,特别象编写C语言那种风格自由而容易出错的程序,这种风格是由于追求性能而忽视正确性的传统引起的。人们开发了一些工具和技术来帮助经验不足的程序员编写安全正确的程序。 用grep来搜索源代码中容易产生漏洞的库调用,如对strcpy的调用。 开发了一些高级的查错工具,如fault injection等。这些工具的目的在于通过人为随机地产生一些缓冲区溢出来寻找代码的安全漏洞。还有一些静态分析工具用于侦测缓冲区溢出的存在。 侦错技术只能用来减少缓冲区溢出的可能,并不能完全地消除它的存在。 3、数组边界检查 数组边界检查能防止所有的缓冲区溢出的产生和攻击。这是因为只要数组不能被溢出,溢出攻击也就无从谈起。为了实现数组边界检查,则所有的对数组的读写操作都应当被检查以确保对数组的操作在正确的范围内。最直接的方法是检查所有的数组操作,但是通常可以采用一些优化的技术来减少检查的次数。目前的几种检查方法: Jones & Kelly:C的数组边界检查。 Compaq C 编译器:Compaq公司为Alpha CPU开发的C编译器支持有限的边界检查。 Purify:内存存取检查 类型-安全语言 4、程序指针完整性检查 程序指针完整性检查和边界检查有略微的不同,程序指针完整性检查在程序指针被引用之前检测它的改变。因此,即使一个攻击者成功地改变了程序的指针,由于系统事先检测到了指针的改变,因此这个指针将不会被使用。 与数组边界检查相比,这种方法不能解决所有的缓冲区溢出问题,采用有些缓冲区溢出攻击方法可以避开这种检测。但是这种方法在性能上有很大的优势,而且兼容性也很好。 四 IP地址欺骗
即使是实现良好的TCP/IP协议,由于协议自身存在着的一些问题,也可以导致对TCP/IP网络的攻击,如序列号欺骗,路由攻击和源地址欺骗等。IP地址欺骗包括源地址欺骗和序列号欺骗,是最常见的攻击TCP/IP协议弱点的方法之一。实际上,IP 欺骗不是攻击的结果,而是攻击的手段。主要的攻击对象是基于IP地址鉴别的网络应用,如UNIX系统中的R系列服务。 11.4.1攻击原理 1、信任关系 在UNIX系统中,信任关系能够很容易得到。假设在主机A和B上各有一个帐户,在使用主机A时,需要输入主机A上的帐户及密码,使用主机B时,同样也必须输入在主机B上的帐户及密码,主机A和B把你当作两个互不相关的用户,显然这有些不便。为了减少这种不便,可以在主机A和主机B中建立起两个帐户的相互信任关系。有了这种信任关系,就可以方便地使用任何以r开头的远程调用命令,如:rlogin,rcall,rsh等,而无口令验证的烦恼。这些命令将提供以地址为基础的验证,根据访问者IP地址,决定允许或拒绝存取服务。即信任关系是基于IP地址的。 2、TCP序列号猜测 大家都知道,TCP连接的建立包括一个三次握手的过程,如图所示。由于在某些系统中序列号y的产生规律相对简单,就为今后的安全留下了隐患。 如果攻击者了解主机A与B之间建立了信任关系,在A不能正常工作时,假冒主机A的IP地址,向主机B发送建立TCP连接的请求包,这时如果攻击者能够猜出主机B确认包中的序列号y,就可以假冒主机A与主机B建立TCP连接。然后通过传送可执行的命令数据,侵入主机B中。 为何要猜序列号? 当攻击者C与A位于不同子网时,若C冒充A向B发连接请求时,C是无法收到服务器B的应答的 攻击过程 IP地址欺骗攻击由若干步骤组成。首先,选定目标主机;其次,发现信任模式,并找到一个被目标主机信任的主机;然后,使该主机丧失工作能力,同时采样目标主机发出的TCP 序列号,猜测出它的数据序列号。然后,伪装成被信任的主机,同时建立起与目标主机基于地址验证的应用连接。如果成功,黑客可以使用一种简单的命令放置一个系统后门,以进行非授权操作。 一旦发现被信任的主机,为了伪装成它,往往使其丧失工作能力。由于攻击者将要代替真正的被信任主机,他必须确保真正被信任的主机不能接收到任何有效的网络数据,否则将会被揭穿。有许多方法可以实现这一点,如SYN-Flood攻击。 为了知道目标主机使用的数据包序列号,攻击者往往先与被攻击主机的一个端口(SMTP是一个很好的选择)建立起正常的连接。通常,这个过程被重复若干次,并将目标主机最后所发送的序列号存储起来。此外,攻击者还需要估计他的主机与被信任主机之间的包往返时间,这个时间是通过多次统计平均求出的,它对于估计下一个数据序列号是非常重要的。 在上述准备完成后,攻击者将使用被信任主机的IP地址,此时,该主机仍然处在停顿状态(前面讲的丧失处理能力),向目标主机的513端口(rlogin的端口号)发送连接请求。之后,目标主机对连接请求作出反应,发送SYN/ACK数据包给被信任主机(如果被信任主机处于正常工作状态,那么会认为是错误并立即向目标主机返回RST数据包,但此时它处于停顿状态)。按照计划,被信任主机会抛弃该SYN/ACK数据包(当然攻击者也得不到该包,否则就不用猜了)。在协议要求得时间内,攻击者向目标主机发送ACK数据包,该ACK使用前面估计的序列号加1。如果攻击者估计正确的话,目标主机将会接收该ACK 。至此,连接正式建立起来了。然后,将开始数据传输。一般地,攻击者将在系统中放置一个后门,以便今后得侵入。 然后,伪装成被信任的主机,同时建立起与目标主机基于地址验证的应用连接。如果成功,黑客可以使用一种简单的命令放置一个系统后门,以进行非授权操作。 此外, 在上述准备完成后,攻击者将使用被信任主机的IP地址,此时,该主机仍然处在停顿状态(前面讲的丧失处理能力),向目标主机的513端口(rlogin的端口号)发送连接请求。之后,目标主机对连接请求作出反应,发送SYN/ACK数据包给被信任主机(如果被信任主机处于正常工作状态,那么会认为是错误并立即向目标主机返回RST数据包,但此时它处于停顿状态)。按照计划,被信任主机会抛弃该SYN/ACK数据包(当然攻击者也得不到该包,否则就不用猜了)。在协议要求得时间内,攻击者向目标主机发送ACK数据包,该ACK使用前面估计的序列号加1。如果攻击者估计正确的话,目标主机将会接收该ACK 。至此,连接正式建立起来了。然后,将开始数据传输。一般地,攻击者将在系统中放置一个后门,以便今后得侵入。 3、使用加密方法 阻止IP欺骗的另一种明显的方法是在通信时要求加密传输和验证。当有多种手段可以使用时,可能加密方法最为适用。 4、使用随机化的初始序列号 黑客攻击得以成功实现的一个很重要的因素就是,序列号不是随机选择的或者随机增加的。一种弥补TCP不足的方法就是分割序列号空间。每一个连接将有自己独立的序列号空间。序列号将仍然按照以前的方式增加,但是在这些序列号空间中没有明显的关系。 IP地址欺骗----Smurf攻击 攻击者向具有很大因特网连接带宽并具有很多台主机的网络广播地址发送一个伪造地址的Ping分组,这种做法称为使用反弹站点(bounce site)。这个Ping分组的源地址是攻击者想要攻击的系统地址。 这种攻击的前提是路由器接收到发送给IP广播地址的分组后,会认为这是一份网络广播信息,并且把它映射为以太网广播地址FF.FF.FF.FF. FF.FF。 这样当路由器从因特网上接收到该分组时,它就会向本网段中的所有主机广播。 接下来,网段内的所有主机都会向伪造的IP地址发送回复信息,目标将很快被回复信息阻塞。 防止措施:阻塞所有入站的Ping包;停止路由器为具有网络广播地址的分组映射LAN广播地址的活动。 IP地址欺骗----Land攻击 Land攻击的报文分组具有如下特点: 源IP地址:被攻击系统的IP地址。 目的IP地址:被攻击系统的IP地址。 传输方式:TCP 源端口号:135 目的端口号:135 标志设置:SYN=1 也可以使用其他的端口和设置。攻击者会使系统错误地认为自己正在与自己交谈,这样可以造成死循环,最终使系统挂起或死锁。 防止措施:在路由器或防火墙的WAN端口禁止地址为本网段地址的IP包通过。 五 网络监听
网络监听,在网络安全上一直是一个比较敏感的话题,作为一种发展比较成熟的技术,监听在协助网络管理员监测网络传输数据,排除网络故障等方面具有不可替代的作用,因而一直倍受网络管理员的青睐。然而,在另一方面网络监听也给网络安全带来了极大的隐患,许多的网络**往往都伴随着网络监听行为,从而造成口令失窃,敏感数据被截获等连锁性安全事件。 网络监听可以在网上的任何一个位置实施,如局域网中的一台主机、网关上或远程网的调制解调器之间等。黑客们用得最多的是截获用户的口令。在网络上,监听效果最好的地方是在网关、路由器、防火墙一类的设备处,通常由网络管理员来操作。使用最方便的是在一个以太网中的任何一台上网的主机上,这是大多数黑客的做法。 网络监听的原理十分简单: 对于共享介质类型的网络,只要改变低层数据链路层的工作模式,将所有收到的数据包(不论目的地址是谁)统统收下并存储进行分析即可。 对于点到点的网络连接,则需要搭线才能实现窃听。 网络监听的目的 1、截获通信内容 网上的监听工具对网络上主机间的通信,能给出一个详细的,逐包的统计信息。**者可以选择某一台主机,看看它正在同那些主机进行通信,使用了哪些协议(通过端口号可以区分出来),传输了一些什么内容。这类工具,常常可以设置详细的过滤条件,可以针对信息的源主机、目的主机、使用的协议、使用的端口以及包的长度来设置过滤条件,也可以是这些条件的逻辑组合。 对于**者来说,最喜欢的莫过于用户的口令。其实,在大多数情况下,监听到的包中,用户的口令完全是明文形式,并且很容易找出来,因为人们没有采取任何形式的加密措施。而且口令往往是在一次通信的最开始的几个数据包中,只要找到了两台主机间连接的开始,便很容易找到鉴别用的口令。 2、对协议进行分析 所有的监听软件都可以对数据包进行详细的分析,直到每一个字段的含义,实际上倒是学习网络协议的好方法。 常用的监听工具 1、微软平台的监听工具 Windump:Windump最经典的UNIX平台上的tcpdump监听工具的window移植版。 Iris:Eeye公司的软件,有试用期,完全图形化界面,可以很方便的定制各种截获控制语句,对截获数据包进行分析,还原等。 NetXRay:一个功能强大,使用方便的协议分析和网络监控工具,能监控多个网段。 2、UNIX平台的监听工具 tcpdump:最经典的工具,被大量的*nix系统采用。 ngrep:借助于这个工具,管理员可以很方便的把截获目标定制在用户名,口令等关键字上。 Sniffit:运行于Solaris、SGI和Linux等平台的一种网络监听软件,功能强大、使用方便。 网络监听的检测手段 网络监听是很难被发现的。运行网络监听的主机只是被动地接收网上传输的信息,并没有主动的行动。但运行监听软件的机器有一个特征:当系统运行网络监听软件时,系统会因负荷过重,对外界的响应很慢。 1、反应时间检测 向怀疑有网络监听行为的网络发送大量测试数据包,根据各个主机回应的情况进行判断,正常的系统回应的时间应该没有太明显的变化,而处于监听模式的系统由于对大量的测试信息照单全收,所以很有可能回应时间会发生较大的变化。 2、观测DNS 许多的网络监听软件都会尝试进行地址反向解析,在怀疑有网络监听发生时可以在DNS系统上观测有没有明显增多的解析请求。 3、利用ping命令进行监测 对于怀疑运行监听程序的机器,用正确的IP地址和错误的物理地址去ping,运行监听程序的机器会有响应。这是因为正常的机器不接收错误的物理地址,处于监听状态的机器能接收,如果他的 IP stack不再次反向检查的话,就会响应。这种方法依赖于系统的 IPStack,对一些系统可能行不通。 4、利用arp数据包进行检测 除了使用ping进行监测外,还可以利用arp方式进行监测的。这种模式是上述ping方式的一种变体,它使用arp数据包替代了上述的icmp数据包。向网内的主机发送非广播方式的arp包,如果主机响应了这个arp请求,那么我们就可以判断它很可能就是处于网络监听模式了,这是目前相对而言比较好的监测模式。 5、利用工具进行检测 Ifstatus是一个很好的监听检测工具,运行在UNIX操作系统中,可以识别出系统的网络接口是否正处于调试状态或者说监听状态下。当网络接口运行在这种模式下,很可能是一个**者侵入了系统,正在运行一个监听程序。 六 电子邮件攻击
1. 什么是电子邮件欺骗 电子邮件假冒和欺骗是一个很大的安全漏洞,形式很多: 在电子邮件中声明该邮件是来自系统管理员,要求用户修改口令。 电子邮件声称来自某一授权人,要求用户发送其口令文件或其他敏感信息的拷贝。 目前使用的SMTP基本没有验证功能,因此,伪造电子邮件进行电子邮件欺骗是不难的。 可以使用假冒的发信人地址,而邮件服务器并不对发信人身份的合法性做任何检查。如果站点允许和SMTP端口连接,任何人都可以连接到该端口(25),并假冒用户或虚构用户的邮件。 在假冒的邮件中很难找出与发信人有关的真实信息,唯一的线索是检查系统的日志文件,找出假冒邮件的发送主机。然后在检查那台主机,在指定时段何人使用过该主机。特别当主机是公共主机,假冒邮件的发送者在发送完毕后,清除自己的上机记录,假冒邮件的追查就更难进行下去。 电子邮件欺骗有哪位威胁? 伪造邮件。黑客伪造电子邮件,使它们看起来似乎发自某人,某地。 拒绝服务。黑客可以让系统或网络充斥邮件信息而瘫痪。这些邮件信息塞满队列,占用CPU资源和网络带宽。 病毒。现代电子邮件使得传送文件附件更加容易。如果用户毫不提防地去执行文件附件,病毒就会感染他们的系统。 2. 发送一封假冒的邮件 一个SMTP的会话的文本,由以下几部分组成: 使用helo表明本方标识。 通过电子邮件命令from和rcpt to指明邮件的发送方和接收方。 调用data命令输入邮件正文数据。 以”.”为首的行表示数据结束。 以命令quit退出SMPT会话并结束与TCP端口25的连接。 下面是一个具体的例子: 发送者为pineapple主机上的用户userl。 在UNIX系统中,每一个户头都有一个电子邮件地址,如该用户电子地址应该为userl@pineapple 下面开始发送过程: $telnet pineapple.host 25 Trying 11.22.33.44.... Connected to pineapple.host. Escape character iS '^]'. 220 pineapple.host. Send 电子邮件 SMI-8.6/SMI-SVR4 ready at Thu, 23 Apr 1998 22:24:14 +0900 HELO 250 pineapple.host. Hello pineapple.host [11.22.33.44], pleased to meet you 电子邮件 FROM:http://www.360doc.com/mailto:root@melon.host 250 http://www.360doc.com/mailto:root@melon.host... Sender Ok RCPT to:http://www.360doc.com/mailto:user2@pineapple.host 250 Recipient Ok data 354 Enter 电子邮件, end with ”.” On a line by itself aaaaaaaa . 250 VAAl5772 Message accepted for delivery quit 221 pineapple.host closing connectiOn 3. 保护电子邮件信息 保护电子邮件最有效的办法是使用加密签名技术。通过验证,可以保证信息是从正确的地方来,而且在传输过程中不被修改。 配置电子邮件服务器,不允许SMTP端口的直接连接。 如果配置了防火墙,可使它将外面来的邮件重定向到邮件服务器,便于集中管理和跟踪检查。 应使用户对电子邮件所带来的威胁引起足够重视,并使他们了解和遵守安全政策。 4 . 电子邮件轰炸和“滚雪球” 电子邮件轰炸和电子邮件“滚雪球”都是拒绝服务类型的攻击。 电子邮件轰炸是指一个人反复收到一大堆无用的电子邮件。因为所有的邮件都需要空间来保存,同时,到来的邮件都需要系统来处理。 电子邮件“滚雪球”与轰炸类似,一条信息发给数以千计的用户并不断膨胀。如果一个用户再回复这样的电子邮件,那就更糟了,因为所有头信息中的用户都会收到回复。 在这些攻击中,攻击者需要谨慎的是隐藏自己的踪迹,也就是隐藏自己的IP。要想隐藏发送者的IP,一般的方法可以是使用随机的邮件服务器,同一个邮件服务器不使用两次,或者通过第三者转信,比如通过新闻组。一种完全可以隐藏自身的而且效果能持久的方法是,给被攻击者订阅上千份网络上由邮件发送的免费杂志。 现在网上的邮件炸弹程序很多,从UNIX脚本程序到订阅杂志的都有,绝大多数已经能隐藏攻击者。 邮件“滚雪球”很难检测和防止,因为有合法电子邮件地址的用户是完全可能往其他用户或新闻组上“堆雪球”的。 这些攻击主要针对邮件服务器进行,当服务器接收到许许多多电子邮件后,它可能导致网络连接丢失,不能提供服务。这就成为了一种拒绝服务的攻击。 服务失败可以由许多原因引起,过多的网络连接或者系统资源缺乏都会导致不能正常提供服务。 对付办法: 如果觉得服务器被攻击,应迅速确定炸弹/雪球的攻击源,并调整防火墙或路由器的配置来过滤那些源头的包。或者配置防火墙使外头的SMTP连接只能到达指定服务器,而不能影响其他系统。当然,这虽不能防止攻击,但可以减少轰炸对其他系统的影响。 使用最新版本的电子邮件服务软件,提高系统记帐能力,有利于对发生的事件进行追踪。 由于电子邮件轰炸不一定是100%的匿名行动,因此可能根据头信息来跟踪出发地。但如果攻击者真要攻击的话,它会远程登录到SMTP端口,然后直接发送SMTP命令,如果ident正在运行的话,**可能会碰到些障碍。 |
|