《第二章-1 网络安全风险分析幻灯片资料》由会员分享,可在线阅读,更多相关《第二章-1 网络安全风险分析幻灯片资料(85页珍藏版)》请在金锄头文库上搜索。
1、第二章 常见网络风险分析 -Part1,常见程序漏洞问题 恶意代码攻击 木马和后门 拒绝服务攻击 欺骗攻击,常见程序漏洞问题,什么是程序中的“bug”? 开发者犯错误- 导致设计中过失编码( error)-一个或多个错误(fault)。 错误:系统内部观点,开发者所见 失效:系统外部观点,用户看到的问题。对系统要求行为的违反。 不是所有的错误都会导致失效,例如错误代码从来未被执行或者系统从来没有进入某种状态。,(3)、数据处理中出现的错误。例如对变量赋值及发送的一些请求命令。 例如WebLogic服务端发送类似GET. rnrn的请求时,远程WebLogic服务端在处理生成重定向的请求时会泄漏
2、该主机的NetBIOS主机名。 (4)、安全缺陷和具体的系统环境密切相关。在不同种类的软、硬件设备中,同种设备的不同版本之间,由不同设备构成的不同系统之间,都存在各自不同的安全问题。 例如低于0.6.6k或0.9.7c版本的OpenSSL存在堆栈溢出漏洞,该漏洞可导致远程攻击者获得系统的shell。,(5)、某些服务或应用程序会向远程客户提供关于本机的一些信息,这种信息泄漏也是一种安全缺陷。 例如Finger服务,域名解析服务等。 (6)、有些服务本身不是漏洞或不存在安全缺陷,但是却能被远程主机利用来进行辅助攻击。 例如Visual Route Web服务器允许攻击者攻击程序在不暴露自身到目标
3、主机路由的情况下执行向第三方主机的路由跟踪。,没有技术手段可以消除所有的程序漏洞。 测试技术上:应该做什么,不应该做什么。不可能详尽地测试状态和数据的每一种组合来检验系统。恶意代码还具有隐蔽性。 技术发展上:程序设计和软件工程技术的发展速度远远超过计算机安全技术的发展技术。保护过去的技术,举例-计算机攻击的剧烈增长,CERT computer emergency response team 计算机应急响应小组,卡内基梅隆大学,追踪和报道在全世界范围内报道的计算机攻击的种类和数量。 任务:警告用户和开发者出现的新的问题,提供解决的必要信息。,据中国互联网协会统计,2008年,中国大陆受到来自境外
4、的网络攻击数量同比增长了148%。工信部发言人在接受新华社记者专访时指出,仅2009年,我国被境外控制的计算机IP地址就多达100多万个,被黑客组织篡改的网站累计达4.2万个,其中政府网站被篡改的数量达2765个。在受网络病毒威胁方面,我国仅被“飞客”蠕虫病毒感染的计算机数量每月就达1800万台,占全球感染主机的30%,位居世界第一。被植入僵尸程序的计算机数量也位居世界首位,占世界总量的13%。,美国是世界上最大的网络攻击源头。据美国最大的网络公司Symatec公司发表的2008年互联网安全威胁报告,世界上25%的网络攻击源自美国,33%的僵尸控制服务器和43%的“钓鱼网站”位于美国。对中国的
5、网络攻击和入侵也主要源自美国。据中国国家互联网应急中心对部分木马和僵尸程序的抽样检测结果,2009年我国境内被木马程序和僵尸程序控制的主机IP数量分别为26.2万个和83.7万个,分别有16.5万个和1.9万个境外主机地址参与控制这些计算机,其中源自美国的数量排名第一,分别占16.61%和22.34%。可以说,美国已成为全球最大的网络攻击策源地。,应急响应服务的诞生CERT/CC 1988年Morris 蠕虫事件直接导致了CERT/CC的诞生。 CERT/CC服务的内容: 安全事件响应 安全事件分析和软件安全缺陷研究 缺陷知识库开发 信息发布:缺陷、公告、总结、统计、补丁、工具 教育与培训:C
6、SIRT(computer security incident response team)管理、CSIRT技术培训、系统和网络管理员安全培训 指导其它CSIRT(也称IRT、CERT)组织建设,举例,计算机安全总署(computer security institute,CSI)和FBI,调查500家大型机构,90%有安全隐患,25%每年有2-5例安全事件,37%超过10例。对167名网络安全人员调查,75%经历过网络攻击,超过50%认为攻击频繁。223名被调查者损失455 000 000美元,国内安全事件响应组织建设情况,计算机网络基础设施已经严重依赖国外; 由于地理、语言、政治等多种因素
7、,安全服务不可能依赖国外的组织 国内的应急响应服务还处在起步发展阶段 CCERT(1999年5月),中国第一个安全事件响应组织 NJCERT(1999年10月) 中国电信ChinaNet安全小组 解放军,公安部 安全救援服务公司 中国计算机应急响应组/协调中心CNCERT/CC 信息产业部安全管理中心 ,2000年3月,北京,国际间的协调组织,国内的协调组织,国内的协调组织,产品用户,网络接入用户,企业部门、用户,商业IRT,网络服务提供商 IRT,厂商 IRT,企业 /政府 IRT,如:安全服务公司,如:CCERT,如:cisco, IBM,如CERT/CC, FIRST,如CNCERT/C
8、C,如:中国银行、 公安部,愿意付费的 任何用户,安全应急响应组的分类,CSIRT的服务内容 应急响应 安全公告 咨询 风险评估 入侵检测 教育与培训 追踪与恢复,安全应急响应服务组织的服务内容,安全应急响应服务的特点,技术复杂性与专业性 各种硬件平台、操作系统、应用软件; 知识经验的依赖性 由IRT中的人提供服务,而不是一个硬件或软件产品; 突发性强 需要广泛的协调与合作,主要客户群是CERNET(中国教育科研计算机网)会员,但也有受理其他网络的报告和投诉 目前主要从事以下服务和研究: 事件响应:入侵、垃圾邮件以及邮件炸弹、恶意扫描和DoS事件处理 给站点管理员提供安全建议 提供安全信息公告
9、和安全资源 反垃圾邮件、禁止扫描的公告 操作系统补丁、工具软件 网络安全领域的研究,包括安全管理、入侵检测、安全体系结构、PKI等。,程序缺陷分类,有意(恶意) 无意:确认时的过失(不完善性或不一致性),域过失,序列化和混淆,不充分的识别和鉴别,边界条件违规,其他可利用的逻辑过失。,非恶意的程序漏洞(1),缓冲区溢出 及其安全威胁 例: char sample10; for(i=0;i=9;i+) samplei=A sample10=B 超出边界,溢出的四种情况,溢出到用户数据空间:覆盖一个已经存在的变量或写入一个还未使用的位置-影响程序的运行结果,不会影响到其他程序运行 溢出到用户程序区间
10、:覆盖一条已执行的指令(以后不会再执行),用户不会觉察到影响;覆盖的是未执行的指令,尝试执行操作码是0 x42(B的内码)的指令,不存在,非法指令停机,存在,将后续字节作为指令的剩余部分执行,结果取决于上下文的含义。 溢出到系统数据区域:用错误的数值进行计算或尝试。 溢出到系统代码区域:尝试执行不适当的操作,两类常用的缓冲区溢出攻击:,替换系统空间的代码控制操作系统,提升自己的权限。 利用堆栈指针或返回值的寄存器子过程调用时,参数、返回地址和其他局部变量都被压入堆栈中,调用前的堆栈指针也被压入,堆栈寄存器重新装载新的值,控制权交给子过程。 子过程运行时,按堆栈寄存器指向读出参数。攻击者可以改变
11、旧堆栈指针或返回地址,从而改变过程调用的相应环境,将程序定向到希望执行的代码处。,Imagine simple password-checking code passwd . int funct(char *inp) char buf10; strcpy(buf,inp); . Function storage allocated on run-time stack First return address Then locations for input parameter Then space for buffer (10 chars) What if strlen(inp) 10 ?输入
12、参数长度10 Fill up buffer Write over function parameter Write over return address “Return” will jump to location determined by input,Return addr,char *inp,buf9,buf8,buf1,buf0,缓冲区溢出举例,MSFT indexing service, an extension to IIS telnet 80 GET /somefile.idq? Telnet to port 80 and send http GET with buffer o
13、ver 240 bytes Attacker can take over server攻击者可控制服务器 Form of attack used by Code Red to propagate红色代码 TFTP server in Cisco IOS Can use overflow vulnerability to take over server Many many more examples,(1)基于源码的静态分析。基于源码的词法分析、模型化、标记驱动、符号分析等静态分析技术能在程序发布前检测和修正缓冲区溢出脆弱性。它包括如下内容:词法分析、变量范围模型化、基于前后条件的标记驱动、符
14、号分析等方式。 (2)基于可执行代码的分析转换。在不能得到源码的情况下,最直接的办法就是对可执行码进行分析、转换,来检测和预防缓冲区溢出。它包括以下内容:定位边界函数、保护返回地址、检测系统调用、缓冲区代码的反汇编检查等方式。,缓冲区溢出攻击防护,Understanding C functions and the stack. Some familiarity with machine code. 对机器代码有些了解 Know how systems calls are made. 知道如何系统调用 The exec() system call. Attacker needs to know
15、which CPU and OS are running on the target machine. vs.,What is needed,Some unsafe C lib functions,strcpy (char *dest, const char *src) strcat (char *dest, const char *src) gets (char *s) scanf ( const char *format, ) printf (conts char *format, ),(3)扩展编译器功能。编译器是源码变成可执行码的桥梁。有很多缓冲区溢出脆弱性检测和预防技术解决方案是通过
16、扩展原编译器,增加缓冲区边界信息并插入边界检查代码来实现的。它包括如下内容:增加返回地址保护功能、扩展指针表示信息、插入内存修改日志、增加安全类型等方法 (4)运行时拦截并检查。运行时拦截危险函数并进行安全检查是对原系统影响较小的软件实现方法。它包括以下内容:拦截脆弱函数、运行时防止溢出等。,(5)堆和栈不可执行。大部分基于堆栈缓冲区溢出脆弱性的攻击依赖于堆栈可执行。如果不允许堆栈执行程序,就能防御这类攻击。 (6)抽象执行网络数据。所谓抽象执行是指在检查网络数据时分析它是否表示了有效的机器指令,通过抽象执行可以检测网络数据中是否包含带有缓冲区溢出脆弱性的程序。数据请求包如果包含了缓冲区溢出脆弱性,那它的有效指令链会比正常的数据请求包中的有效指令链长很多,对可能包含缓冲区溢出脆弱性的数据包再在虚拟机上模拟执行,以进一步验证。,(7)软件测试。使用一些软件测试技术也能检测缓冲区溢出脆弱性,其主要缺点是需要测试者提供触发脆弱性发生的测试数据。它主要包括以下内容:基于错误注入的测试