《计算机病毒分析.docx》由会员分享,可在线阅读,更多相关《计算机病毒分析.docx(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机病毒课程期末复习资料第1章 恶意代码分析入门1.1 计算机病毒的定义和类型1.2 计算机病毒分析的目标1.3 计算机病毒分析技术概述第2章 静态分析技术基础2.1 杀毒软件2.2 哈希值2.3 特征字符串2.4 加壳与混淆2.5 PE文件格式A.检查可执行文件但不查看具体指令的一些技术分析的目标B.动态分析基础技术涉及运行恶意代码并观察系统上的行为,以移除感染,产生有效 的检测特征码,或者两者C.主要是对恶意代码内部机制的逆向工程,通过将可执行文件装载到反汇编器中,查 看程序指令,来发现恶意代码到底做了什么D.动态分析高级技术则使用调试器来检查一个恶意可执行程序运行时刻的内部状态判断题:
2、静态分析基础技术是非常简单,同时也可以非常快速应用的,但它在针对复 杂的恶意代码时很大程度上是无效的,而且它可能会错过一些重要的行为。()考核知识点:静态分析技术参见讲稿章节:2.1单选题:反病毒软件主要是依靠()来分析识别可疑文件。A文件名B病毒文件特征库C文件类型D病毒文件种类参见讲稿章节:2.3单选题:Strings程序搜索()或以上连续的ASCII或Unicode字符,并以终结符结 尾的可打印字符串。A.2个B3个 C1个 DO个判断题:Strings程序检测到的一定是真正的字符串。()判断题:当加壳的程序运行时,会首先运行一小段脱壳程序,来解压缩加壳的文件, 然后再运行脱壳的文件。(
3、)判断题:当一个程序被加壳后,你必须对它进行脱壳,才能够执行进一步分析。()考核知识点:虚拟机的结构参见讲稿章节:3.1判断题:虚拟机是运行在ringO级。()多选题:以下哪些是常用的虚拟机软件(1A.VMware Player B.VMware Station C.VMware Fusion D.VirtualBox考核知识点:创建虚拟机参见讲稿章节:3.2单选题:以下那种互联网连接模式在宿主机和客户机之间创建了一个隔离的私有局域 网(IA.bridgedB.NETC.Host-onlyD.Custom判断题:未知的计算机病毒不存在不确定性。考核知识点:X86反汇编参见讲稿章节:5.1单选题
4、:计算机体系结构中,()层是由十六进制形式的操作码组成,用于告诉处理器 你想它干什么。A微指令 B机器码C低级语言D高级语言单选题:在获取不到高级语言源码时,()是从机器码中能可信并保持一致地还原得到 的最高一层语言。A机器指令B微指令C汇编语言D机器码参见讲稿章节:5.2判断题:IP地址127.0Q1在小端字节序下,表示为0x7F000001。()判断题:操作数指向感兴趣的值所在的内存地址,一般由方括号内包含值、寄存器或 方程式组成,如eax。()考核知识点:加载可执行文件参见讲稿章节:6.1判断题:在合法的PE文件中,可以带有可执行文件。()判断题:在进程中加载的DLL的位置和在IDA P
5、ro中的地址不同,这可能是及地址重 定向的结果。()判断题:在默认情况下,IDA Pro的反汇编代码中包含PE头或资源节。()考核知识点:识别汇编中的C语言代码结构参见讲稿章节:7.1单选题:下列表明是全局变量的汇编代码是(1A.mov eaxzdword_40CF60B.mov eax,ebp-4C.mov eaxzebp+var_4D.mov dword_40CF60zeax单选题:对应a+的汇编代码是(XA.move eax,ebp+var_4B.sub eax,ebp+var_8C.sub eax,lD.add eax,l判断题:全局变量可以被一个程序中的任意函数访问和使用,在栈中局部
6、变量只能在 它被定义的函数中访问,在内存上。()考核知识点:识别if分支结构参见讲稿章节:7.2单选题:对下面指令分析不正确的是(1A.要跳转的决定是基于一个比较(cmp )语句来做的B.调剂跳转(jnz),如果这两个值不相等,这个跳转就会发生C.代码跳转(jump )保证了只有一条代码路径会被执行D.对于一个if语句必定有一个条件跳转,所有条件跳转也都对应if语句考核知识点:识别循环参见讲稿章节:7.3判断题:switch语句被程序员用来做一个基于字符或者整数的决策。例如,后门通常 使用单一的字节值从一系列动作中选择一个。switch语句通常以两种方式被编译:使用if 方式或使用跳转表。()
7、考核知识点:识别函数调用参见讲稿章节:7.4单选题:函数调用约定中,参数是从右到左按序被压入栈,当函数完成时由被调用函 数清理栈,并且将返回值保存在EAX中的是(IA.cdel B.stdcall C.fastcallD.压栈与移动多选题:微软fastcall约定备用的寄存器是(1A.EAX B.ECX C.EDX D.EBX多选题:()是Windows API的标准调用约定。A.cdecl B.stdcall C.fastcallD.压栈与移动判断题:在stdcall中,前一些参数(典型的是前两个)被传到寄存器中,备用的寄存 器是EDX和ECX (微软fastcall约定如果需要的话,剩下的
8、参数再以从右到左的次序 被加载到栈上。通常使用fastcall比其他约定更高效,因为代码不需要涉及过多的栈操作。判断题:微软Visual Studio和GNU编译集合(GCC 前者,adder函数和printf 的函数在调用前被压到栈上。而后者,参数在调用之前被移动到栈上。()考核知识点:识别switch结构美化参见讲稿章节:7.5多选题:下列说法正确的是(XA. IDA Pro有一个在识别结构方面很有用的图形化工具B.从反汇编代码来看,很难知道原始代码是一个switch语句还是一个if语句序列C. switch中各无条件跳转相互影响D.使用了一个跳转表,来更加高效地运行switch结构汇编代
9、码判断题:switch语句被程序员用来做一个基于字符或者整数的决策。例如,后门通常 使用单一的字节值从一系列动作中选择一个。switch语句通常以两种方式被编译:使用if 方式或使用跳转表。()参见讲稿章节:7.6考核知识点:识别数组、结构体、链表单选题:下列论述错误的是。()A.数组是相似数据项的有序集合B.结构体和数组相似,但是它们包括不同类型的元素C.一个链表是包含一个数据记录序列的数据结构,并且每一个记录都包括一个对序列 中下一个记录的引用(链接)域。使用一个链表,被链接项的访问次序与数据项被保存在 内存或磁盘上的次序必须一样D.在汇编代码中,数组是通过使用一个基地址作为起始点来进行访
10、问的。每一个元素 的大小通常并不总是明显的,但是它可以通过看这个数组是否被索引的来进行判断单选题:()被定义为一个相似数据项的有序集合。A.数组 B.结构体 U链表 D.变量判断题:结构体通过一个作为起始指针的基地址来访问。要判断附近的数据字节类型 是同一结构的组成部分,还是只是凑巧相互挨着是比较困难的,这依赖于这个结构体的上 下文。()判断题:结构体通过一个作为起始指针的基地址来访问。要判断附近的数据字节类型 是同一结构的组成部分,还是只是凑巧相互挨着是比较困难的,这依赖于这个结构体的上 下文。()判断题:结构体通过一个作为起始指针的基地址来访问。要判断附近的数据字节类型 是同一结构的组成部
11、分,还是只是凑巧相互挨着是比较困难的,这依赖于这个结构体的上 下文。()考核知识点:分析恶意Windows程序参见讲稿章节:8.1单选题:以下Windows API类型中()是描述一个双字节、32位的无符号数值。A WORD B DWORD C handles D Callback单选题:以下Windows API类型中()是表示一个将会被Windows API调用的函 数。A WORD B DWORD C handles D Callback判断题:句柄在它们引用一个对象或其他某个位置这个点上和指针是完全一样的。()判断题:在文件系统函数中CreateFile这个函数被用来创建和打开文件。(
12、)参见讲稿章节:8.1多选题:恶意代码作者如何使用DLL( XA保存恶意代码B通过使用Windows DLLC控制内存使用DLLD通过使用第三方DLL考核知识点:调试器介绍参见讲稿章节:9.1判断题:只有软件调试器,没有硬件调试器。()判断题:内核调试只需要在一个系统上进行。()选择题:能调试内核的调试器是(XA.OIlyDbg B.IDA ProC.WinDbg D.Process Explorer考核知识点:使用调试器参见讲稿章节:9.2判断题:单步执行代码时,调试器每执行一条指令就会产生一次中断。()选择题:单步调试是通过()实现的。A.每条代码之前添加软件断点B.每条代码之前添加硬件断
13、点第3章 在虚拟机中分析恶意代码3.1 虚拟机的结构3.2 创建虚拟机3.3 使用虚拟机第4章 动态分析技术4.1 沙箱分析4.2 运行病毒和使用进程监视4.3 Process Explorer 和 Reg shot4.4 网络模拟第5章X86反汇编5.1 逆向工程5.2 X86体系结构5.3 CPU汇编指令C.标志寄存器中的陷阱标志(在叩flag)D.标志寄存器中的zf标志位考核知识点:断点类型参见讲稿章节:9.4选择题:当调试可以修改自身的代码的代码时,应该设置什么类型的断点(XA .软件执行断点B.硬件执行断点C.条件断点D.非条件断点考核知识点:修改可执行程序参见讲稿章节:9.6多选题
14、:调试器可以用来改变程序的执行方式。可以通过修改()方式来改变程序执 行的方式。A .修改控制标志B.修改指令指针C.修改程序本身D.修改文件名考核知识点:Ollydbg加载恶意代码参见讲稿章节:10.1单选题:下列关于OllyDbg运行恶意代码说法错误的是。()A. OllyDbg有几种调试恶意代码的方法。可以用它直接加载可执行文件,甚至加载 DLL程序B.如果恶意代码已经在系统上运行,可以通过附加进程的方式调试它C. OllyDbg是一个灵活的调试系统,可以用命令行选项运行恶意代码,甚至支持执行 DLL中某个函数D.可以在在加载恶意代码程序之前给OllyDbg传入命令行参数判断题:当你想要
15、调试一个正在运行的恶意代码时,OllyDbg也支持附加到一个正在 运行的进程,此刻OllyDbg会立即暂停这个程序以及它所有的线程。()考核知识点:内存映射参见讲稿章节:10.3多选题:下列概念说法正确的是()A. OllyDbg内存映射窗口(View-Memory )显示了被调用程序分配的使用内存块B.基地址重定位是指Windows中的一个模块没有被加载到其预定基地址时发生的情 况C. Windows中的所有PE文件都有一个预定的基地址,它在PE文件头中被称为映像 基地址D.使用相对地址,无论被加载到内存的哪个位置,所有指令都能正常工作单选题:数据访问指令将使用一个绝对地址来访问内存,这个文
16、件被加载到预定基地 址之外的另一个地址,访问这个地址就会错。如果将这个文件载入到一个不同的地址,就 需要改变这条指令。因此,多数DLL会在PE头的()打包一个修订位置的列表A. .text 节B. .date 节C. .rsrc 节D.reloc 节判断题:DLL在exe载入后以任意顺序加载。这意味着如果DLL的基地址被重定位 了通常情况下不能预测DLL会被定位到内存的什么位置。DLL的重定位节也可以被移除, 一个缺乏重定位节的DLL不能被加载到它的预定基地址,因此它也就不能被加载。()考核知识点:查看线程、栈、代码参见讲稿章节:10.4单选题:下列说法错误的是(XA.恶意代码经常使用多线程。
17、你可以通过选择View-Threads,调出线程面板窗口,查看一个程序的当前线程B.单击主工具栏中的暂停按钮,可以暂停所有活动的线程C.给定进程中的每个线程有自己的栈,通常情况下,线程的重要数据都保存在栈中。 可以使用OllyDbg的内存映射,来查看内存中栈的内容D.由于OllyDbg是多线程的,可能需要你先暂停所有的线程,设置一个断点后,继 续运行程序,这样可以确保在一个特定线程模式内调试判断题:Run to Selection选项表示在到达选择的指令之前一直运行。如果选择的指 令不被执行,则被调试程序会一直运行下去。()考核知识点:断点参见讲稿章节:10.5多选题:以下对各断点说法正确的是
18、(XA.查看堆栈中混淆数据内容的唯一方法时:待字符串解码函数执行完成后,查看字符 串的内容。在字符串解码函数的结束位置设置软件断点。但是,这种方法只能在程序使用 字符串时识别出他们B.条件断点是软件断点中的一种,只有某些条件得到满足时这个断点才能中断执行程 序。OllyDbg调试器允许使用表达式,来设置断点,每当断点命中时,都会先计算表达式 的值,如果其值不等于0 ,断点生效,程序运行中断C.硬件断点非常强大,它可以在不改变你的代码、堆栈以及任何目标资源的前提下进行调试。硬件断点的问题是调试进程时,它会降低代码的执行速度D.OIlyDbg只允许你一次设置一个内存断点,如果你设置了一个新的内存断
19、点,那么 之前设置的内存断点就会被移除判断题:对于调用频繁的API函数,仅当特定参数传给它时才中断程序执行,这种情 况下内存断点特别有用。()判断题:OllyDbg中内存断点一次只能设置一个,而硬件断点可以设置4个。()考核知识点:分析shellcode、协助功能参见讲稿章节:10.8多选题:OllyDbg提供了多种机制来帮助分析,包括下面几种(A.日志 B.监视C帮助D.标注考核知识点:使用WinDbg调试内核参见讲稿章节:11判断题:用户调试比起内核调试模式来说更加复杂,因为进行用户调试时,操作系统 将被冻。()判断题:用户态应用程序到内核态驱动的调用由操作系统完成,这种调用难以被跟踪。考
20、核知识点:下载器,启动器.后门参见讲稿章节:12.1判断题:启动器通常包含一个它要加载的恶意代码()。多选题:以下的恶意代码行为中,属于后门的是(XA.netcat反向shell B.windows反向shell C.远程控制工具D.僵尸网络判断题:下载器通常会与漏洞利用打包在一起。()考核知识点:远程控制和僵尸网络参见讲稿章节:12.2判断题:客户端运行在一个被植入恶意代码的受害主机上。服务器端作为攻击者远程 操纵运行命令和控制的单元。()考核知识点:存活机制参见讲稿章节:12.4判断题:所有服务都存在于注册表中,如果一个服务的注册表键被移除很!这个服务依旧能能启动。()多选题:恶意代码的存
21、活机制有(XA.修改注册表B.特洛伊二进制文件C.DLL加载顺序劫持D.自我消灭考核知识点:启动器与进程注入参见讲稿章节:13.1单选题:直接将恶意代码注入到远程进程中的是(XA.进程注入B.DLL注入C.钩子注入D.直接注入多选题:下面说法正确的是(XA.启动器通常在text节存储恶意代码,当启动器运行时,它在运行嵌入的可执行程 序或者DLL程序之前,从该节将恶意代码提取出来B.隐藏启动的最流行技术是进程注入。顾名思义,这种技术是将代码注入到另外一个 正在运行的进程中,而被注入的进程会不知不觉地运行注入的代码C. DLL注入是进程注入的一种形式,它强迫一个远程进程加载恶意DLL程序,同时它
22、也是最常使用的秘密加载技术D.直接注入比DLL注入更加灵活,但是要想注入的代码在不对宿主进程产生副作用 的前提下成功运行,直接注入需要大量的定制代码。这种技术可以被用来注入编译过的代 码,但更多的时候,它用来注入shellcode判断题:最常用的方法是使用WindowsAPI函数CreateToolhelp32Snapshotx Process32First和Process32Next,来查找进程列表中的目标进程。一旦发现目标进程, 启动器会提取目标进程的进程标识(PID ),然后用提取的PID调用createRemoteThread 函数,以获取目标进程的句柄。() 考核知识点:进程注入参见
23、讲稿章节:13.2单选题:进程替换的关键是以()创建一个进程。A.等待状态B.就绪状态C.运行状态D.挂起状态判断题:当恶意代码编写者想要将恶意代码伪装成一个合法进程,可以使用一种被称 为进程注入的方法,将一个可执行文件重写到一个运行进程的内存空间。()判断题:这种进程替换技术让恶意代码与被替换进程拥有相同的特权级。() 考核知识点:Hook注入参见讲稿章节:13.3单选题:()常被一种叫做击键记录器的恶意程序所使用,被用来记录击键。A.DLL注入B.直接注入C.APC注入D.钩子注入判断题:恶意的应用程序会挂钩一个经常使用的Windows消息。() 考核知识点:Detours与APC注入参见
24、讲稿章节:13.4单选题:线程创建需要系统开销,()能够调用一个现有的线程。A.进程注入B.直接注入C.Hook注入D.APC注入单选题:APC可以让一个线程在它正常的执行路径运行之前执行一些其他的代码。每 一个线程都有一个附加的APC队列,它们在线程处于()时被处理。A.阻塞状态B.计时等待状态C.可警告的等待状态D.被终止状态考核知识点:数据加密参见讲稿章节:14.1多选题:以下是分析加密算法的目的是(A隐藏配置文件信息。例如,命令和控制服务器域名B窃取信息的时候将它保存到一个永久文件C存储需要使用的字符串,并在使用前对其解密D将恶意代码伪装成一个合法的工具,隐藏恶意代码活动中使用的字符串
25、参见讲稿章节:14.2判断题:由于单字节加密的弱点,许多恶意代码编写者采用稍微复杂的编码方案,从 而使得暴力探测不那么容易且仍能比较简单的实现。()判断题:原始数据转换成Base64的过程相当标准。它使用12位的块。 ()参见讲稿章节:14.3多选题:以下方法中是识别标准加密算法的方法是(IA识别涉及加密算法使用的字符串B识别引用导入的加密函数5.4 汇编指令5.5 栈操作第 6 章 IDA pro6.1 加载可执行文件6.2 IDA pro 的窗口6.3 IDA pro 导航6.4 交叉引用6.5 函数分析6.6 使用图形选项6.7 增强反汇编第7章 识别汇编语言中的C语言代码结构7.1 识
26、别汇编中的C语言代码结构7.2 识别if分支结构C搜索常见加密常量的工具D查找高精值的内容二、主观部分: 考核知识点:计算机病毒的定义和类型参见讲稿章节:L1填空题:蠕虫病毒是一种常见的计算机病毒,它利用网络进行(),传染途径是通过简答题:简述病毒的概念。 考核知识点:计算机病毒分析技术概述参见讲稿章节:13填空题:恶意代码分析技术分析包括(),(),(),(、简答题:计算机病毒分析内容? 考核知识点:静态分析技术参见讲稿章节:2.1填空题:蠕虫病毒是一种常见的计算机病毒,它利用网络进行(),传染途径是通过(X填空题:木马与病毒的重大区别是(),它并不能像病毒那样(),也并不刻意 地去感染其他
27、文件,它主要通过将(),吸引用户下载执行。填空题:恶意代码分析技术分析包括(1(,动态分析基础技术、动态分析高级技术。1 .简答题:病毒必须满足的两个条件是? 考核知识点:X86反汇编参见讲稿章节:5.2简答题:简述操作数说明指令要使用的数据,有哪几种。 考核知识点:识别汇编中的C语言代码结构参见讲稿章节:7.1填空题:用户编制程序时使用的地址称为()或(),其对应的存储空间称为()或(X 考核知识点:识别循环参见讲稿章节:7.3填空题:for循环总是有4个组件:(),(),(),(X 考核知识点:识别switch结构美化参见讲稿章节:7.5简答题:跳转表的概念。 考核知识点:分析恶意Wind
28、ows程序参见讲稿章节:8.1简答题:简述Windows API的作用。 考核知识点:调试器介绍参见讲稿章节:9.1简答题:进行内核模式调试的步骤?填空题:Windows使用两种处理器特权级别:()模式和()模式。 考核知识点:用断点暂停执行填空题:断点被用来暂停程序的运行并让你查看程序的状态。程序在断点处暂停运行 被称为(X 考核知识点:断点类型参见讲稿章节:9.4简答题:简要介绍两种调试程序的方法。 考核知识点:异常参见讲稿章节:9.5填空题:调试器取得控制权的基本方式是(X考核知识点:断点参见讲稿章节:10.5填空题:OllyDbg断点包括()(),内存断点包括()(力简答题:说明各种断
29、点的功能和优缺点。考核知识点:使用WinDbg调试内核参见讲稿章节:111填空题:调试内核的常用方法是使用(I考核知识点:Rootkit参见讲稿章节:11.5填空题:现在大部分Rootkit都是通过采用某种方式修改()来工作的。填空题:Rootkit会使用()来干扰系统事件。简答题:简述Rootkit是如何修改SSDT系统描述符表,来挂钩系统内部函数。考核知识点:远程控制和僵尸网络参见讲稿章节:12.2简答题:使用cmd.exe作为Windows系统中的反向shell有两种简单的恶意编码 实现,都有那两种,都怎么实现的?简答题:在远程控制工具与僵尸网络之间有哪些不同?考核知识点:进程注入参见讲
30、稿章节:13.2简答题:简述进程注入和进程替换的异同点。考核知识点:Hook注入参见讲稿章节:13.3填空题:有两种类型的Windows钩子,()被用来观察和操纵发往进程内部的消息。()被用来观察和操纵发往一个远程进程的消息(系统中的另一个进程X填空题:远程钩子有两种形式:上层和底层。上层的远程挂钩要求钩子例程是DLL程 序的一个(X它被操作系统映射到被挂钩线程或者系统所有线程的(,底层远程钩子则要求钩子例程被保护在()的进程中。这个例程在操作系统获得处理 事件的机会前被通知。简答题:考核知识点:Detours与APC注入参见讲稿章节:13.4简答题:简述APC注入的两种存在形式。简答题:使用
31、Detours实现计算机病毒隐蔽启动的原理考核知识点:数据加密参见讲稿章节:14.2填空题:Base64加密用()格式表示二进制数据。简答题:简述Base64加密的特点。参见讲稿章节:14.5填空题:无论算法是否已知,让程序正常活动期间自己完成解密,我们称这种方法为7.4 识别函数调用7.5 识别switch结构美化7.6 识别数组、结构体、链表第8章 分析恶意Windows程序8.1 Windows API8.2 Windows 注册表8.3 网络API8.4 跟踪病毒运行8.5 互斥量8.6 异常处理、模式、Native API第9章动态调试9.3 用断点暂停执行9.4 断点类型9.5 异
32、常9.6 修改可执行程序第 10 章 OllyDbg10.1 Ollydbg加载恶意代码10.2 Ollydbg的窗口美化10.3 内存映射10.4 查看线程、栈、代码10.5 断点10.6 加载DLL、跟踪10.9 插件、脚本调试第11章 使用WinDbg调试内核11.1 驱动与内核代码11.2 使用 WinDbg11.3 微软符号表11.4 Windows 注册表11.5 Rootkit第12章 恶意代码行为12.1 下载器、启动器、后门12.2 远程控制和僵尸网络12.3 窃取登陆凭证12.6 DLL加载顺序劫持12.7 权限提升与用户态Rootkit第13章 隐蔽的恶意代码启动13.1
33、 启动器与进程注入13.2 进程替换13.3 Hook 注入13.4 Detours 与 APC 注入第14章数据加密14.1 加密算法的目的和简单的加密算法14.2 简单的加密策14.3 常见的加密算法一、客观部分:考核知识点:计算机病毒的定义和类型参见讲稿章节:1.1单选题:恶意代码指的是()。A.计算机病毒B.间谍软件C.内核嵌套D.任何对用户、计算机或网络造成破坏的软件单选题:病毒、()和木马是可导致计算机和计算机上的信息损坏的恶意程序。A程序B.蠕虫C代码D.数据单选题:病毒是指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影 响计算机使用并且能够自我复制的一组(1A.计算
34、机指令B.程序代码C.文件D.计算机指令或者程序代码判断题:病毒必须能自我执行和自我复制。()判断题:蠕虫是利用文件寄生来通过网络传播的恶性病毒。()考核知识点:计算机病毒分析的目标参见讲稿章节:1.2单选题:以下不是恶意代码分析的目标的是(1A.确定一个可疑的二进制程序到底可以做什么B如何在网络上检测它C.恶意代码本身的特性D.如何衡量并消除它所带来的损害判断题:病毒特征码关注是恶意代码对系统做什么,而主机特征码关注恶意代码本身 的特性。()判断题:网络特征码可以在没有进行恶意代码分析时创建,但在恶意代码分析帮助下 提取的特征码往往更加有效的,可以提供更高的检测率和更少的误报。()考核知识点:计算机病毒分析技术概述参见讲稿章节:1.3单选题:下列属于静态高级分析技术的描述是(X