- 网络攻防原理与技术
- 吴礼发 洪征 李华波编著
- 21538字
- 2021-03-28 05:03:27
第1章 绪论
本章从网络空间安全的角度,全面介绍了网络空间安全的发展历程、知识体系、安全防护技术概览和攻击技术概览。目的是使读者在网络空间安全学科知识体系的大框架下,对网络攻防技术有一个总体了解,为后续章节的学习打下基础。
1.1 网络空间安全概述
近年来,新服务的发展、通信量的上升和信息技术的进步这三股来自不同维度的力量不断推动着计算机网络向前发展。日益增长的网络应用需求催生了各种各样的新型网络服务,而新服务的实现对网络技术提出了新的要求。为了应对日益增长的网络流量,特别是多媒体流量的快速增长,各种新的网络传输技术相继出现,进一步促进了网络技术,尤其是移动传输技术的飞速发展。而信息技术的发展,特别是计算机技术和通信技术的发展,更是对网络的发展起到了非常大的促进作用。技术的发展进一步促进了网络在世界范围内的广泛应用,如同水电一样,网络已成为人们的日常生活不可或缺的部分。
人们在享受网络带来的种种好处时,也不得不面对它所带来的问题。长久以来,网络攻击一直呈指数级增长,成千上万的网络安全事件每天都在发生,小到普通民众、商业公司,大到军队、国家,无一例外均受到了不同程度的影响。网络安全在国家安全中的地位越来越重要,国家政治、经济、文化和军事等领域受网络的影响日益增强,世界各国纷纷将网络安全提升到国家安全的战略高度。
同时,随着信息时代的到来,战争的形式也在发生着深刻的变化,现代战争已成为信息的战争。信息是战略资源、决策资源,毫不夸张地说,它就是武器系统的核心,更是战场的灵魂。而网络作为敌对双方借以获取信息优势的制高点,与之相关的攻击与防护已成为军队作战的新模式,随着世界各国相继建立并大力发展网络战部队,网络战时代已经到来。
网络战是为干扰、破坏敌方网络信息系统并保证己方网络信息系统正常运行而采取的一系列网络攻防行动。网络战正在成为高技术战争的一种日益重要的作战样式,它能够破坏敌方的指挥控制、情报信息和防空等军用网络系统,甚至可以悄无声息地破坏、瘫痪和控制敌方的商务、政务等民用网络系统,不战而屈人之兵。
网络战的出现意味着国家级力量开始大力介入网络安全领域,也将网络攻防对抗提升到了一个新的高度,对抗的层次、水平和影响力均已远远超越以前的黑客攻击。例如,2010年9月发生的震网病毒攻击伊朗核电站事件,2013年斯诺登曝光的美国系列网络监控丑闻等,都对世界各国的网络安全领域带来了深远的影响。
网络安全形势千变万化,网络安全的内涵和外延随着技术的进步也在不断地丰富和拓展。
在计算机产生之前,网络安全主要是指通信安全,重点关注的是信息加密(信息的保密性)。计算机产生后,需要考虑计算机系统的安全,如保障计算机系统自身的完整性。计算机网络产生后,“网络安全”中的“网络”主要是指计算机网络,包括计算机网络系统的硬件、软件,以及在网络中存储、传输和处理的数据。网络安全是指保护计算机网络不因偶然或恶意因素的影响而遭到破坏、更改或泄露,系统连续、可靠、正常地运行,网络服务不中断。
随着网络和通信技术的进一步发展,传统的以语音业务为主的“电信网络”,以及以视频业务为主的“有线电视网络”,在消除了政策上的障碍后,实现了基于IP的深度融合,即所谓的“三网融合”。网络安全领域也从计算机网络延伸到了电信网络和有线电视网络。
近几年来,网络安全进一步向物理世界和虚拟世界延伸,包括与国家基础设施密切相关的工业控制网络或系统(如电力网络、交通控制网络、城市供水网络、石油天然气网络和核电控制系统等)、虚拟的社交网络等,网络安全上升到了“网络空间安全”。目前,“网络空间”这一术语被广泛用于中、美等多国战略报告、论文和媒体报道中。网络空间也被称为与海、陆、空、太空并列的第五空间。
时至今日,国内外有关“网络空间”的定义还不统一,其内涵也在发展的过程中不断完善,下面对此做一个简要介绍。
美国最早使用Cyberspace [1] 一词来描述与信息和网络有关的物理和虚拟空间。国内对Cy-berspace的翻译很多,比较典型的有:电磁空间、电子空间、网络空间、网际空间、虚拟空间、控域、网络电磁空间和赛博空间等,对其内涵的解读在学术界和工业界也呈百家争鸣的状态。接受度比较广的两种译法是“网络空间”和“赛博空间”,其中后者是音译。2015年6月国务院学位办批准设立“网络空间安全”一级学科,采用的是“网络空间”这一名词。因而本书也采用“网络空间”的译法。
美国国家安全部门和美军对Cyberspace的理解也不完全一致,并且随着时间的推移,对其内涵的解读也在不断变化。据不完全统计,Cyberspace有近30种正式定义,此外还有各种各样的个人解释。自2004年以来,美国政府先后推出了4种不同的官方定义。这些定义的基本思路相同,但侧重点略有区别。
2001年初,美国国防部的“官方词典”——联合出版物JP1-02将Cyberspace定义为数字化信息在计算机网络中通信时的一种抽象(notional)环境。这个定义虽很简洁,但比较模糊,看不出确切的含义。
2003年2月,布什政府发布了《保卫Cyberspace的国家安全战略》,其中将Cyberspace比喻为“国家中枢神经系统”,由成千上万的计算机、服务器、路由器和交换机用光纤互联在一起,支持关键的基础设施运行。这个定义除具体地列举了网络空间的组成外,还指出了计算机网络在国家、社会、政治、经济和军事上举足轻重的作用。
2006年12月,美国参联会主席签署了《Cyberspace行动的国家军事战略》,并将Cyber-space定义为“域”(domain),其特征是:使用电子技术和电磁频谱存储、修改和交换信息,并通过网络化的信息系统和物理基础设施达到此目的。该定义主要强调支撑Cyberspace的技术基础:电子技术和电磁频谱。
2008年1月,布什签署了两份与网络安全(cyber security)相关的文件:第54号国家安全政策指令和第23号国土安全总统指令(NSPD-54/HSPD23),其中对Cyberspace的定义是:“网络空间是由众多相互依赖的信息技术(IT)基础设施网络组成,包括因特网、电信网、计算机系统和用于关键工业部门的嵌入式处理器、控制器。还涉及人与人之间相互影响的虚拟信息环境”。这个定义首次明确指出Cyberspace的范围不限于因特网或计算机网络,还包括各种军事网络和工业网络。
2008年5月,美国防部常务副部长戈登签署了一份备忘录,对上述的Cyberspace定义作了一些修订,删去了“关键工业部门”等字样,认为Cyberspace是全球信息环境中的一个领域,它由众多相互依存的IT基础设施网络组成,包括因特网、电信网、计算机网和嵌入式处理器、控制器。考虑到信息领域快速演变的特点,Cyberspace的定义有可能会被进一步修订,备忘录建议在未得到进一步的通知之前,军方沿用这一定义。到目前为止,美国国防部或参联会没有发布新的定义。
2009年4月,美国国防大学根据美国国防部负责政策的副部长的指示,组织专家学者编写出版《Cyberpower和国家安全》一书,书中对Cyberspace的定义做了全面的解读:①它是一个可运作的(operational)空间领域,虽然是人造的,但不是某一个组织或个人所能控制的,在这个空间中有全人类的宝贵战略资源,不仅仅是用于作战,还可用于政治、经济和外交等活动,例如在这个空间中虽然没有一枚硬币流动,但每天都有成千上万美元的交易;②与陆、海、空、天等物理空间相比,人类依赖电子技术和电磁频谱等手段才能进入Cyber-space,才能更好地开发和利用该空间资源,正如人类需要借助车、船、飞机或飞船才能进入陆、海、空、天物理空间一样;③开发Cyberspace的目的是创建、存储、修改、交换和利用信息,Cyberspace中如果没有信息的流通,就好比电网中没有电流,公路网上没有汽车一样,虽然信息的流动是不可见的,但信息交换的效果是不言自明的;④构建Cyberspace的物质基础是网络化的、基于信息通信技术(ICT)的基础设施,包括联网的各种信息系统和信息设备,所以网络化是Cyberspace的基本特征和必要前提。
以上是美国政府安全部门和军队对Cyberspace的理解,美国民间对Cyberspace的理解也不尽相同。有人认为它是由计算机网、信息系统和电信基础设施共同构建的、无时空连续特征的信息环境;有人认为它是因特网和万维网(WWW)的代名词;但更多的人认为Cyber-space不限于计算机网络,还应包括蜂窝移动通信、天基信息系统等。有人认为Cyberspace是一种隐喻(metaphor),是概念上的虚拟信息空间;有人认为这个空间是社会交互作用的产物,包括从认知到信息再到物理设施三个层次。还有人强调Cyberspace和陆、海、空、天等物理空间的根本区别是:前者是非动力学(non-kinetic)系统,而后者是动力学(kinet-ic)系统。
牛津字典对“网络空间”的定义是:网络空间是通过计算机和全球因特网进行通信、控制和信息交换的虚拟空间。
国内对网络空间的定义也没有完全统一。著名网络安全专家方滨兴院士给出的定义是:“网络空间是人运用信息通信技术系统进行数据交互的虚拟空间。其中,“信息通信技术系统”包括各类因特网、电信网、广电网、物联网、在线社交网络、计算系统、通信系统和控制系统等电磁或数字信息处理设施;“数据交互”是指网民运用电磁或数字信息等形式所进行的信息通信技术活动”。它包含三个要素。
(1)载体:信息通信系统(包括各类因特网、电信网、广电网、物联网、在线社交网络、计算系统、通信系统和控制系统等,以及电子或数字信息处理设备等)。
(2)主体:网民、用户。
(3)规则:构造一个集合,用规则管理起来,称为“网络空间”。
上文介绍了“网络空间”这一重要概念,下面来讨论“网络空间安全(Cyberspace Se-curity,简称Cybersecurty)”。
网络空间安全涉及网络空间中电磁设备、电子信息系统、运行数据和系统应用中所存在的安全问题,既要防止、保护并处置“信息通信技术系统”及其所承载的数据受到损害,也要应对这些信息通信技术系统所引发的政治安全、经济安全、文化安全、社会安全与国防安全。针对上述风险,需要采取法律、管理、技术和自律等综合手段来应对,确保机密性、可用性、可控性得到保障。
网络空间安全主要研究网络空间中的安全威胁和防护问题,包括基础设施、信息系统的安全和可信,以及相关信息的保密性、完整性、可用性、真实性和可控性等相关理论和技术。从层次角度来看,网络空间安全主要包含四个层次的安全,从低到高分别如下。
(1)设备层安全:在网络空间中信息系统设备所面对的安全问题,主要包括:物理安全、辐射泄密、电子对抗、移动终端安全和硬件可靠等。
(2)系统层安全:在网络空间中信息系统自身所面对的安全问题,主要包括:运行安全、网络窃密、网络对抗、计算安全、传输安全、无线信道安全和软件安全等。
(3)数据层安全:在网络空间中处理数据时所带来的安全问题,主要包括:数据安全、密码破解、情报对抗、数据可信、数据保护和数据通信安全等。
(4)应用层安全:在信息应用过程中出现的安全问题,主要包括:内容安全、信息发掘、传播对抗、隐私保护、控制安全和身份安全等。
网络空间安全涉及的理论与技术众多,2015年教育部“网络安全一级学科论证工作组”给出的网络空间安全知识体系主要包括网络空间安全基础理论、密码学基础知识、系统安全理论与技术、网络安全理论与技术,以及应用安全技术等五大类,如图1-1所示。
网络空间安全基础理论是支撑网络空间安全一级学科的基础,为网络空间安全其他研究方向提供理论基础、技术架构和方法学指导。主要内容包括:网络空间安全数学理论、网络空间安全体系结构、网络空间安全博弈理论、网络空间安全治理与策略、网络空间安全标准与评测,以及网络空间中人的安全行为与管理。
密码学基础主要研究在有敌手的环境下,如何实现计算、通信和网络的信息编码和分析。密码学为系统、网络及应用安全提供密码机制。主要内容包括:对称密码设计与分析、公钥密码设计与分析、安全协议设计与分析、侧信道分析与防护,以及量子密码和新型密码。
系统安全理论与技术主要研究网络空间环境下计算单元(端系统)的安全,是网络空间安全的基础单元。主要研究内容包括:芯片安全、系统硬件与物理环境安全、系统软件安全、恶意代码分析与防护、可信计算,以及先进计算安全等。
网络安全理论与技术是网络空间可靠、通信安全的保障。主要内容包括:通信基础设施与物理环境安全、因特网基础设施安全、网络安全管理、网络安全防护与主动防御(含攻防与对抗),以及端到端的安全通信。
图1-1 网络空间安全理论与技术
应用是指网络空间中建立在因特网之上的应用和服务系统,如国家重要行业应用、社交网络等。应用安全研究各种安全机制在一个复杂系统中的综合应用。主要内容包括:关键应用系统安全、物联网与工控安全、社会网络安全、信息内容安全,以及数据安全与隐私保护。
当然,随着网络安全新理论、新技术的不断出现,网络空间安全涉及的理论和技术也将不断更新。
本书主要介绍的是网络安全理论与技术中的“网络攻防与对抗”“身份认证、访问控制”“计算机网络安全”,以及“密码学基础知识”中最基本的密码学知识。攻防的对象主要是计算机网络。
1.2 网络安全防护
1.2.1 网络安全属性
如前所述,网络安全防护主要是保护计算机网络系统的硬件、软件以及在网络中存储、传输和处理的数据不因偶然或恶意因素的影响而遭到破坏、更改或泄露,系统连续、可靠、正常地运行,网络服务不中断。
信息、网络或系统是否安全,主要通过安全属性来评估,主要包括以下几个。
(1)保密性(Confidentiality或Security)。对信息资源开放范围的控制,不让不应知晓的人知道秘密。保密性的保护措施主要包括:信息加密、解密;对信息划分密级,对用户分配不同权限,对不同权限的用户访问的对象进行访问控制;防止硬件辐射泄露、网络截获和窃听等。
(2)完整性(Integrity)。完整性包括系统完整性和数据完整性。系统完整性是指系统不被非授权地使用;数据完整性是使信息保持完整、真实或未受损状态,任何篡改、伪造信息应用特性或状态等的行为都会破坏信息的完整性。完整性的保护措施主要包括:严格控制对系统中数据的写访问,只允许被许可的当事人进行更改。
(3)可用性(Availability)。可用性意味着资源只能由合法的当事人使用,保证合法用户对信息的合法利用。可用性的保护措施主要有:在坚持严格的访问控制机制的条件下,为用户提供方便和快速的访问接口,提供安全性的访问工具。
(4)不可否认性(Non-repudiation)或不可抵赖性。不可否认性是指通信双方在通信过程中,对于自己所发送或接收的消息不可抵赖。也就是说,数据的收、发双方都不能伪造收、发数据的证明:信息的发送者无法否认已发出的信息,信息的接收者无法否认已经接收的信息。不可否认性的保护措施主要包括:数字签名、可信第三方认证技术等。
也有文献将可靠性(Reliability)和可信性(Dependability或Trusty)作为安全属性的一部分。
网络攻击的实施破坏了网络或信息系统的安全属性,而网络防护技术则是保护上述安全属性不被破坏。
1.2.2 网络安全威胁
我们将所有影响网络正常运行的因素称为网络安全威胁,从这个角度讲,网络安全威胁既包括环境和灾害因素,也包括人为因素和系统自身的因素。
1.环境和灾害因素
网络设备所处环境的温度、湿度、供电、静电、灰尘、强电磁场和电磁脉冲等,自然灾害中的火灾、水灾、地震和雷电等,均有可能破坏数据、影响网络系统的正常工作。目前,针对这些非人为的环境和灾害因素已有较好的应对策略。
2.人为因素
多数网络安全事件是由于人员的疏忽或黑客的主动攻击造成的,这就是人为因素,具体包括以下两种。
(1)有意:人为主动的恶意攻击、违纪、违法和犯罪等。
(2)无意:因工作疏忽而造成失误(配置不当等),对网络系统造成不良影响。
网络安全防护技术主要针对此类网络安全威胁进行防护。
3.系统自身因素
系统自身因素是指网络中的计算机系统或网络设备由于自身的原因引发的网络安全风险,主要包括以下几种。
(1)计算机硬件系统的故障。
(2)各类计算机软件故障或安全缺陷,包括系统软件(如操作系统)、支撑软件(各种中间件、数据库管理系统等)和应用软件的故障或缺陷。
(3)网络和通信协议自身的缺陷,将在1.3.1节详细分析因特网协议的安全问题。
系统自身的脆弱和不足(或称为“安全漏洞”)是造成信息系统安全问题的内部根源,攻击者正是利用系统的脆弱性使各种威胁变成现实危害的。
一般来说,在系统的设计和开发过程中有很多因素会导致系统、软件漏洞,主要包括以下几种。
(1)系统基础设计错误导致漏洞。例如,因特网在设计时未考虑认证机制,使得假冒IP地址很容易。
(2)编码错误导致漏洞。例如,缓冲区溢出、格式化字符串漏洞和脚本漏洞等都是由于在编程实现时没有实施严格的安全检查而产生的漏洞。
(3)安全策略实施错误导致漏洞。例如,在设计访问控制策略时,若不对每一处访问都进行访问控制检查,则会导致漏洞。
(4)实施安全策略对象歧义导致漏洞。即实施安全策略时,处理的对象和最终操作处理的对象不一致,如IE浏览器的解码漏洞。
(5)系统开发人员刻意留下的后门。一些后门是开发人员为调试而保留的,而另一些则是开发人员为后期非法控制而设置的。这些后门一旦被攻击者获悉,将严重威胁系统的安全。
除了上述设计实现过程中产生的系统安全漏洞外,不正确的安全配置也会导致安全事故,如短口令、开放Guest用户和安全策略配置不当等。
尽管人们越来越意识到安全漏洞对网络安全所造成的严重威胁,并采取多种措施来避免安全漏洞的出现,但因特网上每天都在发布新的安全漏洞公告,漏洞不仅存在,而且层出不穷,原因主要有以下几点。
(1)方案的设计可能存在缺陷。
(2)从理论上证明一个程序的正确性是非常困难的。
(3)一些产品测试不足,便匆匆投入市场。
(4)为了缩短研制时间,厂商常常将安全性置于次要地位。
(5)系统中运行的应用程序越来越多,相应的漏洞也就不可避免地增多。
为了降低安全漏洞对网络安全造成的威胁,目前一般的处理措施是通过打补丁来试图消除安全漏洞。但是,打补丁并不是万能的,主要原因如下。
(1)由于漏洞太多,相应的补丁也太多,补不胜补。
(2)有的补丁会使得某些已有的功能不能使用,导致拒绝服务。
(3)有时补丁并非厂商们所宣称的那样可以解决问题。
(4)很多补丁一经打上,就不能卸载,如果发现补丁因为这样或那样的原因不合适,就只好把整个软件卸载,然后重新安装,非常麻烦。
(5)漏洞的发现到补丁的发布有一段时间差,此外,漏洞也可能被某些人发现而未被公开,这样就没有相应的补丁可用。
(6)网络容量、网站数量增长太快,没有足够多的合格补丁管理员。
(7)打补丁有时需要离线操作,这就意味着关闭该计算机上的服务,这对很多关键的服务(如工业控制系统)来说也许是致命的。
(8)有时补丁并非总是可以获得的,特别是对于那些应用范围不广的系统而言,生产厂商可能没有足够的时间、精力和动机去开发补丁程序。
(9)除了利用补丁解决已有问题之外,厂商可能在补丁中添加了很多其他功能,这些额外的功能可能导致新漏洞的出现、性能下降、服务中断,或者出现集成问题和安全功能的暂时中断等。
(10)补丁的成熟也需要一个过程,仓促形成的补丁常常会有这样或那样的问题,甚至还会带来新的安全漏洞。
(11)自动安装补丁也有问题,很多自动安装程序不能正常运行。
网络对抗研究领域中一个最基础的研究方向就是漏洞挖掘,即通过测试、逆向分析等方法发现系统或软件中存在的未知安全漏洞,在其安全补丁发布之前开发出相应的攻击程序,并大规模应用。对于已发布补丁的软件,也可以通过补丁比较技术发现补丁所针对的安全漏洞的细节,以最短的时间开发出利用程序,在用户还没来得及打上补丁之前实施攻击。在这种情况下,补丁反而为攻击者提供了有用的信息。
总之,威胁网络安全的因素有很多,但最根本的原因是系统自身存在安全漏洞,从而给了攻击者可乘之机。
1.2.3 网络安全防护体系
要保障网络安全,必须将组织管理体系、技术标准体系和技术防护体系三个方面有机结合起来。组织管理体系包括:组织机构、人员编制、职责分工和教育培训。技术标准体系包括:行政法规、技术标准与规范。技术防护体系包括:物理安全防护、电磁安全防护、信息安全防护(包括网络、计算环境、基础设施和应用系统的安全防护技术,如入侵检测技术、防火墙、安全评估技术、信息认证技术、访问控制技术、加解密技术和安全态势感知技术等)。
安全保密技术与安全保密制度相辅相成,互相促进,互相制约:如果安全制度的制定和执行不到位,再严密的安全保障措施也是形同虚设;安全技术不到位,就会使得安全保密措施不完整,任何疏忽都会造成失泄密的后果;安全教育和培训不到位,网络安全相关人员就不能很好地理解、执行各项规章制度,正确使用各种安全防护技术和工具。
在构建网络安全防护体系时,要注意遵循以下原则。
(1)水桶原则。攻击针对薄弱环节;安全机制和服务设计的首要目的是防御最常见的攻击,通过提高整个系统的“安全最低点”的安全性来提高整个网络的安全性能。
(2)整体性原则。充分考虑各种安全配套措施的整体一致性,避免顾此失彼。
(3)均衡性原则。绝对安全难以达到,也不一定必要,所以需要建立合理的实用安全性与用户需求评价和平衡体系;正确处理需求、风险与代价的关系。
(4)等级性原则。等级是指安全层次和安全级别:包括信息保密程序分级、对用户操作权限分级、对网络安全程度分级(安全子网和安全区域)和对系统实现结构的分级(应用层、网络层和链路层等),从而针对不同级别的安全对象提供合适的、可选的安全解决方案。
(5)一致性原则。安全体系的设计必须遵循一系列标准,以确保各个分系统的一致性。
(6)易操作性原则。安全措施如果太复杂,不易设置和操作,使用时就很容易出错,反而更不安全。
(7)技术与管理相结合原则。仅有安全技术是不够的,还需要有配套的安全管理措施,它们相辅相成,互相促进,互相制约。
(8)统筹规划、分步实施原则。设计安全防护体系时,首先要有完整的解决方案,然后考虑时间和成本,分阶段逐步实施。在实施过程中,还需对最开始的方案进行修正。
(9)动态发展原则。安全技术和安全状态并非一成不变,而是动态变化的,因此,构建安全防护体系时,应根据形势的变化进行动态调整。
总之,网络安全不仅仅是一个技术问题或管理问题,而是一个系统工程,一定要坚持以组织管理为保障,技术标准为指南,防护技术为手段,三位一体,才能提高安全防护水平。
1.2.4 网络安全防护技术的发展过程
一般认为,网络安全防护技术的发展主要经历了三个阶段。
第一代安全技术,以“保护”为目的,划分明确的网络边界,利用各种保护和隔离手段,如用户鉴别和授权、访问控制、可信计算基(Trusted Computing Base,TCB)、多级安全、权限管理和信息加解密等,试图在网络边界上阻止非法入侵,从而达到确保信息安全的目的。第一代安全技术解决了许多安全问题。但并不是在所有情况下都能清楚地划分并控制边界,保护措施也并不是在所有情况下都有效。因此,第一代安全技术并不能全面保护信息系统的安全,于是出现了第二代安全技术。
第二代安全技术,以“保障”为目的,以检测技术为核心,以恢复技术为后盾,融合了保护、检测、响应和恢复四大类技术,包括:防火墙(Firewall)、入侵检测系统(Intru-sion Detect System,IDS)、虚拟专用网(Virtual Private Network,VPN)和公钥基础设施(Public Key Infrastructure,PKI)等。第二代安全技术也称为信息保障技术,目前已经得到了广泛应用。
信息保障技术的基本假设是:如果挡不住敌人,至少要能发现敌人或敌人的破坏。例如,能够发现系统死机、网络扫描,发现网络流量异常等。针对发现的安全威胁,采取相应的响应措施,从而保证系统的安全。在信息保障技术中,所有的响应甚至恢复都依赖于检测结论,检测系统的性能是信息保障技术中最为关键的部分。因此,信息保障技术遇到的挑战是:检测系统能否检测到全部的攻击?但是,几乎所有的人都认为,检测系统要发现全部攻击是不可能的,准确区分正确数据和攻击数据是不可能的,准确区分正常系统和有木马的系统是不可能的,准确区分有漏洞的系统和没有漏洞的系统也是不可能的。因此,出现了第三代安全技术。
第三代安全技术,以“顽存(Survivable,也称为可生存、生存等)”为目的,即系统在遭受攻击、故障和意外事故的情况下,在一定时间内仍然具有继续执行全部或关键使命的能力。第三代安全技术与前两代安全技术的最重要区别在于设计理念:不可能完全正确地检测和阻止对系统的入侵行为。第三代安全技术的核心是入侵容忍技术(或称攻击容忍技术)。容忍攻击的含义是:在攻击者到达系统,甚至控制了部分子系统时,系统不能丧失其应有的保密性、完整性、真实性、可用性和不可否认性。增强信息系统的顽存性对于在网络战中防御敌人的攻击具有重要意义。
近几年来,虽然网络安全领域取得了很多研究成果,网络安全防护措施也在不断完善,但网络安全依然面临着巨大的挑战,这些挑战主要体现在以下四个方面。
(1)通用计算设备的计算能力越来越强带来的挑战。
当前的信息安全技术特别是密码技术与计算技术密切相关,其安全性本质上是计算安全性,但是,当前通用计算设备的计算能力不断增强,对很多方面的安全性带来了巨大挑战。例如,DNA软件系统可以联合、协调多个空闲的普通计算机,对文件加密口令和密钥进行穷搜,已经能够以正常的代价成功实施多类攻击;又如,量子计算机的不断发展对主要依赖数论的公钥密码算法带来了挑战,而新型的替代密码算法尚不成熟。
(2)计算环境日益复杂多样带来的挑战。
随着网络高速化、无线化、移动化和设备小型化的发展,信息安全的计算环境可能附加越来越多的制约,这往往约束了常用方法的实施,而实用化的新方法往往又受到质疑。例如,传感器网络由于其潜在的军事用途,常常需要比较高的安全性,但是,由于结点的计算能力、功耗和尺寸均受到制约,因此难以实施通用的安全方法。当前,所谓轻量级密码的研究正在试图寻找安全和计算环境之间合理的平衡手段,但其尚有待于发展。
(3)信息技术发展本身带来的问题。
信息技术在给人们带来方便和信息共享的同时,也带来了安全问题,如密码分析者大量利用了信息技术本身提供的计算和决策方法实施破解,网络攻击者利用网络技术本身编写大量的攻击工具、病毒和垃圾邮件;由于信息技术带来的信息共享、复制和传播能力,造成了当前难以对数字版权进行管理的局面。
(4)网络与系统攻击的复杂性和动态性仍较难把握。
信息安全技术发展到今天,网络与系统安全理论研究仍然处于相对困难的状态,这些理论很难刻画网络与系统攻击行为的复杂性和动态性,直接造成了防护方法主要依靠经验的局面,“道高一尺、魔高一丈”的情况时常发生。
为了应对上述挑战,网络安全防护技术的发展将向可信化、网络化、集成化和可视化方向发展。
(1)可信化。
从传统计算机安全理念过渡到以可信计算理念为核心的计算机安全,并以此为基础来构建网络信任环境。人们开始试图利用可信计算的理念来解决计算机安全问题,其主要思想是在硬件平台上引入安全芯片,从而将部分或整个计算平台变为“可信”的计算平台。很多问题需要研究和探索,如可信计算模块、平台、软件和应用(可信计算机、可信PDA、核高机)等。
(2)网络化。
网络类型和应用的不断变化为信息安全带来了新的问题,它们显然会进一步引发安全理论和技术的创新发展。近几年来,无线网络发展很快,从传统的无线网络到现在的传感器网络,以及IP化的卫星网络,无不影响着网络安全技术的发展。各种应用的网络化对网络安全提出了越来越高的需求,也在不断促进网络安全技术的发展。云计算就是一个典型的代表。
云计算是随着网络技术高速发展而产生的技术制高点,已经对人们的工作方式和商业模式带来根本性的改变。同时,云计算模式也带来了大量新的安全问题。
(3)集成化。
从推出的信息安全产品和系统来看,它们越来越多地从单一功能向多种功能合一的方向发展。不同安全产品之间也加强了合作与联动,形成合力,共同构建安全的网络安全环境。
(4)可视化。
随着网络流量、网络安全事件和网络应用的快速增长,将海量的网络安全态势信息以易懂的图形化形式呈现出来显得非常必要。可视化不是简单地将数据图形化呈现,不是日志信息的简单分类和归集,而是深度挖掘这些原始素材背后的内在关联,以全局视角帮助网络管理者看清各种威胁,看清攻击事件的全貌,帮助了解攻击者的真正意图和目标。
1.3 网络攻击技术
1.3.1 TCP/IP协议族的安全性
本书介绍的网络攻击技术主要针对以TCP/IP协议族为基础的计算机网络,很多攻击技术的实施需要直接或间接利用TCP/IP协议族中相关协议的脆弱性,因此,本节首先对这些主要协议存在的安全问题做一个简要介绍。
1.因特网体系结构
因特网体系结构,即TCP/IP [2] 体系结构,共有4个层次,如图1-2所示。由于TCP/IP在设计时考虑到要与具体的物理传输媒体无关,因此在TCP/IP的标准中并没有对OSI/RM(Open System Interconnection/Reference Model)体系结构中的数据链路层和物理层做出规定,而只是将最低的一层取名为网络接口层。这样,如果不考虑没有多少内容的网络接口层,那么TCP/IP体系实际上就只有3个层次:应用层、运输层和网际层。
TCP/IP的最高层是应用层。在这层中有许多著名协议,如超文本传送协议HTTP、文件传送协议FTP、简单邮件传送协议SMTP和简单网络管理协议SNMP等。
图1-2 TCP/IP体系结构
再往下的一层是TCP/IP的运输层(或传输层)。这一层包括两个重要的协议,一个是面向连接的传输控制协议TCP(Transmission Control Protocol),另一个是无连接的用户数据报协议UDP(User Datagram Protocol)。
运输层下面是TCP/IP的网际层,其主要协议就是无连接的网际协议IP(Internet Proto-col),有两个主要版本IPv4和IPv6。与网际协议IP配合使用的还有4个协议,这就是Inter-net控制报文协议ICMP(Internet Control Message Protocol)、Internet组管理协议IGMP(Inter-net Group Management Protocol)、地址解析协议ARP(Address Resolution Protocol)和逆地址解析协议RARP(Reverse Address Resolution Protocol)。与IP协议一样,ICMP协议也有两个主要版本ICMPv4和ICMPv6。由于目前因特网上的网际协议仍以IPv4协议为主,也就是通常所称的IP协议,因此,如果不做特别说明,谈到IP协议时指的都是IPv4。
因特网的设计初衷是在各科研机构间共享资源,因此尽可能地开放以方便计算机间的互联和资源共享,对安全性考虑较少,导致其存在一些固有的安全缺陷,即具有一些容易被攻击者利用的特性。从整体设计上讲,一般认为,因特网的以下几个特性易被攻击者利用。
(1)分组交换。
因特网是基于分组交换的,这使得它比电信网(采用电路交换)更容易受攻击,主要表现在:所有用户共享所有资源,给予一个用户的服务会受到其他用户的影响;攻击数据包在被判断为是否恶意之前都会被转发到受害者;路由分散决策,流量无序等。
(2)认证与可追踪性。
因特网没有认证机制,任何一个终端接入后即可访问全网(而电信网则不是,它有UNI、NNI接口之分),这将导致一个严重的问题,即IP欺骗:攻击者可以伪造数据包中任何区域的内容,然后发送数据包到因特网中。
通常情况下,路由器不具备数据追踪功能,因此很难验证一个数据包是否来自其所声称的地方。通过IP欺骗隐藏来源,攻击者就可以发起攻击而无须担心对由此造成的损失负责。
(3)尽力而为(best-effort)的服务策略。
因特网采取的是尽力而为策略,即只要是交给网络的数据,无论是正常用户发送的正常数据,还是攻击者发送的攻击流量,网络都会尽可能地将其送到目的地。把网络资源的分配和公平性完全寄托在终端的自律上。现在看来,这显然是不现实的。
(4)匿名与隐私。
网络上的身份是虚拟的,普通用户无法知道对方的真实身份,也无法拒绝来路不明的信息(如邮件)。20年前,美国《纽约客》杂志以黑色幽默方式直指网络虚拟化之弊——“在因特网上,没有人知道你是一条狗”。
(5)对全球网络基础设施的依赖。
全球网络基础设施不提供可靠性、安全性保证,这使得攻击者可以放大其攻击效力:首先,一些不恰当的协议设计导致一些(尤其是畸形的)数据包比其他数据包耗费更多的资源(如TCP协议的连接请求SYN包比其他的TCP包占用的目标资源更多);其次,因特网是一个大“集体”,其中存在的很多不安全系统会严重威胁整个网络的安全。
除了上面讨论的因特网的整体性不足之外,从安全性的角度来看,TCP/IP体系中的很多协议也存在可被攻击者利用的缺陷。下面将对TCP/IP协议族中的几个主要协议及其安全缺陷做一个简要介绍,这些内容是后续章节中有关攻击技术的基础。
2.IP协议及其安全缺陷
IP协议的数据报格式如图1-3所示。
首先来介绍IP数据报首部的固定部分中的几个主要字段。
(1)版本。指IP协议的版本,值4表示IPv4,值6表示IPv6。
(2)首部长度。可表示的最大数值是15个单位(一个单位为4B),因此IP的首部长度的最大值是60B。当IP分组的首部长度不是4B的整数倍时,必须利用最后一个填充字段加以填充。最常用的首部(固定首部)长度就是20B,即不使用任何选项。
(3)总长度。指首部和数据之和的长度,单位为B。总长度字段为16bit,因此数据报的最大长度为65535B(即64KB)。
IP层下面的每一种数据链路层协议都有其自己的帧格式,其中包括数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个IP数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过MTU的值。当数据报长度超过网络所容许的最大传送单元MTU时,就必须将过长的数据报进行分片后才能在网络上传送。这时,数据报首部中的“总长度”字段不是指未分片前的数据报长度,而是指分片后每片的首部长度与数据长度的总和。
图1-3 IP数据报的格式
(4)标识(identification)。它是一个计数器,用来产生数据报的标识。当IP协议发送数据报时,它就将这个计数器的当前值复制到标识字段中。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(5)标志(flag)。目前只有前两个比特有意义。
●标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
●标志字段中间的一位记为DF(Don′t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。
(6)片偏移。指出较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。片偏移等于5就表明偏移量为40 B。每个分片的长度一定是8B(64 bit)的整数倍。
(7)生存时间。记为TTL(Time To Live)。用来控制数据报所通过路由器的最大跳数。当源站发送数据报时,它在此字段写入一个数。这个数值约为任何两个主机之间的路由器数的两倍。当路由器收到一个数据报时,它先将此字段的值减1。若在减1之后此字段的值是0,路由器就丢弃该数据报。
(8)协议。指出此数据报携带的数据使用的是何种协议,以便使目的主机的IP层知道应将此数据报上交给哪个进程。
(9)首部检验和。只检验数据报的首部,不包括数据部分。这是因为数据报每经过一个结点,结点处理机就要重新计算一下首部检验和(生存时间、标志和片偏移等字段可能发生变化)。若将数据部分一起检验,计算的工作量就太大了。
(10)源地址。数据报的源IP地址。
(11)目的地址。数据报的目的IP地址。
IP协议是无状态、无认证协议,其自身有很多特性易被攻击者利用。
(1)IP协议没有认证机制。
由于IP没有来源认证,IP包中的所有字段几乎都可以伪造。例如,IP协议中没有相应的控制来防止数据包被篡改,攻击者可以伪造首部检验和字段,或可以重新计算检验和以使网络结点不会丢弃数据包;由于IP协议本身对IP数据包是否来自真正的源地址不提供任何保障,因此攻击者可以进行IP源地址假冒。
很多需要重写IP首部的攻击都要用到IP欺骗,主要的攻击包括:拒绝服务攻击、中间人攻击、源路由攻击、客户端攻击和服务器端攻击等。
(2)数据包分片。
如前所述,由于底层协议MTU的限制,IP数据报可能需要先分片,到达目的地后再重组。这一机制可以被攻击者利用,例如:借此攻击那些不能正确处理数据报分片异常(如分片重叠)的主机,用于绕过防火墙,或逃避入侵检测系统的检查。
(3)寻址与协议选项。
数据报的寻址信息及协议选项的信息泄露了部分网络拓扑信息。记录路由或时间戳的协议选项可被攻击者用于网络侦察。
(4)访问控制与带宽控制。
IP协议没有访问控制机制,使得攻击者可以查看上层协议(如TCP、UDP等)的内容;攻击者还可以利用IP协议没有带宽控制的缺陷,进行包风暴攻击来消耗带宽和系统资源,从而导致拒绝服务攻击(将在第5章介绍)。
3.ICMP协议及其安全缺陷
为了提高IP数据报交付成功的机会,在网际层使用了ICMP协议[RFC 792]。ICMP允许主机或路由器报告差错情况、提供有关异常情况的报告。ICMP报文作为IP层数据报的数据,加上数据报的首部后组成数据报发送出去。ICMP报文格式如图1-4所示。
图1-4 ICMP报文的格式
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
ICMP报文的前4个字节是统一的格式,共有3个字段:即类型、代码和检验和。接下来的4个字节的内容与ICMP的类型有关。再后面是数据字段,其长度和格式取决于ICMP的类型。ICMP报文类型字段的值与ICMP报文类型的对应关系如表1-1所示。
表1-1 类型字段的值与ICMP报文类型的关系
ICMP报文的代码字段是为了进一步区分某种类型中的几种不同的情况。检验和字段检验整个ICMP报文。
ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机,因而被广泛应用。
(1)利用“目的不可达”报文对攻击目标发起拒绝服务攻击。
(2)利用“改变路由”报文破坏路由表,导致网络瘫痪。
(3)木马利用ICMP协议报文进行隐蔽通信(将在第6章介绍)。
(4)利用“回送(Echo)请求或回答”报文进行网络扫描或拒绝服务攻击。
利用ICMP协议进行拒绝服务攻击的详细情况将在第5章介绍。
4.UDP协议及其安全缺陷
UDP协议格式如图1-5所示,包括两个字段:数据字段和首部字段。首部由4个字段组成,每个字段都是两个字节。
由于UDP协议提供的是不可靠的数据传输服务,所以不需要应答,因而UDP的源端口号是可选的,如果不用,可将其置为0。
同样,检验和字段也是可选的。UDP计算检验和的方法和计算IP数据报首部检验和的方法相似,不同之处在于:IP数据报的检验和只检验IP数据报的首部,但UDP的检验和是将首部和数据部分一起检验。详细情况请读者参见参考文献[19]。在伪造或篡改UDP数据报时,需要重新计算UDP检验和。
尽管UDP协议提供的是不可靠数据传输服务,但由于其简单高效,因此有很多应用层协议利用UDP作为传输协议,如域名解析协议(DNS)、简单网络管理协议(SNMP)、网络文件系统(NFS)、动态主机配置协议(DHCP)和路由信息协议(RIP)。如果某一应用层协议需要可靠传输,则可根据需要在UDP基础上加入一些可靠机制,如重传、超时和序号等,或直接利用TCP协议。
UDP协议可以用来发起风暴型拒绝服务攻击。
图1-5 UDP数据报格式
5.TCP协议及其安全缺陷
TCP协议报文段格式如图1-6所示,由首部和数据两部分构成。由于TCP的全部功能都体现在它首部各字段的作用中,因此,只有弄清TCP首部各字段的作用才能掌握TCP的工作原理。下面将对一些主要字段做一个简要介绍。
图1-6 TCP报文段格式
TCP报文段首部的前20B是固定的,后面有4N字节是根据需要而增加的选项(N必须是整数)。因此TCP首部的最小长度是20B。
首部固定部分主要字段的意义如下。
(1)序号占4B。TCP是面向数据流的协议,即可将它传送的报文看作连续的数据流。为此,TCP把在一个TCP连接中传送的数据流中的每一个字节都编上一个序号。整个数据的起始序号在连接建立时设置。首部中的序号字段的值则是本报文段所发送的数据的第一个字节的序号。
(2)确认号占4B,是期望收到的下一个报文段首部的序号字段的值。例如,A正确收到了B发送过来的一个报文段,其序号字段的值是501,而数据长度是300B,这就表明A已正确收到了B发送的序号在501800之间的数据。因此,A期望收到B的下一个报文段的首部中的序号字段应为801,于是A在发送给B的响应报文段中将首部中的确认号置为801。
(3)数据偏移占4bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,即TCP报文段首部的长度。但应注意,“数据偏移”的单位不是字节而是32bit字(即以4B长的字为计算单位)。由于4bit能够表示的最大十进制数字是15,因此TCP首部的最大长度不能超过60B。
下面的6个比特是说明本报文段性质的控制比特,也就是通常所说的标志位,它们的意义如下。
1)紧急位(URG)。当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。该比特现在已很少使用。
2)确认位(ACK)。当ACK=1时,确认号字段有效;当ACK=0时,确认号无效。
3)推送位(PSH)。当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP就可以使用推送(push)操作。这时,发送端TCP将推送比特PSH置为1,并立即创建一个报文段发送出去。接收TCP收到推送比特置为1的报文段后,就尽快地(即“推送”向前)交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。PSH比特也可称为急迫位。同样,该位已很少使用。
4)复位位(RST)。当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后重新建立传输连接。复位比特还用来拒绝一个非法的报文段或拒绝打开一个连接。复位比特也可称为重建比特或重置比特。
5)同步位(SYN)。在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。因此,同步位SYN置为1,就表示这是一个连接请求或连接接受报文。关于连接的建立和释放,后面还将进行讨论。
6)终止位(FIN)。用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
下面介绍TCP连接的建立过程,即三次握手(three-way handshake)或三次联络。
主机A的TCP向主机B的TCP发出连接请求报文段,其首部中的同步比特SYN应置为1,同时选择一个序号x,表明在后面传送数据时的第一个数据字节的序号是x。在图1-7中,一个从A到B的箭头上标有“SYN,SEQ=x”就是这个意思。
主机B的TCP收到连接请求报文段后,如同意,则发回确认。在确认报文段中应将SYN置为1,确认号应为x+1,同时也为自己选择一个序号y。
主机A的TCP收到此报文段后,还要向B给出确认,其确认号为y+1。
运行客户进程的主机A的TCP通知上层应用进程,连接已经建立(或打开)。
当运行服务器进程的主机B的TCP收到主机A的确认后,也通知其上层应用进程,连接已经建立。
图1-7 建立TCP连接的三次握手过程
释放TCP连接的过程与建立过程类似,如图1-8所示。
图1-8 TCP连接释放的过程
同ICMP协议一样,TCP协议也被攻击者广泛利用。
(1)由于一台主机或服务器所允许建立的TCP连接数是有限的,因此,攻击者常常用TCP全连接(完成三次握手过程)或半连接(只完成二次握手过程)来对目标发起拒绝服务攻击,如SYN Flood攻击、TCP连接耗尽型攻击等。
(2)序号预测。如前所述,TCP报文段的初始序号(ISN)在TCP连接建立时产生,攻击者向目标主机发送连接请求可得到上次的序号,再通过多次测量来回传输路径得到攻击主机到目标主机间数据包传送的来回时间(RTT)。已知上次连接的序号和RTT,就能预测下次连接的序号。若攻击者推测出正确的序号就能伪造有害数据包并使目标主机接受。有关TCP序号预测的详细情况可参见参考文献[11]。
(3)网络扫描。攻击者可以利用TCP连接请求来进行端口扫描,从而获得目标主机上的网络服务状态,进一步发起有针对性的攻击。
6.ARP协议及其安全缺陷
ARP用于将计算机的网络地址(32位IP地址)转化为物理地址(48位MAC地址)[RFC826]。以太网中的数据帧从一台主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定网络接口的,而不是根据32位的IP地址。因此,内核(如驱动)必须知道目的端的硬件地址才能发送数据。
每台主机均有一个ARP高速缓存(ARP Cache),保存主机知道的所有IP地址和MAC地址的对应关系。在Windows系统中,使用arp-a命令就可以查看本地ARP高速缓存的内容。通常情况下,一台主机的网络驱动程序要发送上层交来的数据时,会查看其ARP缓存中的IP地址和MAC地址的映射表。如果表中已有目的IP地址对应的MAC地址,则获取MAC地址,构建网络包发送,否则就发送ARP请求,等待拥有该IP的主机给出响应。发出请求的主机在收到响应后,更新其ARP缓存。
ARP协议对收到的ARP响应不做任何验证就更新其ARP缓存,即允许未经请求的ARP广播或单播对缓存中的IP-MAC对应表表项进行删除、添加或修改。这一严重的安全缺陷,经常被攻击者用来进行各种网络攻击,列举如下。
(1)网络嗅探。攻击者可以伪造ARP响应,从本地或远程发送到本局域网中,修改ARP缓存,从而重定向IP数据流到攻击者主机,达到窃听、假冒或拒绝服务(如IP地址冲突、网络数据包定向到非目的主机)的目的。有关这类攻击的详细情况将在第8章介绍。
(2)阻止目标的数据包通过网关。局域网一般通过网关与外网联接,所有与外网计算机有通信关系的计算机上的ARP缓存中都存在网关IP地址和MAC地址的映射记录。如果该记录被攻击者用假冒的ARP响应更改,那么该计算机向外发送的数据包将总被发送到错误的网关MAC地址上,导致该计算机不能与外网通信。
1.3.2 网络攻击的一般过程
2001年以前,攻击者采用的主要攻击方式是收集和截获信息。事实上,许多早期的黑客也都处于同样的状态。而现在,黑客攻击成了一门生意:人们可以通过在线媒体轻易地雇佣一名黑客去渗透一个系统,获取数据和机密信息。攻击者不断实践网络渗透技术,从简单的“突破”和窃取信息(如知识产权,政治、军事和经济情报等)到分布式拒绝服务攻击,攻击的影响力和破坏力越来越大。
当网络攻击上升到网络战这一层次时,“网络攻击”也就演变成了“网络作战”。广义上讲,计算机网络作战包括:①计算机网络攻击,是指各种通过计算机网络扰乱、否认、功能或性能降级、损毁计算机和计算机网络内的信息、计算机或网络本身的行为;②计算机网络侦察,是指从目标信息系统或网络收集信息的行为;③计算机网络防御,是指使用计算机网络分析、探测、监控和阻止攻击、入侵、扰乱,以及对网络的非授权访问。狭义上讲,网络作战专指网络攻击。
近几年来,作为网络战时代的一个重要标志,高级持续性威胁(Advanced Persistent Threats,APTs)快速发展。APT攻击是一种针对特定对象,长期、有计划、有组织的网络攻击行为,其一般的攻击过程如图1-9所示。2010年9月曝光的震网病毒(Stuxnet)攻击伊朗核电站事件就是一起典型的APT攻击。
尽管网络攻击的目标各有不同,有的是政府和军队网络,有的是银行系统,有的是企业的信息中心;攻击的方法也形形色色,有的是采用缓冲区溢出攻击,有的是采用口令攻击,有的是采用拒绝服务攻击,有的是采用恶意程序攻击,但大多数网络攻击过程都具有共同点,一般而言都遵循“六阶段法”,包括网络侦察、网络扫描、网络渗透、权限提升、维持及破坏、毁踪灭迹共6个阶段。
(1)网络侦察。也称“踩点”,在网络中发现有价值的站点,收集目标系统的资料,包括各种联系信息、IP地址范围、DNS及各种服务器等。将在第3章介绍网络侦察技术。
(2)网络扫描。使用各种扫描技术检测目标系统是否与因特网相接,以及可访问的IP地址(主机扫描)、所提供的网络服务(端口扫描)、系统的体系结构、名字或域、操作系统类型(操作系统识别)、用户名和组名信息、系统类型信息、路由表信息和系统安全漏洞(漏洞扫描)等,进而寻找系统中可攻击的薄弱环节,确定对系统的攻击点,探测进入目标系统的途径。这一步是制定攻击方案的基础。将在第4章介绍网络扫描技术。
图1-9 APT攻击的一般过程
(3)网络渗透。基于网络侦察和扫描结果,设法进入目标系统,获取系统访问权。一般在操作系统级别、应用程序级别和网络级别上使用各种手段获得系统访问权限,进入目标系统,具体采用的方法有缓冲区溢出漏洞攻击、口令攻击、恶意程序、网络监听和社会工程学等,其中利用缓冲区溢出进行攻击最为普遍,据统计,80%以上成功的攻击都是利用缓冲区溢出漏洞来获得非法权限的。
(4)权限提升。攻击获取的权限往往只是普通用户权限。攻击者通常会以合法身份进入系统,并利用系统本地漏洞、解密口令文件,利用安全管理配置缺陷、猜测和窃听等手段获取系统的管理员或特权用户权限,从而得到权限的扩大和提升,进而开展网络监听、清除痕迹或安装木马等工作,为后续攻击做铺垫。
(5)维持及破坏。攻击者在控制系统后,首先要做的是维持访问权限,方便下次进入系统。一般利用特洛伊木马、后门程序和rootkit等恶意程序或技术来达到目的,此过程最强调的是隐蔽性。同时,根据预定攻击目的和攻击时机,执行攻击动作,如获取目标系统中的敏感信息或破坏目标系统,或以目标系统为跳板攻击网络中的其他主机或系统。
(6)毁踪灭迹。攻击者在完成攻击后离开系统时需要设法掩盖攻击留下的痕迹,否则其行踪将很快被发现。主要的工作是清除相关日志内容、隐藏相关的文件与进程,以及消除信息回送痕迹等。
根据攻击目的和攻击方法的不同,一次攻击过程可以包含以上全部或部分步骤。
目前,攻击方法的分类没有统一的标准。业界主要有两种分类方式,一种是基于攻击实施手段的网络攻击分类,包括中断、拦截、窃听、篡改和伪造。另一种是基于经验术语的分类方法,即按照行内普遍承认的名称来分,这也是目前主流的分类方法。在此分类标准下,攻击方式有:恶意代码(病毒、蠕虫、特洛伊木马)、拒绝服务、非授权资料拷贝、侵扰、软件盗版、隐蔽信道、会话劫持、IP欺骗、口令窃听与破解、越权访问、侦察、扫描、监听、逻辑炸弹、陷门攻击、电磁泄露、服务干扰、溢出攻击、SQL注入和XSS攻击等。
本书主要介绍其中与计算机网络有关的攻击技术的基本原理,包括网络侦察、网络扫描、溢出攻击、拒绝服务攻击、恶意代码(包含病毒、蠕虫和木马)、口令破解、网络监听、Web网站攻击(SQL注入、XSS攻击和Cookie欺骗)等。
1.4 黑客
当人们谈到网络安全时,经常提到的一个词就是“黑客(hacker) [3] ”。今天,在大多数人的脑海中,黑客就是指那些专门利用网络进行破坏或入侵计算机非法窃取他人信息的人。实际上,在20世纪60年代,黑客一词极富褒义,指那些能够独立思考、智力超群、奉公守法、热衷研究、编写程序的计算机迷,他们熟悉操作系统知识、精通各种计算机语言和系统、热衷于发现系统漏洞并将漏洞公开与他人共享,或向管理员提出解决和修补漏洞的方法。例如,system hacker是指熟悉操作系统的设计与维护的人,password hacker专指精于密码破解的人,而computer hacker则是指通晓计算机的高手。一个黑客即使从意识和技术水平上均已达到黑客水平,也绝不会声称自己是一名黑客,因为黑客头衔只有大家公认的,没有自封的,他们重视技术,更重视思想和品质。在某种意义上,黑客存在的意义就是使网络变得日益安全完善。
作为一名黑客,道德是非常重要的,这往往决定一个黑客的前途和命运。如果开始学习的时候就是为了扬名或非法获利,那就不能称为黑客。但是虚拟的网络世界不能用现实中的规范去约束,而黑客又是在这个虚拟世界里最渴望自由和共享的。虽然网络上有很多黑客道德、守则或章程,但是这些所谓的道德往往都是一纸空文,黑客们真正遵守的是来自内心的道德准则,是一种信仰而不是外在的人为规定的守则。只有来自黑客内心的道德才可以真正约束他们。
史蒂夫·利维在其著名的《黑客简史》中总结了早期黑客所遵行的5条道德准则。
(1)通往计算机的路不止一条。
(2)所有的信息都应当是免费的。
(3)打破计算机集权。
(4)在计算机上创造艺术和美。
(5)计算机将使生活更美好。
遵循这些准则的黑客为计算机和网络体系结构的开放、安全、发展做出了重要贡献。
要成为一个高水平的黑客,需要学习和掌握大量的多学科知识,图1-10显示了成为一名Windows平台下高水平黑客的学习路线图。要想完成这些内容的学习,必须具有坚韧的毅力,浓厚的兴趣,强大的自学能力和实践能力。因此,只有少数人能达到顶峰。
除了要精通大量的攻防技术外,从事网络攻防工作的人还必须具有良好的攻防思维和意识。要相信“一切皆有可能”“边界在于想象力”“条条大路通罗马”“目标可能是陷阱,时刻警惕着!”。
时至今日,黑客一词的含义已经发生了翻天覆地的变化,现指专门入侵他人系统进行不法行为的计算机高手。对这些人更准确的称呼应该是cracker,一般翻译成“骇客”。这类人在真正的hacker眼中层次很低,也正是由于这些人的出现玷污了“黑客”一词,使人们把黑客和骇客混为一体。为了区分,将那些从不进行破坏活动的黑客称为“白帽黑客”或“极客(Geek)”。
现在,网络上出现了越来越多的cracker,他们只会使用免费或购买的入侵工具,在网络上为所欲为:诸如窃取他人隐私,使他人的计算机或网络瘫痪等,给人们带来巨大的经济和精神损失。
1.5 习题
1.简述“网络空间安全”的发展过程。
2.简述通过打补丁为什么不能完全解决网络安全问题。
3.从体系结构上讲,因特网有哪些不足之处?
4.TCP协议的哪些字段或特性可被攻击者利用?
5.IP协议的哪些字段或特性可被攻击者利用?
6.ARP协议的哪些字段或特性可被攻击者利用?
7.ICMP协议的哪些字段或特性可被攻击者利用?
8.简要分析当前的网络安全形势。
9.简要分析威胁网络安全的主要因素。
10.网络或信息系统的安全属性有哪些?简要解释每一个安全属性的含义。
图1-10 Windows下黑客学习发展路线图