概述
考点
- 计算机安全的定义(CIA,三个目标):(考的概率高, 背)
- 保证信息系统资产的机密性、完整性、可用性的措施和控制方法,其中资产包括硬件软件、固件以及要处理、存储和通信的信息
- 三个目标:
- 机密性:数据机密性、隐私性
- 完整性:数据完整性、系统完整性(数据的正确性和及时性)
- 可用性(确保及时可靠的访问和使用信息)
- 计算机系统资产:硬件、软件、数据、通信设施和网络
- 四种威胁后果:非授权泄露(机密性)、欺骗(系统完整性、数据完整性)、破坏(系统可用性或完整性)、篡夺(系统完整性)
- 主动攻击和被动攻击
- 被动攻击:本质是窃听或监视数据传输(不涉及对数据的修改)
- 消息内容泄露
- 流量分析
- 主动攻击:对数据流进行篡改或伪造数据流
- 重放:涉及被动获取数据单元并在稍后重传,以产生非授权的效果
- 冒充:一个实体假装成另一个不同实体的场合
- 篡改消息:合法消息的某些部分被篡改,或者消息被延迟或重新排序,从而产生非授权效果
- 拒绝服务:阻止或禁止对通信设施的正常使用或管理
- 防御机制:加密、消息鉴别、时间戳、身份鉴别、流量填充、数字签名等
- 被动攻击:本质是窃听或监视数据传输(不涉及对数据的修改)
- 基本安全设计原则(21 真题考过)
- 经济机制原则:设计尽可能简单、短小
- 安全缺省原则:访问控制应当基于许可而不是排除
- 绝对中介原则:每一次访问都应当依据访问控制进行检查
- 开放式原则:设计应当开放而非保密
- 特权分离原则:对于限定资源的访问需要多特权属性
- 最小特权原则:每个进程和系统用户都应当使用完成某项任务必需而非额外的特权集进行操作
- 最小共用原则:最小化不同用户共享的功能,提高安全性
- 心理可接受原则:安全机制不应该过度干涉用户的工作,同时也要满足用户授权访问的要求
- 攻击面是由系统中可到达的和可被利用的脆弱点构成的
- 攻击面分类:(20 真题考过)
- 网络攻击面
- 软件攻击面
- 人为攻击面
- 攻击面分类:(20 真题考过)
- 攻击树是一个分支型、层次化的数据结构,表示了一系列潜在技术,这些技术可利用安全漏洞进行攻击
五类可以识别的攻击: 获取用户凭证、命令注入、猜测用户凭证、违反安全策略、利用已知的认证会话
课后习题
给出计算机安全的定义
- 列举并简要定义基本安全设计原则
- 解释攻击面和攻击树之间的不同
考虑如下允许访问资源的代码:
a.解释程序中存在的安全缺陷
b.重写代码以避免缺陷(提示:考虑安全缺省设置原则)考点:
- 对称加密(攻击方法、算法、与流密码区别)
- 消息认证和散列函数(连续考过)
- 非对称加密(20选择)
- 数字签名
- 随机数和伪随机数
- 密码编码学是密码体制的设计学,而密码分析学则是在未知密钥的情况下从密文推演出明文或密钥的技术。二者合起来,即为密码学(15 真题)
- 对称加密的5个基本部分:明文、加密算法、秘密密钥、密文、解密算法
- 攻击对称加密的方法包括:密码分析和蛮力攻击(穷举攻击)
- 对称密钥加密体制,即加密密钥和解密密钥相同的密码体制(18 真题)
- 分组密码(加密速度快)
- 将明文信息编码编码后的数字序列划分成长度为n的组,一次处理一个组- 每组分别在密钥的控制下变换成等长的密文信息
- DES:
- DES 算法概述
- 分组加密算法:明文和密文为 64 位分组长度
- 对称算法:加密和解密除密钥编排不同外,使用同一算法
- 密钥长度 56 位(64 位中每个第 8 位为奇偶校验位,故 64-8=56 位)
- DES 加密
- 设计原则:混乱、扩散
- 置换(公开)——16 轮 Feistel 结构——逆置换(公开)
- DES 解密实际上是与加密完全一样的过程
- DES 算法概述
- ECB 模式:明文每次被提交 b 位并且每组明文用相同的密钥进行加密,通常 b 为 64 或 128
- 为了增强用于加密大数据序列的对称分组密码的安全性,使用操作模式,克服了 ECB 的缺点
- 流密码:持续的处理元素(通过伪随机发生器产生的密钥流,与明文流进行逐位异或),每次产生一个元素的输出,持续进行下去(21 真题考过)
- 消息认证:是一种允许通信者验证所接收或存储的数据是否可信的措施。
- 认证包括两个方面:验证消息的内容有没有被篡改和验证信源是否可信。还可以验证消息的时效性。
- 消息认证码(MAC):利用秘密密钥来生成一个固定长度的短数据块
- 散列函数:
- 用于消息鉴别的单向散列函数,还需满足要求:计算简单、能用于任何大小的消息、能产生定长输出
- 就目前的进展来看,MD5、SHA-1 等散列函数算法是单向不可逆的(20 真题)
- 散列函数的其他应用:口令(比如QQ用户口令)、入侵检测(计算文件的散列值确定文件是否修改)
- 公钥加密:
- 公钥密码体制组成部分:明文、加密算法、公钥和私钥、密文、解密算法
- 公钥密码体制的特点是使用了不同的加密密钥和解密密钥(16 真题)
- 公钥密码体制的应用:数字签名、对称密钥分发和秘密密钥加密
- RSA、ECC 等非对称加密算法会生成一个私钥和一个公钥,公钥公开而私钥保密,以下关于二者之间关系描述(利用公钥不可在有限步骤内计算出私钥、公钥和私钥都常被用来加密消息、私钥用来签名,公钥用来加密)(20 真题)
- 常用公钥密码算法:RSA、Diffie-Hellman、数字签名标准 DSS、椭圆曲线等
- 数字签名与密钥管理
- 为什么引入数字签名:消息认证用于保护通信双方之间的数据交换不受第三方攻击;但并不能保证通信双方自身的相互攻击、欺骗。数字签名是附加在数据单元上的一些数据,或是对数据单元所做的密码变换。其能保证原始认证、数据完整性以及签名的不可抵赖性
- 数字签名的性质:不可伪造、真实性、不可变、不可重用
- 三种数字签名算法:数字签名算法DSA、RSA数字签名算法、椭圆曲线数字签名算法
- 公钥证书:是一种数字签名的声明,它将公钥的值绑定到持有对应私钥的个人、设备或服务的身份。
- 证书包含:由公钥加上私钥所有者的用户ID以及可信第三方前面的整个数据组成。第三方就是用户团体信任的认证中心CA
- 利用公钥加密实现对称密钥交换
- 数字信封:可以用来保护消息而不必实现让发送方和接收方具有相同的密钥
随机数和伪随机数:
对称密码的基本要素是什么?
- 用对称密码进行通信的两个人需要多少个密钥?
- 安全使用对称加密的两个基本要求是什么?
- 列出三种消息认证的实现方法。
- 什么是消息认证码?
- 公钥密码体制的主要要素是什么?
- 私钥和秘密密钥的区别是什么?
- 什么是数字签名?
- 什么是公钥证书?
- 怎样利用公钥加密实现秘密密钥的分发?
- 假定某人建议用如下的方法来确认你们两个人是否拥有同一密钥。你创建了一个与密钥长度相等的随机比特串,将它和密钥进行异或,并通过通道发送结果。你的伙伴将得到的分组与密钥(应该和你的密钥相同)进行异或并发回它。你进行核对,如果你接收到的是你的原始随机串,你就证实了你的伙伴拥有同一密钥,而你们两个人都还没有传递过密钥。这个方案有缺陷吗?
- 有缺陷,窃听者只要窃听到传送的这两次比特串,两者异或就能得到密钥
假设 H(m) 是一个抗碰撞散列函数,该散列函数将任意长度的消息映射成 n 位的散列值。那么对于所有的消息 x、x’,且 x≠x’,H(x)≠H(x’) 是正确的吗?说出你的理由。
考点:
- 认证方式
- 基于口令的认证
- 用户认证的安全问题
- 认证方法 (20 真题考过)
- 个人所知道的信息(Know sth 声称者证明他知道某事或某物):包括口令、个人标识码等
- 个人所持有的物品(Have sth 声称者证明他拥有某事或某物 ):包括电子钥匙扣、智能卡、物理钥匙、磁卡、IC卡、令牌
- Is sth(声称者展示自身的某些不变特性)
- 个人的生理特征(静态生物特征):包括指纹识别、虹膜识别及人脸识别
- 个人的行为特征(动态生物特征):包括通过语言识别和笔迹特征进行的识别,及打字节奏进行的识别
- 常用的鉴别机制:口令、一次性口令nonce、用户知识口令、基于密码的机制、基于个人特征的机制
- 基于口令的认证(了解即可)
- 基于口令的认证:应用最广泛的防范手段
- 用户ID决定了用户是否被授权访问系统
- 用户ID决定了该用户所拥有的访问权限
- 用户ID还可以应用在自主访问控制中
- 口令的脆弱性:离线字典攻击、特定账户攻击、常用口令攻击、单用户口令猜测、工作站劫持、利用用户疏漏、口令重复利用、电子监视
- 散列口令的使用
- 使用哈希函数(或称散列函数)、盐值
- 保存口令文件(散列值、盐值)
- 盐值:用户注册时、系统用来和用户密码进行组合产生的随机数值,这个随机数叫作 salt 值。用户名和密码应该以密文形式存在数据库中。
- 使用盐值的好处
- 防止复制的口令在口令文件中可见
- 显著的增加了离线口令字典攻击的难度
- 使得攻击者几乎不可能发现一个用户是否在两个或更多的系统中使用了相同的口令
- 破解“用户选择”传统口令——彩虹表:攻击者产生出一个包括所有可能口令的较大的口令字典,对于口令字典中的每个口令,攻击者都要进行散列运算,产生的结果是一个巨大的散列值表,称为彩虹表。以空间代价换取时间代价。
- 基于口令的认证:应用最广泛的防范手段
- 影子口令文件:散列后的口令保存在与用户 ID 分离的单独文件
- 口令选择策略:
- 四种基本方法:用户教育、计算机生成口令、后验口令检查、先验口令检查(最被认可的一种提高口令安全的方法)
- 弱口令:短口令、常见单词、生日、电话号码……、系统预设口令
- 口令管理措施:(了解即可)
- 口令应具有一定的长度,包含多种字符类型
- 口令不应使用易猜测的数字或字母组合
- 口令应具有一定的生存期
- 口令不应使用一定时间内的历史
- 口令用户登录不同系统应使用不同的口令
- 系统应设定口令登录失败次数限制
- Bloom 过滤器:用于生成高效的后验口令检查器
- 基于令牌的认证:令牌就是用户持有的用于进行用户认证的一种物品,比如磁条卡、智能卡、电子身份证之类
- 生物特征认证:面部特征、指纹、手形、视网膜模式、虹膜、签名、语音
- 口令机制的缺点与解决方法
- 口令协议的攻击者可能进行重放攻击
- 解决方法:一次性口令机制
- 用户的口令、令牌等都可能被攻击者获取
- 解决方法:基于个人特征的鉴别机制
- 口令协议的攻击者可能进行重放攻击
- 一次性口令:
- 一次性口令确保每次的鉴别口令在使用后作废,以应对重放攻击
- 实现方法
- 使用口令列表
- 基于单向函数的方案-Skey
- 使用伪随机口令生成设备
- 使用口令列表
- 基于密码的鉴别体制:
- 基本原理:使验证者信服声称者所声称的身份,因为声称者知道某一秘密密钥
- 基于对称密码的鉴别机制
- 双方共享对称密钥;可以进行单向或双向鉴别
- 双方采用询问-应答的方式进行鉴别
- 缺点:密钥爆炸问题;解决方法:使用认证服务器 Kerberos(见 Internet 认证应用)
- 基于公钥密码的鉴别机制
- 验证者拥有被验证者的公钥
- 验证者要求被验证者签署一个验证者提供的消息
- 重放问题
- 问题:验证者必须拥有被验证者的公钥
- 解决方法:使用认证服务器 X.509(见 Internet 认证应用)
- Diffie-Hellman 交换协议:是 X.509 的一个变形,可以抵抗重放和窃听攻击
- 基于对称密码的鉴别机制
- 基本原理:使验证者信服声称者所声称的身份,因为声称者知道某一秘密密钥
用户认证中的安全问题
- 客户端攻击:在不访问远程主机或不干扰通信信道的情况下,试图伪装成一个合法用户来完成用户认证的攻击行为
- 主机攻击:直接对存储在主机上的用户文件进行的攻击,主机上存储这用户口令、令牌认证码或者生物特征模板
- 应对重放:
- 挑战-应答协议:计算机系统会产生一个挑战信号,比如一个随机的数字串。智能令牌将会产生一个基于这个挑战信号的应答机制
- 非重复值的产生
- 作用:应对重放攻击
- 序列号:双方需要保存上次消息的序列号
- 时间戳:双方时钟需要同步;时间窗口的选择
- 随机值:由验证者发送随机值, 被验证者进行应答;只适用于面向连接方式
- 特洛伊木马
- 防范措施:动态检测
- 拒绝服务:试图通过大规模的认证请求使认证服务失败
用户认证通常的四种方法是什么?
- 列举并简单描述口令保密的主要威胁
- 保护用户口令文件的两个常用方法是什么?
- 列举并简单描述设置和选择口令的四种常用方法
- 描述“挑战-应答协议”的原理
- 我们知道,在 UNIX 系统的口令方案中引入盐值大大的增加了口令猜解的难度(难度是原来的 4096 倍)。但是,盐值以明文形式和经过加密的口令一起存放在口令文件中,攻击者无须猜解就可以得到盐值以及加密的口令。那么,为什么可以断言使用盐值能够提高口令的安全性?
- 没有盐,攻击者可以猜测密码并对其加密。如果系统上的任何一个用户使用该密码,那么就会有匹配。使用salt,攻击者必须猜测一个密码,然后为每个用户加密一次,为每个用户使用特定的salt。
有没有可能通过显著增加盐值的长度来完全避免所有的口令攻击?
考点:
- 三种主要类别的访问控制策略(21考过)
- 主体、客体、访问权(21考过)
- UNIX 文件访问控制(21考过)
- 基于角色的访问控制(21考过)
- 访问控制策略 (理解记忆,最好背诵,21 真题考过)
- 自主访问控制 DAC(基于身份的策略);:基于请求者的身份和访问控制规则控制访问,规定请求者可以(或不可以)做什么。允许一个实体按其自己的意志授予另一个实体访问某些资源的权限
- 强制访问控制 MAC:通过比较具有安全许可的安全标记来控制访问。一个具有访问某种资源的许可的实体不能按其自己的意志授予另一个实体访问某些资源的权限
- 基于角色的访问控制 RBAC:基于用户在系统中所具有的角色和说明各种角色用户想用哪些访问权的规则来控制访问
- 基于属性的访问控制 ABAC:基于用户、被访问资源及当前环境条件来控制访问
- 访问控制的基本元素:
- 主体:能够访问客体的实体。任何用户或应用实际上通过代表该用户或应用的进程进行代理。主体应该对他们发起的动作负责,可以用审计来记录主体与其施加在客体上的关系安全的动作之间的关联。
- 三类主体:所有者,组,世界
- 客体:是外界对其访问受控制的资源。一般的,客体是一个用来包含或接收信息的实体
- 访问权:描述了主体可以访问客体的方式
- 主体:能够访问客体的实体。任何用户或应用实际上通过代表该用户或应用的进程进行代理。主体应该对他们发起的动作负责,可以用审计来记录主体与其施加在客体上的关系安全的动作之间的关联。
- 访问控制模型:
- 机密性模型:Bell-Lapadula机密性模型(21真题考过)
- 完整性模型:Biba完整性模型、Clark-Wilson模型
- 动态模型:Chinese Wall模型
- 保护域:保护域是一组客体对这些客体的访问权,根据访问矩阵的规定,一行定义一个保护域
- UNIX 文件访问控制(21 真题考过)
- inode:
- 所有类型的 UNIX 文件都由操作系统通过 inode 管理
- inode 是包含操作系统对一个文件所需的关键信息的控制结构
- 一个活动 inode 仅和一个文件关联,一个文件也仅被一个 inode 控制
- 目录仅仅是一个包含文件名和指向关联 inode 的指针的列表
- 传统的 UNIX 文件访问控制:
- 每个 UNIX 文件被分配一个唯一的用户标识号(user ID)
- 与每个文件相关联的是 12 个保护位的组合。属主 ID、属组 ID 和保护位都是文件 inode 的一部分
- 9 个保护位分别用来指定文件属组、同组用户与其他用户的读、写和执行许可。如图:
rwx分别代表可读、写、执行- 剩余 3 个位定义了文件或目录的其他特殊行为。其中两个是“设置用户 ID”(SetUIID)和“设置组 ID”(SetGID)许可。
- 最后一个许可位是“粘滞”(sticky)位,当对文件设置该位时3,最初表示系统应在文件执行后将其内容保留在内存中,现在已不使用
- 有一个特殊的用户 ID 被指定为“超级用户”。超级用户不受通常的文件访问控制限制,具有系统范围的访问权。任何被超级用户拥有(或设置 SetID 到超级用户)的程序实际上和执行该程序的任何用户授予了无限制的访问权。
- inode:
- 基于角色的访问控制 RBAC(21 真题考过)
- 基于角色的访问控制中用户和权限之间引入了“角色”的概念,RBAC 基于用户在系统中设定的角色而不是用户的身份
- 用户与角色的关系是多对多的,角色与资源或系统对象的关系也是多对多的
- RBAC 有利于实现最小特权原则
- RABC0 包含 RBAC 系统最小功能;RBAC1 包括 RBAC0 的功能,并增加了角色层次,使得一个角色能够继承另一个角色的许可;RBAC2 包括 RBAC0 的功能,并增加了约束,来限制配置 RBAC 系统组件的方式。RBAC3 包括 RBAC0、RBAC1、RBAC2 的所有功能
- 互斥角色:一个用户只能被分配给集合中的一个角色
- 基数:设置关于角色的最大数值。这种类型的一个约束是设置可以分配给一个指定角色的最大用户数,系统也可以强制约束一个用户可以分配到的角色数或者一个用户在一次会话中可以被激活的用户数
- 先决条件:如果已经被分配给另一个指定角色时,用户只能分配一个特定角色
基于属性的访问控制 ABAC
- 三个关键要素
- 属性:为配置中的实体而定义
- 策略模型:定义 ABAC 策略
- 架构模型:应用于实现访问控制的策略
- 属性
- 主体属性:主体是一个主动的实体,能引起客体间的信息流动或者系统状态的改变,每个主体都有能够定义其身份和特征的关联属性。
- 客体属性:客体也成为资源,是一个被动的包含或接受信息的与信息系统相关的实体。
- 环境属性:描述了信息访问发生时所处的运行的、技术的甚至态势的环境或情境。
- ABAC 的逻辑架构
- 主体向客体提出访问请求。该请求被路由到一个访问控制装置。
- 该访问控制装置通过一组由预先配置的访问控制所定义的规则进行控制,基于这些规则,访问控制对主体、客体和当前环境条件的属性进行评估,决定是否授权。
- ABAC 策略:策略是一组用来管理组织内部的允许行为的规则和关系,其基础是主体所有的特权,以及在哪种环境下资源或客体需要被保护。特权代表主体的授权行为。
课后习题
- 三个关键要素
列出并定义访问控制系统中的三类主体。
- 在访问控制语境中,主体与客体的区别是什么?
- 什么是访问权?
- 访问控制列表与能力权证的区别是什么?
- 什么是保护域?
- 描述三种类型的角色层次约束
- UNIX 将文件目录与文件同等对待,就是说,都用相同类型的数据结构——节点来定义。与文件一样,目录包括 9 位的保护串。如果不注意,就会产生访问控制问题。例如,考虑一个保护模式为 644(八进制)的文件,它包含在保护模式为 730 的目录中。这种情况下该文件可能受到怎样的安全威胁?
- 假设目录d和文件f拥有相同的所有者和组,并且f包含文本。不考虑超级用户,除了f的所有者之外,没有人可以更改其内容,因为只有所有者有写权限。但是,所有者组中的任何人都具有d的写权限,因此任何这样的人都可以从d中删除f并安装一个不同的版本,在大多数情况下,这相当于能够修改f
假定对一个系统具有 N 个岗位。对于工作职位 i,用户数为 Ui,需要的许可数为 Pi
考点:
- 数据库管理系统(相关术语)
- 关系数据库(相关术语)
- SQL 注入攻击(20问答)
- 数据库访问控制
- 推理(21填空)
- 数据库加密(20选择)
- 数据库安全需求
- 数据库系统趋向于把信息集中存储在一个单一的逻辑系统中
- 数据库安全始终没有跟上数据库应用发展步伐
- 一些组织越来越依赖云技术,将企业的部分或全部数据存储到云上
- 数据库是重要的应用软件
- 数据库的一大特点是数据可以共享,但数据共享必然带来数据库的安全性问题
- 数据库管理系统
- 数据库:是存储一个或多个应用所用数据的结构化数据集合。除去数据,数据库还包含数据项之间以及数据项之间的关系
- 数据库管理系统 DBMS:是创建、维护数据库并为多个用户和应用提供特定的查询服务的程序套件
- 查询语言:为用户和应用提供了访问数据库的统一接口
- 数据定义语言 DDL:定义数据库的逻辑结构和过程属性,将其标识为一组数据库描述表
- 授权表:用于确保用户具有执行数据库查询语句的权限
- 并发访问表:用于同时执行冲突命令时,避免产生冲突
- 关系数据库
- 关系数据库的基本构件是数据表(平面文件)
- 查询语言使用的是说明性语句而不是编程语言的过程性语句
- 关系数据库系统要素
- 基本构件是平面表——关系(realtion),行是元组(tuple),列是属性(attribute)
- 主键(primary key)用来唯一的标识表的一行,由一个或多个列名组成
- 要创建两个表之间的联系,在一个表中定义为主键的属性必须作为另一个表的属性出现,称为后者的外键(foreign key),主键所在的表中的一行与外键所在的表中的多行是一对多的关系
- 视图(view)是一个虚表,是从一个或多个表中返回的选定行与列的查询结果
- 结构化查询语言(SQL):是用于对关系数据库中的数据定义、操纵和查询的标准语言
- SQL 注入攻击(SQLi)(20 真题考过)
- SQL 注入攻击(SQLi)是针对数据库的最普遍和最危险的基于网络的安全威胁
- SQLi 攻击途径和类型:
- 攻击途径:
- 用户输入:通过精心构造用户输入来注入 SQL 命令
- 服务器变量:攻击者伪造 HTTP 和网络报头的值
- 二阶注入:注入字符串可以存在数据库里面,只要查询就会触发一个 SQL 注入攻击
- cookie:更改 cookie,构建 SQL 查询时修改查询的结构和功能
- 物理用户输入:用条形码、RFID、图像识别的结果来完成注入
- 攻击类型:带内、推理、带外
- 带内攻击:使用同样的通信信道来完成 SQL 代码注入和结果返回,这些返回的数据可以直接呈现在 Web 页面上。带内攻击方式包括重言式、行尾注释和捎带查询
- 推理攻击: 没有实际的数据传输,但攻击者能够通过发送特定的请求和观察网站或数据库服务器的响应行为来重新构造信息。推理攻击包括非法/逻辑错误查询和盲 SQL 注入
- 带外攻击:检索数据使用不同的通信信道(例如生成一个带有查询结果的电子邮件并发送给测试者)
- 攻击途径:
- SQLi 应对措施
- 防御性编码:手动防御性编码实践、参数化查询插入、SQL DOM
- 检测和运行时阻断:基于签名、基于异常、代码分析
- 数据库访问控制
- 通过访问控制来确定用户对数据库的访问权限
- DBMS 支持不同的管理策略:集中管理、基于所有权的管理、分散管理
- 级联授权:授权选项使得访问权能够级联到很多用户
- 基于角色的访问控制(RBAC):
- 把数据库用户分为三大类:应用程序属主、应用程序属主之外的终端用户、管理员
- RBAC 机制应该提供以下能力:创建和删除角色、定义角色的许可、分配和取消用户到角色的分配
- SQL SERVER 支持三种类型的角色:服务器角色、数据库角色、用户定义的角色(前两种被称为固定角色,是系统预先配置的,具有特点的访问权)
- 推理(21 真题考过)
- 推理是完成授权查询并从得到的合法响应中推导出非授权信息的过程
- 推理通道:获得非授权数据的信息传送路径
- 元数据:有关数据项之间相关性或依赖性的知识,可以用来推导出某个用户不能用其他方式获得的信息
- 数据库的访问控制机制不仅要防止直接的泄露,而且还要防止推理泄露的问题
- 处理由推理造成的信息泄露威胁
- 数据库设计时的推理检测:这种方法通过修改数据库结构或改变访问控制等手段消除推理通道来防止推理
- 查询时的推理检测:寻求在一个查询或一系列查询执行期间消除推理通道违例。如果发现了推理通道,查询就被拒绝或修改
数据库加密(20 真题考过)
解释下列术语:数据库、数据库管理系统和查询语言
- 什么是关系数据库?它的主要组成要素是什么?
- 解释级联授权的概念
-
恶意软件
考点:
- 恶意软件:一种被植入系统中,以损害受害者数据应用程序或操作系统的机密性、完整性或可用性,抑或对用户实施骚扰或妨碍的程序
- 混合攻击:使用了多种传播感染手段,最大化其危害蔓延的速度和攻击的严重程度。
- 高级持续性威胁 APT(20 真题考过)
- 高级持续性威胁(APT)是一个具有充足资源,应用大量入侵技术和恶意软件的持续性应用程序
- APT 的特征
- 高级:攻击者使用多种入侵技术和恶意软件,如果有需要还会开发定制的恶意软件
- 持续性:攻击者用很长时间确定针对攻击目标的攻击应用可以最大化攻击成功的概率
- 威胁:针对选定目标的威胁来自有组织、有能力和良好经济支持的攻击者,他们试图攻陷这些目标。在攻击过程中,攻击者的积极参与极大的提升了自动攻击工具的威胁等级,也增加了成功攻击的可能性
- 个人攻击者一般不被认为是 APT(即使个人有意攻击特点目标,他们也通常不具备高级和长期这两个目标)
- 什么是高级持续性威胁(APT)?只依赖防火墙或杀毒软件能有效防范 APT 威胁吗?为什么?(20 真题)
- 答:APT 是以窃取核心资料为目的,针对客户所发动的网络和侵袭行为,是一种蓄谋已久的“恶意商业间谍威胁”。这种行为往往经过长期的经营和策划,并具备高度的隐蔽性。APT 的手法,在于隐匿自己,针对特点对象,长期、有计划性和组织性的窃取数据,这种发生在数字空间的偷窃资料、搜集情报的行为,就是一种“网络间谍”的行为。只依赖防火墙或者杀毒软件不可能抵御 APT,因为 APT 完全可以采取从内部开始破坏的方式,同时定期变换字符串让病毒特征库失效
- 传播-感染内容-病毒
- 病毒的性质:计算机病毒是一种通过修改正常程序而进行感染的软件。这种修改包括向正常程序注入病毒代码来使病毒程序得到复制,这样就能继续感染其他正常程序。病毒可以实现组成程序所能实现的任何功能,它能够跟着宿主程序的运行而悄悄的运行,一旦病毒执行,它能够实现任何功能
- 计算机病毒的多种组成元素:感染机制(感染向量)、触发条件(逻辑炸弹)、有效载荷
- 病毒经历的四个阶段:
- 潜伏阶段:病毒处于休眠阶段,最后病毒会被某些事件激活。并不是所有的病毒都有这个阶段
- 传播阶段:病毒将自身的拷贝插入其他程序或硬盘上某个与系统相关的区域
- 触发阶段:病毒被激活以执行其预先设定的功能
- 执行阶段:执行病毒功能,有些功能是无害的,有些是破坏性的
- 宏病毒:利用某些文档格式所支持的活动内容的新型病毒。宏病毒针对文档类文件,常支持在多种系统中运行(Melissa 宏病毒)
- 宏病毒的威胁性原因:
- 宏病毒有独立的平台
- 宏病毒感染的是文件而不是可执行部分的代码
- 宏病毒的传播很容易,因为它们所利用的文档通常是共享使用的
- 宏病毒感染的是用户文档而不是系统程序,所以传统文件系统的访问控制中防止其扩散方面的作用有限,因为用户需要修改它们
- 相比一传统的可执行病毒,宏病毒的修改或制造更简单
- 病毒的分类:
- 按目标:感染引导扇区病毒、感染可执行文件病毒、宏病毒、多元复合型病毒
- 按隐藏方式:加密型病毒、隐藏型病毒、多态病毒、变形病毒
- 传播-漏洞利用-蠕虫
- 蠕虫是一种主动寻找并感染其他机器的程序,而每台被感染的机器又转而成为自动攻击其他机器的跳板
- 蠕虫与病毒的区别:
- 病毒可通过任何介质进行传播,蠕虫主要通过网络传播
- 病毒的自身拷贝必须嵌入到其他程序中来传播,蠕虫的自身拷贝都是以独立程序的形式传播
- 蠕虫访问远程系统的方法:电子邮件或即时通信工具、文件共享、远程执行能力、远程文件访问或传输能力、远程登录能力
- 传播阶段的功能:
- 通过检查主机列表、地址库、好友名单、可信节点或其他可以获取远程系统权限的细节,扫描可能的目标主机地址,或搜寻合适的可移动设备,寻找合适的访问控制机制
- 通过访问控制机制将自己复制到远程主机上并使该拷贝运行
- 发现目标:网络蠕虫在传播阶段的首要功能是寻找其他系统进行感染,这个过程叫做扫描或者指纹采集
- 扫描方式:随机式探索、黑名单、拓扑式探索、本地子网
- 蠕虫攻击简史:Morris、Melissa、Brain、Code Red Worm、红色代码 Ⅱ、Nimda、SQL Slammer、Sobig.F、Mydoom、Warezov、Conficker、Duqu、WannaCry
- 蠕虫技术的现状:多平台、多种攻击手段、超快速传播、多态、变形、传输载体、0-day 攻击
- 移动代码:不加修改就能在不同系统平台上运行并且能够实现相同功能的查询。移动代码能够从远程系统传送到本地系统,然后再没有得到用户明确许可的情况下在本地系统中执行
- 手机蠕虫:通过蓝牙无线连接或彩信进行传播。感染目标是允许用户通过安全包来安装应用程序的智能手机
- 客户端漏洞和路过式下载:用户浏览一个受攻击者控制的 Web 页面时,该页面包含的代码会攻击该游览器的缺陷并在用户不知情的情况下向系统安装恶意软件
- 水坑式攻击:攻击者通过研究他们意图攻击的目标,确定它们可能要游览的 Web 站点,然后扫描这些站点找出那些含有能让它们植入夹带式下载的漏洞。等待受害者去游览那些有害的站点
- 恶意广告:攻击者在目标网站付钱植入含有恶意代码的广告。通过向访问者展示广告令其感染
- 点击劫持:也称为用户界面伪装攻击。是一种攻击者收集被感染用户鼠标点击信息的攻击
- 传播-社会工程学-垃圾电子邮件、木马
- 社会工程:社会工程的含义是通过欺骗,使他人泄露安全相关的敏感信息,或者按照欺骗者意图进行某些安全相关的操作(期末题)
- 垃圾邮件
- 产生原因:发送大量邮件成本极低
- 来源:大部分是由僵尸网络操纵僵尸机发送的
- 作用:广告、诈骗等。也是恶意软件的重要载体
- 特洛伊木马
- 特洛伊木马是一个有用的或者表面上看起来有用的程序或命令过程,但其内部藏有恶意代码,当被调用时,会执行非预期的或有害的功能
- 特洛伊木马程序可以间接完成一些未授权用户无法直接完成的功能
- 特洛伊木马的三种模型
- 继续执行源程序的功能的同时,另外执行独立的恶意行为
- 继续执行源程序的功能,但是会对其进行修改,以执行恶意行为或者隐藏另一个恶意行为
- 用恶意功能完全替代源程序的功能
- 一些木马不需要用户的协助就可以通过攻击软件的漏洞实现自动安装和执行。与蠕虫不同,木马不能自我复制
- 手机木马:Skuller、XcodeGhost
- 载荷-系统损坏
- 数据损坏和勒索软件
- CIH 病毒:属于文件型病毒,是一个有破坏性的、寄生性的、内存驻留性质的病毒
- 勒索软件:加密用户数据,然后向用户索要赎金才可以恢复数据
- 物理损害
- 损坏系统类有效载荷的进一步变种的目标是引起物理设备的损害
- 震网蠕虫
- 逻辑炸弹
- 嵌入在恶意软件中的代码,在特点条件满足时便会爆炸
- 它强调破坏作用本身,而实施破坏的程序不具有传染性
- 数据损坏和勒索软件
- 载荷-攻击代理-zombie、bot
- 有效载荷可以使得攻击者能够暗中使用受感染的系统的计算资源和网络资源,此种被感染的系统被称为僵尸机,它会秘密的控制一台连接 Internet 的计算机,并利用所控制等计算机发动攻击
- bot 的用途:分布式拒绝服务攻击、发送垃圾邮件、嗅探通信流量、记录键盘、传播新的恶意软件、安装广告插件和游览器辅助插件、攻击 IRC 聊天网络、操纵在线投票或游戏
- 远程控制功能
- 是否具有远程控制功能是 bot 与蠕虫的区别所在
- 蠕虫是自我复制并自我激活
- bot 是由某种形式的指挥控制服务器网络控制的
- 载荷-信息窃取-键盘记录器、网络钓鱼、间谍软件
- 凭证盗窃、键盘记录器和间谍软件
- 键盘记录器:能够抓取被感染及其中的按键信息
- 对付键盘记录器的方法:使用一个图形化小程序来输入关键信息
- 间谍软件:范围更广。可能能够监视历史记录和游览内容,更改网页连接,修改游览器和网站交换的数据等
- 网络钓鱼和身份盗窃
- 钓鱼攻击:利用垃圾邮件引导用户至攻击者的虚假网站,或让用户填写随信封附上的某些表格并回复给攻击者,以便收集用户的个人隐私信息。得到了足够的信息,攻击者可以猜测用户的身份,从而获得信用信息后其他资源的访问权限
- 鱼叉式网络钓鱼:邮件收件人事先已经受到了攻击者的认真研究,因为每封邮件都是精心制作的以迎合相应的收件人
- 侦察、间谍和数据渗漏
- 凭证盗窃和身份盗窃的目的是获得想要的信息并反馈给攻击者
- 凭证盗窃、键盘记录器和间谍软件
- 载荷-隐蔽-后门、rookit
- 后门
- 后门(陷门)是进入程序的一个秘密入口,使得知情者不经过通常的安全访问程序而获取访问权限
- 后门一直被程序员合理的用于程序的调试和测试,这样的后门成为维护挂钩
- 后门是能够识别一些特殊的输入序列或者当被某个用户 ID 运行或某个不可能的事件序列发送所触发的代码
- rookit
- rootkit 是安装在系统中用来支持以管理员权限对系统进行访问的一组程序
- rookit 以恶意且屏蔽的方式更改主机的标准功能
- rookit 可以以如下特征进行分类:持续的、基于内存的、用户模式、内核模式、基于虚拟机的、外部模式
- 内核模式下的 rootkit
- 系统调用是内核级 rookit 实现隐藏的主要目标。每一个系统调用都会被分配一个唯一的系统调用编号,当一个用户模式的进行执行系统调用时,该进程是通过系统调用编号来引用系统调用的
- 修改系统调用的技术:修改系统调用表、修改系统调用表的对象、重定向系统调用表
- 虚拟机和其他外部 rookit
- 最新一代的 rookit 使用的代码随目标操作系统完全不可见
- 代码通常实现为某种流氓式或受到破坏的虚拟机监视器或虚拟层,并得到新式处理器支持的硬件虚拟化辅助
- rookit 代码完全运行在目标操作系统甚至是内核代码的视野的下层
- 后门
对抗手段
- 针对恶意软件的对抗措施
- 理想的应对恶意软件威胁的方法是预防
- 预防措施的元素:规则、警惕性、弥补弱点、缓解威胁
- 一个最基本的防御措施是保证操作系统的版本尽可能更新
- 预防失败的缓解措施:检测、识别、清除
- 对抗措施的要求:通用性、及时性、弹性、最小拒绝服务代价、透明性、全局与局部覆盖范围
- 基于主机的扫描器和基于签名的反病毒软件
- 反病毒软件的发展(四代):简单的扫描器、启发式扫描器、活动陷阱、全面的保护
- 沙箱分析:在沙箱或虚拟机中运行恶意代码,保证代码在可控制等环境内运行,其行为可以被近距离监控同时不会对实际的系统安全造成威胁
- 基于主机的动态恶意软件分析:与启发式或基于特征码的扫描器不同,动态恶意软件分析或行为,阻断软件与主机的操作系统的结合,实时监控恶意的查询行为
- 间谍软件的检测和移除:作为通用的反病毒产品的有益补充
- rookit 对策:防范 rookit 需要多种网络及和计算机级的管理工具;或对某类文件做完整性校验
- 边界扫描处理
- 监控软件有两种类型
- 入口监控软件:安装在企业内部网络和 Internet 之间
- 出口监控软件:安装在企业内部网络中的各个独立局域网的出口点上,或企业内部网与 Internet 之间
- 监控软件有两种类型
- 分布式情报收集处理
课后习题
- 针对恶意软件的对抗措施
恶意软件的三种传播机制是什么?
- 恶意软件所携带的四大类有效载荷是什么?
- 病毒或蠕虫执行过程中的典型阶段是什么?
- 病毒利用什么机制隐藏自身?
- 机器可执行病毒和宏病毒有何区别?
- 蠕虫通过什么方法获得远程系统的权限进行传播?
- 什么是路过式下载?它如何传播蠕虫?
- 木马如何传播恶意软件?计算机系统中的木马有何共同点?移动平台中呢?
- 什么是逻辑炸弹
- 后门、bot、键盘记录器、间谍软件和 rootkit 之间有何差别?它们能否在同一个恶意软件内呈现?
- 网络钓鱼攻击和鱼叉式网络钓鱼有何区别,特别是在目标上?
- 列举 rookit 在系统中使用的不同层面
- 简要描述四代反病毒软件
有这样一个问题:是否可以开发一个程序对软件进行分析,以此来判定该软件是否是病毒程序。假定我们有一个程序 D 能完成这样的工作。对于任意程序 P,当我们运行 D(P) 时,返回的结果是 TRUE(P 是病毒)或 FALSE(P 不是病毒)。考虑如下的程序:
Program CV :={...mian-program :={if D(CV) then goto next:else infect-executable;}next:}
在上面的程序中,infect-executable 是这样的一个模块,它扫描内存中的可执行程序,然后将其自身复制到这些程序中。如果 D 能够正确的判断的话,请判定 CV 是否为病毒。
- D检查程序P,如果P是计算机病毒则返回TRUE,如果不是则返回FALSE。但是CV调用D,如果D说CV是病毒,那么CV就不会感染可执行文件。但如果D说CV不是病毒,它就感染了可执行文件。D总是返回错误的答案。总之,D 不能正确的判断
思考如下程序段:
legitimate codeif data is Friday the 13th;crash_computer();legitimate code
这属于哪类恶意软件?
- 逻辑炸弹
思考下面的认证程序片段:
username = read_username();password = read_password();if username is "133t h4ck0r"return ALLOW_LOGIN;if username and password are vaildreturn ALLOW_LOGIN;else return DENY_LOGIN
这属于哪类恶意软件?
拒绝服务攻击
- 拒绝服务攻击,是指攻击者通过某种手段,有意的造成计算机或网络不能正常运转从而不能向合法用户提供所需要的服务或者降低其提供的服务质量。拒绝服务攻击的特点:易实施、难检测、难防御、难追踪(难以追究责任)、攻击目标广泛
- 拒绝服务攻击的定义:拒绝服务是一种通过耗尽 CPU、内存、带宽以及磁盘空间等系统资源,来阻止或削弱对网络、系统或应用程序的授权使用的行为
- DoS 的攻击对象:网络带宽、系统资源、应用资源
- 拒绝服务攻击问题一直得不到合理的解决,原因是网络协议本身的安全缺陷
- 攻击形式:
- 针对系统资源的 DoS 攻击。过度加载或者使系统网络处理程序崩溃来实现攻击
- 针对系统资源的 DoS 攻击。通过某些特殊数据包来触发系统的网络处理软件的缺陷,导致系统崩溃。如有毒数据包,死亡之 ping,泪滴攻击
- 针对特点应用服务程序如 Web 服务器的攻击一般使用一定数量的合法请求,而每个合法请求都会明显消耗掉服务器上的系统资源,就可以达到限制服务器响应其他合法用户请求的目的
- 源地址欺骗:
- 特征:采用伪造的源地址数据包
- 为什么使用虚假源地址:第一,由于攻击源很容易被清楚的识别,那么被发现和受到法律追究的可能性大大增加。第二,目标系统会尽可能响应请求。每当服务器接收到一个 ICMP 回送请求,就会发送一个 ICMP 回送响应数据包给攻击者,这会将攻击反射给攻击源。尽管攻击者拥有较高的网络带宽而不至于被这些反送回来的 ICMP 回送响应数据包“反 ping 死”,但其网络性能也会被显著影响,并且加大了被发现并采取应对措施的可能。
- 发散反馈流量/后向散射流量/反向散射流量(backscatter traffic):
- 定义:“后向散射流量”是响应 具有伪造源地址的数据包 而产生的呈发散状发送到网络上的响应数据包,如 ping 洪泛攻击中,目标系统为了响应 ICMP 回送请求数据报所产生的 ICMP 回送响应数据包就属于这种数据包。
- 作用:监视这些数据包可以为我们在判定攻击类型和攻击规模时提供有用信息。
- 它能为 使用伪造源地址的各种单一或分布式洪泛攻击、SYN 欺骗攻击 提供信息;但不能为 不使用伪造源地址,或伪造源地址是目标地址的攻击 提供信息,如反射攻击或放大攻击。
- SYN 欺骗:SYN 欺骗攻击通过造成服务器上用于管理 TCP 连接的连接表溢出,从而攻击网络服务器响应 TCP 连接请求的能力。
- SYN 攻击所形成的网络流量相对于基本的洪泛攻击来说比较小,其不会接近与服务器相连的链路的最大容量,只要能够使得 TCP 连接表被填满就可以。
- 洪泛攻击
- 目的:使到服务器的链路超负荷,或使服务器处理和响应网络流量的能力超负荷
- ICMP 洪泛:利用 ICMP 回送请求数据报的 ping 攻击是一种经典的 ICMP 洪泛攻击(DDoS 攻击最常见的类型)
- UDP 洪泛:攻击者通常会将 UDP 数据包发送给诊断回送服务,该服务在服务器系统一般是默认运行的。如果服务器上开启了这项服务,那么服务器就会回应一个带有初始数据内容的 UDP 数据包给源地址。如果服务没有开启,则这个来自攻击者的数据包将会被丢弃并且可能会回应 ICMP 目的主机不可达数据包给发送者。但不论如何,攻击者都达到了消耗服务器端链路容量的目的。
- TCP SYN 洪泛攻击:攻击的对象是数据包的总量而不是目标系统上的网络处理程序。这是 SYN 欺骗攻击与 SYN 洪泛攻击之间的区别
- 分布式拒绝服务攻击 DDoS
- 分布式拒绝服务(DDoS)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台(将大量控制的僵尸机组合在一起形成一个僵尸网络),对一个或多个目标发动 DDoS 攻击,从而成倍的提高拒绝服务攻击的威力。
- 攻击者通过操作系统上或者某些常用应用程序的一些熟知的漏洞来获得访问这些系统的权限,并在上面安装自己的程序,这些被入侵的主机系统就是所谓的僵尸机。一旦僵尸机被安装上合适的后门程序,就会完全处在攻击者的控制之下,攻击者控制等大量僵尸机组合在一起就形成了僵尸网络。
- 体系结构:攻击者通常使用等级方式控制僵尸机,其中少量系统充当执行者,负责控制大量的其他代理系统。攻击者通过发送一条单一的命令给执行者,然后执行者就会自动的将其通知给所有在其控制之下的代理系统 。自动感染工具也可以用来扩大其所控制的僵尸系统。
- 基于应用的带宽攻击
- SIP 洪泛
- IP 电话呼叫使用的标准协议是会话发起协议 SIP,是一个基于文本的协议。SIP 的消息有请求和呼应
- SIP INVITE 消息是用来自客户代理间建立媒体会话的
- SIP 洪范攻击利用的是单个 INVITE 请求造成的相当大的资源开销。
- 造成负载的方式:服务器资源被 INVITE 消耗,服务器的网络容量被消耗。
- 基于 HTTP 的攻击
- HTTP 洪范攻击指利用 HTTP 请求攻击 Web 服务器,这是一种 DDoS 攻击,HTTP 请求来自许多不同的 bots。这些请求可以被预设为消耗相当大的资源的形式
- 递归 HTTP 洪泛:bot 从给定的 HTTP 链接出发,通过递归方式遍历给定 Web 服务器的所有链接,这种攻击也称为爬虫
- Slowloris:
- 其利用多线程支持多个到统一服务器应用现在的请求技术进行攻击。
- Slowloris 与典型拒绝服务攻击的不同:Slowloris 利用合法的 HTTP 流量,并且不依赖于能攻击特殊 HTTP 服务器中的 bug 的特殊的“坏的” HTTP 请求。因此,现有依赖特征检测到入侵检测和入侵防御手段无法识别出 Slowloris
- 对抗措施:限制特殊主机接入的比例,对每个连接设置超时机制和延迟绑定。
- SIP 洪泛
- 反射攻击与放大攻击
- 反射攻击与放大攻击通常利用的是网络范围系统的正常功能。攻击者发送带有虚假源地址的数据包给某些网络访问系统上的服务。网络服务器为了响应这些数据包,会发送一个响应包给攻击包所指向的源地址,这个地址正是攻击者想要攻击的目标系统。如果攻击者发送一定数量的拥有同样源地址的请求包给一定数量的提供同样服务的服务器,那么这些服务所产生的响应数据包几乎会全部占据目标系统的网络链路。
- 反射攻击
- 攻击者将想要攻击的目标系统地址作为数据包的源地址,并将这些数据包发送给中间媒介上的已知网络范围。当中间媒介响应时,大量的响应数据包发送给源地址所指向的目标系统。它能有效的使攻击从中间媒介反射出去
- 利用 SYN-ACK 的反射攻击
- 其利用 TCP SYN 数据包和建立 TCP 连接到三次握手进行攻击。攻击者发送一些带有虚假源地址的 SYN 数据报给选定的中间媒介。作为回应,中间媒介会回应一个 SYN-ACK 数据包给这个数据包中的源地址所指向的主机,这是真正的目标系统
- 这种攻击的目的是洪范目标系统的网络带宽,而不是耗尽目标系统的网络处理资源
- 反射攻击的特点:
- 攻击者仅仅需要一个系统作为构造最初的数据包的源
- 没有反向散射流量
- 成功进行反射攻击的基本要求是可以生成带有虚假地址的数据包
- 过滤数据包也是抵御反射攻击的最基本的方式
- 放大攻击
- 放大攻击是反射攻击的一个变种,但中间媒介对每个来自攻击者的初始数据包会产生多个响应数据包。攻击者可以发送初始请求包到某些网络的广播地址,那么这个网络上的所有主机都可能会对数据报中源地址所指向的主机进行响应,形成响应数据包洪泛流。
- Smurf DoS(ping 洪泛攻击)、Fraggle(UDP 回送服务)、TCP 不能用于这种攻击(面向连接)
- 抵御放大攻击的最好措施是不允许定向广播由外部进入网络;另一个措施是限制回送或 ping 等网络服务被组织外部访问
- DNS 放大攻击
- 将 DNS 服务器作为中间媒介系统,使用直接指向合法 DNS 服务器端数据包进行攻击。攻击者利用 DNS 协议将较小的请求数据包转化为较大的合法数据包而达到效果
- 攻击者常常选择网络连接性能良好的 DNS 服务器
- 更进一步的变种利用了递归的域名服务器。
- 对付所有基于反射机制的攻击的基本方法是防止使用虚假地址(DNS 服务器的正确配置)
拒绝服务攻击防范:
- 基本措施:根本的、长期有效的抵御 DoS 攻击的方法是限制主机系统发送带有虚假源地址数据包的能力。
- 实施位置:过滤器应该尽可能的接近数据包的源头,放在可以获得输入数据包的有效地址范围的路由器或网关附近,如为一个组织或家庭用户提供网络连接的 ISP 路由器。
- 抵御非欺骗的洪泛攻击:提供显著过剩的网络带宽和内容相同的分布式服务器,但代价很高,且不能完全避免,总会有意外发生
- 防范 SYN TCP 欺骗攻击:
- 使用改进版本的 TCP 连接处理程序,把请求连接到关键信息加密编码并保存到 cookie 中,而不是保存在服务器上,然后将这个 cookie 作为服务器端初始序号封装在 SYN-ACK 响应包中包含序号加 1 的 cookie,然后服务器根据这个 cookie 来重构那些曾经在 TCP 连接表中存储的相关信息。
- 在 TCP 连接表溢出时,可以通过修改系统的 TCP/IP 网络处理程序来选择性的丢弃一个 TCP 连接表中不完全连接到表项,而允许新的连接请求。
- 另一种抵御 SYN 欺骗的措施是修改 TCP/IP 网络处理程序中所使用的参数
- 抵御广播放大攻击:屏蔽 IP 广播的使用。这可以由 ISP 或者那些被利用作为中间媒介的组织来实现。
课后习题
试述拒绝服务攻击的定义
- 哪些类型的资源被 DoS 攻击作为攻击目标?
- 洪泛攻击的目标是什么?
- 在通常的洪泛攻击当中,一般会使用什么样的数据包?
- 为什么很多的 DoS 攻击使用带有虚假源地址的数据包?
- 什么是“后向散射流量”?它能为哪种 DoS 攻击提供信息?它不能为哪种 DoS 攻击提供信息?
- 给出分布式拒绝服务攻击(DDoS)的定义。
- DDoS 攻击通常所使用的体系结构是什么样的?
- 给出反射攻击的定义
- 给出放大攻击的定义
- 防范 DoS 攻击的基本措施是什么?在哪里实施?
- 哪些防范措施可能抵御非欺骗的洪泛攻击?能否彻底预防这种攻击?
- 什么措施可以防范 TCP SYN 欺骗攻击?
什么样的防御措施可以阻止组织的系统中广播放大攻击中被用作媒介?
入侵检测
IDS
- IDS(入侵检测):一种硬件或软件功能,该功能用于收集和分析计算机或网络中各个区域的信息,以识别可能的安全入侵
- 三个逻辑组件:
- 传感器:传感器负责收集数据
- 分析器:分析器从一个或多个传感器或其他分析器接收输入
- 用户接口:IDS 的用户接口使用户能够查看系统输出或控制系统的行为
- IDS 分类:(20 真题)
- 基于主机的 IDS:监测一台主机的特征和该主机发生的与可疑活动相关的事件
- 基于网络的 IDS:监测特定的网段或设备的流量分析网络、传输和应用协议,用以识别可以的活动
- 分布式或混合式 IDS:将来自大量传感器(通常是主机和基于网络)的信息组合在一个中央分析器中,以便更好的识别和响应入侵活动
- IDS 优点:
- 如果能快速的检测到入侵,就可以在损害发生或者数据受到威胁之前,将入侵者识别出来并将其逐出系统。即使未能及时的检测出入侵者,但越早检测到入侵,则对系统造成的损失越小,而且越容易进行快速的恢复
- 有效的 IDS 可以作为一个威慑,从而达到阻止入侵的目的
- 入侵检测可以收集关于入侵检测的信息,用于增强入侵防御系统的防护能力
- 入侵检测系统的基率谬误是指:很难同时满足具有高检测率和低误报率的标准(21 真题)
- 分析方法
- 异常检测
- 包括采集有关合法用户在某段时间内的行为数据,然后分析观察到的行为,以较高的置信度确定该行为是合法用户的行为还是入侵者的行为
- 异常检测的分类方法:统计法、基于知识法、机器学习法
- 特征或启发式检测
- 使用一组已知恶意数据模式(特征)或者攻击规则(启发式)组成的集合来与当前的行为进行比较,最终确定这是否是一个入侵者。 (也称为误用检测,仅仅可以用来识别有模式或者有规则的已有攻击)
- 特征方法:是用一个大的已知的恶意数据模式的集合去匹配系统中或发送到网络中的数据
- 优点:相对较低的时间和资源开销以及它的广泛可用性
- 缺点:需要大量的精力来识别和检查新的恶意软件并为它们创建特征,以便系统能识别它们
- 基于规则的启发式识别:采用规则来识别已知的渗透或者利用已知漏洞进行的渗透
- 入侵检测方法一般可以分为基于特征的入侵检测和基于异常的入侵检测(19 真题)
- 异常检测
- 基于主机的入侵检测 HIDS
- 基于主机的 IDS(HIDS)向易受攻击或敏感的系统中添加专用的安全软件层,实例包括数据库服务器和管理系统
- 数据源和传感器:常用的数据源有 系统调用踪迹、审计(日志文件)记录、文件完整性校验和、注册表访问
- 基于异常的 HIDS
- 基于特征或启发式的 HIDS
- 分布式 HIDS
- 三个主要组件:主机代理模块、局域网监测代理模块、中央管理器模块
- 基于网络的入侵检测 NIDS
- NIDS 实时或接近实时的检查流量数据包,试图检测入侵模式,NIDS 可以检测网络层、传输层或应用层协议的活动
- 与 HIDS 的不同:NIDS 检测网络上流向潜在的易受攻击的计算机系统的数据包流量,而基于主机的 IDS 系统检测的是主机上的用户和软件活动
- 网络传感器的类型:内嵌传感器、被动传感器
- NIDS 传感器部署
- 入侵检测技术
- 特征检测:应用层侦查和攻击、传输层侦查和攻击、网络层侦查和攻击、意外应用程序服务、策略违背
- 异常检测技术:拒绝服务(DoS)攻击、扫描、蠕虫
- 状态协议分析(SPA)
- SPA 通过推断和追踪网络、传输和应用协议的状态,保证网络活动按预期发展
- 缺点:它所需要的高资源占用
- RFC:入侵检测消息交换要求、入侵检测消息交换格式、入侵检测交换协议
蜜罐
描述 IDS 的三个逻辑组件。
- 描述基于主机的 IDS 和基于网络的 IDS 之间的区别。它们组合到一起有怎样的优势?
- IDS 的三个优点是什么?
- 在 IDS 中,漏报和误报的区别是什么?
- 异常检测和特征或启发式入侵检测的区别是什么?
- 特征检测和基于规则的启发式识别的区别是什么?
- 列出并简要描述异常检测系统的三种分类
- 蜜罐是什么?
-
防火墙与入侵防御系统
防火墙的必要性
- 防火墙能够有效的保护本地系统或网络免受基于网络的安全威胁,同时支持通过广域网或 Internet 访问外部世界
- 防火墙设置在驻地网和 Internet 之间以建立二者间的可控链路,构筑一道外部安全壁垒或者说安全周界
- 这条安全周界的目的是保护驻地网不受 Internet 的攻击,提供一个能加强安全和审计的遏制点
- 防火墙可以是单机系统,也可以是协作完成防火墙功能的两个或者更多的系统
- 防火墙的特征和访问策略
- 设计的三个目标(21 真题考过)
- 所有内部到外部的流量都必须通过防火墙,反之亦然
- 只有经过授权的网络流量,防火墙才允许其通过
- 防火墙本身不能渗透
- 可以过滤流量的防火墙访问策略的特征:IP 协议和协议值、应用层协议、用户身份、网络活动
- 防火墙的功能:
- 防火墙定义一个遏制点,用于把未授权用户阻止在受保护的网络之外,阻止潜在安全威胁的服务进入或者离开网络,并且防止各种 IP 假冒攻击和路由攻击
- 提供监视安全相关事件的场所,执行审计和警告
- 为多种与安全不相关的 Internet 功能的实现提供一个便利的平台
- 可作为 IPSec 的平台。使用隧道功能,防火墙可实现虚拟专用网 VPN 功能
- 为了应对流量分析攻击,可以使用防火墙技术进行防范(14 真题)
- 防火墙的局限性:(20 真题考过)
- 防火墙不能阻止那些绕开防火墙的攻击
- 不能完全防止内部威胁
- 一个安全设置不当的无线局域网也可能允许来自公司外部的访问
- 笔记本电脑、PDA或便携式存储设备可能在企业网以外的地方使用时被感染了,之后被连接到内部网络使用
- 防火墙可以工作在网络的网络层,也可以工作在应用层(期末题、14 真题、16 真题)
- 防火墙是一种特殊编程的路由器,安装在一个网点和网络的其余部分之间,这样它就可以实时控制访问策略(15 真题)
- 设计的三个目标(21 真题考过)
- 防火墙的类型
- 包过滤防火墙
- 根据过滤的规则来检查每个接收和发送的 IP 包,然后决定转发或者丢弃此包
- 两种默认策略:默认=丢弃、默认=转发
- 包过滤防火墙的一个优点是简单。而且通常包过滤对用户是透明的,而且具有很快的处理速度
- 弱点:
- 不检查更高层的数据,因为不能阻止利用了特定应用的漏洞或功能进行的攻击
- 可利用的信息有限,使得包过滤防火墙的日志记录功能有限
- 大多数包过滤防火墙不支持高级的用户认证机制
- 包过滤防火墙对利用 TCP/IP 规范和协议栈存在的问题进行的攻击没有很好的应对措施(如网络层地址欺骗攻击)
- 包过滤防火墙根据几个变量进行访问控制决策,因此不恰当的设置会引起包过滤防火墙的安全性受到威胁
- 攻击方式及应对措施:
- IP 地址欺骗攻击
- 入侵者从外部向内传送数据包,使用的源 IP 地址域包含内部主机地址
- 应对措施:丢弃那些从外部接口到达的,并且 IP 地址为内部地址的包
- 源路由攻击
- 源站指定数据包在跨越 Internet 时应该采用的路由,希望这会绕过不分析源路由信息的安全措施
- 应对措施:丢弃所有使用了此选项的包
- 缩小分段攻击
- 入侵者利用 IP 分段选项产生特别小的数据分段,并强制将 TCP 头信息装入分散的分段中。主要是为了绕过基于 TCP 头信息段过滤规则
- 应对措施:规定包的第一个分段必须包含最少的预定传输头。如果第一个分段被处决,过滤器将记住这个包,并丢弃后继的所有分段
- IP 地址欺骗攻击
- 状态检测防火墙
- 传统的包过滤器仅仅对单个数据包执行过滤判断,而不考虑更高层的上下文信息。状态检测防火墙通过建立一个出站 TCP 连接目录来强制执行 TCP 流量的规则。每个当前建立的连接都有一个条目,只有当数据包符合这个目录中的某项时,包过滤器才允许那些到达高端口号的入站流量通过
- 其不仅可以检查与包过滤防火墙相同的数据包信息,也可以记录有关 TCP 连接到信息
- 一些状态检测防火墙还跟踪 TCP 包的序号,以阻止基于序号的攻击,例如会话劫持攻击
- 为了识别和跟踪相关的连接,一些状态检测防火墙甚至限制了一些众所周知的协议如 FTP、IM 和 SIPS 命令等的应用数据量
- 应用级网关
- 应用级网关也称为应用代理,起到应用级流量中继器的作用
- 网关可以被设置为只支持应用程序中网络管理者认为可接受的那部分特性,而且拒绝所有的其他特性
- 应用级网关往往比包过滤器更安全。应用级网关只需要审查几个合法的应用程序,而不用尝试处理 TCP 和 IP 级上允许和禁止的多种可能的组合。另外,在应用级上很容易记录和审计所有的入站流量
- 缺点:带来了对每条连接到额外处理开销
- 电路级网关
- 与应用级网关相似,电路级网关不允许端到端 TCP 连接,而是建立两条 TCP 连接,一条在自身和内部主机 TCP 用户之间,另一条在自身和外部主机 TCP 用户之间。一旦建立了这两条连接,网关就在这两条连接之间中继 TCP 分段,不检查其内容。安全功能包括判断哪些连接是允许的。
- 实现的一个例子是 SOCKS 包
- 包过滤防火墙
- 防火墙的布置
- 堡垒主机
- 通常堡垒主机可以作为应用级或电路级网关平台,或者可以支持其他服务(如 IPSec)
- 堡垒主机的共同特征:①堡垒主机的硬件平台上运行操作系统的安全版本,使其成为可信系统。②只有那些被网络管理员认为是基本的服务才可以安装在堡垒主机上③在用户被允许访问代理服务之前,堡垒主机可能需要对其进行附加认证。④每个代理被配置为只支持标准应用命令集的子集。⑤每个代理被配置为只允许对指定系统进行访问。⑥每个代理通过记录所有网络流量、每条连接以及每条连接到持续时间来维护详细的审计信息。⑦每个代理模块是专门为网络安全设计的非常小的软件包。⑧在堡垒主机中每个代理都独立于其他的代理。⑨处理读自己到初始配置文件以外,代理通常不进行磁盘读取操作。⑩每个代理在堡垒主机上有其专用而且安全的目录,并且以一个无特权的用户身份运行
- 基于主机的防火墙
- 基于主机的防火墙是一个用于保障个人主机安全的软件模块
- 优点:
- 过滤规则可以根据主机环境配置,既能够执行服务器共有的安全策略,也能够针对不同的应用使用不同的服务器过滤规则
- 保护功能独立与网络的拓扑结构。不管是内部的攻击还是外部的攻击都必须通过防火墙
- 应用于单机防火墙之间的联合处,基于主机的防火墙提供了一个额外的保护层。
- 网络设备防火墙
- 防火墙功能,尤其是数据包过滤和状态检测功能,通常在网络设备(如路由器和交换机)中提供以监视和过滤通过设备的数据包流。它们可以用来与堡垒主机和基于主机的防火墙一起提供额外的保护层
- 虚拟防火墙
- 在虚拟化环境中,不是使用物理上独立的设备作为服务器、交换机、路由器或防火墙堡垒主机,而是使用这些设备的虚拟化版本,共享相同的物理硬件。管理该环境中的虚拟机的管理程序也可以提供防火墙功能
- 个人防火墙
- 个人防火墙控制个人电脑个人电脑或者工作站与 Internet 或企业网络之间的网络流量
- 首要功能是拒绝对本机的非法远程访问。
- 防火墙也能够通过监控出站活动,来试图检测和阻断蠕虫和其他的恶意软件的行为
- 堡垒主机
- 防火墙的部署和配置
- DMZ 网络
- 外部防火墙被设置在局域网或者企业网络的边缘,紧接在连接 Internet 或者某个广域网的边界路由的内侧
- 一个或更多内部防火墙则负责保护企业内部网,在这两种防火墙之间是由一个或更多设备联网形成的“非军事区”的网络区域
- 外部防火墙为 DMZ 系统提供符合其需要并同时保证其外部连通性的访问控制和保护措施
- 内部防火墙的目的
- 与外部防火墙相比,内部防火墙增加了更严格的过滤能力,以保护企业服务器和工作站免遭外部攻击
- 对应 DMZ 网络,内部防火墙提供了双重的保护功能。首先,内部防火墙保护网络的其他部分免受由 DMZ 网络发起的攻击,这样的攻击可能来自蠕虫,rookit,bot 或者寄宿在 DMZ 系统中的恶意软件;其次,内部防火墙可以保护 DMZ 系统不受来自内部保护网络的攻击
- 多重内部防火墙可分别保护内部网的每个部分不受其他部分的攻击
- 虚拟专用网络(VPN)
- 一个 VPN 是这样的一组计算机:它们依靠一个相对不安全的网络相互连接,并利用加密技术和特殊的协议来提供安全性
- VPN 在底层上使用加密技术和身份验证,通过不安全的网络环境建立了一个安全的连接
- 实现 IPSec 的逻辑方法是将其设置在防火墙中
- 分布式防火墙
- 分布式防火墙涉及在一个中心管理员控制下协同工作的独立防火墙设备和基于主机的防火墙许多工具允许网络管理员穿过整个网络设定安全策略和监视网络的安全
- 安全监控是分布式防火墙配置的很重要的方面。包括日志统计和分析,防火墙统计,以及细粒度的单个主机的远程监控
- DMZ 网络
入侵防御系统(IPS)
- IPS 是 IDS 的扩展,能够尝试阻止或预防检测到的恶意活动
- 基于主机的 IPS(HIPS)
- HIPS 能够使用特征/启发式检测或异常检测识别攻击。前者重点在于从应用程序网络流量的内容或系统调用的顺序之中,查找可被认为是恶意行为的特征。后者 IPS 主要寻找能够表明某软件为恶意行为的行为模式
- HIPS 所涉及的恶意行为:对系统资源的修改、提权攻击、缓冲区溢出攻击、访问电子邮件通讯录、目录遍历
- 除了特征检测和异常检测技术之外,HIPS 还可以使用沙箱方法,将移动代码隔离在一个独立的系统区域内,然后允许它并监视其行为
- HIPS 提供的桌面保护系统的范围:系统调用、文件系统访问、系统注册表设置、主机输入/输出
- 基于网络的 IPS(NIPS)
- 实质上是一个具有修改或丢弃数据包和断开 TCP 连接权限的内嵌 NIDS(基于网络的入侵检测系统)
- NIPS 使用流数据的保护,要求对一个数据包序列中的应用载荷进行重组。每当数据流中的一个新包到达时,IPS 设备对流的全部内容进行过滤。当一个数据流被确定为恶意时,最后到达以及所有属于可疑数据流的后续数据包都会被丢弃
- 识别方法:模式匹配、状态匹配、协议异常、传输异常、统计异常
- 分布式或混合式 IPS
- 其收集大量基于主机和基于网络的传感器数据,将其传送到中央处理系统。中央处理系统对这些数据进行关联分析并更新特征和行为模式,从而使得所有的协作系统可以应对和防御恶意行为
- 最著名的是数字免疫系统
- Snort Inline:一种轻量级的入侵检测系统
课后习题
包过滤防火墙有哪些弱点?
- 包过滤防火墙和状态检测防火墙的区别是什么?
- 什么是应用级网关?
- 什么是电路级网关?
- 堡垒主机的一般特征是什么?
-
缓冲区溢出
考点
各种溢出的概念、攻击方法、防御手段
-
重点
栈溢出:
- 缓冲区溢出的定义:缓冲区溢出是指接口的一种状况,此时大量的输入被放置到缓冲区或者数据存储区,超过了其所分配的存储能力,覆盖了其他信息。攻击者利用这样的状况破坏系统或者插入特别编制的代码,以获得系统的控制权。
- 缓冲区溢出攻击最常见的方法:通过使用某个特殊程序的缓冲区溢出转而执行一个 shell,通过 shell 的权限可以执行高级的命令,如果这个特殊程序具有 System 权限,攻击者就能对系统为所欲为了
- 发生缓冲区溢出错误的后果包括:程序使用的数据受到破坏、在程序中发生意外的控制权转移、可能的内存非法访问以及很可能导致程序终止。
- 利用缓冲区溢出的两个关键因素:
- 在一些程序中识别缓冲区溢出漏洞,这些漏洞在攻击者的控制下使用外部的数据资源能够被触发
- 要理解缓冲区是如何存储在进程的内存中的,以及因此破坏相邻的内存区域和改变程序的执行流的可能性
- 编程语言和缓冲区溢出:易受缓冲区溢出影响的编程语言是那些对变量的类型以及对变量允许的操作的构成没有非常明确的概念的语言。它们包括汇编语言、C语言和类似的语言。强类型语言(如Java、ADA、Python和许多其他语言)不容易受到这些攻击。
- 栈缓冲区溢出:“栈缓冲区溢出”发生在目标缓冲区位于堆栈上,通常作为函数堆栈框架中的局部变量。如果对于将外部来源的数据复制到缓冲区的代码,程序不能正确地限制其写入的数据量,那么相邻变量的值,甚至控制字段如保存的帧指针和返回地址,都可以被覆盖。这可能导致程序崩溃,或者在执行过程中被传输到攻击者提供的(shell)代码。
- shellcode:
- shellcode 是指机器代码,是与机器指令和数据值相对应的一串二进制值,而这些指令和数据值能够使攻击者实现期望的功能。通常它的功能是将控制权转移给一个用户的命令行解释器或者 shell。
- shell 的约束条件:
- shellcode 必须是浮动地址,即不能包含属于它自己的绝对地址,因为攻击者一般不能预先准确确定在函数的栈帧里目标缓冲区设置在什么地方
- shellcode 不能包含任何 null 字符,没有 null 字符才能保证全部的 shellcode 能首先被复制到缓冲区。
- 针对缓冲区溢出的防御:
- 划分为两类:
- 编译时防御,目标是加固程序来抵抗在新程序中的攻击
- 运行时防御,目标是在现有的程序中检测和终止程序
- 编译时防御:
- 程序设计语言的选择:使用一种现代高级程序语言编写程序
- 安全的编码技术
- 语言扩充和安全库的使用
- 栈保护机制:
- 栈卫士(canary)
- Stackshield 和返回地址防护者(RAD)
- 运行时防御:
- 可执行地址空间保护
- 地址空间随机化
- guard 页
- 划分为两类:
其他形式的溢出攻击:
- 替换栈帧:
- 差一错误(off-by-one)攻击
- NOP sled
- NOP sled:NOP(非操作)指令,这些指令包含在所需的 shell 代码之前,以帮助攻击者克服对 shell 精确地址缺乏了解的问题
- 作用:NOP sled 用多个 NOP 指令填充缓冲区前面的空间,因为这些指令什么都不做,攻击者能够指定进入这段代码使用的返回地址,攻击者能够维持 NOP 运行,不做任何操作,直到找到真正的 shellcode 的起始地址。
- 返回到系统调用:
- 改变返回地址,使程序跳转到系统上现有的代码
- ROP(返回导向编程)
- 在“返回系统调用”攻击中,通常使用堆栈溢出,但返回地址被更改为跳转到系统上的现有代码,其通常是在标准库中。这避免了触发阻塞堆栈或堆上可执行代码的运行时防御。可以使用堆栈保护机制来防止它们。
- 堆溢出:
- 在“堆缓冲区溢出”攻击中,目标缓冲区位于堆上而不是堆栈上。这些指针通常以位于此类缓冲区附近的函数指针或堆管理指针为目标。这些攻击避免了侧重于基于堆栈的攻击的防御。
- 防御措施包括使堆不可执行,或将堆上结构的地址随机化。
- 全局数据区溢出:
- 如果使用不安全的缓冲区操作,数据可以溢出到一个全局数据的缓冲区,并改变相邻的内存地址,包括可能是随后就要调用的函数的一个函数指针。
- 格式化字符串溢出
- 整数溢出
课后习题
- 替换栈帧:
给出缓冲区溢出的定义。
- 在进程的地址空间容易发送缓冲区溢出攻击,请列出作为攻击目标的三种不同类型的存储单元。
- 缓冲区溢出发生的可能后果是什么?
- 哪种类型的程序设计语言容易出现缓冲区溢出漏洞?
- 描述一个栈缓冲区溢出攻击是如何实现的。
- 给出 shellcode 的定义。
- 在 shellcode 中经常发现哪些约束条件?如何避免?
- 描述什么是 NOP sled,在一个缓冲区溢出攻击中如何使用它?
- 缓冲区溢出的两类防御措施是什么?
- 描述一个堆溢出攻击是如何实现的?
缓冲区溢出
大题可能考图10-1、10-7、10-10 ```cpp //危险函数 scanf、gets 等输入读取函数 char buf[10];
scanf(“%s”, buf); //未限制读取长度,存在栈溢出的风险 scanf(“%10s”, buf); //限制了长度为10,但该函数会在字符串末尾自动添加一个“\0”,如果输入刚好10个字符,“\0”会溢出 scanf(“%9s”, buf); //正确 //对于 gets 函数可使用 fgets 函数代替,fgets(str, szieof(str), stdin);
//危险函数 strcpy、strcat、sprintf 等字符串拷贝函数 int len; char srcbuf[20]; char destbuf[10];
len = read(0, srcbuf, 19); //很好的限制了长度 src[len] = 0; strcpy(destbuf, srcbuf); //把 srcbuf 拷贝到 destbuf,显然长度不够,会溢出 //建议使用相应的安全函数 strncpy、strncat、snprintf 等来代替,这些函数都有一个 size 参数用于限制长度 //snprintf(tmp, sizeof(tmp), “read val: %s\n”, val); ```
软件安全
- 软件安全概念
- 软件质量和可靠性与软件安全的区别:软件质量和可靠性关心的是一个查询是否意外出错,这些错误是由一些随机的未预料的输入、系统交互或者使用错误代码一起的,它们服从一些形式的概率分布。软件安全不同于软件质量和可靠性,攻击者不会依据一定的概率分布实施攻击,它们的目标是那些特殊利用的 bug,从而造成程序失败,这些 bug 经常能够通过一些罕见的输入被触发,因此一般的测试方法很难发现。软件安全关心的不是程序中 bug 的总数,而是这些 bug 是如何被触发导致程序失败的。
- 防御性程序设计:防御性程序设计是安全程序设计师一个软件设计与实现流程,目的是使生成的软件即使在面临攻击时仍然能够继续工作。如此编写而成的软件能够检测出由攻击所引发的错误条件,并能继续安全的执行;或者即使执行失败,也能优雅的“落地”。防御性程序设计的关键是绝不做任何假设,但是要检查所拥有的假设,并处理任何可能的错误状态。
- 注入攻击
- 注入攻击涉及多种与输入数据无效处理相关的程序缺陷,特别是程序输入能够有意或无意间影响到程序的执行流。
- 命令注入攻击:使用的输入数据可以建立一个命令,随后通过拥有 Web 服务器特权的系统执行这个命令
- SQL 注入:由用户提供的输入数据可以建立一个 SQL 请求,从数据库取回一些信息
- 代码注入攻击:提供的输入包含被攻击的系统能够运行的代码
- 跨站点脚本攻击(XSS)
- XSS 反射:攻击者在提交给站点的数据中包含恶意的脚本代码,如果这个内容未经充分检查就显示给其他用户,而这些用户假设这个脚本是可以信任的,他们将执行这个脚本,访问与那些站点相关的任何数据
- 验证输入语法:
- 规范化:输入的数据必须首选转换成单一的、标准的、最小的表示形式
- fuzzing 技术:软件测试技术,使用随机产生的数据作为程序的输入进行测试
- 编写安全程序代码:
- 内存泄露:程序需要使用内存的时候就动态分配,使用之后随机释放。如果一个程序没有正确管理这个过程,后果可能是堆区的可用内存逐步减少,直至完全用尽。
- 竞争条件:如果没有恰当的访问同步机制,进程或线程由于重叠访问、使用和替代共享值,就可能导致数据值被破坏或修改丢失
与操作系统和其他程序进行交互:
试述软件质量和可靠性与软件安全的区别
- 试述什么是防御性程序设计
- 列出一些可能的程序输入资源
-
操作系统安全
Linux/UNIX 安全
- 补丁管理
- 确保系统和应用都打上了最新的安全补丁是被广泛接受的维护系统安全的重要方法
- 应用和服务配置
- UNIX 和 Linux 上应用和服务的配置普遍使用单独的文件来实现,每一个应用和服务都有独立的配置文件
- 这些文件可以用文本编辑器进行编辑,发生的任何更改会在系统重启后生效,或者也可以向系统发送信号要求相关进程重新初始化来生效
- 增强系统安全性最重要的措施是禁用服务,尤其是禁用不需要的远程访问服务,并且确保所有的服务或应用根据相应的安全指导进行了合适的配置
- 用户、组和权限
- 按照惯例,Linux 系统中用户账户和组的相关信息保持在 /etc/passwd 和 /etc/group 文件(20 真题)
- 建议更改目录和文件的访问权限,以进一步限制对他们的访问。这种程序的软件漏洞很容易被攻击者利用来提升其权限,这称为本地攻击。网络服务器中的软件漏洞被攻击者触发并利用。称为远程攻击
- 远程访问控制
- TCP Wrappers 和 tcpd 守护进程提供了一种网络服务器可以会用到的机制,即轻量级服务可能会被 tcpd 进行封装,之后代替他监听请求
- 日志记录和滚动
- 许多应用允许指定一个专门文件来记录应用事件数据,或者也可以使用系统日志将数据写入到 /dec/log。logrotate 可以用来滚动系统中的任何日志
- 使用 chroot 监牢的应用安全
- 将不要求访问全部系统的服务运行在 chroot 监牢中,限制服务对系统的可见性,使其只能看到系统的一部分。
- 这种功能通过使用 chroot 系统调用来实现。chroot 监牢外部的文件是根本不可见并且无法访问的
- 安全性测试
- Nessus、Tripwire、Nmap
- 补丁管理
- Windows 安全(还没考过)
- 补丁管理
- 用户管理和访问控制
- Windows 系统的用户和组以安全 ID(SID)来定义
- Windows 实现了对系统资源的任意访问控制,例如文件、共享内存、命名管道
- 应用和服务配置
- 与 UNIX 和 Linux 操作系统不同,Windows 系统的许多配置信息是统一放在注册表当中的
- 注册表是一个存储键和值的数据库,可以被系统中的应用查询和解释
- 其他安全控制工具
- 安全性测试:微软基线安全分析器
虚拟化安全(还没考过)
- 虚拟化指的是使用某些软件对计算资源进行抽象的技术,因此它运行在称为虚拟机(VM)的仿真环境当中
- 虚拟化方案
- 虚拟机管理器是介于硬件与虚拟机之间的充当资源代理的软件程序,它运行多个虚拟机中一个物理服务器主机上安全的共存,并共享该主机的物理资源
- 虚拟机过滤器执行的主要功能:虚拟机的执行管理、设备模拟和控制访问、通过虚拟机管理器为客户虚拟机执行特权操作、虚拟机管理(也称为虚拟机生命周期管理)、管理虚拟机管理器平台与虚拟机管理器软件
- 虚拟机管理器类型:一型虚拟机管理器\二型虚拟机管理器
- 两种虚拟机管理器的关键差异:
- 一型虚拟机管理器比二型表现更好
- 一型虚拟机管理器比二型更安全
- 二型虚拟机管理器允许用户利用虚拟化,而不需要将服务专门用于该功能
- 容器(容器虚拟化或应用程序虚拟化)
- 被称为虚拟化容器的软件运行在主机操作系统内核之上,并为应用程序提供一个隔离的执行环境
- 容器的目的不是模拟物理服务器,主机上所有的容器都共享一个共同的 OS 内核
- 虚拟化安全问题:客户操作系统独立、客户操作系统被管理程序监控、虚拟化环境安全
- 虚拟化架构安全
- 三种不同的网络通信:管理通信、架构通信、应用程序通信
- 虚拟防火墙
域名密钥识别邮件标准 DKIM:是一种电子邮件消息加密签名的规范,它允许一个签名的域名来声明其对邮件流中的某个消息负责。
- SSL 协议体系:
- SSL 是工作在计算机网络的数据链路层的安全协议(14 真题)
- 结构:
- 底层协议:SSL 记录协议
- 三个上层协议:SSL 握手协议、SSL 变更密码规范协议、SSL 报警协议

- 记录协议:
- SSL 记录协议为 SSL 连接提供了两种服务
- 机密性:握手协议定义了一个共享密钥,用于对 SSL 载荷对称加密
- 消息完整性:握手协议还定义了一个共享密钥,它用来产生一个消息认证码(MAC)
- SSL 记录协议的操作过程:
- 分段:首先将每个上层消息分解成不大于 214 字节(16384 字节)的组,然后有选择的进行压缩
- 在压缩数据的基础上计算消息认证码,把压缩消息加上 MAC 用对称加密方法进行加密
- 添加一个头部, 包括版本和长度域
- SSL 记录协议为 SSL 连接提供了两种服务
- 变更密码规范协议
- 该协议只包含一条消息,由一个值为 1 的字节组成
- 这个消息的唯一功能就是将预备状态拷贝到当前状态,该消息更新了在这一连接中使用的密码套件
- 报警协议:用于将与 TLS 相关的报警传达给对等实体。与使用 TLS 的其他应用一样,报警消息需要依据当前状态的规范进行压缩和加密
- 握手协议:
- 两个功能:客户和服务器相互鉴别、协商算法和密钥
- 三个安全特征:身份鉴别、密钥安全、过程可靠
- 心跳协议:
- 心跳是由硬件或软件产生的一个周期性的信号,用以表明操作正常,或用以与一个系统的其他部分进行同步。心跳协议通常用于检测一个实体的可用性。- 心跳协议运行在 TLS 记录协议的顶部,包括两种消息类型:**心跳请求和心跳响应**- 心跳协议的使用是在握手协议的第一阶段中确立的,对每一个对等端都要表明其是否支持心跳,如果支持,则要指出他是否愿意接收 heartbeat_request 消息并以 heatrbeat_response 消息回应- 心跳协议的目的:- 向发送者确保接收端还活着,即使有可能在底层 TCP 连接上已有一段时间没有任何活动- 心跳生成了空闲时间中的活动连接,以避免被不容忍空闲连接到防火墙关闭掉
- 两个重要概念:TLS 连接、TLS 会话
- 连接:连接是一种能够提供合适服务类型的传输。这样的连接是点到点的连接关系,而且这些连接是瞬态的、暂时的。每一个连接都与一个会话关联
- 会话:TLS 会话是一个客户端和一个服务器之间的一种关联。会话由握手协议创建。所有会话都定义了一组密码安全参数,这些安全参数可以在多个连接之间共享。会话可以用来避免每个连接需要进行的、代价高昂的新的安全参数的协商过程
- SSL/TLS 攻击:握手协议攻击、记录和应用数据协议攻击、PKI 攻击、其他攻击、心脏出血
- 什么是 HTTPS?和 HTTP 有什么区别?
- HTTPS 是指 HTTP 和 SSL 的组合,用以实现 Web 浏览器和 Web 服务器之间的安全通信。
- Web 浏览器用户见到的主要区别是 URL(统一资源定位符)地址是以 https:// 开始而不是 http://。一般和 HTTP 连接使用 80 端口,而 HTTPS 规定使用 443 端口,这个端口可以调用 SSL。一旦使用 HTTPS,通信中下列元素将被加密:被请求文档的 URL;文档的内容、浏览器表单的内容、由浏览器发送到服务器和由服务器发送到浏览器的 cookie、HTTP 头的内容
IPv4和IPv6的安全性
- IP 安全概述
- IP 级包含的三个安全领域:认证、机密性、密钥管理
- IPv4的缺陷:
- 缺乏对通信双方身份真实性的鉴别能力
- 缺乏对传输数据的完整性和机密性保护的机制
- 由于IP地址可软件配置以及基于源地址的鉴别机制,IP层存在业务流被监听和捕获、IP地址欺骗、信息泄漏和数据项篡改等攻击
- IPSec:
- 在网络层提供身份鉴别、数据完整性和保密性服务,弥补IPv4在协议设计时缺乏安全性考虑的不足
- 对于应用层透明
- 是IPv6的主要组成部分
- IPSec 的优点:
- 当把 IPSec 应用到防火墙或路由器时,它将对通过边界的所有通信流提供强有力的保护
- 如果所有的外部流量必须使用 IP 且防火墙是由 Internet 进入组织内部的唯一入口,则在防火墙内的 IPSec 难以被绕过
- IPSec 在传输层(TCP、UDP)之下,对所有应用都是透明的。当 IPSec 应用到防火墙或路由器上时,不需要对用户系统和服务器系统的软件做任何改动。
- IPSec 对终端用户是透明的,不必对用户进行安全机制的培训
- IPSec 可以为个人用户提供安全
- IPSec 提供了两张主要的功能:封装安全载荷(ESP)的认证/加密组合功能;二是密钥交换功能
- IPSec的内容:
- 协议部分
- AH:认证头
- ESP:封装安全载荷
- 密钥管理
- SA: 安全关联
- ISAKMP:定义了密钥管理框架
- IKE 是目前正式确定用于 IPSec 的密钥交换协议
- 协议部分
- 安全关联 SA
- 关联是发送方和接收方之间的单向关系,该关联为两者间的通信流提供安全服务。如果需要双向安全关联,则需要建立两个安全关联。
- 一个安全关联由如下三个参数唯一确定:安全参数索引、IP 目的地址、协议标识
- 封装安全载荷 ESP:
- 提供的服务:
- 数据保密性
- 有限的数据流保密性
- 数据源认证(可选)
- 无连接的完整性
- 抗重放服务
- 提供的服务:
- 传输模式和隧道模式
- IP 安全概述
什么是 DKIM?
- SSL 由哪些协议构成?
- SSL 连接和 SSL 会话之间有什么不同?
- SSL 记录协议可以提供哪些服务?
- HTTPS 的目的是什么?
- 什么是 IPSec 安全关联?
-
Internet 认证应用
Kerberos
- 产生于20世纪80年代中期,目的是为了解决网络服务的授权访问问题
- Kerberos 机制:
- 在分布式网络环境下,引入一个可以信任的第三方,提供用户与服务器之间的鉴别服务
- 采用对称密码算法
- 目前已被采纳为RFC 1510
- 系统特点:安全、可靠、透明、可伸缩
- Kerberos 整个方案就是一个可信的第三方认证服务。本质上,Kerberos 要求用户调用每个服务时需要证明他的身份,并且可随意要求服务器向客户端证明它们的身份
- Kerberos 协议包括客户端、应用服务器和 Kerberos 服务器
- Kerberos 使用两个服务器:分别是认证服务器 AS 和票据授予服务器 TGS(19 真题)
- 基本思想:
- 使用一个认证服务(AS),它知道所有用户的口令,并把他们存储在一个集中的数据库中,然后用户就可以登录 AS 进行身份验证
- 一旦 AS 验证了用户的身份,它可以把这个信息传送到一个应用服务器,这个应用服务器就接受客户端的服务请求
- 在安全方式下完成上述工作:
- 不让客户端在网络把用户口令发送到 AS,因为敌手可以在网络上观测到用户的口令,然后重用该口令
- 不让 Kerberos 将一个明文消息发送到一个服务器验证客户端身份,因为敌手可以装扮成 AS 并发送一个假的确认消息
- AS 和每个服务器共享一个唯一的安全密钥
- 票据:
- 票据组成了一个客户端用来请求服务的信任证书的集合。票据显示 AS 已经接受了这个客户端和它的用户。整个票据使用 AS 和服务器共享的 DES 密钥加密
- 票据授予票据是用一个仅有 AS 和 TGS 知道的密钥加密的
- 客户端和服务器共享一个密钥,这个密钥能够被用来加密将在客户端和服务器之间发送的消息,或者是为了彼此发送消息而交换新的会话密钥所发送的消息
- X.509
- X.509 证书的变体:传统(长效)证书、短效证书、代理证书、属性证书
- X.509 定义了一个证书吊销列表 CRL,是由颁发者签名的
- X.509 认证技术是基于公钥密码体制的(期末题,20 真题)
- X.509 标准是由国际电信联盟制定并公布的(期末题)
- 公钥基础设施(PKI)
- 公钥基础设施(PKI)为基于非对称密码体制,用来生成、管理、存储、分配和撤销数字证书的一套硬件、软件、人员、策略和过程。开发一个 PKI 的主要目标是使安全、方便和高效获取公钥成为可能
- PKI 中进行数字证书管理的核心组成模块是认证中心 CA
- 当前 PKI 模型的问题:
- 验证证书若出现问题,需依赖用户做出合理决定
- 假设可信存储库的所有 CA 都是被同等信任的,同等良好管理的,采用同等安全策略的
- 不同的 Web 游览器和操作系统使用不同的可信存储库,因此为用户呈现出不同的安全视角
- 通用应用:电子邮件的加密与签名、SSL/TLS、IPSec、VPN
- 特殊应用:HSM设备证书、ATM证书
