6.2.2 攻击建模过程
网格攻击建模的过程如图6-1所示,主要包括明确系统目标、建立系统总体体系结构、对目标系统进行分解、标识资产、标识威胁、标识脆弱性、标识攻击,以及评估攻击等步骤。
![]() |
| 图6-1 网格攻击建模的过程 |
通过这几个步骤最终形成针对目标网格系统的攻击模型,其中应该包括对网格系统的详细描述和详细的攻击列表。
1.明确系统目标
在这个步骤中主要明确目标网格系统的建设目标,建设目标又可以分为功能目标和安全目标。功能目标主要包括网格系统建设要为用户提供哪些服务,这些服务要达到的服务质量及其涵盖的用户范围等;安全目标主要包括网格系统建设要提供哪些安全保护机制,要达到何种安全程度等。
下面是GIG-NCES系统的功能目标和安全目标。
(1)功能目标
— 提供全面的网络访问功能。
— 保证作战任务的有效实施。
— 保证核心服务的可靠互操作。
— 提供在强壮性和可靠性方面具有优势的计算能力。
— 保证信息的及时性和准确性。
— 保证更高的服务质量。
— 为所有用户提供有选择的核心服务。
— 通过动态协作解决问题。
— 用户可以为特定的作战任务定义所需的服务。
(2)安全目标
— 提供终端用户的认证服务。
— SOAP消息的认证服务。
— 提供基于角色的授权机制。
— 对重要信息和资源的访问控制服务。
— 消息的加密保护。
— 建立公钥基础设施。
— 不同信任域间的安全认证和授权。
— 信息的私密性。
— 信息的完整性。
— 信息的不可否认性。
— 资源访问的安全性和透明性。
— 资源访问的可控性。
— 操作的可追究性。
功能目标和安全目标的建立可以帮助我方明确攻击的目标,而目标系统的安全目标是对攻击的防范机制。这些安全目标中所涉及的安全机制限制可以使用的攻击手段,在具体的攻击计划和攻击步骤中必须对这些安全机制加以考虑。
2.建立系统总体结构
在这个阶段,主要明确目标网格系统的总体结构。明确目标网格系统所要完成的主要功能、体系结构和物理部署配置,以及建立目标网格系统所使用的主要技术。通过这个过程可以对目标网格系统有一个全面的认识,并尝试发现在设计或实现时的潜在脆弱性。
在这个阶段主要完成下面的任务。
(1)建立系统体系结构图
为建立系统体系结构图,可以首先建立一个网格部署的原始图。通过这个图来描述目标网格的组成部件和结构,以及构成的子系统及其部署上的特性。这个图开始不一定能够反映网格系统的全部部署情况,但可以在今后的过程中通过对目标网格的不断深入了解和情报搜集,在部署想定中增加新的内容,如网格所部署的认证机制、授权机制和通信机制等。图6-2所示为GIG-NCES项目的总体结构图。
![]() |
| 图6-2 GIG-NCES项目的总体结构图 |
对于GIG这种大型的网格系统,需要建立不同域附属图,例如,用来建模表示中间层应用服务的图,或者描述与外部系统交互的模型。对于NCES,可以分别为其不同的核心服务建立体系结构图。
在建立体系结构图的过程中要完成下面的几个步骤。
步骤1 明确系统物理部署的拓扑结构:这个拓扑结构中要反映网格应用中所包括服务的总体结构,指明内部组件和外部依赖,以及用户对系统服务如何访问等。这个结构不可能一次完成,可以通过一个不断求精的过程来得到,这个过程决定了哪些威胁是属于要考虑的范围。
步骤2 明确系统逻辑结构层次:总体结构图中应该反映目前应用的层次,包括任务层和数据访问层等。随着对目标系统的了解的深入,不断完善对目标系统的结构层次划分,最好能包括物理服务的边界,如NCES系统构建的逻辑层次如图6-3所示。
![]() |
| 图6-3 NCES逻辑层次图 |
步骤3 明确系统的关键组件:包括每个层次所包括的关键部件,随着对目标系统了解的深入,不断细化有关系统关键组件的信息,包括组件内部处理过程和组件的输入输出等信息。
步骤4 明确系统的关键服务:对系统内部的关键服务要详细了解,包括服务的内部处理机制及边界处理情况等。
步骤5 明确系统的通信协议:通信协议包括服务和组件之间的通信协议,以及安全协议等。随着对系统的研究深入,要明确协议的消息交互的过程、协议的参与方和协议的消息内容。
步骤6 明确系统的主要用户标识:随着对目标系统的研究深入,要了解系统用户的标识和相关服务的账户情况,这些是形成攻击的重要内容。
步骤7 明确系统的外部依赖:系统对外部的依赖情况可能会对系统造成更多的威胁,如系统要考虑外部系统出现故障时对系统造成的威胁。
(2)标识系统主要角色
标识网格系统的主要角色包括明确网格系统中有哪几类用户?这些用户能执行哪些操作?负责完成哪些功能?哪些用户负责管理和配置网格?哪些用户是特权用户?哪些用户只能读取数据?哪些用户能够增加、修改和删除数据?
通过对用户角色的研究可以了解哪些是网格系统中允许发生的操作,哪些是不允许发生的操作。
(3)明确系统重要应用场景
一个网格系统特定的威胁和攻击通常和这个网格应用的特性和功能相关,因此明确网格系统的重要特性及其用来完成工作,对于研究其威胁和脆弱性十分重要。而用户案例可以辅助我方得到这些信息,标识出应用的主要功能和特性。对于这些功能,要重点考虑创建、读写、修改和删除等方面的问题。
网格系统的关键特性通常在用户案例环境中有解释,它们可以辅助我方明确网格应用将如何被使用,同样也可以使我方了解可能存在的误用。用户案例可以帮助标识数据流和在威胁建模过程中把握关键的威胁。
由于网格系统的复杂性,所以应避免列出所有可能的用户案例,而应从标识主要的应用案例开始。这些主要案例中包括负责网格应用的主要功能,并重点关心建立、读写和删除等操作。
下面以GIG-NCES静态服务发现想定案例来说明这个过程,该想定是发现核心服务的一个使用场景。通过这个想定可以了解发现服务如何为NCES的开发人员和用户提供静态的服务发现服务,这种服务可以提供更灵活、更具有扩展性和更强壮的服务。想定过程如图6-4所示。
步骤0 服务提供者通过服务发布服务,将自己所提供的Web服务发布到UDDI注册服务器。这个步骤是提前发生的。
步骤1 一个具体应用的开发人员到服务查询提供处来浏览或查询这个应用会用到的服务。
步骤2 服务查询过程建立一个服务查询请求并将其发送到服务查询服务,服务查询服务执行具体的查询并将可以匹配的服务例程返回。
步骤3 开发人员在设计时使用得到的目标服务例程信息来配置应用进程,然后将配置好的应用进程部署到服务入口。
![]() |
| 图6-4 想定过程 |
步骤4 当应用建立并运行后,用户可以登录并使用这个应用进程。
步骤5 这个应用作为一个Web服务的消费者,绑定目标服务例程并代表用户来产生SOAP请求。
通过上面的用户案例,可以发现网格Web服务查询绑定过程中潜在的威胁。例如,考虑开发人员试图利用用户的个人信息和权限访问不能访问的应用,以及服务的提供者是否会提供恶意的服务来欺骗用户。根据所定义的应用需求,这种情况不应该发生。
(4)明确核心技术
标识在网格构建中所使用的核心技术有助于发现与技术相关的威胁,对于研究GIG这类大型网格应用特别重要。因为一般很难了解GIG这种网格系统的详细设计文档和实现细节,但通常是可以了解到其所使用的技术。这样通过对网格构建技术的标识,可以明确研究范围,有助于在不了解具体网格应用内部详细设计条件下确定有效的攻击技术。
可以从网络层、应用层及系统层等几个层面来标识网格系统构建所使用的软硬件设备和核心技术。以GIG-NCES项目为例,其应用层的核心技术是Web服务,该技术是一个大的技术框架。其中包括SOAP及WSDL协议等多个协议,具体实现中还包括UDDI注册服务器、SOAP解析器和XML文档解析器等软硬件设备;在网络层的核心技术是TCP/IP协议,包括路由器及DNS解析器等软硬件设备;系统层则指在各网格节点上所运行的系统级软硬件设备,包括操作系统软件、数据库软件、虚拟机及.NET Framework等。
可以使用表6-2来记录实现所使用的技术。
表6-2 网格实现技术表
|
所 在 层 |
技术/平台 |
实现细节和功能 |
|
应用层 |
Web服务技术 |
包括登录、数据库用户、用户定义的数据库角色、表格、存储过程、视图、约束和触发器等 |
|
SOAP协议 |
Web 服务之间实现互相调用的协议,协议的消息采用XML文档格式 | |
|
WSDL协议 |
用来详细描述Web服务的输入及输出接口,通过WSDL文件用户可以调用Web服务 | |
|
XML |
一种文本标识语言,它是Web服务技术的基础,是Web服务中消息交互及功能描述等的规范语言 | |
|
SOAP解析器 |
用来解析SOAP请求,从中提取出本地模块可以理解的内容 | |
|
XML文档解析器 |
用来解析XML文档,从中提取出本地模块可以理解的信息 | |
|
Secure Sockets Layer (SSL) |
用来加密HTTP通信 | |
|
网络层 |
TCP/IP协议 |
实现网络连通的核心协议族,包括IP协议、TCP协议及ICMP协议等 |
|
IP SEC协议 |
网络层保证安全的协议,提供了网络层认证机制、通信保密机制和密钥协商机制 | |
|
路由器 |
实现网络数据包的路由 | |
|
DNS服务器 |
实现域名的解析 | |
|
系统层 |
Microsoft .NET Framework |
Web服务支撑环境,包括支持Web服务开发和运行的基础设施 |
|
Windows操作系统 |
操作系统,为大多数终端用户使用 | |
|
JAVA虚拟机 |
支持JAVA代码运行的软件环境,将JAVA的运行代码转换为本地系统的可执行代码 | |
|
Oracle数据库 |
一个关系数据库系统,用来支撑数据库应用的核心系统软件 |
3.分解目标系统
在这个步骤中要从网格系统的总体目标出发分解应用,明确与每个系统总体目标相关的核心服务。在此基础上明确所涉及服务的信任边界、数据流、入口点和特权代码,并完成相关服务所使用的安全轮廓。通过这个过程,在攻击目标的指导下对目标网格进行详细分解,更深入地了解网格应用的建立和运行机制。这样一方面有助于发现网格系统的脆弱性,同时又不会失去目标性。图6-5所示为分解过程的不同目标。
![]() |
| 图6-5 分解过程的不同目标 |
在这个步骤中主要完成下面的任务。
(1)标识信任域
网格应用信任域的标识要首先从宏观角度考虑。在结构上,一个网格可以由分属不同组织机构管理域的网络所组成,这些组织机构自然形成一个组织级的信任域。但同时网格又可以通过虚拟组织来形成一个临时的虚拟信任域,这个虚拟信任域内的服务及人员等可能属于不同的组织机构。因此可能会存在一个信任域,其中本地的访问控制策略用来控制本地人员或控制外部信任域人员对本地资源的访问。同时也存在对于一个资源可能使用不同信任域的访问控制策略来管理,具体使用哪个策略,则由服务的调用环境来决定。明确网格组织间的信任关系,以及每个组织所在的信任域和策略对于发现存在的脆弱性很重要。图6-6所示为NCES宏观信任域边界示意。
标识信任域还要从微观角度考虑,围绕着网格应用中每个服务确定其信任域,这些服务由网格应用的具体任务所决定。对于每个服务,要试图找出它对上行的数据流和用户输入是否可信,对于不可信的数据流和输入如何实现认证和授权。同时要试图找出服务对哪些调用的代码是可信的,对于不可信的调用如何实现认证和授权。网格应用是否能够保证进入信任域的入口点都由适当的守护进程所看护,并且入口点的接收者对进入这个信任域的所有信息都进行了验证。
![]() |
| 图6-6 NCES宏观信任域边界示意 |
还需要考虑服务之间的信任关系,一个特定的服务是否信任其上层服务来对最终用户进行认证和授权,或这个服务需要使用自己的访问控制服务?或者一个服务是否信任上层服务来传递正确的数据?
例如,在图6-7中,用户通过边界Web应用访问服务提供者所提供的其他服务。在这个过程中,边界Web应用核心安全服务来代表用户访问服务提供者提供的服务。在这个场景中,边界Web应用信任核心安全服务对用户的授权信息,边界服务对用户的认证不包括在核心服务中。
![]() |
| 图6-7 NCES微观信任域示例 |
(2)标识数据流
标识数据流的简单方法是从网格应用的最顶层开始,通过分析不同组织系统之间的数据流来重复分解网格应用。例如,分析传感器栅格和指控栅格之间的数据流动,传感器栅格和传输栅格之间的数据流动,然后分析一个组织内部不同服务组件之间的数据流。
通过信任域的数据流特别重要,因为对一个信任域内部的重要资产进行攻击,通常是通过信任域外部进入到内部进行的。因此要标记从信任域外传入的数据路径,并了解信任域对外部数据进行了哪些验证。这些路径将来会成为攻击的可能接入途径,要构造各种攻击手段来利用这些途径进入到某个信任域内部,并分析截断哪些路径会对哪些服务造成影响。
(3)标识入口点
应用的入口点也是攻击的入口点,入口点可以包括监听HTTP请求的前端Web应用。这个入口点是向客户提供的。其他入口点,例如应用内部结构层次之间或模块之间的入口点,只是为了支持模块内部之间通信。但是应该知道这些入口点存在于何处并接收何种类型的输入,以避免攻击者通过绕过前端的入口点而直接攻击内部入口点。
对于每个入口点,应该能够保证有负责授权和验证的守护程序。
逻辑应用入口点包括由Web页面提供的用户接口、Web服务提供的服务接口及服务组件、.NET远程组件和提供异步入口点的消息队列。物理和平台入口点包括端口和套接字等。
(4)标识特权代码
标识访问特定类型安全资源和执行其他特权操作的特权代码,安全资源类型包括DNS服务器、目录服务器、环境变量、事件日志、文件系统、消息队列、性能计数器、打印机、注册表、套接字和Web服务;安全操作包括自由代码调用、反射、序列化及代码访问安全准许等。
特权代码必须通过代码安全访问策略来授予合适的代码安全访问许可权,它必须保证所封装的资源和操作不能被不信任或潜在的恶意代码所利用。.NET框架代码访问安全通过执行堆栈扫描来验证赋予调用代码的许可权,但是有时必须忽略这个过程,并简化对全部堆栈的扫描过程。例如,当使用砂箱来限制特权代码或者隔离特权代码时,用户代码容易受到引诱攻击,恶意代码通过可信的中间代码来调用用户代码。
(5)描述安全轮廓
明确进行输入验证、认证、授权和配置管理的设计和实现方法,以及应用最容易产生脆弱性的区域。通过这些工作,即可建立应用的安全轮廓。
建立安全轮廓的分类及其问题描述如表6-3所示。
表6-3 建立安全轮廓的分类及其问题描述
|
分 类 |
问题描述 |
|
输入验证 |
是否所有的输入数据都需要验证 攻击者能否插入命令或恶意数据到应用中 数据在不同的信任域之间传递时是否需要验证(域间入口点之间的数据传递) 数据库中的数据是否可信 |
|
认证 |
如果证书在网上传送,是否能够保证安全 是否使用了强账户策略 是否强制使用强口令 是否使用证书 是否对用户的口令使用了口令验证机制(如单向hash方式) |
|
授权 |
在应用的入口点处使用了哪种守护程序 在数据库中如何使用强制授权 是否使用了深层防御策略 是否只允许成功确认证书后才能访问 |
|
配置管理 |
应用支持什么样的管理接口 如何保证安全 如何保证远程管理的安全 应用使用何种配置存储,这些存储设备是如何保证安全的 |
|
敏感数据 |
应用处理何种敏感数据 敏感数据在网上存储如何保证安全 使用何种加密方式,加密密钥如何保证安全 |
|
会话管理 |
会话cookies如何产生 如何防止会话劫持 如何保证会话状态的安全 当跨网传送时,如何保证会话状态的安全 应用是如何同会话存储进行认证的 证书是否通过网络分发,应用如何保存证书以保证证书安全 |
|
分 类 |
问题描述 |
|
密码体系 |
使用何种算法和密钥技术 密钥的长度如何保证安全 是否使用自己的加密算法 密钥的更新时间是多长 |
|
参数操作 |
应用是否能够发现被篡改的参数 应用是否验证所有参数,如表单域、视图状态、cookie数据和HTTP头中的参数 |
|
异常管理 |
应用如何处理错误的情况 异常的信息是否允许发送回客户端 通常的错误信息中是否泄露有用的信息 |
|
审计和日志 |
对应用的审计是否涵盖所有层次结构中的所有服务器 如何保证日志文件的安全 |
4.标识资产
在这个步骤中要明确网格系统内的资产及其作用和价值,这对于明确攻击目标和攻击的效果很重要。资产包括有形资产和无形资产,有形资产包括服务、系统、网络和软硬件设备等,这些资产的价值较为容易衡量,如一个服务的正常运行会带来的价值可以通过一个比较正确的方法计算得到;无形资产包括网格系统中一些无形的东西,如服务的可信度和服务的可用性等。无形资产价值的增减通常是通过有形资产正常运行与否来进行,并且通常依赖于有形资产。如果有形资产都不存在,则无形资产也很难存在,因此对于资产分析的重点通常放在对有形资产的分析上。
对于网格系统有形资产的价值,不能简单地等同于网格系统各个组成部分本身的价值。而应该考虑网格系统本身的功能价值,即网格系统能够为社会和用户提供的功能。而这些功能为用户带来的价值通常要远远大于系统本身建设的花费,即系统本身的价值。因此在攻击目标的选定及攻击所取得的效果评估时,考虑网格系统内资产的功能价值量要远远比考虑资产自身价值量有意义。
此外,对于网格系统有形资产价值的分析,不能局限于这个资产本身所具有的价值。如对于一台计算机,不能简单地将其价值等同于购买这台计算机的花费,而应看其在整个系统中所处的地位和发挥的作用。如果这台机器负责一个重要服务运行,则损坏后直接导致这个服务的停止,则其价值应该等同于这个服务的价值。将单个资产的价值放到整个网格系统整体去考虑,这样可以帮助我们明确每个资产对于网格系统功能的影响程度。同时也可以明确网格系统每个任务对不同资产的依赖程度,这样对于整个攻击建模具有重要的意义。
下面讨论资产功能价值评估体系。
(1)网格系统资产结构
通过上面对网格系统总体结构的分析及对网格系统的分解,可以给出网格系统资产结构的层次划分,如图6-8所示。
![]() |
| 图6-8 网格系统资产结构层次划分 |
目标任务层是资产分析的出发点,网格系统的价值最终体现在这一层。因为对于用户来说,建设网格系统的目的是要能够为用户服务,能够完成用户最初建设网格时所设定的建设目标和建设任务。这些目标和任务反映了用户所期望的网格建设的价值,是这些目标和任务所带来的价值推动了用户花费金钱和时间建设网格应用。可以认为这些目标和任务为用户带来价值的总和构成了网格应用的总价值,在目标/任务的划分上要求每个目标任务要具有原子性,不能再有子任务。两个目标之间不能够有交集,否则可以通过将交集单独列出的方法来分解目标任务。
服务层的概念来自于面向服务的体系结构(SOA),在这个概念中将来应用的开发都将以服务来体现。要完成一个任务,可以为其构建一个相应的服务,而这个服务可能会调用其他已开发的服务或子服务来完成。一个任务可能需要多个服务来完成,每个服务都不可缺少。一个任务也可能由多个服务完成,而只需其中几个服务的协作即可正常工作。一个服务也可以支持多个任务,即多个任务中可能都用到了这个服务。服务层的服务可以认为是在网格应用开发过程中所开发的服务,是以网格系统的目标任务为目的的服务。其中包括一些通用的公共服务或系统软件,这些公共支撑系统软件或服务软件可以统一放在系统层中。
系统层资产的构成主要是公共服务软件、系统软件及支撑软件等,其共同特点是通用性且基础性的软件系统。它们并不是针对具体网格应用系统而开发的,通常是商用软件系统。
设备层资产的构成主要是网格系统中所涉及的各种硬件设备,所有的服务和功能等最终离不开硬件设备。软件系统最终要运行于硬件设备之上,因此硬件设备层是网格资产结构体系的最底层。当然硬件设备可能还可以进一步划分,但认为这种划分对于资产价值评估体系没有太多意义。
(2)资产关系描述
各层资产之间并不是相互孤立的,各个资产之间有紧密联系。通常下层资产支持上层资产实现,如服务支持上层目标任务的实现,系统层软件支持服务的实现,硬件设备是系统软件的运行环境。服务层中的资产之间也会有相互的支持关系,如一个应用服务可能要通过调用3个子服务来实现其功能,子服务还可能会调用其他的服务或系统。一个上层资产功能可以由多个下层资产支持完成,一个下层资产也可能支持多个上层资产的功能。各层资产之间的关系如图6-9所示。
![]() |
| 图6-9 各层资产之间的关系 |
对于一个具体的上层资产来说,它同下层资产的关系可以分为两种,即合取关系和析取关系。合取关系是支持上层资产功能价值的每个下层资产不可缺少的,任何一个下层资产的破坏都会造成上层资产功能价值的丧失;析取关系则指每个(或N个中的M个,M 资产的合取及析取关系如图6-10所示。 图6-10 资产的合取及析取关系 通过对网格系统各层资产之间关系的描述,可以建立一个从任务层到设备层的关系树。以任务层资产为根,而设备层资产作为树的叶子节点。这样针对一个网格即可建立一个从上到下的资产关系树,并且通过析取关系和合取关系可以得到任意层资产与顶层任务层资产之间的关系,找到每个资产对整体网格总体目标任务所起的作用。 (3)确定资产价值原则 ① 确定目标/任务价值,因为网格中的每个目标/任务都是原子性的且不相交,因此所有的目标/任务价值的和构成了这个网格的功能价值。对于每个目标/任务的价值可以通过为用户提供表格的方式,按照10分制来给出每个目标/任务的不同价值。 ② 在给定最上层资产的价值后,通过考察上层资产同下层资产之间的关系确定下层资产和上层资产功能价值的关系,从而确定下层资产的功能价值。根据前面对资产关系的描述,下层资产确定原则如下。 — 合取关系:如下层资产与上层资产之间的关系为合取关系,则每个下层资产的功能价值等于上层资产的功能价值。 — 析取关系:如下层资产与上层资产之间的关系为析取关系,则每个下层资产的功能价值等于上层资产功能价值*1/(支持完成此功能总的下层资产数-支持完成此功能的最小下层资产数+1)。 ③ 重复②,可以确定网格系统各层资产的价值。 下层资产同上层资产之间为合取关系时,则每个下层资产都是完成上层资产的必要条件。对每个下层资产的破坏等同于对上层资产的破坏,因此可认为每个下层资产的功能价值等于上层资产的功能价值。 当下层资产同上层资产之间的关系为析取关系时,则每个下层资产只能部分的支持上层资产的功能。对少量下层资产的破坏,并不能导致整个上层资产的价值丧失。只有当下层资产的完好数量少于支持完成上层功能的最少下层资产数后,上层资产的价值才会丧失。 下层资产可能和多个上层资产之间具有关系,此时只要分别考虑各个关系得到下层资产的分别表示价值,然后将这些分量求和就可以得到此下层资产的总价值。 上层资产同下层资产之间的关系可能不仅是单独的合取关系或析取关系,还可能是两种关系的混合。如两个下层资产之间先是析取构成一个上层资产功能,然后这个两个下层资产又同另外一个下层资产用合取关系构成这个上层资产功能。这种情况可以增加一些虚拟资产来分解这些关系,使上下层之间的关系都分解为简单的析取关系或合取关系,其示意如图6-11所示。

图6-11 简化关系示意
通过上面的资产功能价值评估体系,可以得到网格系统中每个资产相对于整个网格功能价值比例。通过这样比例我们可以得到一个明确的有关网格系统各层每个资产在受到损坏时,对整个网格应用的功能所造成的影响,这对于选择攻击目标具有重要的指导意义。对目标网格系统的组成资产进行分析,最终得到整个网格系统所有资产的价值,如图6-12所示。
![]() |
| 图6-12 网格系统所有资产价值图 |
5.标识威胁
在这个步骤中,将要明确可能对网格系统造成影响并危害网格资产的威胁。这些威胁可能会在用户的应用中发生,并对应用造成坏的影响。
可以使用如下两种基本的方法标识威胁。
① STRIDE方法:威胁的种类很多,如伪装、篡改和拒绝服务等,因此可以使用STRIDE模型来对应用设计和体系结构的各个方面提出问题。这是一种基于目标的方法,而这个目标可以认为是攻击者的目标。如下列问题,一个攻击者是否假冒别人的身份标识来访问服务器或Web服务?是否有人能够对网络中传输的数据或存储的数据进行篡改?是否会有人进行拒绝服务?
② 威胁分类列表法:首先将通用的威胁按照网络、主机和应用分类列出,然后将这些威胁列表应用到攻击过程和以前发现的脆弱性中。利用这种方法可以很快排除一些威胁,因为这些威胁不能应用到当前场景。
在威胁标识过程中要标识网络威胁、主机威胁和应用威胁。
(1)标识网络威胁
这是网络设计者和网络管理员的任务,对网络拓扑结构和数据流,以及路由器、防火墙、交换器配置等进行分析查找潜在的脆弱性,同时也要注意VPN等设备。
需要考虑的网络威胁如下。
使用依赖于发送者IP地址的安全机制,相对于较容易被假冒地址发送IP包(IP假冒)。
通过没有加密的网络信道发送会话标识或cookies,容易导致IP会话劫持。
通过未加密通信信道发送明文认证证书或其他敏感数据,这可能会导致攻击者对网络进行监视,获取登录证书或者通过其他敏感数据项获取。
由不安全的网络设备和服务配置所产生的脆弱性,例如,不必要的端口和协议是否关闭和停用?服务器上的TCP网络协议栈是否强壮?
(2)标识主机威胁
主机威胁标识应该用来指导整个主机安全的配置过程,标识的主要内容是将配置区分为独立的类,使得可以用结构化和逻辑的方法来应用安全设置。该方法也适合用来检查安全性,并确定脆弱点和标识威胁。对所有服务的公共配置分类可以分为补丁、修改、服务、协议、账户、文件和目录、共享、端口、审计和日志。对于每个类,标识潜在的脆弱配置。
主机威胁如下:
没有打补丁的服务器,这些服务器可能被病毒、木马、蠕虫,以及IIS漏洞等攻击。
使用未关闭的端口、协议和服务,从而增加被攻击的可能性,并使得攻击者可以通过这些端口和服务等来收集应用环境的信息。
允许非认证的匿名访问。
使用弱口令和账户可能会导致口令破解和账户假冒,并且如果账户被故意加锁,可能会造成拒绝服务攻击。
(3)标识应用威胁
定义体系结构、数据流和应用的信任域后,还要建立一个安全轮廓来描述应用如何处理一些关键问题,如认证、授权及配置管理等。
现在使用STRIDE威胁分类法来预定义威胁列表,并详细检查应用安全轮廓的每个方面。应用威胁应重点从技术威胁和代码威胁方面考虑。主要的应用威胁如下。
输入验证方式不合理导致跨站脚本攻击、SQL注入攻击和缓冲区溢出攻击。
在非加密网络信道上传输认证证书或认证cookies导致证书被截获以及会话劫持。
使用弱口令和账户导致非授权的访问。
未能保证应用配置管理部分的安全,包括管理接口等。
未能保证配置存储的保密,例如连接字符和服务账户信任状用明文表示,这些都可能造成信息的泄露。
使用过高特权的进程和服务账户,进程的权限超出了完成工作所需的权限。
使用不安全的数据访问编码技术,从而增加被SQL注入的威胁。
使用弱的加密算法或未能保证密钥的安全性,都会导致威胁。
过分信赖通过Web浏览器传输的参数的完整性,如表单域、查询字符、cookie数据及HTTP头等。这些信息容易被篡改,对这些信息的过分依赖会造成威胁。
使用不安全的异常处理导致拒绝服务攻击和系统级信息的泄露,这些重要信息的泄露会为攻击者提供信息。
审计和日志工作不充分造成否认的威胁。
6.标识脆弱性
在标识资产和威胁后,还要标识网格系统的脆弱性,可以从技术脆弱性和结构脆弱性等多个方面来标识网格系统的脆弱性。只有在明确系统存在的脆弱性后才可能利用这些脆弱性形成攻击。
技术脆弱性分析的目的就是收集网络节点(或通信链路)上关键组件的(技术)弱点信息。首先就网络节点而言,技术弱点目前广泛存在于网络设备、操作系统和应用程序中。通常分为3类,即设计弱点、实现弱点和配置弱点。其次,就通信链路而言,技术弱点主要表现为软件协议弱点和硬件配置弱点。协议的脆弱性如信息传输为加密或加密强度不够,导致信息泄露;缺乏消息认证机制,导致信息流完整性受到威胁;协议没有时效性,导致重放或拒绝服务攻击的威胁等。硬件配置弱点如无线通信时,通信频段不合适导致信息泄露;发射功率不合适导致信息传输中断或泄露;有线通信时,通信线路的电磁辐射导致信息流的外泄。标识技术弱点之后,要对技术弱点进行分析。分析的重点一是弱点可用性;二是弱点的暴露程度。弱点的可用性是指弱点被利用的难易程度,它在一定程度上影响人为威胁源对系统信息资产实施攻击的成功率;弱点的暴露程度主要体现在弱点被成功利用后,攻击者能获得的系统权限。
结构脆弱性分析主要是标识并分析网格系统网络在拓扑结构上存在的缺陷,评估的对象主要是针对网格系统的节点和通信链路。对网格系统节点而言,标识结构弱点即找出关键节点和关节点。关键节点是基于复杂网络理论,从网络的聚合度和通信效率来分析的,指对信息网络通信信息流影响较大或控制较强的节点。关节点是基于图论,从网格系统的连通性来考虑的。如果在原连通的网络拓扑结构图中去掉某一点后,原拓扑结构图即变为不连通图,那么被去掉的那一点即为一个关节点。对于网格系统通信链路而言,标识结构脆弱性就是要找出关键链路和关键路径。关键链路是从图的连通性来考虑的,如果在原连通的网络拓扑结构图中删除某边(即通信链路),原连通的拓扑结构图即变为不连通图,那么被除去的边(即通信链路)即为关键链路;关键路径是基于复杂网络理论,从网络的聚合度和通信效率来考虑的,它主要指对信息网络通信信息流影响较大或控制较强的路径。分析结构脆弱性主要是考虑节点、链路和路径的关键性或重要程度。
(1)脆弱性分析方法
脆弱性分析方法主要有两类,一是针对已知脆弱性进行分析,如基于规则的分析方法和工具等;二是针对未知脆弱性进行分析,如基于模型的形式化分析方法等。
① 基于规则的分析方法和工具。
基于规则的方法是从已知的案例中抽取特征,并归纳为规则表达。然后将目标系统与已有规则一一匹配,该方法的关键之处在于规则生成。对于单个系统组件,生成规则可能并不困难,通常就是组件测试的结果。然而在一个错综复杂的系统中,规则的生成需要专家对大量系统组件的交互关系有相当了解。然而事实上,即使专家也很难总结出所有漏洞的规则。因此基于规则的方法很适合进行局部检测,但对于整体检测则有些力不从心。现有的脆弱性评估工具,无论是基于主机的还是基于网络的工具,绝大多数都是基于规则的。它们都拥有一个“插件库”,每一个插件定义一个规则,只能搜集一个已知类型的信息或者检查一类已知类型的漏洞。
网络安全扫描是一种基于规则的计算机主机脆弱性评估方法,其中使用的技术几乎全部是基于规则的。一次完整的网络安全扫描主要分为目标发现、信息攫取和漏洞检测3个阶段。在目标发现阶段,扫描者通过发送不同类型的ICMP或TCP、UDP请求,从多种不同的方面检测目标主机是否存活,该阶段的规则生成源自网络上计算机对不同网络协议数据的不同响应;在信息攫取阶段用到的技术主要是端口扫描(Port Scanning)和操作系统探测(Operating System detection)。端口扫描技术包括TCP connect()扫描、TCP SYN扫描、TCP ACK扫描、TCP FIN扫描、XMAS扫描、NULL扫描、RESET扫描、FTP弹射扫描、UDP扫描,以及域查询应答(Domain Query Answer)等。
② 基于模型的分析方法。
基于模型的方法为整个系统建立模型,通过模型可获得系统所有可能的行为和状态,利用模型分析工具产生测试用例评估系统整体的安全。这种方法的优点在于模型的建立比规则抽取简单,而且能够发现未知的攻击模式和系统脆弱性,特别适于系统脆弱性的整体评估。基于模型的方法关键之处在于模型建立,模型如果太简单,没有描述清楚系统可能的行为,则可能导致评估结果不全面;相反,模型如果太复杂,则可能导致评估不可进行。但无论使用何种方法建立何种模型,建模之前都必须首先使用工具检测单个系统组件以获得单个组件的相关信息,这样才能够使建立的系统模型更准确。由于电子攻击的实质就是在计算机系统的状态空间内从已授权状态进入未授权状态的状态序列,而且攻击可分解为一系列子任务。子任务之间具有一定的次序,因此基于模型的脆弱性评估可以看作是寻找特定状态的可达关系。目前卡内基梅隆大学的学者在这方面的研究最为深入,他们采用的网络攻击树的和模型检测的方法可以发现网络中所有可能存在的攻击路径,并且研制了相应的自动化工具辅助建立攻击图。
此外,形式化模型的方法还普遍用于对安全协议的脆弱性分析,安全协议的设计极易出错,即使最基本的认证协议。其中参加协议的主体只有2~3个,交换的消息只有3~5条。设计一个正确且符合认证目标,并且没有冗余的认证协议也十分困难。因此20年来,为了应对这一挑战,人们设计了不同种类的形式化分析方法,投入了大量的精力。目前,研究比较广泛和深入的方法主要有4种,即基于知识与信念推理的模态逻辑方法、基于通信状态机模型的研究方法、基于知识推理的代数方法和基于顺序通信进程的CSP方法。近年来,串空间模型方法的应用也日益广泛。
(2)形成脆弱性列表
通过上面的各种手段分析网格系统后,最终要形成如表6-4所示的脆弱性列表。
表6-4 脆弱性列表
|
服务脆弱性 | |||
|
弱点名称 |
(技术)弱点可用性 |
(技术)弱点暴露率 |
关键性(结构方面) |
|
弱点1 |
-- |
-- |
5 |
|
弱点2 |
3 |
2 |
-- |
|
弱点3 |
2 |
2 |
-- |
|
…… |
|
|
|
|
系统脆弱性 | |||
|
弱点名称 |
(技术)弱点可用性 |
(技术)弱点暴露率 |
关键性(结构方面) |
|
弱点1 |
-- |
-- |
1 |
|
弱点2 |
2 |
1 |
-- |
|
弱点3 |
3 |
3 |
-- |
|
…… |
|
|
|
|
链路脆弱性 | |||
|
弱点名称 |
(技术)弱点可用性 |
(技术)弱点暴露率 |
关键性(结构方面) |
|
弱点1 |
-- |
-- |
2 |
|
弱点2 |
2 |
1 |
-- |
|
弱点3 |
3 |
||