欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第6章攻击与防范.ppt

    • 资源ID:2120913       资源大小:735.01KB        全文页数:114页
    • 资源格式: PPT        下载积分:10
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要10
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第6章攻击与防范.ppt

    1,第6章 攻击与防范,曹天杰 tjcaocumt.edu.cn 中国矿业大学计算机科学与技术学院,2,6.1 恶意代码,恶意代码也称为恶意软件,是攻击者植入受害者系统的一段代码,使得攻击者可以在受害者毫不知情的状况下控制对方的系统、网络以及数据。 它通过把代码在不被察觉的情况下嵌入到另一段程序中,从而达到破坏被感染电脑数据、运行具有入侵性或破坏性的程序、破坏被感染电脑数据的安全性和完整性的目的。,3,4,6.1.1 病毒,计算机病毒:一组能够进行自我传播、需要用户干预来触发执行的破坏性程序或代码。 同时,它们还可以把自己的副本分发到其他文件、程序或电脑中去。当被感染文件执行操作的时候(例如:打开一个文件,运行一个程序,点击邮件的附件等),病毒程序会进行自我复制。 如CIH、爱虫、新欢乐时光、求职信、恶鹰、rose,5,计算机病毒的特征,非授权可执行性 感染性 寄生性 隐蔽性,潜伏性 可触发性 破坏性 主动攻击性,6,非授权可执行性,计算机病毒与其它合法的程序一样,是一段可执行程序,但它又不是一个完整的程序,而是寄生在其他可执行文件上的程序,因此它拥有一切程序所能得到的权利。 当病毒运行时,便于合法程序争夺系统的控制权,往往会造成系统崩溃,导致计算机瘫痪。计算机病毒只有在计算机内得以运行时,才具有感染性和破坏性。,7,感染性,计算机病毒能够将自身的复制品或变种感染到其他程序中。这是计算机病毒的根本特定,它使得计算机病毒得以从被感染的计算机扩散到未被感染的计算机中。 计算机一旦感染病毒,如果不及时处理,那么病毒会在这台计算机上迅速扩散,其中大量的文件(主要是可执行文件)会被感染。而被感染的计算机文件又成了新的感染源,可通过各种可能的渠道,如软盘、U盘和计算机网络等去感染其他的计算机。,8,寄生性,计算机病毒程序是嵌入到宿主程序的,依赖宿主程序的存在而生存,病毒程序侵入到宿主程序以后,一般对宿主程序进行一定的修改,当病毒激活条件一旦满足,病毒程序就被激活,从而可以进行自我复制 。,9,隐蔽性,计算机病毒一般都是具有很高编程技巧的程序员编写的短小精悍的程序,通常附着在正常程序中或磁盘较隐蔽的地方,也有个别的以隐含文件形式出现,目的是不让用户发现他的存在。 如果不经过代码分析,病毒程序与正常程序是不容易区分开来的。而且受到感染后,计算机系统通常仍能正常运行,使用户不会感到异常。,10,计算机病毒的隐蔽性表现在两个方面: 一是传染过程隐蔽。大部分病毒传染速度快,传染时不具有外表表现,不易被人发觉。 二是病毒程序隐蔽,一般病毒程序嵌入在正常程序中,很难被发现。病毒一般只有几百或几千字节,而现在普通PC机的存取速度都是以MB/S为单位,所以病毒在瞬间就可以将其程序附着在正常程序中,使其不容易被察觉。,11,潜伏性,大部分病毒在感染系统后,一般不会马上发作,它可长期隐藏在系统中。除了传染外,不表现出破坏性,只有在满足其特定条件是才启动其表现破坏性的模块,显示发作信息或进行系统破坏,只有这样它才可以进行广泛地传播。,12,可触发性,计算机病毒一般都有一个或者几个触发条件。满足其触发条件或者激活病毒的传染机制,使之进行传染;或者激活病毒的表现部分或破坏部分。 触发的实质是一种条件的控制,病毒程序可以依据设计者的要求,在一定条件下实施攻击。 使计算机病毒发作的触发条件通常有以下几种:利用系统时钟提供的时间作为触发器,这种触发机制被大量的病毒使用;利用病毒体自带的计数器作为触发器;利用计算机内执行的某些特定操作作为触发器。,13,破坏性,无论何种病毒程序一旦侵入系统都会对操作系统的运行造成不同程度的影响。即使不直接产生破坏作用的病毒程序也要占用系统资源(如占用内存空间,占用磁盘存储空间以及系统运行时间等)。 根据这些特点,可以将病毒分为良性病毒和恶性病毒:良性病毒程序可能显示一些文字或图像、播放音乐等没有太大的破坏作用。而恶性病毒将影响系统的正常运行,这些病毒程序删除文件,加密磁盘中的数据,甚至摧毁整个系统和数据,使之无法恢复,造成无可挽回的损失。,14,主动攻击性,病毒对系统攻击是主动的。从一定程度上讲,计算机系统很难彻底地排除病毒对系统的攻击,而保护措施充其量是一种防御的手段。,15,6.1.2 蠕虫,蠕虫:一组能够进行自我传播、不需要用户干预即可触发执行的破坏性程序或代码。 如:红色代码、SQL蠕虫王、冲击波、震荡波、极速波 蠕虫不修改文件,而是常驻在内存里并复制自己。蠕虫使用操作系统的一部分,这部分对于用户来说是自动且无形的。 蠕虫的自我复制不像其他的病毒,它可以自动创建与它的功能完全相同的副本,并在没人干涉的情况下自动运行。,16,计算机病毒与蠕虫的区别,1、蠕虫是一个可以独立运行的程序。但病毒不能独立存在,必须将自身的代码附着在其他程序中,其程序的激活依赖与宿主程序的执行。 2、蠕虫可以自动通过传播,不需要利用文件寄生技术;而病毒要依赖于宿主文件进行传播。因为蠕虫程序自身包含了传播代码,这些代码会自动将蠕虫程序从一个系统发送到另一个系统。 蠕虫通常感染的对象是有相应漏洞或者其他脆弱性的计算机系统,而病毒的感染对象则是计算机中的文件系统。,17,表5.1 蠕虫与病毒的区别,18,6.1.3 木马,特洛伊木马从表面上看是正常的程序、具有正常的功能,但是实际上却隐藏着带有恶意目的的程序。 一些木马程序会通过覆盖系统中已经存在的文件的方式存在于系统之中,同时它可以携带恶意代码,还有一些木马会以一个软件的身份出现(例如:一个可供下载的游戏),但它实际上是一个窃取密码的工具。,19,特洛伊木马通常由一个客户端和一个服务器端构成,客户端放在木马控制者的电脑中,服务器端放置在被入侵电脑中,木马控制者通过客户端与被入侵电脑的服务器端建立远程连接。一旦连接建立,木马控制者就可以通过对被入侵电脑发送指令来传输和修改文件。 还有一些木马不具备远程登录的功能。它们的存在只是为了隐藏恶意进程的痕迹,例如使恶意进程不在计算机的进程列表中显示出来。 还有一些木马用于收集信息,例如被感染电脑的密码,并把收集到的密码列表发送互联网中一个指定的邮件账户中。常见的木马,如冰河、网络神偷、灰鸽子。,20,特洛伊木马隐蔽性,连接请求,连接请求,80,21,常见的木马类型,远程访问型 密码发送型 键盘记录型 毁坏型 FTP型,22,远程访问型木马,这是目前使用最广的特洛伊木马。这类木马可以远程访问被攻击者的硬盘。例如,RATS(一种远程访问木马),它使用起来非常简单,只需要运行服务器端程序并且得到被攻击者的IP,就可以访问他的计算机,几乎可以在目标计算机上进行任何操作。 远程访问型特洛伊木马会在目标计算机上打开一个端口。一些特洛伊木马还可以改变端口的选型并且可以设置连接密码,为的是只能让攻击者来控制特洛伊木马。,23,密码发送型木马,这种特洛伊木马的目的是找到所有的隐藏密码,并且在被攻击者不知道的情况下把它们发送到指定的信箱。 这类特洛伊木马大多数会在每次Windows重新启动的时候运行,而且它们大多使用25号端口发送E-mail。如果目标计算机有隐藏密码,那么这类特洛伊木马是非常危险的。,24,键盘记录型木马,这种特洛伊木马非常简单:它们只做一种事情,就是记录受害者的键盘输人并且在log日志文件中查找密码。 这种特洛伊木马随着Windows系统的启动而运行。它们有记录在线和离线的功能。在线选项中,它们知道被攻击者在线并且记录每一件事情。但是,在离线记录时,每一件事情在Windows启动后才被记录,并且保存在受害者磁盘上等待被传输。,25,毁坏型木马,这种特洛伊木马的惟一功能是毁坏并且删除文件。它们非常简单、也很容易被发现。它能自动删除目标计算机的所有后缀名如dll、ini、exe等文件,所以非常危险,一旦被感染了,就会严重威胁到计算机的安全。,26,FTP型木马,这类特洛伊木马程序打开目标计算机的21号端口,使黑客可以用一个FTP客户端并且不用密码就可以连接到目标计算机上,并且拥有完全的上传和下载的权限。,27,6.1.4 后门,对计算机操作系统或软件来说,后门是指可以指绕过软件的安全性控制而从比较隐秘的通道获取对程序或系统访问权的黑客方法。 通常,在软件开发时,设置后门可以方便修改和测试程序中的缺陷。,28,后门具有隐蔽性,能绕开系统日志,不易被系统管理员发现等特点。 在计算机中,入侵者可以通过端口、串/并口、无线设备连接等后门方式进行入侵。如果一个程序仅仅提供远程访问,那么它只是一个后门。如果攻击者将这些后门伪装成某些其他良性程序,那么就变成了特洛伊木马。,29,后门产生的必要条件,1、必须以某种方式与其他终端节点相连。 由于后门的利用都是从其他节点进行访问,因此必须与目标机使用双绞线、光纤维、串/并口、蓝牙、红外等设备在物理信号上有所连接才可以对端口进行访问。只有访问成功,双方才可以进行信号交流,攻击方才有机会进行入侵。,30,2、目标机默认开放的可供外界访问的端口必须在一个以上。因为一台默认无任何端口开放的机器是无法连接通信的,而如果开放着的端口外界无法访问,则同样没有办法进行入侵。 3、目标机存在程序设计或人为疏忽,导致攻击者能以权限较高的身份执行程序。并不是任何一个权限的账号都能够被利用的,只有权限达到操作系统一定要求的才允许执行修改注册表,修改log记录等相关修改,31,后门产生的原因,1、操作系统自带的服务,大多数的操作系统,如Unix、Linux、windows2000/xp在默认安装完成后,为了方便用户的使用,会默认开启一定数量的服务(server),常见的有telnet server、ssh server、sendmail等等,如果有的服务程序版本存在漏洞或者默认配置的安全性不够,则很容易被攻击,从而成为攻击者进入的通道。,32,2、早期网络协议安全性问题。由于在其的互联网络是用于军方、高校及科研结构,网络协议的设计对安全性方面考虑较少。例如,目前我们所使用的IPV4协议,IP数据包的源地址可以被修改、MAC地址可以被伪造。,33,3、软件编写不规范。现在很多大型软件都是模块化编程,可能某些功能某块之间出现漏洞,被攻击者利用作为漏洞;也有可能是程序员作为程序测试用的通道没有去除被攻击者发现。,34,6.2 网络嗅探,网络监听也称为网络嗅探,其作用是:监视网络的流量、状态、数据等信息,分析数据包,获得有价值的信息。 一把双刃剑 管理员的管理工具,主要是进行数据包分析,通过网络监听软件,观测分析实时经由的数据包,从而进行网络故障定位 网络监听工具成了黑客的常用工具,黑客通过将网络接口设置成监听模式,便可截取以太网中的信息,造成用户口令失窃、敏感数据泄漏等,35,6.2.1 共享式以太网监听,当局域网内的主机是通过集线器(HUB)等方式连接时,一般采取的是共享的连接。 这种共享方式连接的特点是,源主机的网路接口卡将要发送的数据报添加目的MAC地址、源MAC地址等信息封装成帧,然后将帧以广播的方式发往局域网。 当一台主机向另一台主机发送数据时,共享式的HUB会将接收到的数据向HUB上的每个端口转发。,36,37,通常情况下只有与数据帧中目的MAC地址一致的那台主机才会接收数据,并对其进行处理。网卡对于不属于自己的报文不予以响应,只是简单的忽略掉这些数据。 但是,如果某台主机将其网卡设置为混杂模式,使其工作在监听模式下,则不管数据帧中的目标地址是什么,主机都可以将其捕获。,38,6.2.2 交换式以太网监听,以太网交换机的原理很简单,它检测从以太网主机传送到端口来的数据包的源主机和目的主机的MAC(介质访问层)地址 然后再与系统内部的动态查找表进行比较,发往目的主机对应的交换机端口; 若数据包的MAC地址不在查找表中,则将该地址加入查找表中,并将数据包发送给相应的目的端口。,39,实现交换式以太网的数据包监听的方法,(1)对交换机实行端口映射,将该端口的数据包全部映射到某个监控机器上。 (2)将数据包捕获程序放在网关或代理服务器上,这样就能抓取到整个局域网的数据包。 (3)在交换机和路由器之间连接一个HUB,这样数据将以广播的方式发送。 (4)实行ARP(地址解析协议)欺骗,即在用户机器上实现整个包的转发,但这样会降低整个局域网的效率。,40,41,交换环境下的网络监听:利用ARP欺骗,ARP协议的全称是地址解析协议,ARP协议的功能是把逻辑地址转换为物理地址,即将32位的IP地址转换成48位的物理地址(网卡的MAC地址)。 例如,一台IP地址为192.168.0.1的计算机,其网卡的MAC地址为00-03-0F-FD-1D-2B。转换过程是一台主机向局域网广播包含目标IP地址的数据包,即ARP请求;然后目标主机向该主机发送一个含有其IP地址和MAC地址的数据包,即ARP应答。,42,当一个网络设备需要和另一个网络设备通信时,它首先把目标设备的IP地址与自己的子网掩码进行“与”操作,以判断目标设备与自己是否位于同一网段。 如果在同一个网段,而且源设备没有在高速缓存中获得与目标IP地址相对应的MAC地址信息,则源设备以广播的形式发送ARP请求报文,在ARP请求报文中包含了源设备与目标设备的IP地址 。,43,若某设备接收到ARP报文并发现报文中的目标IP地址与自己的IP地址相同,则向源设备发回ARP响应报文,通过该报文使源设备获得目标设备的MAC地址信息。 如果目标设备与源设备不在同一个网段,则源设备首先将IP分组发向自己的缺省网关,由缺省网关对该分组进行转发。若源设备的缓存中没有缺省网关的MAC地址,则它将同样以发ARP广播包的方式来获取网关的MAC地址,44,对大多数操作系统而言,如果收到一个ARP应答,它们不管自己是否在此之前曾发出ARP请求报文,都会自动更新自己的ARP缓存,而不对ARP应答的真实性进行验证,因此ARP是一个无状态的协议,ARP欺骗就是利用这一点进行欺骗。 ARP欺骗的核心思想就是向目标主机发送伪造的IPMAC映射的ARP响应,使目标主机收到伪造的ARP应答后更新其ARP缓存,从而使目标主机将数据包发送给指定的主机。,45,假如同一交换网络中的三台主机A、B、C,主机C试图通过ARP欺骗截取主机A发送给主机B的数据报文,达到监听A、B通信的目的。 欺骗过程步骤为: (1)主机C发送ARP请求报文,分别获取主机A和B的MAC地址。 (2)主机C向主机A发送伪造的ARP应答报文(报文的源IP地址为B的IP地址,源MAC地址为C的MAC地址)。,46,(3)主机A收到ARP应答报文,根据C发送的伪造的ARP应答报文,更新ARP缓冲区,此时有一条IP-MAC对应关系:主机B的IP地址-主机C的MAC地址。 那么当主机A的应用程序向主机B发送数据时,在网络层形成包含主机B的IP信息的IP数据包;而在数据链路层将主机C的MAC地址信息加在IP数据包前,构成以太网数据帧,发往交换机的端口。交换机查找其主机MAC地址与端口的对应关系,将数据帧发往主机C对应的端口。,47,为了成功监听主机A与主机B的通信,而不被主机A与B发现,主机C还要进行 (4)主机C将接收的主机A发往主机B的数据帧去掉头部,加上主机B的MAC地址信息,发往交换机端口。交换机根据端口与MAC对应关系,将数据发往主机B对应的端口。 这样,主机C成功的截获主机A发往B的信息,而A与B并未发觉通信有任何异常。同样主机C也可以欺骗主机B,截获B发往A的数据。这样主机C就可以监听A与B之间的所有通信。这种攻击通常也成为中间人攻击。,48,为了保证伪造的IP-MAC映射关系在主机A缓冲区中的有效性,主机C每隔一个时间片发送一次ARP应答报文,保证主机A处于被欺骗状态。 同样,主机C也可以监听主机A或B与外网的通信,则只需要将上述步骤中的A或B种的一个换为网关即可。 可知,通过ARP欺骗,可监听交换网络中的通信。,49,6.3 缓冲区溢出,1988年11月, 23岁的程序员Robert Tappan Morris编写的“Morris 蠕虫”是用于攻击VAX和Sun机器的程序。这个程序大约使得整个Internet的10%崩溃。Morris 蠕虫利用了一个被称为缓冲区溢出的程序缺陷。 1999年Bugtraq(一个讨论安全缺陷的邮件列表)进行的一次非正式调查发现,三分之二的参与者认为第一号的缺陷就是缓冲区溢出。从1997年到2002年3月,CERT/CC发出的半数安全警报都基于缓冲区缺陷。,50,6.3.1 缓冲区溢出原理,51,由于内存的生长方向与堆栈的生长方向是相反的,堆栈是从内存的低端向内存的高端生长 那么向堆栈中压入的数据超过了堆栈预先分配的容量时,则就会覆盖内存高端的有用数据,此时就会出现堆栈溢出,从而使得程序失败,如果发生堆栈溢出的是大型程序,则有可能导致系统崩溃。,52,6.3.2 缓冲区溢出实例,Windows Messenger服务用于Microsoft Windows操作系统服务器与客户端之间互相发送一些短消息。Microsoft Windows Messenger服务存在堆溢出问题,远程攻击者可以利用这个漏洞以系统权限在目标机器上执行任意指令。 问题存在于Messenger服务程序的search-by-name函数中,攻击者提交特定序列的字符串给这个函数可造成堆溢出,精心构建提交数据可能以系统权限在目标机器上执行任意指令。,53,消息通过NetBIOS或者RPC提交给消息服务,因此可以通过封闭NETBIOS端口(137-139)和使用防火墙过滤UDP广播包来阻挡此类消息。 用到的工具X-Scan 3.3、专用于Microsoft Windows Messenger服务远程堆溢出漏洞的扫描工具RetinaMSGSVC.exe、漏洞利用工具msgdos.exe。,54,首先,对目标主机进行漏洞扫描,利用X-Scan3.3对202.119.201.1-202.119.201.254网段进行漏洞扫描,发现主机202.119.201.71存在安全漏洞,如图6.2所示。 图6.2 发现主机漏洞,55,其中的一个漏洞为Microsoft Windows Messenger服务远程堆溢出漏洞,图6.3为漏洞信息 。 图6.3 漏洞描述,56,为确定目标主机202.119.201.71确实存在该漏洞,利用Microsoft Windows Messenger服务远程堆溢出漏洞的扫描工具RetinaMSGSVC.exe对其进行扫描(如图6.4所示),扫描结果出现VULENRABLE to MS03-43,说明该主机确实可能存在此漏洞。,57,图6.4 RetinaMSGSVC.exe 扫描结果,58,然后,利用msgdos.exe对主机202.119.201.71进行攻击,msgdos.exe是一个命令行工具,如图6.5所示。 图6.5 利用msgdos.exe对主机进行攻击,59,如果溢出成功,则目标主机将会在一分钟后重启,如图6.6所示。 图6.6 目标主机被溢出,60,6.3.3 缓冲区溢出的防范,编写正确的代码 非执行的缓冲区技术 数组边界检查 程序指针完整性检查 及时安装安全补丁 关闭不需要的特权程序,61,编写正确的代码,由于缓冲区溢出漏洞存在的原因是在程序开发时使用了与字符串操作相关的函数,没有对函数参数进行严格控制,导致数据越界造成的。如果能确保缓冲区中数据不越界并有效,就可以避免缓冲区溢出。 很多存在漏洞的程序是由于调用了一些不安全的库函数,这些库函数往往没有对数组边界进行检查。现在已经开发了一些工具和技术来帮助程序员编写安全正确的代码,例如利用 grep 搜索源代码中容易产生漏洞的库的调用。,62,非执行的缓冲区技术,所谓的非执行的缓冲区技术,也称为堆栈不可执行,就是指通过使被攻击程序的数据段地址空间不可执行,从而使得攻击者不可能执行被植入被攻击程序输入缓冲区的代码。 非执行的缓冲区技术可以有效地对付把代码植入自动变量的缓冲区溢出攻击,而对于其他形式的攻击则没有效果。通过引用一个驻留的程序的指针,就可以跳过这种保护措施。攻击者也可以采用把代码植入堆或者静态数据段中来跳过保护。,63,数组边界检查,缓冲区溢出的一个重要原因就是没有对数组进行边界检查,如果数组不能被溢出,也就不可能发生数组溢出攻击。 当数组被溢出的时候,函数返回地址、过程帧指针、函数指针等重要数据就有可能被修改。被植入的攻击代码就可能执行。因此,对数组进行边界检查,使超长代码不可能植入,这样就完全没有了缓冲区溢出攻击产生的条件。 对数组边界检查,直接的办法就是对所有的数组读写操作都进行检查,但这种完全检查要付出很大的性能代价。,64,程序指针完整性检查,程序指针完整性检查是指在程序指针被应用之前检测到指针的改变,因此即使一个攻击者成功地改变程序指针,由于系统提前检测到了指针的改变,因此这个指针将不会被使用。 程序指针完整性检查通过阻止缓冲区溢出的一个条件由于函数返回地址或函数指针的改变而导致的程序执行流程的改变,来阻止缓冲区溢出的发生。,65,它的原理是在每次在程序指针被引用之前先检测该指针是否已被恶意改动过,如果发现被改动,程序就拒绝执行。 因此,即使一个攻击者成功地改变程序的指针,由于系统事先检测到了指针的改变,因此这个指针不会被使用。 常用的程序指针完整性检查有堆栈保护和指针保护。,66,堆栈保护是一种提供程序指针完整性检查的编译器技术,即在堆栈中函数返回地址后面加了一些附加的字节,函数返回时,如果检测到这个附加的字节被改动过,则说明发生过缓冲区溢出攻击。 但是如果攻击者预见到这些附加字节的存在,便可以在溢出过程中同样地附加字节,此时可以利用终止符号和随机符号对付这种攻击,,67,由于终止符号不能在常用的字符串函数中使用,因为这些函数一旦遇到这些终止符号,函数过程就结束了,随机符号方式使得攻击者不可能猜测到附加字节的内容,从而加大攻击难度。 指针保护是堆栈保护的一个推广,通过在所有的代码指针之后放置附加字节来检验指针在被调用之前的合法性,如果校验失败,会发出警报信号和退出程序的执行。当然,正如在堆栈保护中的行为一样,程序指针完整性检查也不能解决所有的缓冲区溢出问题。,68,及时安装安全补丁,管理员必须不断关注最新的技术和补丁,不断的对系统进行修补,这是漏洞出现后最迅速有效的补救措施。 大部分的入侵是利用一些已被公布的漏洞达成的,如能及时补上这些漏洞,将增强系统抵抗攻击的能力,有效地防止大部分的攻击 。,69,关闭不需要的特权程序,由于缓冲区溢出只有在获得更高的特权时才有意义,所以带有特权的Unix下的suid 程序和 Windows 下由系统管理员启动的服务进程都经常是缓冲区溢出攻击的目标。 这时候,关闭一些不必要的特权程序就可以降低被攻击的风险。如Solaris下的fdformat是个有缓冲区溢出漏洞的suid 程序,因为这个格式化软盘的命令用的较少,最直接的措施是去掉这个程序或者去掉suid位。 当有缓冲区溢出漏洞的程序还没有补丁时,就可以用这种方法。,70,6.4 SQL注入,SQL注入是漏洞很常见的一种类型,一般来说,当非信任数据被插入一条查询或指令时,指令注入漏洞就会出现。 恶意输入会导致指令解释器或查询处理器对提供的指令数据产生误解,反之改变指令或查询原来的语义。 另外,对于SQL查询而言,如果应用程序执行shell指令、查询LDPA服务器、使用XPath语句从XML文件中抽取数据、把非信任数据翻译为XSLT样式单中的一部分等等,那么这个问题会出现,,71,6.4.1 SQL注入攻击的原理,SQL注入攻击源于英文“SQL Injection Attack”,微软技术中心从两个方面进行了描述:脚本注入式的攻击;恶意用户输入导致被执行的SQL脚本受到影响。 Stephen Kost给出了这种攻击形式的另一个特征:“从一个数据库获得未经授权的访问和直接检索,当攻击者能够操作数据,往应用程序中插入一些SQL语句时,SQL注入攻击就发生了。” SQL注入攻击就其本质而言,利用的是SQL的语法,针对的是应用程序开发者编程过程中的漏洞。,72,由于SQL注入攻击使用的是SQL语法,使得这种攻击具有广泛性。 理论上说,对于所有基于SQL语言标准的数据库软件都是有效的,包括MSSQL Sevrer,Oracle,DB2,Sybase,MySQL等。当然,各种软件有自身的特点,最终的攻击过程可能不尽相同。 SQL注入攻击的原理相对简单,易于掌握和实施,并且整个Internet上连接有数目惊人的数据库系统,在过去的几年里,SQL注入攻击的数量一直在增长。,73,6.4.2 SQL注入攻击实例,结构化查询语言(Structured Query Language,SQL)是大部分关联数据库提供的一门语言,作为应用程序与数据库进行通信的方法。 SQL注入的原理很简单:利用未过滤的程序变量,插入任意SQL语句,74,下面是一条典型的SQL语句: select id, forename, surname from authors, 选择authors表中字段id,forename,surname的记录。 具体选择其中一条记录时可以使用这样的查询语句: select id, forename, surname from authors where forename = john and surname = smith,,75,这里值得注意的是john和smtih都被包含在单引号中,如果提交: forename: john; surname: smith; 查询语句就会变为: select id, forename, surname from authors where forename = john and surname = smith,,76,当数据库执行这条语句时,会返回这样的信息: Server: Msg 170, Level 15, State 1, Line 1; Line l: Incorrect syntax near hn; 这是由插入其中的单引号引起的,如果提交下面的输入,整个authors表会被删除。 Forename: jo; drop table authors-; Surname: ; 从上面可以看到,在提交输入时,可以构造特殊的字符串攻击数据库。这发生在数据库的查询过程中,所以通过附加精心构造的查询语句就可以渗透到数据库中。,77,6.4.3防范SQL注入攻击,防范SQL注入攻击需要遵循几条基本的规则: 1) 在构造动态SQL语句时,一定要使用类安全(type-safe)的参数加码机制。大多数的数据API,包括ADO和ADO.NET,有这样的支持,允许你指定所提供的参数的确切类型(譬如,字符串,整数,日期等),可以保证这些参数被恰当地escaped/encoded了,来避免黑客利用它们。一定要从始到终地使用这些特性。,78,2) 在部署应用前,始终要做安全审评(security review)。建立一个正式的安全过程(formal security process),在每次做更新时,对所有的编码做审评。SQL 注入攻击从本质上看,就是攻击者利用构造的畸形 SQL 语句通过开放的 Web 服务器输入接口,把其发送到数据库服务器执行。如果 Web 服务器的接口程序没有进行细致过滤就被送往数据库服务器执行,此时非法的查询语句会取得其欲获得的多数敏感信息。,79,我们可以把对输入数据审核的技术通常分成以下几类:对非法数据进行修整而让它变成合法数据、拒绝预知的非法语句的输入、只接受我们已知的合法数据。 3) 别把敏感性数据在数据库里以明文存放。密码应该总是在单向函数变换过后再存放。 4) 确认你编写了自动化的单元测试,来特别校验你的数据访问层和应用程序不受SQL注入攻击,80,5) 锁定你的数据库的安全,只给访问数据库的web应用功能所需的最低的权限。如果web应用不需要访问某些表,那么确认它没有访问这些表的权限。如果web应用只需要只读的权限从你的account payables表来生成报表,那么确认你禁止它对此表的insert/update/delete 的权限 。,81,6.5 分布式拒绝服务攻击,分布式拒绝服务攻击DDoS(Distributed Denial of Service)是一种基于DoS的特殊形式的拒绝服务攻击,是一种分布、协作的大规模攻击方式,主要攻击较大的站点,比如商业站点、搜索引擎等站点。 分布式拒绝服务攻击是在传统的DoS攻击基础之上产生的一类攻击方式。,82,DoS是一台机器攻击目标,DDoS是很多台机器利用他们的高带宽攻击目标,攻击者,目标系统,发起攻击,指令,攻击的代理程序,虚假的连接请求,83,分布式拒绝服务攻击是指借助于客户/服务器技术,将多个计算机联合起来作为入侵平台,对一个或多个目标发动DoS入侵,从而成倍地提高拒绝服务攻击入侵的威力。 通常,入侵者使用一个偷窃的帐号将DDoS主控程序安装在一个特定计算机上,在一个特定的时间主控程序与大量的代理程序通信,代理程序之前已经被安装在Internet上的许多计算机上,代理程序收到指令时就进行入侵。 利用客户/服务器技术,主控程序能在几秒内激活成百上千个代理程序的运行。,84,6.5.1 分布式拒绝服务攻击原理,一个典型的DDoS攻击体系分成四大部分,攻击者、主控端、代理端与受害者。其中攻击者对主控端、代理端有控制权或者是部分的控制权,我们称其为傀儡机。 图6.7 分布式拒绝服务攻击的原理,85,攻击者:攻击者所用的计算机是攻击主控台,可以是网络上的任何一台主机。攻击者操纵整个攻击过程,它向主控端发送攻击命令。通常它会利用各种手段隐藏自己不被别人发现。 主控端:主控端是攻击者非法侵入并控制的一些主机,这些主机还分别控制大量的代理主机。主控端主机的上面安装了特定的程序,因此它们可以接受攻击者发来的特殊指令,并且可以把这些命令发送到代理主机上,86,代理端:代理端也是攻击者侵入并控制的一批主机,它们运行攻击器程序,接受和运行主控端发来的命令。代理端主机是攻击的执行者,真正向受害者主机发送攻击。,87,发动DDoS攻击一般分为两个阶段: (1)初始的入侵阶段:攻击者首先扫描远程脆弱主机和服务器,并采用黑客入侵手段控制大量的主机和服务器,作为主控端和攻击端。 (2)攻击阶段:攻击者向主控端发出攻击命令,主控端在发送给每个攻击端,最后由攻击端向被攻击的目标发送DoS攻击数据包,对目标主机进行大规模拒绝服务攻击。,88,6.5.2 DDoS攻击方式及分类,按照攻击路径可以将DDoS分为两大类:直接攻击和反射攻击(DRDoS,Distributed Reflection Denial of Service)。 在直接攻击当中,攻击者直接向受害者发送大量的攻击包,数据包的类型可以是TCP、ICMP、UDP,或是它们的混合。 在反射攻击中,代理端的源IP地址是受害端的IP地址。,89,常见的反射攻击方式有Smurf、SYN洪泛、RST洪泛、ICMP洪泛、DNS响应洪泛等。 当前常见攻击方式有四种:SYN Flooding、UDP Flooding、ICMP Flooding、Smurf。 其中SNY Flooding、UDP Flooding和ICMP Flooding属于直接攻击,而Smurf属于反射攻击。,90,SYN Flooding攻击,原理:利用TCP连接三次握手过程,打开大量的半开TCP连接,使得目标机器不能进一步接受TCP连接。 在建立连接的三次握手中假设客户端向服务器端发送了SNY报文后突然死机或掉线那么服务器端在发出SYN + ACK应答报文后是无法收到客户端的ACK报文的,在这种情况下服务器一般会重试,再次发送SYN + ACK应答报文并,91,等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout。 一个用户出现异常导致服务器端的一个线程等待1个SYN Timeout并没有什么问题,但是如果这段时间内有大量的类似情况的SNY 数据包的话,服务器端将要维护一个规划庞大的半连接列表,这会消耗非常多的系统资源。,92,三次握手,发起方,应答方,93,SYN Flooding,94,SYN Flooding,攻击者,受害者,不能建立正常的连接,正常用户,95,UDP Flooding攻击,用户数据报协议(User Datagram Protocol,UDP)是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。它服务于很多应用层协议,包括NFS、简单网络管理协议(Simple Network Management Protocol,SNMP)、DNS以及简单文件传输系统(Trivial File Transfer Protocol,TFTP)等。,96,应用程序通过系统调用与某(些)端口建立联接后,传输层传给该端口的数据都被相应进程接收。UDP有一些保留端口,同一个保留端口在UDP中可能对应于不同类型的应用进程,也可能对应于相同类型的服务进程。 一个UDP端口是一个可读、可写的软件结构,内部有一个接收报文缓冲区。发送数据时UDP软件构造一个数据报,然后将它交给IP软件,便完成所有的工作。接收数据时,UDP软件先要判断接收数据报的端口是否与当前使用的某端口匹配。,97,如果匹配,则将数据报放入相应接收队列,否则,抛弃该数报,并向信源端发送“端口不可到达”的ICMP报文。虽然端口匹配成功,但如果相应端口队列己满,UDP也会抛弃数据报。 如用Chargen(字符产生器)和Echo服务来传送毫无用处的数据来占用所有的带宽。Echo如果它收到一个包,就会把包中的负载按原样发回。如果向Chargen端口送一个任意字符,它将返回一个假的随机字符串。通过伪造与某一主机的Chargen服务之间的一次UDP连接,回复地址指向开着Echo,98,服务的一台计算机,这样就生成在两台计算机之间的足够多的无用数据流,如果有过多的无用数据流就会导致带宽的拒绝服务攻击。 一个攻击者假冒某台计算机的Echo端口向不同的计算机发起多个Chargen连接,其目的就是在被假冒主机和这些主机间产生Echo、Chargen循环往返效果,使这些主机充满这些无用的数据包,浪费它们的带宽和CPU资源。另外成百上千台代理端同时向被攻击计算机长时间、连续、大量地发送UDP数据包,使得被攻击计算机耗费大量的CUP资源处理,疲于奔命,最终使被攻击计算机瘫痪。,99,ICMP攻击,ICMP(Internet Control Message Protocol,控制消息协议),是TCP/IP协议族的子协议,用于在IP主机、路由器之间传输控制消息。 控制消息是指网络是否畅通、主机是否可达、路由是否可用等网络消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。,100,ICMP Flooding攻击就是成百上千台代理端同时向目标主机长时间、连续、大量地发送ICMP数据包,最终使系统瘫痪。 大量的ICMP数据包会形成,“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。其方式与UDP Flooding攻击有些类似,只不过是发送的ICMP数据包。 现在一些路由器采取以下策略来防止ICMP Flooding:在广域网接口和局域网接口上,当路由器的接口接收到每秒超过1000个ICMP数据包时,路由器将临时关闭这个IP地址的所有数据进入。,101,Smurf攻击,所谓的Smurf攻击是指,攻击者在远程机器上发送ICMP应答请求服务,其目标主机不是某一个主机的IP地址,而是某个网络的广播地址,其请求包的源IP不是发起攻击的IP地址,而是加以伪装的将要攻击的目标主机的IP地址。大量主机收到ICMP应答请求服务包后,按照源IP返回请求信息,从而

    注意事项

    本文(第6章攻击与防范.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开