找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 305|回复: 0

[【推荐】] 互联网安全的脆弱性及常见攻击方法

[复制链接]
发表于 2010-2-17 13:00:26 | 显示全部楼层 |阅读模式
要真正理解网络的信息安全,需要对网络信息系统存在的安全缺陷和可能受到的各种攻击有深入正确的理解。所谓“知已知彼,百战不殆”,通过对系统缺陷和攻击手段进行分类与归纳,可让人们正视系统的不足与所受威胁。
网络安全的脆弱性
  当我们评判一个系统是否安全时,不应该只看它应用了多么先进的设施,更应该了解它最大的弱点是什么,因为网络的安全性取决于它最薄弱环节的安全性。
  通过考察近几年在 Internet 上发生的黑客攻击事件,我们不难看出威胁网络安全的基本模式是一样的。特别在大量自动软件工具出现以后,加之 Internet 提供的便利,攻击者可以很方便地组成团体,使得网络安全受到的威胁更加严重。
  隐藏在世界各地的攻击者通常可以越过算法本身,不需要去试每一个可能的密钥,甚至不需要去寻找算法本身的漏洞,他们能够利用所有可能就范的错误,包括设计错误、安装配置错误及教育培训失误等,向网络发起攻击。但在大多数情况下,他们是利用设计者们犯的一次次重复发生的错误轻松得逞的。
  我们可以粗略地将对系统安全造成的威胁归结为 6 大类 : 教育培训问题、变节的员工、系统软件的缺陷、对硬件的攻击、错误的信任模型和拒绝服务。需要指出的是,这几类威胁之间可能会有交叉与重叠之处。另外,一些文献对系统安全的威胁分类方法可能同这里给出的不同,但大多没有本质的区别。
1 .教育培训问题
  对于安全系统的使用者来说,可以采用 2 种不同的安全模型。
  (1) 火车司机型 在这种系统中,使用者只需要控制系统的启停,安全系统便能够辨别出危险信号,自动找寻安全道路,使用者在其他时间可以放心大胆地干别的事情。
  (2) 航空飞行员型 在这种模型中,即使系统已经拥有很先进的自动导航设备,而且大多数情况下系统已经处在自动运行中,仍然要求使用者必须在安全方面训练有素。
  在这 2 种模型中,第一种显得非常好用。用惯了图形用户界面的人都希望安全系统在经过简单的指导安装之后,不用再亲自介入以后的运行了。这种想法很自然,但实现起来并不容易。网络世界远远没有铁路系统那么有序,缺少像铁轨那样严格控制并引导列车前进的机制,由于可能出现的异常情况太多,所以没有什么办法可以让人一劳永逸。
  有些人会认为:“不是还有防火墙吗?交给它好了!”这同样是错的,防火墙并不是万灵药,它虽然堵住了大量不安全的缺口,但还是小心翼翼地向外界打开了一扇访问内部信息的小门。尽管此门的开启受到限制,可路却通了。如果有人利用这条路径进行数据驱动型的攻击,防火墙是无能为力的。
  许多系统被攻破是因为它们严重依赖于用户创建的口令,但由于不便于记忆,人们通常不会选择复杂性很强的口令,当这个口令被用做加密系统的密钥时,比起随机生成的密钥,它们更容易(当然也更快)被破解。为了便于记忆,有些系统的口令不仅仅是一个单词,还可以是一句话,称为“通行短语”。但由于语言本身信息的高度冗余性,所以 40 个字符的通行短语并不比 64 位( 8 个字符)的随机密钥更安全。
  此外,出于工作上的考虑,有些用户可能会把自己的口令告知同事;有些用户由于拿不准自己把信用卡放在何处而没能及时挂失;还有些用户从不仔细查收邮件的电子证书 ; 或者不去改变软件缺省安装的不安全状态(尤其对 Windows NT 用户)等等,所有对这些细节的疏忽,都为网络带来不小的安全隐患。
2 .便捷的员工
  谈到便捷的员工问题应该说它属于机构的内部事务。通常负责密钥管理和系统维护的人越多,系统出问题的可能性就越大。对此,最好的解决办法是建立完整的安全政策,严格控制用户的权限以及对关键信息的访问。对于银行之类的系统,必要时可对某些关键数据采用秘密共享机制的保护策略,以保证在若干个人同时在场的情况下才能启用。与此同时,还要加强审计功能,保证每一件事务都有据可查。
  安全系统应该能够提供解决这一问题的机制,不允许任何人在系统中留有“后门”。
3 .系统软件的缺陷
  常见的网络应用系统包含了 Web 浏览器、 Java 虚拟机、 Web 服务器、事务服务器、数据库系统及 CORBA 机制等等。当然,也包括防火墙。由于其结构十分复杂,任何一个部分都有可能出错,而任何一个错误都有可能导致安全漏洞或数据失窃、文件被毁或事务被欺骗提交等。更可怕的是,攻击者知道这些漏洞而当事人却蒙在鼓里。
  经过进一步细分,我们发现这一类问题可能出在以下几个方面。
  (1)系统设计问题
  安全系统牵涉了各种不同的密码学原理,如加密算法、数字签名算法、单向 Hash 算法、消息认证码及安全协议等。只要攻破其中的任何一项,就等于攻破了整个系统。即使系统使用了很强的加密算法和安全协议,仍然可能存在薄弱环节。此外,就如相生相克一样,两个强安全协议、密钥的联用也可能得到一个不安全的系统。
  以上这些问题都应该在设计安全系统时仔细分析、认真考虑。
  值得一提的是, Internet 从建立开始就缺乏总体的安全构想和设计,而 TCP/IP 协议却是在可信的环境下专门为网络互联设计的,缺乏安全措施的考虑。因此,在这方面出现的安全问题较多。
  (2)系统实现问题
  在系统实现方面出现问题的原因很多,有的可能缘于对设计的理解,由于理解不透,所实现的系统并非是想像的系统 ; 有的可能缘于在实现过程中对细节过于疏忽,比如一些系统不能保证在加密之后可清除明文,或在加密过程中,系统崩溃可能导致密钥被转存到硬盘上等。
  然而,在系统实现过程中最大的问题是程序里存在的错误,受时间和测试工具的限制,现有的许多系统都是在未经充分测试的情况下投入运行的,难免隐藏一些错误。
  (3)故障恢复问题
  设计一个安全的系统要求做到当一个系统某一部分被攻破时,其影响范围应该尽量最小化,避免捅出更大的乱子。泄漏一个文件的密钥不应使入侵者看到硬盘上所有的加密文件,黑客对智能卡进行逆向工程,只能得知所拿卡的秘密,而不应帮助他获得系统中其他卡的信息。作为一个优秀的系统设计者,必须考虑入侵发生后的应对办法,并且在设计时还要牢记一点:或早或晚,自己设计的系统总有一天会被人攻破!只有这样,当攻击真的发生时,才不会手足无措。
  在已经广泛投入使用的系统中,攻击者可以从许多渠道获知各部分可能出现的错误或已经被确诊的错误,这些渠道可能是地下黑客站点、 CERT 报告或安全新闻组等,通常,它们还会给出相应的解决方法。
  不能迷信专用系统的安全性,没有经过大量测试的系统,即使采取了秘而不宣的算法,也不可能有很高的安全性。事实上,如果这类算法是用软件实现的,根本抵挡不住训练有素的程序员对其进行逆向工程,也没有办法对其保密。
4 .对硬件的攻击
  有些系统(特别是商业系统)常常依靠智能卡、电子钱包之类的防撬装置来保证安全,由于加解密、签名等工作都由硬件完成,用户密钥从不会进入到计算机内存之中。所以,即使这些系统用卡落入他人之手,也不会造成危害。
  专有硬件是维护网络安全很重要且很有效的一种手段,如果一个系统完全依赖于它的防破坏性,就不能让人相信它是安全的。
实际上,存在一些对这类硬件的攻击手段,如通过检查其运算所花费的时间、测量工作中的能量消耗、射线穿透检查等特殊“通道”,可能会让拿到卡的攻击者获取一些秘密。
  所以,当设计使用这类硬件的系统时,应该建立其他机制用于防止防撬技术失败。
5 .错误的信任模型
  在使用一个系统时,通常都要做出一些假定。比如当用户收到一封电子邮件时,可能假定发信者确实是真实的;当用户拿到一个新版的操作系统时,可能会假定厂家在广告中做的宣传是真实的;当用户通过网络获取一个共享文件时,可能会假定取到的是真正好的软件。在此,我们不妨看看下面 2 个例子。
  攻击者攻破了某个网络目录服务器,由此将对某些服务器的访问定向到攻击者指定的机器,该机器可能中断客户和服务器之间来往的数据,使客户和服务器双方都没有意识到第三方的存在,很多敏感数据就此被窃取。这种方式通常被称为“中间人”攻击。
  在内部网中,当各工作站使用共享文件系统 (AFS 、 NFS 、 Windows NT/95 及 Netware 等 ) 共享可执行文件时,一个内部攻击者可能监听了工作站向文件服务器发出的文件访问请求,抢先把修改过的文件块传给工作站。由于内部网缺少判断数据包发送地址的能力,工作站会接收该数据包,将真正的包当做重复数据丢弃,从而工作站将毫无觉察地使用修改后的程序。这类错误应该算一个比较严重的问题,当前许多操作系统在这方面没有做很大的改进, Windows NT 的 Service Pack 3 虽然注意到了这个问题,但在同其他系统的互操作性方面却受到了影响。
6 .拒绝服务
  拒绝服务是指一个未经授权的用户不需要任何特权就可以使服务器无法对外提供服务,从而影响合法用户的使用。拒绝服务攻击可以由任何人发起,而它只利用 2 类办法便可实现攻击。
  系统程序的错误 特殊的请求数据可能导致系统瘫痪。
  协议本身抗干扰能力差 这是许多基于 TCP/IP 的协议所共有的问题,攻击者靠大量的请求数据挤占合法用户的请求空间,使合法用户的请求无法得到响应。典型的示例如 SYN Flood 、 Smurf 以及 DDoS 等。
常见攻击方法
  在前面讨论网络安全的脆弱性时,我们实际上已经零散地给出了一些网络攻击的实例。这里先将这些攻击方法进行一下汇总。人们将常见的攻击方法分为以下几种类型:试探 (probe) 、扫描 (scan) 、获得用户账户 (account compromise) 、获得超级用户权限 (root compromise) 、数据包窃听 (packet sniffer) 、拒绝服务 (denial of service) 、利用信任关系、恶意代码 ( 如特洛伊木马、病毒、蠕虫等 ) 以及攻击 Internet 基础设施 ( 如 DNS 系统和网络路由等 ) 。
  对这几种类型分别列出所有的攻击方法既无必要也不现实,我们认为更为有用的是分析攻击者攻击的一般步骤。
  通常攻击者攻击的目标各不相同,有人愿意探访美国国防部或五角大楼,有人关心银行或其他重要企业,但他们采用的攻击方式和手段却有一定的共性。一般说来攻击者对目标进行攻击要经历 3 个步骤 : 情报搜集、系统的安全漏洞检测和实施攻击。
1 .情报搜集
  情报搜集的目的是为了得到所要攻击的目标系统的相关信息,为下一步行动做好准备。攻击者可以利用公开的协议或工具,也可以利用一切可以获得的情报,收集目标网络系统中的各个主机系统的相关信息。这些公开协议及工具包括以下几种。
  HTTP 、 FTP 、 SMTP 及 Telnet 等网络服务可能会暴露操作系统类型和版本等信息。
  SNMP 协议、 traceroute 等工具可以用来检查网络系统路由器的路由表、到达目标主机所要经过的网络和有关路由信息细节。
  WHOIS 协议、 DNS 服务器及 NetBIOS 协议等可能会给出目标主机名称等信息。
  不同 TCP/IP 协议的实现会产生不同的“指纹”,可用于判断目标主机所使用的操作系统。
2 .系统安全漏洞检测
  在搜集了攻击目标的有关情报后,攻击者会进一步查找该系统的安全漏洞或安全弱点。通常攻击者可以用自编工具或公开的程序自动扫描驻留目标系统,检测可能存在的安全漏洞。公开的程序包括基于 GPL 的 SAINT 、 SARA 及 NESSUS 等公开源码的扫描器,也包括一些商用的系统,如 ISS 的安全漏洞扫描器等.
   一般说来,在使用自动化工具时,这两步可以同时进行。
3 .实施攻击
  当攻击者使用上述方法,收集或探测到一些“有用”信息之后,就可以对目标系统实施攻击。攻击者一旦获得了对攻击的目标系统的访问权后,又可能有下述多种选择。
  进一步发现被攻破系统在网络中的信任关系,这样攻击者就可以通过信任关系展开对整个系统的攻击。
  在目标系统中安装探测器软件,包括特洛伊木马等,用来窥探所在系统的活动,搜集攻击者感兴趣的信息,如 Telnet 、 FTP 及 POP3 的账号名和口令等等。
  如果攻击者在被攻破系统上获得了特权用户权限,就可以读取邮件、搜索和盗窃私人文件、毁坏重要数据及破坏整个系统的信息等,造成极其严重的后果。
  清除日志,毁掉入侵痕迹。还可以在被攻破的系统上建立后门,以便在先前的攻击被发现后,还可以继续访问这个系统。
  对于其他类型的系统来说,通过比较功能和性能,我们可以很容易判断系统的质量和定位。但对安全系统来说,由于其自身的特殊性,很难采取上述方法来判断。好的加密算法和坏的加密算法都同样产生不可读数据,好的防火墙和坏的防火墙都能挡住大量攻击,它们的差别隐藏在技术细节内部,需要对其进行认真分析。有一些安全产品的实现是这样的:设计者读了一本有关安全的书,从中挑出几个算法和协议,经编码之后发现系统是能工作的,于是便认为这个系统安全了。事实上根本不像他所想像的那样,能工作并不意味着质量高,没有经过大量实战测试的安全系统将永远隐藏着安全漏洞。因此,我们有理由认为这些安全产品只是充斥了大量的热门词汇,它们用到了安全加密算法和协议,但它们自身并不安全。
  网络攻击与反攻击的双方其实是极其不平等的。对攻击者来说,只要发现一点漏洞就可以实施不法手段,而对反攻击者来说,需要考虑到系统的方方面面,系统的安全应该是“系统的”安全,是全方位的安全,它需要安全产品生产者和用户双方做出很大的努力才能达到


http://casslvpn.blog.51cto.com/1218260/273441

介绍了互联网攻击手段,虽然针对的是企业,但个人用户也可借鉴
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-11-18 17:54 , Processed in 0.207340 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表