Presentation is loading. Please wait.

Presentation is loading. Please wait.

恶意代码与安全漏洞 培训机构名称 讲师名字.

Similar presentations


Presentation on theme: "恶意代码与安全漏洞 培训机构名称 讲师名字."— Presentation transcript:

1 恶意代码与安全漏洞 培训机构名称 讲师名字

2 课程内容

3 知识域:恶意代码 知识子域:恶意代码基本概念原理 了解恶意代码的历史和发展趋势 理解常见恶意代码病毒、蠕虫、木马传播方式和危害的特点
了解常见恶意代码变形、Rootkit等技术的原理

4 恶意代码的历史与发展趋势 恶意代码(Unwanted Code,Malicious Software,Malware,Malicous code)是指没有作用却会带来危险的代码。 通常把未经授权便干扰或破坏计算机系统/网络功能的程序或代码(一组指令)称之为恶意程序。 一组指令可能包括:二进制文件、脚本语言或宏语言等。

5 恶意代码发展史 1949:冯·诺依曼在《复杂自动机组织论》提出概念 1960:生命游戏(约翰·康维 )
磁芯大战(道格拉斯.麦耀莱、维特.维索斯基 、罗伯.莫里斯 ) 1973:真正的恶意代码在实验室产生 1981年-1982年:在APPLE-II的计算机游戏中发现Elk cloner

6 恶意代码发展史 1986年—第一个PC病毒:Brain virus 1988年—Morris Internet worm—6000多台
1990年—第一个多态病毒 1991年—virus construction set-病毒生产机 1994年—Good Times(joys) 1995年—首次发现macro virus 1996年—netcat的UNIX版发布(nc) 1998年—第一个Java virus(StrangeBrew) 罗特.莫里斯

7 恶意代码发展史 1998年—netcat的Windows版发布(nc) 1998年—back orifice(BO)/CIH
1999年—melissa/worm(macrovirus by ) 1999年—back orifice(BO) for WIN2k 1999年—DOS/DDOS-Denial of Service TFT/ trin00 1999年—knark内核级rootkit(linux) 2000年—love Bug(VBScript) 2001年—Code Red –worm(overflow for IIS) 2001年—Nimda-worm(IIS/ web browser/

8 恶意代码发展史 outlook/file share etc.) 2002年—setiri后门
2002年—SQL slammer(sqlserver) 2003年—hydan的steganography工具 2003年—MSBlaster/ Nachi 2004年—MyDoom/ Sasser …… 2006年—熊猫烧香 2010年—Stuxnet(工业蠕虫)

9 恶意代码的发展趋势 种类越来越模糊不清 传播采用多种模式或者利用多个漏洞 多平台、多应用软件
服务端和客户端都遭受攻击,利用客户端软件传播的恶意代码越来越多 目的性、功利性更为突出 攻击者越来越小心、恶意代码隐蔽性越来越强 新的应用衍生出新的恶意代码,针对手机、新型网络应用的恶意代码越来越多

10 恶意代码分类 分类 蠕虫 病毒 后门 木马 有害工具 流氓软件 风险程序 其他

11 常见恶意代码传播方式及危害 病毒的传播方式 病毒的主要危害 蠕虫的传播方式 蠕虫的主要危害 木马的传播方式 木马的主要危害

12 病毒的传播方式

13 病毒的危害 病毒激发对计算机数据信息的直接破坏作用 占用磁盘空间和对信息的破坏 抢占系统资源 影响计算机运行速度
计算机病毒的兼容性对系统运行的影响 计算机病毒给用户造成严重的心理压力

14 蠕虫的传播方式 电子邮件 系统漏洞 Web浏览 即时通信 文件传播

15 蠕虫的危害 严重威胁网络安全 —蠕虫爆发占用大量网络资源,导致网络瘫痪 —形成危害严重的僵尸网络,被作者用来发动任何攻击 危害个人信息安全
—泄露个人隐私

16 木马的传播方式 漏洞传播 系统漏洞;浏览器漏洞(网页木马);其他应用软件漏洞(PDF、DOC etc) 伪装传播
捆绑;伪装成图片、文本等;合法软件 社会工程 电子邮件、论坛、SNS聊天软件

17 木马的危害 监视用户的操作 —包括:用户主机的进程、服务、桌面,键盘操作、摄像头等等 窃取用户隐私
—包括:浏览的网页,聊天记录,输入的银行帐户密码,游戏帐户密码,窃取用户敏感文件 让用户主机执行任意指令 —使用户主机沦为傀儡主机,接受并执行控制主机的指令 你能做到的木马都有可能做到

18 恶意代码实现关键技术 恶意代码生存技术 恶意代码隐蔽技术 恶意代码攻击技术及植入手段

19 恶意代码关键技术 一个好的恶意代码,首先必须具有强大的生存能力和良好好隐蔽性,不能轻松被杀毒软件、安全工具或者用户察觉。然后,必须具有良好的攻击性,即能将自己植入到目标系统。 关键技术: 恶意代码生存技术 恶意代码隐蔽技术 恶意代码攻击技术及植入手段

20 恶意代码生存技术 生存技术主要包括4方面: 反跟踪技术可以减少被发现的可能性,加密技术是恶意代码自身保护的重要机制。 反跟踪技术 加密技术
模糊变换技术 自动生产技术 反跟踪技术可以减少被发现的可能性,加密技术是恶意代码自身保护的重要机制。

21 恶意代码生存技术-反跟踪技术 恶意代码采用反跟踪技术可以提高自身的伪装能力和防破译能力,增加检测与清除恶意代码的难度。
目前常用的反跟踪技术有两类:反动态跟踪技术和反静态分析技术。

22 反跟踪技术-反动态跟踪技术 反动态跟踪技术主要包括4方面内容: 禁止跟踪中断。 封锁键盘输入和屏幕显示,破坏各种跟踪调试工具运行的必需环境;
检测跟踪法。 其它反跟踪技术。 禁止跟踪中断。针对调试分析工具运行系统的单步中断和断点中断服务程序,恶意代码通过修改中断服务程序的入口地址实现其反跟踪目的。“1575”计算机病毒采用该方法将堆栈指针指向处于中断向量表中的INT 0至 INT 3区域,阻止调试工具对其代码进行跟踪。 封锁键盘输入和屏幕显示,破坏各种跟踪调试工具运行的必需环境; 检测跟踪法。检测跟踪调试时和正常执行时的运行环境、中断入口和时间的差异,根据这些差异采取一定的措施,实现其反跟踪目的。例如,通过操作系统的API 函数试图打开调试器的驱动程序句柄,检测调试器是否激活确定代码是否继续运行。 其它反跟踪技术。如指令流队列法和逆指令流法等。

23 反跟踪技术-反静态分析技术 反静态分析技术主要包括两方面内容: 对程序代码分块加密执行 伪指令法(Junk Code)
对程序代码分块加密执行。为了防止程序代码通过反汇编进行静态分析,程序代码以分块的密文形式装入内存,在执行时由解密程序进行译码,某一段代码执行完毕后立即清除,保证任何时刻分析者不可能从内存中得到完整的执行代码; 伪指令法(Junk Code)。伪指令法系指在指令流中插入“废指令”,使静态反汇编无法得到全部正常的指令,不能有效地进行静态分析。例如,“Apparition”是一种基于编译器变形的Win32 平台的病毒,编译器每次编译出新的病毒体可执行代码时都要插入大量的伪指令,既达到了变形的效果,也实现了反跟踪的目的。此外,伪指令技术还广泛应用于宏病毒与脚本恶意代码之中。

24 恶意代码生存技术-加密技术 加密技术是恶意代码自我保护的一种手段,加密技术和反跟踪技术的配合使用,使得分析者无法正常调试和阅读恶意代码,不知道恶意代码的工作原理,也无法抽取特征串。 从加密的内容上划分,加密手段分为信息加密、数据加密和程序代码加密三种。 大多数恶意代码对程序体自身加密,另有少数恶意代码对被感染的文件加密。例如,“Cascade”是第一例采用加密技术的DOS环境下的恶意代码,它有稳定的解密器,可以解密内存中加密的程序体。“Mad ”和“Zombie”是“Cascade”加密技术的延伸,使恶意代码加密技术走向32位的操作系统平台。此外,“中国炸弹”(Chinese bomb)和“幽灵病毒”也是这一类恶意代码。

25 恶意代码隐蔽技术 利用模糊变换技术,恶意代码每感染一个客体对象时,潜入宿主程序的代码互不相同。 目前,模糊变换技术主要分为5种:
指令替换技术 指令压缩技术 指令扩展技术 伪指令技术 重编译技术 (1)指令替换技术。模糊变换引擎(Mutation Engine)对恶意代码的二进制代码进行反汇编,解码每一条指令,计算出指令长度,并对指令进行同义变换。例如,将指令XOR REG,REG 变换为SUB REG,REG;寄存器REG1和寄存器REG2进行互换;JMP指令和CALL指令进行变换等。例如,“Regswap”采用了简单的寄存器互换的变形技术。 (2)指令压缩技术。模糊变换器检测恶意代码反汇编后的全部指令,对可进行压缩的一段指令进行同义压缩。压缩技术要改变病毒体代码的长度,需要对病毒体内的跳转指令进行重定位。例如指令MOV REG, / ADD REG, 变换为指令MOV REG, ;指令MOV REG, / PUSHREG变换为指令PUSH 等。 (3)指令扩展技术。扩展技术把每一条汇编指令进行同义扩展,所有压缩技术变换的指令都可以采用扩展技术实施逆变换。扩展技术变换的空间远比压缩技术大的多,有的指令可以有几十种甚至上百种的扩展变换。扩展技术同样要改变恶意代码的长度,需要对恶意代码中跳转指令进行重定位。 (4)伪指令技术。伪指令技术主要是对恶意代码程序体中插入无效指令,例如空指令;JMP 下一指令和指令PUSH REG/MOV REG, /POP REG等。 (5)重编译技术。采用重编译技术的恶意代码中携带恶意代码的源码,需要自带编译器或者操作系统提供编译器进行重新编译,这种技术既实现了变形的目的,也为跨平台的恶意代码出现打下了基础。尤其是各类Unix/Linux操作系统,系统默认配置有标准C的编译器。宏病毒和脚本恶意代码是典型的采用这类技术变形的恶意代码。造成全球范围传播和破坏的第一例变形病毒是“Tequtla”,从该病毒的出现到编制出能够检测该病毒的软件,研究人员花费了9个月的时间。

26 恶意代码隐蔽技术-自动生产技术 恶意代码自动生产技术是针对人工分析技术的。 多态变换引擎可以使程序代码本身发生变化,并保持原有功能。
“计算机病毒生成器”,使对计算机病毒一无所知的用户,也能组合出算法不同、功能各异的计算机病毒。“多态性发生器”可将普通病毒编译成复杂多变的多态性病毒。 保加利亚的“Dark Avenger”是较为著名的一个例子,这个变换引擎每产生一个恶意代码,其程序体都会发生变化,反恶意代码软件如果采用基于特征的扫描技术,根本无法检测和清除这种恶意代码。

27 恶意代码隐蔽技术-隐藏技术 隐藏通常包括本地隐藏和通信隐藏 RootKit技术
其中本地隐藏主要有文件隐藏、进程隐藏、网络连接隐藏、内核模块隐藏、编译器隐藏等 通信隐藏主要包括通信内容隐藏和传输通道隐藏。 RootKit技术 恶意代码的隐藏或多或少都与RootKit技术相关因此这里重点介绍一下RootKit技术

28 恶意代码隐蔽技术-本地隐蔽技术 本地隐蔽是指为了防止本地系统管理人员觉察而采取的隐蔽手段。本地系统管理人员通常使用“查看进程列表”,“查看目录”,“查看内核模块”,“查看系统网络连接状态”等管理命令来检测系统是否被植入了恶意代码。 文件隐蔽 进程隐蔽 网络连接隐蔽 编译器隐蔽 内核模块隐蔽 (1)文件隐蔽。最简单的方法是定制文件名,使恶意代码的文件更名为系统的合法程序文件名,或者将恶意代码文件附加到合法程序文件中。 (2)进程隐蔽。恶意代码通过附着或替换系统进程,使恶意代码以合法服务的身份运行,这样可以很好地隐蔽恶意代码。可以通过修改进程列表程序,修改命令行参数使恶意代码进程的信息无法查询。也可以借助RootKit 技术实现进程隐蔽。 (3)网络连接隐蔽。恶意代码可以借用现有服务的端口来实现网络连接隐蔽,如使用80(HTTP)端口,将自己的数据包设置特殊标识,通过标识识别连接信息,未标识的WWW 服务网络包仍转交给原服务程序处理。使用隐蔽通道技术进行通信时可以隐蔽恶意代码自身的网络连接。 (4)编译器隐蔽。使用该方法可以实施原始分发攻击,恶意代码的植入者是编译器开发人员。

29 恶意代码隐蔽技术-网络隐蔽技术 使用加密算法对所传输的内容进行加密能够隐蔽通信内容。隐蔽通信内容虽然可以保护通信内容,但无法隐蔽通信状态,因此传输信道的隐蔽也具有重要的意义。对传输信道的隐蔽主要采用隐蔽通道技术。 隐蔽通道分为两种类型: 存储隐蔽通道 时间隐蔽通道 存储隐蔽通道是一个进程能够直接或间接访问某存储空间,而该存储空间又能够被另一个进程所访问,这两个进程之间所形成的通道称之为存储隐蔽通道。时间隐蔽通道是一个进程对系统性能产生的影响可以被另外一个进程观察到并且可以利用一个时间基准进行测量,这样形成的信息传递通道称为时间隐蔽通道。

30 恶意代码隐蔽技术-RooTkit技术 Rootkit是指其主要功能为隐藏其他程式进程的软件,可能是一个或一个以上的软件组合;广义而言
Windows平台上最早发现于1999 (NTRootkit, Hoglund): 不同于病毒 非破坏性的信息收集工具 通常运行在核心(更易隐藏) 通常被黑客手工安装 确保能再次进入系统 隐蔽地捕获密码,键击等  最早Rootkit用于善意用途,但后来Rootkit也被黑客用在入侵和攻击他人的电脑系统上,电脑病毒、间谍软件等也常使用Rootkit来隐藏踪迹,因此Rootkit已被大多数的防毒软件归类为具危害性的恶意软件。Linux、Windows、Mac OS等操作系统都有机会成为Rootkit的受害目标。   [1]Rootkit出现于二十世纪90年代初,在1994年2月的一篇安全咨询报告中首先使用了rootkit这个名词。这篇安全咨询就是CERT-CC的CA ,题目是Ongoing Network Monitoring Attacks,最新的修订时间是1997年9月19日。从出现至今,rootkit的技术发展非常迅速,应用越来越广泛,检测难度也越来越大。   rootkit介绍Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在),还是活动时,(作为进程存在),都不会被察觉。换句话说,这种程序可能一直存在于我们的计算机中,但我们却浑然不知,这一功能正是许多人梦寐以求的——不论是计算机黑客,还是计算机取证人员。黑客可以在入侵后置入Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取证人员也可以利用Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动。!

31 恶意代码攻击技术及植入手段 常见的攻击技术包括: 进程注入技术 三线程技术 端口复用技术 超级管理技术 端口反向连接技术 拒绝服务攻击技术

32 恶意代码攻击技术-进程注入技术 进程注入技术就是将这些与服务相关的可执行代码作为载体,恶意代码程序将自身嵌入到这些可执行代码之中,实现自身隐藏和启动的目的。 当前操作系统中都有系统服务和网络服务,它们都在系统启动时自动加载。进程注入技术就是将这些与服务相关的可执行代码作为载体,恶意代码程序将自身嵌入到这些可执行代码之中,实现自身隐藏和启动的目的。 这种形式的恶意代码只须安装一次,以后就会被自动加载到可执行文件的进程中,并且会被多个服务加载。只有系统关闭时,服务才会结束,所以恶意代码程序在系统运行时始终保持激活状态。比如恶意代码“WinEggDropShell”可以注入Windows 下的大部分服务程序。

33 恶意代码攻击技术-三线程技术 三线程技术就是指一个恶意代码进程同时开启了三个线程,其中一个为主线程,负责远程控制的工作。另外两个辅助线程是监视线程和守护线程,监视线程负责检查恶意代码程序是否被删除或被停止自启动。 守护线程注入其它可执行文件内,与恶意代码进程同步,一旦进程被停止,它就会重新启动该进程,并向主线程提供必要的数据,这样就能保证恶意代码运行的可持续性。 例如,“中国黑客”等就是采用这种技术的恶意代码。

34 恶意代码攻击技术-端口复用技术 端口复用技术,系指重复利用系统网络打开的端口(如25、80、135和139等常用端口)传送数据,这样既可以欺骗防火墙,又可以少开新端口。 端口复用是在保证端口默认服务正常工作的条件下复用,具有很强的欺骗性。 例如,特洛伊木马“Executor”利用80 端口传递控制信息和数据,实现其远程控制的目的

35 恶意代码攻击技术-超级管理技术 为了对抗反恶意代码软件,恶意代码采用超级管理技术对反恶意代码软件系统进行拒绝服务攻击,使反恶意代码软件无法正常运行。 例如,“广外女生”是一个国产的特洛伊木马,它采用超级管理技术对“金山毒霸”和“天网防火墙”进行拒绝服务攻击。

36 恶意代码攻击技术-端口反向连接技术 端口反向连接技术,系指恶意代码攻击的服务端(被控制端)主动连接客户端(控制端)。
国外的“Boinet”是最先实现这项技术的木马程序,它可以通过ICO、IRC、HTTP 和反向主动连接这4 种方式联系客户端。国内最早实现端口反向连接技术的恶意代码是“网络神偷”。“灰鸽子”则是这项技术的集大成者,它内置FTP、域名、服务端主动连接这3 种服务端在线通知功能。

37 知识域:恶意代码 知识子域:恶意代码防御技术 掌握恶意代码预防的策略、意识、技术和工具 了解恶意代码发现和分析技术 了解恶意代码清除技术

38 恶意代码防范技术 目前,恶意代码防御技术主要分为两方面: 基于主机的恶意代码防御技术 基于网络的恶意代码防御技术

39 基于主机恶意代码防御 基于主机的恶意代码防范方法主要包括: 基于特征的扫描技术 校验和 沙箱技术 安全操作系统对恶意代码的防范,等等。

40 基于主机恶意代码防御-特征扫描 基于主机的恶意代码防范方法是目前检测恶意代码最常用的技术,主要源于模式匹配的思想。扫描程序工作之前,必须先建立恶意代码的特征文件,根据特征文件中的特征串,在扫描文件中进行匹配查找。用户通过更新特征文件更新扫描软件,查找最新的恶意代码版本。这种技术广泛地应用于目前的反病毒引擎中。

41 基于主机恶意代码防御-特征扫描

42 基于主机恶意代码防御-校验和 校验和是一种保护信息资源完整性的控制技术,例如Hash 值和循环冗余码等。只要文件内部有一个比特发生了变化,校验和值就会改变。未被恶意代码感染的系统首先会生成检测数据,然后周期性地使用校验和法检测文件的改变情况。运用校验和法检查恶意代码有3 种方法: 在恶意代码检测软件中设置校验和法 在应用程序中嵌入校验和法 将校验和程序常驻内存 (1)在恶意代码检测软件中设置校验和法。对检测的对象文件计算其正常状态的校验和并将其写入被查文件中或检测工具中,而后进行比较。 (2)在应用程序中嵌入校验和法。将文件正常状态的校验和写入文件本身中,每当应用程序启动时,比较现行校验和与原始校验和,实现应用程序的自我检测功能。 (3)将校验和程序常驻内存。每当应用程序开始运行时,自动比较检查应用程序内部或别的文件中预留保存的校验和。

43 基于主机恶意代码防御-沙箱技术 沙箱技术指根据系统中每一个可执行程序的访问资源,以及系统赋予的权限建立应用程序的“沙箱”,限制恶意代码的运行。 美国加州大学Berkeley 实验室开发了基于Solaris 操作系统的沙箱系统,应用程序经过系统底层调用解释执行,系统自动判断应用程序调用的底层函数是否符合系统的安全要求,并决定是否执行。 Windows XP /2003操作系统提供了一种软件限制策略,隔离具有潜在危害的代码。这种隔离技术其实也是一种沙箱技术,可以保护系统免受通过电子邮件和Internet传染的各种恶意代码的侵害。

44 基于网络的恶意代码防御 由于恶意代码具有相当的复杂性和行为不确定性,恶意代码的防范需要多种技术综合应用,包括恶意代码监测与预警、恶意代码传播抑制、恶意代码漏洞自动修复、恶意代码阻断等。基于网络的恶意代码防范方法包括:恶意代码检测防御和恶意代码预警。 常见的恶意代码检测防御如蜜罐技术

45 基于HoneyPot的检测防御 早期HoneyPot主要用于防范网络黑客攻击。ReVirt是能够检测网络攻击或网络异常行为的HoneyPot系统。 Spitzner首次运用HoneyPot防御恶意代码攻击。HoneyPot之间可以相互共享捕获的数据信息,采用NIDS的规则生成器产生恶意代码的匹配规则,当恶意代码根据一定的扫描策略扫描存在漏洞主机的地址空间时,HoneyPots可以捕获恶意代码扫描攻击的数据,然后采用特征匹配来判断是否有恶意代码攻击。

46 恶意代码分析技术 恶意代码静态分析 恶意代码动态分析 恶意代码行为分析

47 恶意代码静态分析 什么是静态分析 静态常规信息分析 静态代码分析 常用静态分析工具

48 什么是静态分析 静态分析是在尽量不运行或调试恶意代码的前题下,尽可能多的收集此恶意代码的相关信息,以找出此恶意代码的功能与作用或为动态分析时找出恶意代码的功能做准备。静态分析主要分为两个方向,一个是静态常规信息分析,另一个是静态代码分析。

49 静态分析-常规分析 文件名分析: 程序形态特性: 文件位置特性: 文件版本特性: 文件长度特性: 文件时间特性: 数字签名: 文件名前缀特性:正常文件取名往往简洁明了,有针对性,这样便于后期维护。恶意代码恰恰相反,只有少数几个文件,不需要进行长期维护。为了避免于其他文件重复命名,通常在前面加上一些没有规律的数字或者取一些很复杂奇怪的名字,来达到目的,类似于 winlogin.exe这样的文件命名是很可疑的。 文件名后缀特性:通过后缀初步区分一下文件类型,可执行文件一般为exe、com等,批处理为bat后缀,文本文件为txt,还有很多,不再一一列出。由于系统默认是隐藏已知文件后缀名的,因此给恶意代码钻空子的地方,往往写上双扩展名,例如:test.txt.exe,该文件实际为一个可执行exe文件,而在默认设置的系统上,只会显示为test.txt,让用户认为只是一个txt文本文件而运行它。 文件名欺骗特性:文件名是很直观的特性,人们往往被恶意代码伪造的系统文件名所欺骗,而忽略对其的检查。 排除伪造签名的情况;对于持有非伪造签名的样本,大多是正常文件。 使用微软的sigcheck验证文件的数字签名。 文件时间特性 文件创建时间是非常重要的一项,通过对比就能发现问题的所在。 文件位置特性: 文件在系统存放的位置,一般都是可以预测的,尤其是相对路径,一般的应用程序是不会跑到系统目录下的,而往往系统目录下文件数量多、名字复杂,人们不是很熟悉,恶意代码借这个机会寄居在系统目录中。 程序形态特性: 每种程序根据自己的功能类型、版权所属或者个性特色,都会使用醒目的图标来区分自己,而盗用文件的图标也是迷惑用户的一个重要方式,利用用户对系统文件不熟悉、害怕进行修改的心理弱点,顶着系统文件的图标让用户不敢轻易改动,因此使得恶意代码能够长期驻留在系统中。 正规文件都会写上自己的所属,便于管理和区分,也是版权保护的一种方式,而恶意代码往往是没有这些特性的,当一个文件没有办法提供它的版本和其他相关信息时,我们有必要怀疑它的合法性。更有些恶意代码模仿其它系统软件或应用程序软件的版本信息,对此更要详细区分。 文件长度特性: 恶意代码为了更好的传播和隐藏,文件长度不会过大。

50 静态分析-代码分析 格式分析: PE信息: API查看: 字符串信息: 资源信息: 查看文件的入口点、镜象地址、代码基址、代码段大小、数据基址、镜象大小、PE头基址、导入表偏移、导出表偏移、子系统、节数、节队列、文件队列、符号数、可选头大小等。非正常PE结构的文件,往往在程序内部拥有异常节名,而不是常见的节名称。

51 静态分析-格式分析 分析样本文件类型:文本文件,PE文件,脚本文件等。 如是PE文件?
是否加壳,通常我们如果对未脱壳前的样本无法确认它的编写语言的话,那么我们就可以认为此样本是一个加壳过的程序,然后可以开始对程序进行查壳,确定程序的加壳类型,如果无法查出壳类型,则我们可以认为它加的是一个未知壳。常用工具有peid查壳。 是否有附加数据,可以通过PE文件的区段来确定是否有附加进去的数据。Stud_PE查看区段,Uedit32查看原始文件信息等。 获取该样本的编写语言。 分析样本文件类型:文本文件,PE文件,脚本文件等。 如是PE文件? 是否加壳,通常我们如果对未脱壳前的样本无法确认它的编写语言的话,那么我们就可以认为此样本是一个加壳过的程序,然后可以开始对程序进行查壳,确定程序的加壳类型,如果无法查出壳类型,则我们可以认为它加的是一个未知壳。常用工具有peid查壳。 是否有附加数据,可以通过PE文件的区段来确定是否有附加进去的数据。Stud_PE查看区段,Uedit32查看原始文件信息等。 获取该样本的编写语言。

52 静态分析- PE信息

53 通过反汇编工具对静态的PE文件进行反汇编
静态分析- API查看 API操作特性 API数量特性 查看导入/导出表 通过反汇编工具对静态的PE文件进行反汇编 列出部分恶意代码常用API API操作特性:恶意代码往往调用一些特殊的API来实现其非法功能,通过对其API函数的调用,我们能大致分辨其所具备的功能。通常带有恶意行为的程序都会调用特定的一些API来组合出其要实现的功能作用,比如木马需要进行网络连接,就必定调用网络API中的recv和send函数。 恶意代码为了压缩或者保护自己,通常采用特殊隐藏处理,这个处理是隐藏文件内部资源,主要是API函数的调用,阻止分析人员对其进行反汇编,而暴露自身,经过这种处理后,使用反汇编程序查看程序内部资源时,往往只有少数几个API能被显示出来,除非有一定的原因才需要对资源做这样的保护。 导入/导出表显示了当前进程模块调用哪些资源模块,并使用这些模块中的什么资源函数,被分析出的API函数,将直接告诉我们该进程的一些固有行为,极大地提高了病毒分析工作人员的分析时间,免去了跟踪代码的辛苦和麻烦。查看工具很多,Stud_PE,OD加载查看等。 反汇编后可以通过分析反汇编后的文件中动态加载的API,来判断此样本的基本功能和特点。 注册表相关API:RegCreateKey 创建注册表键RegCloseKey 关闭注册表键RegDeleteValue 删除注册表键值RegEnumKey 列举注册表键值RegOpenKey 打开注册表键RegQueryValue 查询注册表键RegSetValue 设置注册表键值……文件操作相关API:CreateFile 创建文件CopyFile 复制文件DeleteFile 删除文件FindFirstFile 查找第一个文件FindNextFile 查找下一个文件GetFileVersionInfoSize 获得文件大小信息GetFileVersionInfo 获得文件版本信息GetFileSize 获得文件大小GetFileAttributes 获得文件属性MoveFileEx 移动文件ReadFile 读文件SetFileAttributes 设置文件属性WrieteFile 写文件……进线程相关API:CreateMutex 创建一个互斥体(MUTEX)CreateProcess 创建一个新进程ExitProcess 中止一个进程FindExecutable 查找与一个指定文件关联在一起的程序的文件名FindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化 FreeLibrary 释放指定的动态链接库 GetCurrentProcess 获取当前进程的一个伪句柄 GetCurrentProcessId 获取当前进程一个唯一的标识符 GetCurrentThread 获取当前线程的一个伪句柄 GetCurrentThreadId 获取当前线程一个唯一的线程标识符 GetExitCodeProces 获取一个已中断进程的退出代码 GetExitCodeThread 获取一个已中止线程的退出代码GetHandleInformation 获取与一个系统对象句柄有关的信息GetModuleFileName 获取一个已装载模板的完整路径名称GetModuleHandle 获取一个应用程序或动态链接库的模块句柄GetPriorityClass 获取特定进程的优先级别GetSartupInfo 获取一个进程的启动信息GetThreadPriority 获取特定线程的优先级别GetTheardTimes 获取与一个线程的经过时间有关的信息GetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符LoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间LoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间LoadModule 载入一个Windows应用程序,并在指定的环境中运行SetPriorityClass 设置一个进程的优先级别SetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序SetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量SetThreadPriority 设定线程的优先级别ShellExecute 查找与指定文件关联在一起的程序的文件名TerminateProcess 结束一个进程WinExec 运行指定的程序……其它类API:CreateDirectory 创建目录CompareString 比较字符串Closesocket 关闭SOCKETCreateService 创建服务DeleteService 删除服务FindResource 查找资源GetKeyboardType 返回键盘信息GetWindowsDirectory 返回目录GetDriveType 返回指定驱动器类型GetFullPathName 返回文件路径GetLocalTime 返回本地机器时间GetSystemDirectory 获得系统目录GetUserName 获得用户名GetDesktopWindow 获得桌面窗口GetComputerName 获取当前计算机名GetDiskFreeSpace 获取磁盘剩余空间GetBitmapBits 将位图复制到缓冲区GetActiveWindow 获得当前窗口keybd_event 制造键盘敲击事件OepnService 打开服务RemoveDirectory 删除目录SetSystemTime 设置系统时间SetServiceStatus 设置服务状态Send 发送消息recv 接收数据…… 字符串信息 程序内部通常会固定地存在一些字符串信息,这些信息虽然比较零乱,但我们可以将其全部提取出来,进行分析,往往能从字符串中得到一些有用信息,比如在木马程序中可能就包含了木马控制者的 地址,甚至用户名和密码,一些网络连接IP地址,文件属性信息等等,这些都将给病毒分析员提供分析、追查线索。通过反汇编可以查看字符串信息。 文件被创建时,就被赋予一定的资源,包括版本、图标等等,可用Stud_PE查看。

54 常用静态分析工具 C32ASM静态反汇编工具 W32dsm静态反汇编工具 IDA静态反汇编工具 其它常用工具
快速静态反汇编PE格式文件(Exe、Dll等)  提供Hex文件编辑功能,功能强大 提供内存Dump、内存编辑、PE文件Dump、PE内存ImageSize修正等多种实用功能  提供内存反汇编功能,提供汇编语句直接修改功能,免去OPCode的直接操作的繁琐  提供反汇编语句彩色语法功能,方便阅读分析,能方便自定义语法色彩 提供输入表、输出表、参考字符、跳转、调用、PE文件分析结果等显示 提供方便的跳转、调用目标地址的代码显示 提供汇编语句逐字节分析功能,有助于分析花指令等干扰代码 提供对ord调用和非ord调用的import自定义解析功能 提供PE文件格式的分析显示功能 提供文件拖放功能,直接可以进行文件反汇编或编辑 提供主文件命令行模式,方便加入右键菜单进行快速的文件操作 提供快速书签定位,多行代码复制,代码注释功能 w32Dasm是一款出色的反汇编工具,其小巧、免费、速度快等特点,使其得到广大网友喜爱,但由于其官方最后的版本是8.93,不再升级,因此众多才华横溢的解密爱好者将w32Dasm改进修正,不断提高其功能和易用性。

55 恶意代码动态分析 恶意代码动态分析步骤 恶意代码动态分析工具 中国安天实验室

56 恶意代码动态分析步骤 格式分析 编写语言? 加密? 附加数据? 查壳 脱壳 动态分析恶意代码 字符参考 调用参考 中国安天实验室

57 恶意代码动态分析步骤 动态分析法 API使用 文件读写 新增? 删除? 改动? 注册表读写 内核调用 中国安天实验室

58 恶意代码动态分析工具 PEID Stud_PE OLLYDBG
PEiD 可以探测大多数的 PE 文件封包器、加密器和编译器。当前可以探测 600 多个不同签名。 PEiD 是最强大的一个查壳工具。 PE综合工具,整合了 PEiD0.9 壳标签数据库可识别 435 种壳类型并检测入口点等,并且能自己添加不明壳的标签;内置十六进制编辑器,可对资源进行修改;出色的文件比较功能;可视化资源查看器,可修改、替换、导出文件;添加函数、修改区段、查看程序进程等等;Rva转换Raw;与资源管理器的完美结合…… 动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3级调试器,非常容易上手,己代替SoftICE成为当今最为流行的调试解密工具了。 中国安天实验室

59 恶意代码分析处置流程 对恶意代码文件进行“文件细化”处置。 加密压缩文件 包裹文件 嵌入/捆绑文件 其它类可细化文件 中国安天实验室

60 恶意代码分析处置流程 综合分析结论 本地行为 网络行为 传播方式 运行位置 感染方式 其它结果等 中国安天实验室

61 恶意代码分析处置流程 得出最终分析报告与恶意代码的解决方案。 特征码提取方式 手动清除方式 使用工具等 中国安天实验室

62 中国安天实验室

63 恶意代码分析处置流程 文件细化描述: 加密压缩文件 -> 解压/解密 包裹文件 -> 解压/安装 嵌入/捆绑文件 -> 提取
加密压缩文件 -> 解压/解密 包裹文件  -> 解压/安装 嵌入/捆绑文件  -> 提取 其它类可细化文件 -> 对应分析 中国安天实验室

64 恶意代码分析处置流程 文件细化 中国安天实验室

65 恶意代码行为分析 文件行为 进程行为 窗口类相关行为 注册表行为 服务相关行为 网络相关行为 WINDOWS所在目录:
系统程序默认安装目录: %ProgramFiles%\Common Files\ %Program Files%\Common Files\System\ %ProgramFiles%\Common Files\Microsoft Shared\ %Program Files%\Common Files\Microsoft Shared\MSInfo\ %Program Files%\Internet Explorer\ %Program Files%\Internet Explorer\PLUGINS\ WINDOWS所在目录: %Windir%\System\ %Windir%\Tasks\ %WinDir%\Fonts\ %Windir%\AppPatch\ %Windir%\Cursors\ %Windir%\Help\ %Windir%\Media\ %Windir%\pchealth\ %Windir%\pchealth\helpctr\binaries\ WINDOWS\System32: %System32%\dirvers\ %System32%\Com\ %System32%\Setup\ %System32%\dllcache\ %system32%\oobe\ 当前用户文档目录: %Documents and Settings%\当前用户\「开始」菜单\程序\启动 %Documents and Settings%\All Users\「开始」菜单\程序\启动 %Documents and Settings%\当前用户\Local Settings\Temporary Internet Files %Documents and Settings%\当前用户\Local Settings\Temp 释放文件名为指定长度随机字符的病毒文件 删除文件 替换系统文件 把逻辑盘符根目录下的目录隐藏,并创建与目录名字相同、图标为文件夹图标的病毒文件 设置文件属性 设置文件日期 带壳的病毒文件 进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。进程为应用程序的运行实例,是应用程序的一次动态执行。病毒也是一个程序,当它运行的时候,也有其自身的进程。 创建病毒进程: 注:每个病毒运行后,首先会创建一个病毒进程。创建进程API函数为CreatProcess 遍历系统进程、获取进程列表: 注:一些病毒运行后,为了降低系统的安全性,保护自身,通常会遍历所有进程以发现满足条件的进程。进程快照的API函数为CreatToolhelp32Snapshot 结束当前进程: 注:当病毒运行后,为了不让用户发现通常会结束当前自身的进程。结束当前进程API函数为ExitProcess 进程互锁: 注:一些病毒为了保护自身进程不被用户轻易关掉,会通过进程互锁的方式,同时运行两个(或者更多,常见是两个或三个)病毒进程,通过检查互斥体,在极短的时间内,互相启动进程。常见的进程互锁API函数有InterlockedIncrement、InterlockedDecrement、InterlockedExchangeAdd、InterlockedExchangePointer 终止其他系统进程、调试程序进程、反病毒软件进程: 注:一些病毒运行后,出于保护自身的目的,会结束满足条件相关安全软件的进程。终止其他进程的API函数为TerminateProcess 进程互斥: 注:某些病毒为了防止病毒多次运行相同的病毒文件,通常会采用进程互斥的方式,只保留一个病毒进程。进程互斥的API函数:CreatMutex 中国安天实验室

66 恶意代码行为分析工具 恶意代码行为分析工具: Filemon Regmon RegSnap Icesword Autorun ……
中国安天实验室

67 恶意代码分析工具-Filemon Filemon 是一个出色的文件系统监视软件,它将所有与文件一切相关操作(如读取、修改、出错信息等)全部记录下来以供用户参考,并允许用户对记录的信息进行保存、过滤、查找等处理,这就为用户对系统的维护提供了极大的便利。 中国安天实验室

68 恶意代码分析工具-Regmon Windows注册表监视工具,可以实时监视并显示对整个系统注册表的访问,该工具可以帮助我们了解Windows 如何工作以及跟踪与注册表设置错误有关的问题。 中国安天实验室

69 恶意代码分析工具-RegSnap RegSnap可以详细地向你报告注册表及其他与系统有关项目的修改变化情况。RegSnap 对系统的比较报告非常具体,对注册表可报告修改了哪些键,修改前、后的值各是多少;增加和删除了哪些键以及这些键的值。报告结果既可以以纯文本的方式,也可以 html 网页的方式显示,非常便于查看。除系统注册表以外,RegSnap 还可以报告系统的其他情况:Windows 的系统目录和系统的 system 子目录下文件的变化情况,包括删除、替换、增加了哪些文件;Windows 的系统配置文件win.ini 和 system.ini 的变化情况,包括删除、修改和增加了哪些内容;自动批处理文件 autoexec.bat 是否被修改过。该软件可以在需要的时候方便地恢复注册表,可以直接调用 regedit 程序查看或修改注册表,还可以查看当前机器的机器名和用户名。 中国安天实验室

70 恶意代码分析工具-Icesword IceSword适用于Windows 2000/XP/2003/Vista操作系统
中国安天实验室

71 恶意代码分析工具-Procexp Procexp非常强大,一般的进程管理软件只可以查看进程,结束进程,Procexp 可以在 2000 xp 2003 下正常运行,有一般进程管理软件的功能之外,还能搜索dll 结束线程,比如网际快车线程数,结束dll文件加载,这对查杀木马非常有用 。 中国安天实验室

72 恶意代码分析技术-Autoruns Sysinternals公司出品,可查看、删除注册表及Win.ini文件等处的自启动项目。如果怀疑有木马或病毒或者系统启动太慢,用本工具看看自启动项吧。 此新版中,可查看各个用户的启动项,而且删除 Userinit 项目时会发出安全警告,以及其它一些改进,推荐更新! 中国安天实验室

73 知识域:信息安全漏洞 知识子域:安全漏洞基础 知识子域:安全漏洞检测 理解漏洞的概念,分类分级 了解漏洞的危害、产生的原因
了解常用的漏洞库:CNNVD、CVE等 知识子域:安全漏洞检测 了解基于源代码的漏洞检测方法与技术 了解基于二进制代码的漏洞检测方法与技术

74 漏洞在信息安全中的位置 通用准则(ISO/IEC15408)

75 什么是漏洞 漏洞(Vulnerability)又叫脆弱性,这一概念早在1947年 冯•诺依曼建立计算机系统结构理论时就有涉及,他认为计 算机的发展和自然生命有相似性,一个计算机系统也有天生 的类似基因的缺陷,也可能在使用和发展过程中产生意想不 到的问题。 1970-80年代,早期黑客的出现和第一个计算机病毒的产生, 软件漏洞逐渐引起人们的关注。 随着计算机应用的发展和互联网络的出现,漏洞相继在软件、 硬件、管理过程,甚至人的环节出现,引起病毒泛滥、黑客 猖獗,使得安全漏洞成为网络空间的一个现实、热门话题。

76 学者们的解释: Denning做出的定义 1982年,从访问控制角度将漏洞定义为:导致操 作系统执行的操作和访问控制矩阵所定义的安全 策略之间相冲突的所有因素。

77 学者们的解释: Longstaff的定义 1990年,从风险管理角度将漏洞定义为:
b)或是在物理层、组织、程序、人员、软件或硬件方 面的缺陷,它能够被利用而导致对自动数据处理系统 或行为的损害; c)或是信息系统中存在的任何不足或缺陷。

78 学者们的解释: Bishop的定义 1996年,使用状态空间描述的方法给出了漏洞的定义:认为信息系统是由若干描述实体配置的当前状态所组成的,漏洞就是指区别于所有非受损状态的容易受攻击的特征。 通俗来讲“攻击者利用程序、技术或者管理上的失误,得到了未被授权的访问或操作权限。这些控制上的失误称为系统漏洞或安全缺陷”

79 标准机构的定义 1999年,ISO/IEC15408(GB/T18336)定义:漏洞是存在于评估 对象(TOE)中的,在一定的环境条件下可能违反安全功能要求 的弱点; 2006年,美国NIST《信息安全关键术语词汇表》定义:漏洞是指 存在于信息系统、系统安全过程、内部控制或实现中的,可被威 胁源攻击或触发的弱点; 2006年,ISO/IEC SC 27《SD6:IT安全术语词汇表》定义:漏洞 是一个或多个威胁可以利用的一个或一组资产的弱点;是违反某 些环境中安全功能要求的TOE中的弱点;是在信息系统(包括其 安全控制)或其环境的设计及实施中的缺陷、弱点或特性。

80 对漏洞概念的剖析 现有定义从不同层次、不同角度,针对不同的对象描述漏洞 的概念,综合分析可以发现漏洞有以下几个特点:
现有定义从不同层次、不同角度,针对不同的对象描述漏洞 的概念,综合分析可以发现漏洞有以下几个特点: 漏洞是信息系统自身的弱点和缺陷; 漏洞存在于一定的环境中,寄生在一定的客体上(如TOE 中、过程中等); 具有可利用性和违规性,它本身的存在虽不会造成破坏, 但是可以被攻击者利用,从而给信息系统安全带来威胁和 损失;

81 我们的理解    信息安全漏洞是信息技术、信息产品、信息系 统在设计、实现、配置、运行等过程中,有意或 无意产生的缺陷,这些缺陷以不同形式存在于信 息系统的各个层次和环节之中,而且随着信息系 统的变化而改变。一旦被恶意主体所利用,就会 造成对信息系统的安全损害,从而影响构建于信 息系统之上正常服务的运行,危害信息系统及信 息的安全属性。

82 漏洞的分类 漏洞分类的目的是为从各个方面来描述漏洞,如从 漏洞的成因、利用漏洞的技术、漏洞的作用范围等;
漏洞分类的目的是为从各个方面来描述漏洞,如从 漏洞的成因、利用漏洞的技术、漏洞的作用范围等; 理论上,可以用一个分类属性来表达漏洞的一个本 质特征,而为漏洞的每个属性赋值的过程,就是给 漏洞在该维属性上分类的过程; 分类的原则:可接受性、易于理解性、完备性、确 定性、互斥性、可重复性、可用性;

83 几种主要的分类方法 RISOS的操作系统漏洞分类法 Aslam漏洞分类法 Bishop的6轴漏洞分类法 Neuman的风险来源分类法
Knight的广义漏洞分类法

84 RISOS的操作系统漏洞分类法 RISOS研究将漏洞分为7个类别: 不完全的参数合法性验证(eg:缓冲区溢出);
隐含的权限/机密数据共享(eg:TENEX文件口令) 非同步的合法性验证/不适当的顺序化(eg:条件冲突) 不适当的身份辨识/认证/授权(eg:弱口令) 可违反的限制(eg:违反使用手册) 可利用的逻辑错误( eg:TENEX 系统监视器漏洞)

85 Aslam的漏洞分类法 将安全性漏洞和软件错误结合在一起进行研究,主要分为: 编码错误 意外错误 同步错误 条件合法性验证错误 配置错误
环境错误

86 Bishop漏洞分类法举例 Bishop 从漏洞成因、时间、利用方式、作用 域、漏洞利用组件数和代码缺陷六个维度进行 分类。

87 Knight的广义漏洞分类法 提出了四类型分类法,将人的行为对信息系统安全的影响引入到漏洞分类中。主要包括: 社会工程 策略疏忽 逻辑错误
缺陷

88 漏洞无处不在 88

89 漏洞生命周期

90 漏洞的利用手段越来越高 1980 1985 1990 1995 2005 攻击技术与工具 入侵者 2000 高 低 攻击 复杂性 攻击者
知识 攻击 复杂性 跨站脚本 口令猜测 自复制代码 口令破解 利用漏洞 禁止审计 木马 会话劫持 sweepers sniffers packet spoofing GUI 自动探测/扫描 DoS拒绝服务 www 攻击 攻击技术与工具 “秘密行动” /高级扫描技术 偷窃 网管诊断 分布的攻击工具 Staged 入侵者 网站挂马 2000

91 漏洞的利用速度越来越快 病毒名称 利用的漏洞 补丁发布时间 蠕虫出现时间 弥补时间 Nimda(尼姆达) Unicode漏洞
140天 SQL Slammer SQL Server 2000 Resolution漏洞 210天 Blaster(冲击波) RPC DCOM漏洞 25天 Sasser(震荡波) LSASS漏洞 17天

92 客观必要性 产业界的现实:IT高度依赖国外 信息化政策的现状:发展优于安全 我国当前面临的安全威胁尤其复杂 安全保障体系建设的自主可控性不强
学术界:专家多次提议要高度重视信息安全

93 现实紧迫性 安全检测发现:智能OA存在人为设置的后门; 产品测评发现 :技术性漏洞也可被恶意使用; 系统评估发现:远程维护、软件升级不可控;
FW、IDS、Scanner 系统评估发现:远程维护、软件升级不可控; 保密检查发现:网络窃密、泄密事件怵目惊心。

94 信息安全漏洞研究 漏洞是一种战略资源 数量、种类、分布 攻守双方的焦点 风险评估的要点 地下经济的源点

95 信息安全漏洞研究 漏洞分析的框架 国家级的漏洞分析需要多方面的参与 基础研究 漏洞发现 漏洞控制 漏洞消减
漏洞是一种多方参与的、灰色的、非常规性对象 攻击者的挑战——现实问题 学术界的研究——科学探索 产业界的反应——防御修复 政府高度重视——管理控制 95

96 学术界的研究 这种现象是偶然的?必然的?是否有规可循?
1976年,M.Harrison等人在对可靠性的研究中发现: “在一个受保护系统中,一个给定状态对于一个基本 权限是否可靠是无法判定的”; 1988年,Adelman证明了:“任意一个程序是否包含恶 意代码是不可判定的”; 1989年F.Cohen证明了:“任意一个程序是否包含病毒 是不可判定的”; 漏洞的存在与发现机理如何呢?

97 学术界的研究 自20 世纪70 年代以来,学术界围绕漏洞理论开展了大量 研究;主要关注以下基础性的问题:
自20 世纪70 年代以来,学术界围绕漏洞理论开展了大量 研究;主要关注以下基础性的问题: 漏洞的机理是什么? 漏洞如何进入信息系统? 漏洞的表现形式是什么? 漏洞的危害有多大? 漏洞是否能够消除?方法有哪些? 这些研究涉及概念、分类、方法、模型等,不同的研究者 从不同的角度给出自己的答案。 PA(Protection Analysis Project)计划 RISOS(Research in Secured Operating Systems)计划

98 产业界的反应 产业界主要开展防御性的研究,并提供相应的产品 与服务;
产业界主要开展防御性的研究,并提供相应的产品 与服务; 技术不断发展,产品不断演化:扫描器、防病毒 (木马查杀)、IDS、IPS、SOC等; 其技术思路主要从异常行为、代码特征、规则匹配 等方面对漏洞加以判断,并以应对; 这种行为方式类似于流行病学,是对特定症候的防 御措施; 主要从以下几个方面开展相关工作: “看的见”:包括漏洞扫描、入侵检测、配置核查,以及代码审计类产品; “堵的住” :包括隔离设备、干扰设备、边界防护设备等; “消的掉” :包括补丁管理系统、安全加固服务,以及实施安全开发周期等保障措施; “救的回” :包括备份系统、应急响应措施与服务、灾难恢复措施与手段等。

99 信息管理 NVD Bugtraq CERT/CC X-Force CNCERT Secunia FrSIRT OSVDB Nsfocus
SecurityTracker Microsoft Apple

100 常用漏洞库介绍 CVE(Common Vulnerabilities & Exposures,通用漏洞披露) 美国国家漏洞数据库(NVD)
丹麦安全公司Secunia Security Focus Bugtraq 美国IBM公司的ISS X-Force 中国国家信息安全漏洞库(CNNVD)

101 CVE 通用漏洞披露(CVE)是MITRE公司提出的漏洞命名规范。目前已受到业界的广泛认可,成为最权威的漏洞命名标准之一。美国的国家漏洞库(NVD)、US-CERT公告、SANS Top 20及其他诸多重要漏洞库和漏洞公告中均使用的是CVE漏洞名称,厂商及研究人员也普遍使用和引用CVE。此外,不断有厂商宣布其产品或服务实现了CVE兼容,是否兼容CVE已成为信息安全产品的基础要求。CVE在信息安全业界统一基础术语和规范重要漏洞资源之间的参考引用方面卓有成效,起到了无可替代的作用。

102 CVE CVE凭借与黑客组织、软件厂商、安全公司等广泛的关系,真正成为他们之间沟通的桥梁。

103 CVE

104 NVD NVD(美国国家漏洞库)是美国政府建立的漏洞数据库。NVD采用CVE编号,和CVE一一对应,扩充了CVE的属性项,包括受影响实体、漏洞类型、危害评级(参考CVSS得分)、参考网址等。 NVD通过其规范的漏洞描述、漏洞评级和详细的漏洞参考信息等内容,称为国际权威的漏洞共享平台。 NVD除公布漏洞数据外,还公布CPE、FDCC等数据。

105 NVD

106 丹麦安全公司Secunia Secunia 是丹麦知名互联网安全公司,成立于2002年,作为一家独立的漏洞信息披露单位,具有很强的研究实力。

107 Secunia

108 Security Focus Bugtraq
Security Focus创建于1996年,是一个提供安全信息和安全服务的国际安全公司,自1999年起,世界上最有影响力的黑客电子邮件组BugTraq的Internet邮件列表就是由Security Focus管理的。2002年8月,Security Focus被赛门铁克公司整个并购,但它要求保持提供独立的安全服务。赛门铁克公司为终端用户和企业提供MSS服务和一系列产品,并通过Bugtraq漏洞数据库向公众提供安全公告和攻击利用信息。

109 Bugtraq

110 ISS X-Force IBM 2006年10月收购互联网安全系统公司ISS后,进行了全面整合,提供安全产品与安全服务,包括MMS安全服务、IPS、和企业漏洞扫描。X-Force对多种产品及技术开展安全研究,并监控安全环境和恶意软件。1996年开始,X-Force将研究发现以安全公告的形式发布在其数据库中。

111 中国国家信息安全漏洞库(CNNVD) 中国国家信息安全漏洞库,英文名称“China National Vulnerability Database of Information Security”,简称“CNNVD”,是中国信息安全测评中心为切实履行漏洞分析和风险评估的职能,负责建设运维的国家级信息安全漏洞库,为我国信息安全保障提供基础服务。

112 CNNVD

113 知识域:信息安全漏洞 知识子域:安全漏洞检测 了解基于静态分析的漏洞检测方法 了解基于动态分析的漏洞检测方法

114 漏洞检测技术 目标:研究专门的技术手段和方法,建立多角度的漏洞检测能力 经验向理论转化 形成自动化、规模化能力 方法: 静态分析 动态分析

115 静态分析技术 静态分析方法直接扫描程序代码,提取程序关键语法,解释其语义,理解程序行为,根据预先设定的漏洞特征、安全规则等检测漏洞。

116 静态分析方法——关键技术 流分析 符号执行 模型检测 指针分析

117 流分析技术——控制流 控制流分析是要得出代码中控制流走向的信息,即控制流图(CFG)。
控制流图是对代码执行时可能经过的所有路径的图形化表示,通过对代码中的分支、循环等关系的分析来获得代码的结构关系。 控制流分析关心的是代码的控制结构信息。 控制流分析的目标是得到程序的一个控制流图(controlflowgraph).控制流图是对程序执行时可能经过的所有路径的图形化表示.通过根据不同语句之间的关系,特别是考虑由“条件转移”、“循环”等引入的分支关系,对过程内的一些语句进行合并,可以得到关于程序结构的一些结果.一个控制流图是一个有向图:图中的结点对应于程序中经过合并的基本语句块,图中的边对应于可能的分支方向,例如条件转移、循环等等,这些都是分析程序行为的重要信息。

118 流分析技术——数据流 数据流分析是要得出程序中数据流动的信息,也就是程序中变量的相关信息,比如,可到达的变量定义,可用的表达式,别名信息,变量的使用及取值情况等。 常用方法:强连通区域方法、迭代法、T1-T2分析法、节点列表算法、图语法方法、消去法、语法导向方法、结构分析法、位置式(slotwise)分析法等。 (4)数据流分析(dataflowanalysis).数据流分析试图确定在程序的某一点(语句)关于各个变量的使用或者可能取值情况.数据流分析一般从程序的一个控制流图开始.数据流分析主要有前向分析(forwardanalysis)、后向分析(backwardanalysis) 两种方法.前向分析的一个例子是可达定义(reachingdefinitions).它计算对于程序的每一点,可能到达该点的定义的集合.后向分析的一个例子是活跃变量(livevariables).它计算对于程序的每一点,程序后面的语句可能读取且没有再次修改的变量. 这个结果对于消除死代码(deadcode)很有用:如果一个变量在某个阶段被定义后,后面的语句一直不会用到这个定义,那么这个定义就是死代码,应该从程序中删除.基于格(lattice)与不动点(fixpoint)理论的数据流分析是目前被广泛使用的技术:首先对控制流图中的每个节点建立一个数据流等式(equations),并根据分析目标构造一个具有有限高度的格L,然后不断重复计算每个节点的输出,直到达到格的一个不动点.许多编译器为了进行编译优化而引入了数据流分析技术. 数据流分析方法中最常用的方法是跌代法,迭代算法的主要步骤是:初始化数据流信息状态以及工作列表,然后依次处理工作列表中的节点,更新各节点信息,同时把被它影响的节点加入工作列表中。由于传输函数在数据流信息的格中有不动点,所以迭代算法是可以终止的。

119 符号执行 符号执行的目标是把程序转化成一组约束,同时检查程序模拟执行过程中的状态是否出错。这组约束中既包含程序中的路径条件,也包含要求程序满足的正确性条件或者程序员给出的断言。 符号执行的方法也是在程序的CFG上使用WorkList算法进行遍历。

120 模型检测 模型检测是给定被测系统的模型和目标属性的描述之后,可自动地对被测系统的状态空间进行穷尽搜索,以检测目标属性是否被满足。 度量指标:
可靠性——被检测为真的任何属性,都确实为真,即无误报; 完备性——所有确实为真的属性,必然可被检测出为真,即无漏报。

121 动态分析技术 动态分析方法是在代码运行的状态下,通过监测代码的运行状态或根据测试用例结果来检测漏洞的方法。与静态分析方法相比,动态分析方法的最大优势在于其分析结果的精确性,即误报率较低。 动态污染传播(Dynamic taint analysis),也称为动态信息流分析方法是在程序运行时,标记某些信息,例如变量、存储单位、寄存器的值等,从而跟踪攻击路径,获取漏洞信息。 第一步:标识污点源。 第二步:分析污染源的传播。 分析出什么样的操作导致了被污染对象x的信息被传递给了没有受污染的对象y记为xt(y),其中t表示程序操作。 分析出所有受t操作影响的对象y并标识y为受污染对象。 第三步:污染数据到达触发点(taint sink)时,根据触发机制对具有污染标识的数据、内存等进行检查,从而发现可能的安全问题。

122 动态分析——关键技术 模糊测试 动态污染传播
动态挖掘方法主要借鉴了软件测试的思想,即通过输入测试用例和输出测试结果来发现代码中存在的安全问题,如模糊测试、渗透测试等。此外动态挖掘方法还借鉴了软件监测的思想,即在不同层次上监测代码的运行状态来发现安全问题。如动态污染传播等。

123 模糊测试 模糊测试是一种基于缺陷注入的自动软件测试技术,使用大量精心构造的数据作为应用程序的输入,以程序是否出现异常为标志,来发现应用程序中可能存在的安全漏洞。 发展阶段: 第一代主要用于健壮性和可靠性测试。 第二代主要用于发现系统的漏洞。 第三代智能模糊测试侧重于更合理的测试数据集的构造。

124 模糊测试主要步骤 明确被测对象:确定被测对象,界定测试范围。如:文件 解析器、网络协议解析器、特定程序等;
生成测试数据:根据被测对象构建模糊测试数据。 执行测试:将测试数据输入到运行的系统中; 监控异常:对被测对象出现的故障或异常进行监控,以确 定由哪些测试数据引起的什么样的问题,而无法定位问题 所在的模糊测试是不完备的测试; 漏洞确认与分析:确定所发现的漏洞是否可重现,如果重 现成功,则进一步判断该漏洞是否可被利用。

125 动态污染传播 动态污染传播(Dynamic taint analysis),也称为动态信息流分析方法是在程序运行时,标记某些信息,例如变量、存储单位、寄存器的值等,从而跟踪攻击路径,获取漏洞信息。

126 动态污染传播主要步骤 第一步:标识污点源。 第二步:分析污染源的传播。
分析出什么样的操作导致了被污染对象x的信息被传递给了没有受污染的对象y记为xt(y),其中t表示程序操作。 分析出所有受t操作影响的对象y并标识y为受污染对象。 第三步:污染数据到达触发点(taint sink)时,根据触发机制对具有污染标识的数据、内存等进行检查,从而发现可能的安全问题。

127 漏洞消控 补丁修复 安全加固 127

128 补丁修复 打补丁是漏洞消减的技术手段之一。 数据显示,及时安装有效补丁可避免约95%的信息安全损失。 补丁修复中存在的两难问题:
是否要打补丁?——资源分配问题 打什么样的补丁?——补丁质量问题 如何打补丁?——操作方式问题 什么时间打补丁?——修复时机问题 现状: 出现了跨学科领域的研究方法(计算机科学、经济学、管理学) 从理论分析与用户最佳实践中共同寻找答案 半衰期指修复半数存在漏洞的系统所用的时间

129 安全加固 标准化的安全配置 根据漏洞分析和风险评估的安全加固 加固核查与问责
2002年,美国率先在军队推行标准化的安全配置与核查(IAVA) 根据漏洞分析和风险评估的安全加固 传统的安全加固手段越来越难以应付日益复杂的攻击行为,漏洞信息的及时披露和分发越来越重要。 加固核查与问责 通过安全审计核实漏洞消除情况和效果。

130 谢谢,请提问题!


Download ppt "恶意代码与安全漏洞 培训机构名称 讲师名字."

Similar presentations


Ads by Google