文档库

最新最全的文档下载
  • 求职/职场
  • 总结/汇报
  • 工作bob网页登录网址
  • 教学研究
  • 资格考试
  • 外语考试
  • 高等教育
  • 高中教育
  • 初中教育
  • 小学教育
  • 幼儿教育
  • 表格/模板
  • 人文社科
  • 当前位置:文档库 > 软件安全复习题

    软件安全复习题

    软件安全复习题

    一、选择题

    1、目前对软件通俗的解释为( A )

    A、软件= 程序+ 数据+文档资料

    B、软件= 程序+ 方法+规则、

    C、软件= 程序+ 数据+方法

    D、软件= 程序+ 数据+规则

    2、Windows的三个主要子系统是( D )

    A、应用系统、数据系统、内核系统

    B、数据库系统、应用程序、系统程序

    C、Kernel、User 和API

    D、Kernel、User和GDI

    3、安全软件的核心属性有( A )

    A、保密性、完整性、可用性、责任性、抗抵抗性

    B、保密性、完整性、可用性、可预测性、正确性

    C、保密性、完整性、可用性、可依赖性、可靠性

    D、保密性、完整性、可用性、复杂性、可追踪性

    4、在安全知识中攻击模式采用较( C )来描述常见的攻击程序,这种形式能够应用于跨越多个系统的情形。

    A、实例化的形式

    B、代码扫描的形式

    C、抽象的形式

    D、安全原则至上的形式

    5、软件安全切入点指的是在软件开发生命周期中保障软件安全的一套最佳实际操作方法。这一套最佳实践方法包括:( A )

    A、代码审核,体系结构风险分析,渗透测试,基于风险的安全测试,滥用案例,安全需求和安全操作。

    B、代码审核,体系结构风险分析,黑箱测试,基于风险的安全测试,滥用案例,安全需求和安全操作。

    C、安全原则,体系结构风险分析,黑箱测试,基于风险的安全测试,滥用案例,安全需求和安全操作。

    D、代码审核,体系结构风险分析,fuzz测试,基于风险的安全测试,滥用案例,安全需求和安全操作。

    6、描述性知识包括( D )

    A、实例、检测和架构

    B、案例、说明、架构

    C、需求描述、安全操作和安全原则

    D、原则、方针、和规则。

    7、弱点知识是对真实系统中出现过并报告的软件( B )的描述

    A、缺陷

    B、弱点

    C、漏洞

    D、风险

    8、逆向工程是编译过程的逆过程,即( C )

    A、从高级语言恢复机器码的结构和语义的过程。

    B、从汇编码恢复到高级语言的结构和语义的过程。

    C、从机器码恢复高级语言的结构和语义的过程。

    D、从高级语言的结构和语义恢复到系统编码的过程。

    9、诊断性知识:攻击模式、攻击程序和弱点。诊断性知识不仅包括关于实践的描述性陈述,其更重要的目标是帮助操作人员识别和处理导致( B )的常见问题。

    A、病毒感染

    B、安全攻击

    C、系统风险

    D、缺陷

    10、下面对病毒描述正确的是( A )。

    A、病毒(virus)是一种人为制造的、能够进行自我复制的、具有对计算机资源的破坏作用的一组程序和指令的集合。

    B、病毒与生物病毒不一样,没有其自身的病毒体(病毒程序)和寄生体(宿主HOST,病毒载体,携带者)。

    C、所谓感染或寄生,是指病毒将自身嵌入到非宿主指令序列中。

    D、寄生体为病毒提供一种生存环境,不是一种合法程序。

    二、填空题

    1、一般将方法、工具和过程成为软件工程的三要素

    2、软件工程以质量为关注焦点,全面(质量管理)及相关的现代管理理念为软件工程奠定强有力的根基。

    3、软件保证是计划和系统行动集合来确保软件过程和产品符合需求,标准和规程以达到如下两个目标: 可信性和执行的(可预见性)。

    4、软件可靠性工程的研究范围主要是:软件可靠性定量评测、软件可靠性的(设计与管理)、软件可靠性保证技术。

    5、调试器可以让软件开发人员在程序运行的同时观察程序的运行过程和状态。它的两个基本功能是:(设置断点)和代码跟踪。

    6、Windows提供两个发送消息的函数PostMessage()和SendMessage(),其中函数(PostMessage() )是将消息发出去就返回,不管该消息是否被处理了。

    7、根据漏洞出现的阶段,软件安全漏洞可分为两大类:设计漏洞和(实现漏洞)。

    8、木马实施网络入侵的基本步骤:(配置木马)、传播木马、运行木马、信息反馈、建立连接、远程控制。

    9、网页恶意脚本程序利用.asp、.html、.vbs、.js类型的文件进行传播的基于VB Script和Java Script(脚本语言)并由Windows Scripting Host解释执行的一类恶意程序。

    10、安全软件开发的体系安全需要考虑(威胁建模)、安全风险分析、安全风险管理三个方面。

    三、判断题

    1、软件保证关系到两个软件属性:一个是质量,也就是说软件保证是软件质量保障的简短形式,另一个属性是可靠性,特别是可靠性中最重要的内容--安全。( 正确)

    2、软件容错性是指软件运行时,能对非正常因素引起的运行错误给出适当地处理或信息提示,使软件运行正常结束。( 正确)

    3、对寄存器的解释:处理器用于存储信息的地方。所有处理器都在寄存器上完成操作。( 正确)

    4、在big-edian系统上,最重要的位的字节首先被存储。( 正确)

    5、反汇编器可以将二进制代码作为输入、生成包含整个或部分程序的汇编语言代码的文本文件的程序。( 正确)

    6、反编译器接收可执行的二进制文件,试图从中生成可读性好的高级语言代码。其思想是逆向编译的过程,以获取最初的源代码文件或与接近于最初源代码的文件。( 正确)

    7、修补工具是指可以修改二进制可执行代码以改变其行为的过程。( 正确)

    8、如果处理器将多字节中最不重要的字节存储在低端地址,将最重要的字节存储在高端地址内,就是little-endian方式。反之,是big-endian方式。(正确)

    9、每个进程的虚拟内存被分为内核地址空间和用户地址空间。(正确)

    10、分割型蛀穴病毒(fractionated cavity)是蛀穴病毒的一个变形,即病毒代码被分割成一个装入例程和N个片断,这些片断位于包含闲散空间的节中。(正确)

    11、在白箱测试中,对于测试人员来说,所有关于被测试的系统的信息都是已知的。(正确)

    12、黑箱测试又叫功能测试,它主要关注的是被测试软件功能的实现,而不是内部逻辑。(正确)

    13、灰箱测试是指在安全测试期间,一起使用白箱和黑箱两种测试技术。(正确)

    14、渗透测试是从攻击的角度测试软件系统是否安全,其价值在于可以测试软件发布到实际系统中的安全状况。(正确)

    15、数字水印技术用信号处理的方法在数字化的多媒体数据中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能提取。(正确)

    16、从技术角度来讲,“可信的”未必意味着对用户而言是“值得信赖的”。(正确)

    四、简答题

    1、软件安全是指

    采取工程的方法使得软件在敌对攻击的情况下仍能够继续正常工作。即采用系统化、规范化、和数量化的方法来指导构建安全的软件。

    2、软件工程

    它是一门研究如何使用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。

    软件工程采用工程的概念、原理、技术和方法来开发维护软件,把经过时间考验而证明正确的管理方法和最先进的软件开发技术结合起来,应用到软件开发和维护过程中,来解决软件危机问题,生产出无故障的、及时交付的、在预算之内的和满足用户需求的软件。

    3、软件缺陷产生的主要原因:

    需求规格说明书包含错误的需求、或漏掉一些需求,和没有准确表达客户所需要的内容。 需求规格说明书中有些功能不可能或无法实现;

    系统设计中的不合理性;

    程序设计中的错误;

    程序代码中的问题,包括错误的算法、复杂的逻辑等。从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。

    4、栈溢出的原因及危害

    其产生的原因是输入数据时,由于没有进行边界检查,导致输入的数据的数量超过了堆栈预留的存储空间,最终覆盖了堆栈中的返回地址,如果覆盖返回地址的是一个攻击程序的地址,则导致去执行这个恶意程序。

    5、堆溢出原理和栈溢出是一样的,即堆的空间无法容量用户输入的数据,导致数据重写了堆块后的地址空间。

    通常,堆采用链表的形式组织数据,在块数据之前或之后存在指向前一个和后一个堆块的指针。这样,超过堆块末尾的地址空间上写入数据或者攻击代码的入口地址将会破坏个链表。 当堆管理器遍历链表时就会引起程序崩溃或者执行攻击代码。由于堆块的大小总是动态计算的,故堆溢出比堆栈溢出要困难一些。

    6、恶意软件及其分类

    恶意软件大致分为两类,该分类是从主机依赖的角度进行的分类(见图4.1):

    依赖主机程序的恶意软件和独立主机的恶意软件。前者不能独立于应用程序或系统程序,即存在宿主文件,必须依赖宿主的运行而启动,包括病毒、木马、后门、逻辑炸弹等;后者

    是能在操作系统上运行的、独立的程序,包括蠕虫、细菌、拒绝服务攻击程序等。

    7、简答病毒的检测方法

    比较法:比较法是用原始的或者正常的内容与被检测的进行比较。

    校验和法:计算正常文件的内容的校验和,并将该校验和写入文件中保存。

    扫描法:扫描法是根据每一种病毒含有的特征字符串,对被检测的对象进行扫描。

    行为监测法:利用病毒的特有行为特性监测病毒的方法称为行为监测法。

    感染实验法:感染实验是一种简单实用的检测方法,该方法可以检测出病毒检测工具不认识的新病毒,摆脱对病毒检测工具的依赖,自主的检测可疑的新病毒。

    软件模拟法多态型病毒每次感染都改变其病毒密码,对付这种病毒时特征代码法会失效。分析法:搞清楚病毒体的大致结构,提取特征识别用的字符串或者特征字,用于增添到病毒代码库供病毒扫描和识别程序使用。

    其它高级方法:启发式代码扫描技术。

    8、木马

    是一种恶意程序,是一种基于远程控制的攻击工具,它一旦入侵用户的计算机,就悄悄地在宿主计算机上运行,在用户毫无觉察的情况下,让攻击者获得远程访问和控制系统的权限,进而在用户的计算机中修改文件、修改注册表、控制鼠标、监视/控制键盘,或窃取用户信息,乃至实施远程控制。它是攻击者的主要攻击手段之一,具有隐蔽性和非授权性等特点。

    9、木马的结构

    系统通常采用服务器,客户端结构。即分为服务端和客户端。通常功能上由木马配置程序、控制程序和木马程序三个部分组成。

    木马程序:木马程序也称为服务器程序,驻留在受害者的系统中,非法获取其操作权限,负责接收控制指令,并根据指令或配置发送数据给控制端。

    木马配置程序:木马配置程序设置木马程序的端口号、触发条件、木马名称等,使其在服务器端隐藏得更隐蔽。

    控制程序:控制程序控制远程木马服务器,统称为控制端程序,负责配置服务器、给服务器发送指令。

    10、STRIDE威胁模型

    欺骗标识(Spoofing),典型的例子是使用其他用户的认证信息进行非法访问。

    篡改数据(Tampering),在未授权的情况下恶意地修改数据。这种修改可以是在数据库中保存的数据,也可能是在网络中传输的数据。

    可抵赖(Repudiation),用户从事一项非法操作,但该用户拒绝承认,且没有方法可以证明她是在抵赖。

    信息泄漏(Information disclosure):信息暴露给不允许对它访问的人。例如用户读到没有给她赋予访问权限的文件的内容,信息在网络中传递时内容被泄密。

    拒绝服务(Denial of service)拒绝对正当用户的服务。

    权限提升(Elevation of privilege)一个没有特权的用户获得访问特权,从而有足够的权限作出摧毁整个系统的事情。

    11、软件安全原则

    (1)使最薄弱的环节安全(Securing the Weakest Link )

    (2) 纵深防御(Defense in Depth )

    (3) 安全地错误退出(Failing Securely )

    (4)最小权限原则(Least Privilege)

    (5) 权限分离(Separation of Privilege )

    (6)保护机制的经济性(Economy of Mechanism)

    (7) 最小共性原则(Least Common Mechanism )

    (8) 勉强信任原则(Reluctance to Trust )

    (9) 不要认为你的秘密是安全的(Never Assuming that your Secrets are Safe)

    (10) 完全仲裁(Complete Mediation)

    (11) 心理接受能力(Psychological Acceptability )

    (12)保护隐私(Promoting Privacy)

    12、安全测试的基本步

    使用所有你具备的资源,列出应用程序的输入或“攻击面”

    建立威胁模型,将程序组件从高风险到低风险排序

    通过“故障注入”,使用常见的“攻击模式”去攻击应用程序的“攻击面”。攻击首先从程序的最高风险部分开始

    审查系统,查找常见的“安全设计错误”

    五、综合题

    1、什么是前置病毒(jprepending virus),如何修复前置病毒感染的文件?

    答案:把病毒的代码插入到宿主程序的前面,这些代码通常采用高级语言如C、Pascal等实现,通常在磁盘上创建一个包含原文件内容的临时文件,然后用system这样的函数执行临时文件中原来的程序。

    前置病毒的变种为典型寄生病毒。

    这种病毒用自身的代码重写宿主顶部的数据,并把宿主顶部的这些数据存放在宿主程序的最后,长度通常等于病毒体的长度。因此,修复工作只需要把文件从末尾向前的N个字节拷贝到文件头部,然后再文件大小为Filesize-N的地方把文件截断,这里N是病毒代码的长度。第一个寄生病毒是Virdem。

    2、恶意代码分析过程的具体步骤?

    第一步是对可疑对象进行快速检查。

    第二步工作是用一个或一组反病毒扫描器进行过滤。

    第三步实对尚待分析的文件进行残留物清除。

    第四步是对可疑对象中常见的病毒代码的位置进行快速检查。

    第五步是分析对象中的字符串,使用“strings”这种工具,将字符串转储出来,使用理解Unicode字符串的工具。

    第六步,使用反汇编工具在应用程序代码的入口点附近进行快速检查,观察该处是否存在异常的恶意代码。

    第七步,在有恶意代码的迹象下,可以借鉴一些软件安全测试的方法。

    第八步,由于大量的32位计算机病毒都是使用运行时工具如UPX或ASPACK加壳,且大部分运行时压缩工具不支持把压缩文件脱壳,即只能在加壳的文件被执行时,在内存中对其进行脱壳操作。