
CISP0207安全漏洞与恶意代码.pptx
88页安全漏洞与恶意代码,,,课程内容,,,2,知识域:安全漏洞,知识子域:安全漏洞的产生与发展 了解安全漏洞的含义 了解安全漏洞产生的原因 了解国内外常见安全漏洞分类 了解安全漏洞的发展趋势 知识子域:安全漏洞的发现与修复 了解安全漏洞的静态与动态挖掘方法的基本原理 了解补丁分类及修复时应注意的问题,3,,漏洞的概念,漏洞概念的提出 漏洞(Vulnerability)又叫脆弱性,这一概念早在1947年冯诺依曼建立计算机系统结构理论时就有涉及,他认为计算机的发展和自然生命有相似性,一个计算机系统也有天生的类似基因的缺陷,也可能在使用和发展过程中产生意想不到的问题 学者们对漏洞的定义 从访问控制角度定义(学者 Denning 做出的定义) 从风险管理角度的定义(学者Longstaff的定义) 使用状态空间描述的方法给出的定义( 学者Bishop的定义),4,标准机构的定义,1999年,ISO/IEC15408(GB/T18336)定义:漏洞是存在于评估对象(TOE)中的,在一定的环境条件下可能违反安全功能要求的弱点; 2006年,美国NIST信息安全关键术语词汇表定义:漏洞是指存在于信息系统、系统安全过程、内部控制或实现中的,可被威胁源攻击或触发的弱点; 2006年,ISO/IEC SC 27SD6:IT安全术语词汇表定义:漏洞是一个或多个威胁可以利用的一个或一组资产的弱点;是违反某些环境中安全功能要求的TOE中的弱点;是在信息系统(包括其安全控制)或其环境的设计及实施中的缺陷、弱点或特性。
5,漏洞的理解,信息安全漏洞是信息技术、信息产品、信息系统在需求、设计、实现、配置、维护和使用等过程中,有意或无意产生的缺陷,这些缺陷一旦被恶意主体所利用,就会造成对信息产品或系统的安全损害,从而影响构建于信息产品或系统之上正常服务的运行,危害信息产品或系统及信息的安全属性 错误、缺陷、弱点和故障并不等于漏洞6,漏洞产生的原因,技术原因 软件系统复杂性提高,质量难于控制,安全性降低 公用模块的使用引发了安全问题 经济原因 “柠檬市场”效应 环境原因 从传统的封闭、静态和可控变为开放、动态和难控 攻易守难 安全缺陷 安全性缺陷是信息系统或产品自身“与生俱来”的特征,是其的固有成分,7,漏洞的分类,分类的目的 从各个方面来描述漏洞,如从漏洞的成因、利用漏洞的技术、漏洞的作用范围等; 用一个分类属性来表达漏洞的一个本质特征,而为漏洞的每个属性赋值的过程,就是给漏洞在该维属性上分类的过程; 分类原则:可接受性、易于理解性、完备性、确定性、互斥性、可重复性、可用性;,8,NVD漏洞分类,代码注入(Code Injection) 缓冲错误(Buffer Errors) 跨站脚本(Cross-Site Scripting(XSS)) 权限许可和访问控制(Permissions,Privileges,and Access Control) 配置(Configuration) 路径遍历(Path Traversal) 数字错误(Numeric Error) SQL注入(SQL Injection) 输入验证(Input validation) 授权问题(Authentication Issues 跨站请求伪造(Cross-Site Request Forgery(CSRF)) 资源管理错误(Resource Management Errors) 信任管理(Credentials Management) 加密问题(Cryptographic Issues) 信息泄露(Information Leak/Disclosure) 竞争条件(Race Condition) 后置链接(Link Following) 格式化字符串(Format String Vulnerability) 操作系统OS命令注入(OS Command Injections) 设计错误(Design Error) 资料不足(Insufficient Information)。
9,漏洞的危害,漏洞是信息安全的核心 漏洞无处不在 攻击者对漏洞的利用研究不断进步 漏洞的利用速度也越来越快,10,,为什么需要研究安全漏洞,漏洞客观存在 现实紧迫性 漏洞是一种战略资源 数量、种类、分布对网络安全影响非常重要 地下经济的源点,11,知识域:安全漏洞,知识子域:安全漏洞的发现与修复 了解安全漏洞的静态与动态挖掘方法的基本原理 了解补丁分类及修复时应注意的问题,12,,漏洞的发现,从人工发现阶段发展到了依靠自动分析工具辅助的半自动化阶段 漏洞发现方法 静态漏洞检测 动态漏洞检测,13,静态漏洞检测,不运行代码而直接对代码进行漏洞挖掘的方法 适用对象 完整的或不完整的源代码 二进制代码 中间代码片段 方法原理 流分析 符号执行 模型检测,14,流分析,控制流 分析代码中控制流走向的信息,获得控制流图(CFG),即代码的控制结构信息 控制流图是对代码执行时可能经过的所有路径的图形化表示,通过对代码中的分支、循环等关系的分析来获得代码的结构关系 数据流 数据流分析是要得出程序中数据流动的信息,也就是程序中变量的相关信息,比如,可到达的变量定义,可用的表达式,别名信息,变量的使用及取值情况等,15,符号执行,符号执行的目标是把程序转化成一组约束,同时检查程序模拟执行过程中的状态是否出错。
这组约束中既包含程序中的路径条件,也包含要求程序满足的正确性条件或者程序员给出的断言 符号执行的方法也是在程序的CFG上使用WorkList算法进行遍历16,,模型检测,模型检测是给定被测系统的模型和目标属性的描述之后,可自动地对被测系统的状态空间进行穷尽搜索,以检测目标属性是否被满足 度量指标: 可靠性被检测为真的任何属性,都确实为真,即无误报; 完备性所有确实为真的属性,必然可被检测出为真,即无漏报17,,动态漏洞检测,在代码运行的状态下,通过监测代码的运行状态或根据测试用例结果来挖掘漏洞的方法 特点 与静态分析方法相比,动态分析方法的最大优势在于其分析结果的精确,即误报率较低 方法 模糊测试 渗透测试 软件监测,18,模糊测试,在程序外部提供非预期输入,并监控程序对输入的反应,从而发现程序内部故障,广泛应用于软件安全测试 发展阶段: 第一代主要用于健壮性和可靠性测试 第二代主要用于发现系统的漏洞 第三代智能模糊测试侧重于更合理的测试数据集的构造19,动态污染传播,在程序运行时,标记某些信息,例如变量、存储单位、寄存器的值等,从而跟踪攻击路径,获取漏洞信息 步骤 标识污点源,如不可信文件、不可信网络、各种输入 分析污染源的传播 根据触发机制,对具有污染标识的数据、内存等进行检查,从而发现可能的安全问题,20,,渗透测试,渗透测试的概念 渗透测试是通过模拟攻击方法,来评估对象(系统或产品)安全的一种方法。
渗透测试的优势 测试是基于软件运行的最后环境,因此,除了可以发现软件本身的安全问题外,更重要的是还可以发现一些关于环境和配置的安全问题21,,渗透测试的方法及步骤,授权与鉴别安全分析 非法操作分析 管理架构安全分析 规则有效性分析 性能隐患分析 核心安全功能强度分析 隐通道分析,22,,,安全漏洞的修复,,安装补丁是漏洞消减的技术手段之一 数据显示,及时安装有效补丁可避免约95%的信息安全损失 补丁修复中存在的两难问题: 打什么样的补丁?补丁质量问题 如何打补丁?操作方式问题 什么时间打补丁?修复时机问题,23,补丁分类,从文件类型 以源代码形式存在 以二进制形式存在 从内存角度 文件补丁(冷补丁) 内存补丁(热补丁),24,补丁安装时应注意的问题,补丁安装部署之前需要经过必要的测试 需要从可靠来源不断获取最新补丁信息 安装补丁时需要做好备份和相应的应急措施,25,安全漏洞的修复,,标准化的安全配置 2002年,美国率先在军队推行标准化的安全配置与核查(IAVA) 根据漏洞分析和风险评估的安全加固 传统的安全加固手段越来越难以应付日益复杂的攻击行为,漏洞信息的及时披露和分发越来越重要。
加固核查与问责 通过安全审计核实漏洞消除情况和效果26,知识域:恶意代码,知识子域:恶意代码的产生与发展 了解恶意代码的发展历史及趋势 了解恶意代码的类型 理解恶意代码的传播方式,27,什么是恶意代码,没有有效作用、干扰或破坏计算机系统/网络功能的程序或代码(一组指令) 指令类型 二进制代码 脚本语言 宏语言 表现形式 病毒、蠕虫、后门程序、木马、流氓软件、逻辑炸弹等,28,,恶意代码的危害,29,,网络拥塞 蠕虫传播或爆发占用大量网络资源,导致网络瘫痪 系统控制 形成危害严重的僵尸网络,被作者用来发动任何攻击 信息泄露 监视用户操作,窃取个人隐私 破坏系统及数据 它已经成为网络犯罪的主要工具,也是国家、组织之间网络战的主要武器,恶意代码发展,孕育和诞生 1949:冯诺依曼在复杂自动机组织论提出概念 1960:生命游戏(约翰康维 ) 磁芯大战(贝尔实验室三名程序员 ) 1977年科幻小说P-1的青春使得恶意程序有了计算机病毒的名称 1983:真正的恶意代码在实验室产生,30,,恶意代码发展,1986年第一个PC病毒:Brain virus 1988年Morris Internet worm6000多台 1990年第一个多态病毒 1991年virus construction set-病毒生产机 1991年 DIR2病毒 1994年Good Times(joys) 1995年首次发现macro virus,31,罗伯特.莫里斯,恶意代码发展,1996年netcat的UNIX版发布(nc) 1998年第一个Java virus(StrangeBrew) 1998年netcat的Windows版发布(nc) 1998年back orifice(BO)/CIH 1999年melissa/worm(macrovirus by email) 1999年back orifice(BO) for WIN2k 1999年DOS/DDOS-Denial of Service TFT/ trin00 1999年knark内核级rootkit(linux),32,,恶意代码发展,2000年love Bug(VBScript) 2001年Code Red worm(overflow for IIS) 2001年Nimda-worm(IIS/ web browser/outlook/file share etc.) 2002年SQL slammer(sqlserver) 2003年MSBlaster/ Nachi 2003年中文上网 2004年MyDoom/ Sasser 2006年熊猫烧香,33,,恶意代码发展,2010年Stuxnet(工业蠕虫) 2012年火焰病毒,34,,各种蠕虫、木马悄悄的潜伏在计算机中,窃取信息,恶意代码的发展趋势,从传播速度上来看,恶意代码爆发和传播速度越来越快 从攻击意图来看,恶意代码的开发者越来越专业化,其意图也从游戏、炫耀专向为恶意牟利 从功能上来看,恶意代码的分工越来越细 从实现技术来看,恶意代码实现的关键技术不断变化 从传播范围来看,恶意代码呈现多平台传播的特征,35,,恶意代码分类,,36,照恶意代码运行平台 按照恶意代码传播方式 按照恶意代码的工作机制 按照恶意代码危害,恶意代码分类,,37,不传染的依附型恶意代码 流氓软件、逻辑炸弹、恶意脚本 不传染的独立型恶意代码 木马、rootkit、风险程序 传染的依附型恶意代码 传统的病毒(CIH等) 传染的独立型恶意代码 蠕虫病毒,传染的独立型恶意代码是信息系统目前最大的威胁!,恶意代码的传播方式,,38,移动存储 文件传播 软件捆绑 网络传播 网页 电子邮件 即时通讯 共享 主动放置,,AutoRun OPEN=Autorun.exe ICON=icon.ico,恶意代码传播方式-移动存储,39,自动播放功能 Windows。












