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