当前课程知识点:网络空间安全技术 > 第6章 网络空间安全防御应用与数据安全技术 > 6.1 漏洞扫描与漏洞挖掘技术 > 6.1 漏洞扫描与漏洞挖掘技术
同学们,大家好
这节课
我们来学习《网络空间安全技术》第三篇
网络空间安全防御技术体系
第6章网络空间安全防御
应用与数据安全技术的内容
在这章里面
我们分五讲来给大家讲授
首先是漏洞扫描与漏洞挖掘技术
第二是web安全技术
第三是软件安全技术
第四是数据安全技术体系
第五是信息隐藏技术
我们首先来看
第1节漏洞扫描与漏洞挖掘技术
在这一节里面
我们分以下小点来跟大家一起讨论
首先是漏洞和脆弱性
第二是漏洞扫描技术
第三是漏洞挖掘与漏洞分析技术
最后
是请同学们进行思考与拓展的内容
在漏洞与脆弱性
这个小点里面
我们讨论五点内容
第一是漏洞概念
第二是漏洞与脆弱性的区别和联系
第三是漏洞的形成机理与分类
第四是漏洞的利用方式及其危害
第五是漏洞与Bug的关系
我们来看漏洞的概念
漏洞
在国际上人们对漏洞有多种定义
我们来看其中两个典型的定义
定义之一
漏洞是指系统当中存在的一些功能性
或者是安全性的逻辑缺陷
包括一切导致威胁
损害计算机系统安全性的所有因素
是计算机系统在硬件
软件协议的具体实现
或系统安全策略上
存在的缺陷和不足
定义之二
信息产品和服务在需求分析、设计、实现
配置、测试
运行和维护过程当中
有意或者是无意产生的
有可能被利用的缺陷或者是脆弱点
一旦它被利用
就会对产品和服务的安全造成损害
影响其正常运行
接下来我们来看一下
漏洞与脆弱性的联系和区别
通常二者被视为是同义的
在很多场景之下
人们对漏洞和脆弱性
二者不做严格的区分
但是在严格意义上
漏洞它是指信息系统软硬件存在的缺陷
脆弱性的含义更广
比如说网络架构的脆弱性
甚至
包括人的因素等等
接下来我们看漏洞的形成机理与分类
根据形成机理的不同
漏洞它主要分为三大类
第一类是代码问题
包括资源管理错误
输入验证错误
数字错误
竞争条件问题
处理逻辑错误
加密问题
授权问题
数据转换问题、未声明功能等等
在配置错误方面
主要是包括身份保护功能默认被禁用
安全策略配置错误
此外还有环境问题
比如说常见的信息泄露
和故障注入等等
接下来我们来看
漏洞的利用方式及其危害
攻击者通过攻击向量
也就是攻击途径
利用系统漏洞也就是安全弱点
对于系统的资产及其功能实施控制
进而对系统业务产生负面影响
漏洞是这种攻击得以成功的前提
攻击者利用漏洞实现对系统的控制
对信息系统的资产功能等产生
技术和业务两方面的影响
造成安全危害
接下来我们来看一下
漏洞与Bug的关系
Bug是泛指计算机
软件和硬件出现问题
导致系统不能正常工作
而漏洞是专指
可导致安全问题的Bug
因此在某种意义上来说漏洞
它是我们软件Bug 的一个子集
接下来我们来学习漏洞扫描技术
分为四个知识小点
漏洞扫描的概念
漏洞扫描的类型
漏洞库
以及漏洞扫描工具
首先我们来看漏洞扫描的概念
漏洞扫描它是基于漏洞数据库
或者叫漏洞知识库
通过扫描等手段对指定的远程
或者是本地
信息系统的安全脆弱性进行检测
发现利用漏洞的一种安全检测
有时候我们也把它称为
渗透攻击行为
从类型来说漏洞扫描包括三类
一个是主机漏洞扫描
它是直接针对具体主机
发现主机操作系统和
应用软件当中的漏洞
第二类是网络漏洞扫描
主要是通过网络来扫描
远程信息系统当中的漏洞
那么第三类是web漏洞扫描
它主要是针对web系统来
发现web当中的漏洞问题
接下来我们来看一下漏洞库
漏洞库分为国外主流漏洞库
和国内主流漏洞库两大类
国外的主流漏洞库包括CVE
也就是通用漏洞与披露
它是由
MITRE公司维护
它的应用
是目前国际上最为广泛的一种漏洞库
第二类是CWE
也称为通用弱点列表
第三类是
NVD也就是美国国家漏洞库
第四类是CVSS
它其实是一种通用漏洞的评分系统
也是由NVD来维护的
这是国外主流漏洞库的情况
接下来我们来看一下
国内主流漏洞库的情况
国内的主流漏洞库主要有两类
一个是CNNVD
国家信息安全漏洞库
它是由中国信息安全评测中心来维护的
第二类是CNVD
又称为中国国家
信息安全漏洞共享平台
它是由CNCERT来维护的
接下来我们看一下漏洞扫描工具
常用的漏洞扫描工具很多
比如说OpenVAS
Tripwire IP360
Nessus 等等
同学们
下面
我们来学习漏洞挖掘和漏洞分析技术
首先我们来讨论漏洞挖掘
和漏洞分析的概念
然后我们对漏洞挖掘的方法
要进行一个基本的分类
最后介绍一下典型的漏洞挖掘技术
所谓漏洞挖掘
它是指对未知漏洞的探索
结合应用各种技术和工具
尽可能地找出软件当中的潜在漏洞
而漏洞分析
则是对已发现的漏洞的细节
进行深入的分析
为漏洞利用补救等措施
来进行铺垫
从分类上来说
根据分析对象的不同
漏洞挖掘技术
又可以分为基于源码的漏洞挖掘
以及基于目标代码的漏洞挖掘
基于源码的漏洞挖掘
它的前提是必须能够
获取到源代码
它的难度相对较低
而基于目标代码的漏洞挖掘
因为大多数商业软件很难获得源码
所以基于目标代码的漏洞挖掘
会涉及到编译器
指令系统
可执行文件格式等知识
相对来说
难度比较大
漏洞挖掘技术从
逆向分析的角度
又可以分为三类
一个是白盒分析
第二是黑盒分析
第三是灰盒分析
接下来我们来看典型的挖掘技术
那么进行漏洞挖掘需要哪些能力呢
我们说它需要四种能力
第一是程序正向开发能力
包括编程语言
系统内部设计、设计模式
协议和框架等
第二是攻防对抗能力
从基本的安全原则
到不断变换的漏洞形态
及漏洞缓解措施
都应该有一定的了解
第三是技术工具利用能力
能够高效利用工具快速将
相关的思路转化为具体的实践
最后是目标信息系统的理解能力
应该对目标信息系统的功能
性能、部署、应用及其安全性
有着较为深刻的理解
有些时候又要求漏洞挖掘者
对于目标信息系统的理解能力
要超出系统的开发者和使用者
接下来我们来看一下典型的漏洞
挖掘技术
第一:手工测试技术
事实上漏洞挖掘需要利用多种技术
相互结合
共同使用和优势互补
那么手工测试技术呢
就是其中常用的一种技术
它是通过客户端
或服务器来访问目标服务
手工向目标程序发送特殊的数据
包括有效的输入和无效的输入两种
观察目标信息系统状态
对各种输入的反应
根据结果来发现其中的漏洞
这种方法不需要额外的辅助工具
可以通过手工来独自完成
因此它的实现方式比较简单
但是它高度依赖于挖掘者
需要测试者对目标比较了解
因此它可以用于Web应用程序、浏览器
及其他需要用户交互程序的漏洞挖掘
第二种是静态分析技术
它主要是通过
词法、语法、语义分析
来检测程序当中潜在的安全问题
发现安全漏洞
它的基本思想是对程序
源代码的静态扫描分析
可以归类为静态检测分析
重点检查函数调用及反回状态
特别是对未进行边界检查
或边界检查不正确的函数调用
由用户提供输入的函数
等进行重点检查
静态分析技术
主要是采用源代码
扫描和反汇编扫描两种技术
它不需要运行软件程序就
能够分析程序当中可能存在的漏洞
这是它的
最显著的优点
与静态分析相对应
我们来看一下动态分析技术
动态分析技术是在调试器中
运行目标程序
通过观察执行过程当中
程序的运行状态、内存使用状况
以及寄存器的值
等以发现其中潜在的问题来寻找漏洞
它从代码流和数据流两个方面入手
通过设置断点动态
跟踪目标程序代码流
以检测有缺陷的函数调用及其参数
对数据流进行双向分析
通过构造特殊数据来触发
潜在的错误并对结果进行分析
动态分析技术
主要的技术形态分为输入追踪测试法
堆栈比较法、故障注入分析法等等
动态分析技术它需要借助辅助的工具
比如说Softlce
OllyDbg、WinDbg 等等
动态分析技术
这种方法它不需要源代码
可以通过观察程序的输入和输出
来分析
而且对程序进行各种检查
以验证目标程序
是否存在错误和相关的漏洞
接下来一种
常用的技术叫做模糊测试技术
这种技术它是基于
缺陷注入的自动软件测试技术
利用黑盒测试思想
使用大量
半有效数据
作为目标信息系统的输入
以目标信息系统是否出现异常为标志
来发现其中可能存在的安全漏洞
那么什么是半有效数据呢
半有效数据是指输入的部分
它存在必要标识
和大部分数据对
目标信息系统来说是有效的
系统会把这个数据认定为有效数据
而这个数据里边其余部分
是无效的
目标系统在
处理该数据时候可能会出现错误
进而导致应用程序的崩溃或者是
触发相应的安全漏洞
利用Fuzzer工具通过完全随机或
精心构造
一定的输入可以实现模糊测试技术
这种技术简单易懂
从发现漏洞到漏洞重现实现比较容易
而且不存在误报的问题
它的缺点是通用性比较差
构造测试周期比较长
接下来我们看一下
另外一种非常有用的
漏洞挖掘技术叫做
补丁比对技术
补丁比对技术用于挖掘已知的漏洞
因此也被认为是漏洞分析技术之一
我们知道漏洞一般都有相应的补丁
因此我们可以通过比较
打补丁前后的二进制文件
来确定漏洞的具体位置和相应的成因
辅以数据流分析
可以得到漏洞利用的攻击代码
补丁比对的具体方法是
二进制字节比较
二进制文件反汇编文本比较
基于指令相似性的图形化比较
以及结构化二进制比较等等
常用的工具包括 IDACompare
Binary Diffing Suite
也就是EBDS
BinDiff等等
这些是常用的
补丁比对技术漏洞挖掘工具
同学们
这节课我们给大家
提出了一些问题供同学们思考
如何在信息系统设计、实现和部署时
尽量避免漏洞的生成
比如说在信息系统的设计阶段
如何避免出现设计错误
在信息系统的实现阶段
如何避免软件、硬件的不安全实现
在信息系统的部署阶段
如何避免在部署阶段生成漏洞呢
这些问题呢都请同学们课下思考
同学们
这节课我们就讲到这里
感谢观看
下次再见
-课程总览
-1.1 网络与网络空间
-1.2 网络安全与网络空间安全
-1.3 网络空间安全与国家安全
-1.4 网络空间安全威胁 风险与攻防
-第1章 习题
--第1章 习题
-2.1 安全理论 技术 与工程的关系
-2.2 网络空间信息系统安全工程
-2.3 网络空间安全技术体系
-2.4 网络安全与攻防对抗模型
-第2章 习题
--第2章 习题
-3.1 攻击模型与攻击链
-3.2 攻击向量与攻击面
-3.3 攻击图
--3.3 攻击图
-3.4 网络安全攻击技术分类
-3.5 典型的安全攻击方法
-第3章 习题
--第3章 习题
-4.1 密码与加密概述
-4.2 对称加密技术
-4.3 非对称加密技术
-4.4 哈希技术
--4.4 哈希技术
-4.5 认证技术与PKI体系
-第4章 习题
--第4章 习题
-5.1 信任体系与零信任安全
-5.2 操作系统与终端安全
-5.3 网络安全防护架构
-5.4 典型的网络安全技术
-第5章 习题
--第5章 习题
-6.1 漏洞扫描与漏洞挖掘技术
-6.2 Web安全技术
-6.3 软件安全技术
-6.4 数据安全技术体系
-6.5 信息隐藏技术
-第6章 习题
--第6章 习题
-7.1 网络安全风险评估技术
-7.2 网络安全测评技术
-7.3 网络安全等级保护
-7.4 网络安全情报分析与态势感知技术
-7.5 内容安全技术
-第7章 习题
--第7章 习题
-8.1 工业控制系统安全保障
-8.2 物联网安全保障
-8.3 信息物理系统安全保障
-8.4 云计算安全保障
-8.5 区块链安全保障
-第8章 习题
--第8章 习题