pc安全软件(如何针对PC端的应用软件进行安全测试?)

wufei123 发布于 2024-02-03 阅读(78)

我回来了,下面开更—————————— 分割线————————————————2016.09.14 更新软件安全检测技术主要用于对软件中的安全缺陷或漏洞进行分析测试,以期发现软件中的安全隐患主要包括以下三种技术:软件。

静态安全检测技术、软件动态安全检测技术和软件动静结合的安全检测技术一、静态检测技术静态检测针对的是未处于运行状态的软件,可用于对软件源代码和可执行代码的检测1、软件源代码的静态安全检测(这是软件源代码的主要安全检测技术)。

优势:不需要构建代码的运行环境,分析效率高,消耗资源少,减少了人工分析的工作量劣势:误报率较高主要技术包括:词法分析、数据流分析、污点传播分析、符号分析、模型检查、定理证明等(1)词法分析通过对源代码进行基于文本或字符标识的匹配分析对比,以查找符合特定特征和此法规则的危险函数、API或简单语句组合。

缺点是只能进行表面的词法检测,不能进行语义方面的深层次分析工具:Checkmarx和ITS4等(2)数据流分析通过分析软件代码中变量的取值变化和语句的执行情况,来分析数据处理逻辑和程序的控制流关系适合检查因

控制流信息非法操作而导致的安全问题,如内存访问越界、常数传播等,但准确率较低,误报率高由于可以实现大规模代码的快速分析,广泛应用于商业的源代码安全性分析工具中工具:Coverity、Klockwork(3)

污点传播分析通过分析代码中输入数据对程序执行路径的影响,以发现不可信的输入数据导致的程序执行异常污点传播分析的核心是分析输入仓鼠和执行路径之间的关系,适用于由输入参数引发漏洞的检测该技术分析准确率较高,但针对大规模代码的分析,性能将受较大影响。

工具:Pixy(4)符号分析符号分析是指在不实际执行程序的前提下,将程序的输入表示成符号,更具程序的执行流程和输入参数的赋值变化,把程序的输出表示成包含这些符号的逻辑或算术表达式的一种技术它的优点是代价小、效率高,但由于程序执行的可能路径随着程序规模的增大呈指数级增长,当程序执行路径的数量超过约束求解工具的求解能力时,。

符号执行将难以进行工具:EXE、SAGE、SMART、KIEE等(5)模型检查模型检查是将程序的执行过程抽象为状态迁移的模型,采用状态迁移过程中安全属性的验证来判断程序的安全性质模型检验对于路径和状态的。

分析过程可以实现全自动化,但由于穷举所有状态,所以和符号分析一样存在计算能力受限的问题此外,模型检验对大型复杂软件的漏洞挖掘方面仍处于探索阶段工具:微软的SLAM项目、伯克利大学的MOPS工具等(6)定理证明

定理证明是将待解决问题转化为数学上的定理证明问题,从而判定程序是否满足特定安全属性由于定理证明的方法整个过程都使用严格的推理证明实现分析,在静态分析技术中是最准确的、误报率较低但是该技术抽象和转黄工作需要人工干预,自动化程度不高,难以应用于新漏洞的检测,而且难以应用于大型软件的。

程序分析工具:Saturn、ESC/Java等2、可执行代码的静态分析只能对可执行代码反汇编后得到的汇编代码进行检测,而汇编代码多是寄存器之间数值的操作,没有明确的语义信息,因此静态检测往往分析效率低下,误报率较高。

可执行代码检测可以分为基于程序结构的安全检测技术和基于程序语义的安全检测技术(1)基于程序结构的安全检测技术该技术需要根据二进制可执行文件的格式特征,从二进制文件的头部、符号表以及调试信息中提取安全敏感信息,来分析文件中是否存在安全缺陷。

工具:IDA Pro、Bugscam(2)基于程序语义的检测技术该技术需要先程序进行反汇编得到汇编代码,再将汇编代码转换为中间语言,在分析中间语言的基础上针对得到的部分语义信息进行缺陷分析和漏洞的检测工具:UAFChecker检测工具。

ps:今天先更这么多,有事做了,不过好像没什么人看,下次再更 动态检测和动静结合的检测技术——————我叫分割线——————————2016.09.17 0:24莫兰蒂过后的厦门满目疮痍,百废待兴,人们生活在。

水深火热之中,没有水,没有电,但还是挺过来了,希望厦门能早日重焕光彩第二次更新,补上动态分析与动静结合分析下面开更:二、动态检测技术动态检测是针对运行中的软件程序,通过构造非正常的输入来检测软件运行时是否出现故障或崩溃等非正常输出,并通过检测软件运行中的内部状态信息来验证或检测。

软件缺陷的过程动态检测的分析对象时可执行代码,其与可执行代码的静态检测的区别就在于程序是否处于运行状态动态安全检测技术是通过实际运行程序来发现问题的,因此检出的安全缺陷与漏洞准确率非常高(误报率低)目前主要的动态检测技术有:模糊测试、智能模糊测试和动态污点分析。

1、模糊测试(Fuzzing)是一种自动化或半自动化的安全漏洞检测技术,通过向受测软件输入大量的畸形数据并检测目标系统的异常来发现潜在的软件漏洞属于黑盒测试的一种缺点是畸形数据的生成具有随机性,而随机性将造成测试代码覆盖不充分,从而导致测试数据覆盖率不高。

可选用的模糊测试工具有SPIKE、Peach等在具体测试软件时,需要根据目标的实际因素而选择不同方法然而无论使用何种方法进行测试,模糊测试基本都需要采用以下几个步骤:(1)确定测试对象和输入数据由于可利用的漏洞都是由于程序接收了用户输入的数据造成的,并且在处理输入数据时没有先过滤非法数据或进行校验确认,所以对模糊测试而言,确定可能的输入数据以及畸形输入数据的枚举是极为重要的。

文件、网络数据包、注册表键值、环境变量等都可能是模糊测试的输入数据(2)生成模糊测试数据一旦确定了输入数据,就可以生成模糊测试用的畸形数据我们需要根据目标程序及输入数据格式的不同,选择不同的测试数据生成算法。

(3)检测模糊测试数据启动目标程序,把生成的测试数据输入到接收测试的应用程序中(4)监测程序异常这一步非常重要,只有实时监测目标程序的运行,才能追踪到引发目标程序异常的源测试数据在这里可以采用操作系统的监测功能和第三方监测软件。

(5)确定可利用性这个步骤并非必须,只是监测这个异常对应的漏洞是否可被利用这需要测试人员具备较强的漏洞挖掘和分析经验尽管模糊测试对安全缺陷和漏洞的检测能力很强,但由于它的测试样本生成方式具有随机性,所以并不能发现所有错误。

为了弥补它的不足,有的公司采用多台测试服务器组成的集群进行分布式协同测试,通过增加物理资源,能在一定程度上弥补模糊测试的不足2、智能模糊测试(Smart Fuzzing)这种技术是在模糊测试的基础上引入了基于符号执行等 可进行程序理解的方法,有针对性地设计测试数据,从而实现比传统模糊测试更高的效率。

具体的实现步骤:(1)反汇编先对可执行代码进行反汇编,然后在汇编代码的基础上进行输入数据、控制流、执行路径之间相关关系的分析(2)中间语言转换由于直接从汇编代码中获得程序运行的内部信息的工作量较大,因此通常将汇编代码再转换成中间语言,以便理解。

(3)采用智能技术分析输入数据和执行路径的关系这一步是智能模糊测试的关键,它通过符号执行和约束求解技术、污点传播分析、执行路径遍历等技术手段,检测出可能产生漏洞的程序执行路径集合和输入数据集合(4)利用分析获得的输入数据集合,对执行路径集合进行测试。

智能模糊测试的核心思想在于以尽可能小的代价找出程序中最可能产生漏洞的执行路径,从而避免了盲目进行全路径覆盖测试的低效率,使漏洞分析具有了更强的针对性然而,智能模糊测试在分析可能产生漏洞的执行路径时,从技术实现、编码工作和提升分析的准确性方面,都有较大难度和提升空间,并将花费大量的实价成本和人力。

所以在选用技术时,需要衡量工作量和安全检测效率之间的关系可用工具有典型的TainScope3、动态污点分析(Dynamic Taint Analysis)模糊测试侧重随机生成数据样本并测试,而不关注程序真实的执行过程。

动态污点分析则是通过分析被测试程序内部指令的真实的执行过程,追踪输入数据在程序内部的传递、处理流程,以检测输入数据是否存在设计安全的敏感操作,从而分析出污点数据导致的潜在安全缺陷和漏洞该技术的基本思想是在程序执行过程中跟踪用户输入数据在。

寄存器和内存单元之间的传播过程,然后监控被测试程序对输入数据使用的相关信息动态污点分析关注所有来自程序外部的不可信污点在可执行程序中的传播过程,对所有不可信污点都标记一个唯一的标签,然后跟踪这些标签在可执行程序

中的传递过程在跟踪这些标签在二进制程序中的过程时,不仅考虑二进制程序中的数据依赖关系,而且考虑二进制程序中不同变量之间的控制依赖关系动态污点分析可以识别出输入文件中的哪些字节会影响二进制程序中涉及安全敏感操作的函数,如。

内存分配函数、字符串函数等,从而发现可能触发安全缺陷和漏洞的污点数据可用的工具有BitBlaze三、动静结合测试静态和动态分析技术都有各自的优缺点,例如静态分析可以比较全面地考虑执行路径,漏报率比动态分析低;但动态分析由于获取了具体的运行信息,因此报告的漏洞更为精准。

因此,单纯地使用某种技术可能难以达到理想的效果,将动态分析和静态分析结合起来,扬长避短,就能得到更好的分析效果动静结合的安全检测方法主要有:1、先对源代码进行静态分析,发现潜在漏洞,然后构造输入数据在程序动态运行时验证。

但是这种方法没能充分发挥动态分析的作用2、对可执行代码进行反汇编,通过对汇编代码或中间语言进行静态检测分析获取的信息来指导动态分析这种方法结合了动态污点分析技术的优点,但是汇编代码的语义信息通常难以提取和理解,并且跟踪可执行代码运行信息的技术难度也很大。

总之,将动静结合的方法用于分析二进制程序,要比单纯的使用一种技术更加复杂可选用的工具有BitBlaze简单介绍一下BitBlaze:它由三部分组成:TEMU是其动态分析模块,VINE是其静态分析模块,Rudder的层次在前两者致伤,是混合进行符号执行和实际执行的模块。

BitBlaze本质上来讲是一个动态Fuzzing工具,它能保证每次执行的都是不同的路径,并以此提高测试的有效性

亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

宝骏汽车 新闻63206