版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1软件安全题型:
选择题(10*2分=20分)填空题(6*3分=18分)
判断题(11*2分=22分)
简答计算题(4-5小题,共40分)
1软件安全题型:2信息的表现形式信息可以以多种形式表现:打印或书写在纸上,以电子数据的方式存储,或以胶片形式显示或者通过交谈表达出来等。2信息的表现形式信息可以以多种形式表现:3安全(SafetyvsSecurity)Safety自然的,物理的,相对具体的如房屋、桥梁、大坝…Security社会的,人为的,相对抽象的如食品、软件…3安全(SafetyvsSecurity)Safety4我们愿意保护我们的信息吗?该信息的价值有多大?可能面临哪些风险?为保护该信息需要付出多少成本?在什么情况下愿意采取安全措施?认识到的价值*认识到的风险>认识到的成本?是否应该采取安全措施?真实价值*真实风险>真实成本?4我们愿意保护我们的信息吗?该信息的价值有多大?系统引导与控制权系统引导与恶意软件有何关系?恶意软件如何再次获得控制权?自身被结束之后操作系统重启之后操作系统重装之后硬盘更换之后。。。5系统引导与控制权系统引导与恶意软件有何关系?恶意软件如何再次计算机系统引导过程主板BIOS系统进行硬件自检硬盘主引导程序(MBR)活动分区引导程序(DBR)操作系统引导(如NTLDR)操作系统内核启动驱动程序及服务系统自启动程序6计算机系统引导过程主板BIOS系统进行硬件自检硬盘主引导程序系统引导与恶意软件的关联系统引导与恶意软件有何关系?恶意软件在植入系统之后,如何再次获得控制权?在计算机系统引导阶段获得控制权Bootkit:BIOS木马、MBR木马等,可用于长期驻留在系统;早期的DOS引导区病毒等。CIH病毒在操作系统启动阶段获得控制权最常见的恶意软件启动方法,多见于独立的恶意软件程序。在应用程序执行阶段获得控制权最常见的文件感染型病毒启动方法。7系统引导与恶意软件的关联系统引导与恶意软件有何关系?7实模式REALPROTECTED保护模式VIRTUAL虚拟8086CR0的PE位
置1CR0的PE位
置0通过中断执行IRETD指令RESET信号RESET对CPU复位Intel80X86处理器三种工作模式关系:
实模式、保护模式和虚拟86模式8实模式REALPROTECTEDVIRTUALCR0的PE位FAT32文件系统结构引导扇区数据存储区(以簇为单位,每簇包含多个扇区,以簇号进行标示)FAT(FileAllocationTable,文件分配表)FAT1+FAT2两个功能:1.记录数据存储区每一个簇的使用情况(是否被使用,或坏簇);2.形成每个文件的簇链表描述分区属性:1.分区大小;2.簇的大小3.FAT表个数与大小4.分区引导程序等功能:存储两类数据目录项(目录和文件的属性信息,如文件名,大小,文件存储首簇号,时间等)-文件档案文件数据9FAT32文件系统结构引导扇区两个功能:描述分区属性:功能:文件的存储操作示意图引导扇区数据存储区FAT…按照文件大小定位足够的空闲簇2.创建文件目录项(32+Bytes)3.在FAT中构建簇链表4.在对应分配的簇中写入数据10文件的存储操作示意图引导扇区数据存储区FAT…按照文件大小2目录项的含义后缀名:INF文件名:AUTORUN文件属性首簇高16位首簇低16位文件更新日期及时间文件访问日期文件创建时间文件创建日期文件大小保留FAT32中,目录也被当作文件进行处理。如果是长文件名,则目录项向上继续扩展。11目录项的含义后缀名:INF文件名:AUTORUN文件属性FA文件创建实例首簇高16位首簇低16位文件大小首簇号:000A08DE(657630)文件大小:D488(54408字节,占14簇,每簇4096字节)12文件创建实例首簇号:000A08DE文件大小:D48812文件删除实例(AUTORUN.INF)
-目录项的变化文件被删除后目录项的变化删除前2.首簇高位被清零13文件删除实例(AUTORUN.INF)
-目录项的变化文件被文件删除实例(AUTORUN.INF)
-簇链表变化文件被删除后FAT表的变化:簇链表已被清空删除前删除后14文件删除实例(AUTORUN.INF)
-簇链表变化删除前删文件删除实例(AUTORUN.INF)
-文件内容无变化15文件删除实例(AUTORUN.INF)
-文件内容无变化152.5.3被删除文件的恢复机理差异目录项:文件名首字节被修改为E5首簇高位被清零FAT表簇链:被全部清空文件内容:无变化可否恢复?目录项文件名首位是否可还原?如何确定高位?FAT表簇链如何修复?连续存储(默认)总簇数(文件大小)162.5.3被删除文件的恢复机理差异目录项:可否恢复?目录项12.5.3被删除文件的恢复机理还原文件名首字节长文件名:直接逆向定位完整文件名。确定高位并还原参考相邻目录项的首簇高位从0往上试探,看首簇指向内容是否为预期文件头部修复FAT表簇链通过文件大小计算所占簇数按照连续存储假设,进行簇链修补,其中末簇FAT项用0FFFFFFF结尾。172.5.3被删除文件的恢复机理还原文件名首字节17PE文件格式查看工具1-PEViewPEView:可按照PE文件格式对目标文件的各字段进行详细解析。18PE文件格式查看工具1-PEViewPEView:可按照PEPE文件格式查看工具2-Stud_PEStud_PE:可按照PE文件格式对目标文件的各字段进行详细解析。19PE文件格式查看工具2-Stud_PEStud_PE:可按照PE程序调试工具-OllydbgOllydbg:可跟踪目标程序的执行过程,属于用户态调试工具。20PE程序调试工具-OllydbgOllydbg:可跟踪目标程16进制文件编辑工具-UltraEditUltraEdit:可对目标文件进行16进制查看和修改。2116进制文件编辑工具-UltraEditUltraEdit:3PE文件格式总体结构1.DOSMZheader2.DOSstub3.PEheader4.Sectiontable5-1Section15-2Section2Section...5.3Sectionn223PE文件格式总体结构1.DOSMZheader2.D3C处的值:000000B0指向PE文件头开始位置233C处的值:000000B0231)字串
“PE\0\0”Signature一dword类型,值为50h,45h,00h,00h(PE\0\0)。
本域为PE标记,可以此识别给定文件是否为有效PE文件。
PE\0\0241)字串“PE\0\0”Signature一dword类2)
映像文件头(0x14)该结构域包含了关于PE文件物理分布的信息,
比如节数目、后续可选文件头大小、机器类型等。
3个节X86可选文件头大小252)映像文件头(0x14)该结构域包含了关于PE文件物理分3)可选文件头定义了PE文件的很多关键信息内存镜像加载地址(ImageBase)程序入口点(代码从哪里开始执行?)节在文件和内存中的对齐粒度本程序在内存中的镜像大小、文件头大小等263)可选文件头定义了PE文件的很多关键信息26ImageBase:PE文件在内存中的优先装载地址。RVA地址:RelativeVirtualAddress,相对虚拟地址,它是相对内存中ImageBase的偏移位置。几个概念-127ImageBase:几个概念-127几个概念-2对齐粒度比喻:桶的容量为100升,现有367升水,请问需要使用多少个桶?问题:代码节的代码实际长度为0x46字节文件中节对齐粒度为0x200,内存中节对齐粒度为0x1000字节,请问代码节在文件和内存中分别占用多少字节?为什么PE文件中有很多“00”字节?28几个概念-2对齐粒度28可选文件头中的一些关键字段名字描述AddressOfEntryPoint*(位置D8H,4字节)PE装载器准备运行的PE文件的第一条指令的RVA。(病毒感染中通用关键字段)ImageBase(位置:E4H,4字节)PE文件的优先装载地址。比如,如果该值是400000h,PE装载器将尝试把文件装到虚拟地址空间的400000h处。SectionAlignment(位置:E8H,4字节)内存中节对齐的粒度。FileAlignment(位置:ECH,4字节)文件中节对齐的粒度。29可选文件头中的一些关键字段名字描述AddressOfEn第一条指令在内存中的地址是多少?401000H=400000H+1000H30第一条指令在内存中的地址是多少?30Directory-16项*8字节31Directory-16项*8字节315.1IMPORTDirectoryTable如何从PE文件定位到引入目录表(IDT)的起始位置?PE可选文件头的DataDirectory。325.1IMPORTDirectoryTable如何从P5.4IAT
(IMPORTAddressTable)引入地址表:DWORD数组[可通过可选文件头中的DataDirectory的第13项定位]在文件中时,其内容与ImportNameTable完全一样。在内存中时,每个双字中存放着对应引入函数的地址。335.4IAT
(IMPORTAddressTable为何需要导出序号表?导出函数名字和导出地址表中的地址不是一一对应关系。为什么?一个函数实现可能有多个名字;某些函数没有名字,仅通过序号导出。34为何需要导出序号表?导出函数名字和导出地址表中的地址不是一一堆栈溢出的示意图
可以直观的见到,写入内存的数据大于我们分配的长度,导致临近的内存数据被覆盖,如果精心准备覆盖到程序返回指针的数据,程序的进程可能就会被攻击者所控制.35堆栈溢出的示意图可以直观的见到,写入内存的数364.1.2.2栈溢出的利用根据被覆盖的数据位置和所要实现的目的不同,分为以下三种:修改邻接变量修改函数返回地址S.E.H.结构覆盖364.1.2.2栈溢出的利用根据被覆盖的数据位置和所要实374.1.2.2修改邻接变量由于函数的局部变量是依次存储在栈帧上的,因此如果这些局部变量中有数组之类的缓冲区,并且程序中存在数组越界缺陷,那么数组越界后就有可能破坏栈中相邻变量的值,甚至破坏栈帧中所保存的EBP、返回地址等重要数据。374.1.2.2修改邻接变量由于函数的局部变量是依次存储384.1.2.2修改邻接变量观察如图4-4所示程序源代码,当代码执行到intverify_password(char*password)时,栈帧状态如右图所示。当输入口令超过7个字符,越界字符ASCII码会修改掉authenticated的值,进而绕过密码验证程序。384.1.2.2修改邻接变量观察如图4-4所示程序源代码程序在内存中的映像……文本(代码)段数据段堆栈段内存低地址内存高地址内存递增方向初始化数据段非初始化数据段(BSS)堆(Heap)栈(stack)堆的增长方向栈的增长方向内核数据代码0x800000000x7FFFFFFFPEB&TEB系统DLL代码段39程序在内存中的映像……文本(代码)段数据段堆栈段内存低地址内404.1.3.1堆的结构堆块空闲态:堆块被链入空链表中,由系统管理。占有态:堆块会返回一个由程序员定义的句柄,由程序员管理。404.1.3.1堆的结构堆块414.1.3.1堆的结构空闲堆块比占有堆块多出了两个4字节的指针,这两个指针用于链接系统中的其他空闲堆块。414.1.3.1堆的结构空闲堆块比占有堆块多出了两个4字424.1.3.1堆的结构空表空闲堆块的块首中包含一对重要的指针,这对指针用于将空闲堆块组织成双向链表。根据大小不同,空表总共被分成128条424.1.3.1堆的结构空表434.1.3.1堆的结构空表堆表区中有一个128项的数组,称作空表索引(每项包含两个指针,标识一条空表)空闲堆块的大小=索引项×8(字节)434.1.3.1堆的结构空表444.1.3.2堆溢出的利用堆溢出利用的精髓
用精心构造的数据去溢出覆盖下一个堆块的块首,使其改写块首中的前向指针(flink)和后向指针(blink),然后在分配、释放、合并等操作发生时伺机获得一次向内存任意地址写入任意数据的机会(ArbitraryDwordReset,又称DwordShoot)。通过这个机会,可以控制设计的目标(任意地址),选择适当的目标数据,从而劫持进程,运行shellcode。444.1.3.2堆溢出的利用堆溢出利用的精髓454.1.3.2堆溢出的利用举例:如何通过节点的拆卸产生DwordShoot
拆卸节点node时发生如下操作:
node->blink->flink=node->flink;node->flink->blink=node->blink;
当精心构造的数据淹没前向指针和后向指针时,如果在flink放入4字节的任意恶意数据内容,在blink放入目标地址,当执行以上操作时,导致目标地址的内容被修改为该4字节的恶意数据。454.1.3.2堆溢出的利用举例:如何通过节点的拆卸产生464.1.3.2堆溢出的利用举例:如何通过节点的拆卸产生DwordShoot
464.1.3.2堆溢出的利用举例:如何通过节点的拆卸产生PE型病毒--传统文件感染型
关键技术重定位病毒代码目标寄生位置不固定API函数自获取需要使用的API函数但无引入函数节支撑47PE型病毒--传统文件感染型
关键技术重定位47PE型病毒--传统文件感染型
关键技术目标程序遍历搜索全盘查找,或者部分盘符查找感染模块病毒代码插入位置选择与写入控制权返回机制48PE型病毒--传统文件感染型
关键技术目标程序遍历搜索48病毒代码植入HOST文件后的位置差异49病毒代码植入HOST文件后的位置差异49解决方法重定位本质:修正实际地址与预期地址的差异解决方案:根据HOST特征逐一硬编码[繁琐,未必准确]病毒代码运行过程中自我重定位50解决方法重定位本质:50常见的重定位方法之一(ebp-offsetdelta)Call语句功能:将下一条语句开始位置压入堆栈JMP到目标地址执行51常见的重定位方法之一(ebp-offsetdelta)Ca(2)API函数地址自获取如何获取API函数地址?DLL文件的引出函数节kernel32.dll:GetProcAddress和LoadLibraryA52(2)API函数地址自获取如何获取API函数地址?52文件感染感染的关键病毒代码能够得到运行选择合适的位置放入病毒代码(已有节,新增节)将控制权交给病毒代码修改程序入口点:AddressofEntryPoint或者在原目标代码执行过程中运行病毒代码(EPO技术,EntryPointObscuring)程序的正常功能不能被破坏感染时,记录原始“程序控制点位置”病毒代码执行完毕之后,返回控制权避免重复感染:感染标记53文件感染感染的关键53宏病毒如何获得控制权
利用如下自动执行宏,将病毒代码写在如下宏中,由于这些宏会自动执行,因此获取控制权。自动宏功能演示54宏病毒如何获得控制权利用如下自动执行宏,将病毒代码写在如下宏病毒的感染
在Word和其他微软Office系列办公软件中,宏分为两种。内建宏:位于文档中,对该文档有效,如文档打开(AutoOpen)、保存、打印、关闭等。全局宏:位于office模板中,为所有文档所共用,如打开Word程序(AutoExec)。宏病毒的传播路线:单机:单个Office文档—〉Office文档模板—〉多个Office文档网络:电子邮件居多55宏病毒的感染在Word和其他微软Office系列办公软件中网络蠕虫基本功能四个主要模块:信息收集:主要完成对本地和目标节点主机的信息汇集;扫描探测:发现易感染主机群体;攻击渗透:利用已发现的服务漏洞实施攻击[控制权获取];自我推进:完成对目标节点的感染[蠕虫主体程序传输]。56网络蠕虫基本功能四个主要模块:56木马的通信方式传输通道构建信息IP地址、端口等信息、第三方网站地址建立通信连接的方式正向连接反向连接57木马的通信方式传输通道构建信息57正向连接正向连接防火墙拦截控制端主动连接被控端58正向连接正向连接防火墙拦截控制端58反向连接反向连接59反向连接反向连接59远控木马的常见功能与意图1.木马结构完整的木马一般由木马配置程序、控制端程序(客户端)和被控制端程序(服务端程序)等三部分组成。60远控木马的常见功能与意图1.木马结构60
恶意代码检测对象与策略恶意代码的检测是将检测对象与恶意代码特征(检测标准)进行对比分析,定位病毒程序或代码,或检测恶意行为。检测对象主要包括:引导扇区文件系统中可能带毒的文件内存空间主板BIOS等(网络流量、系统行为等)61恶意代码检测对象与策略恶意代码的检测是将检测对象与恶意代码
特征值检测技术
病毒特征值是反病毒软件鉴别特定计算机病毒的一种标志。通常是从病毒样本中提取的一段或多段字符串或二进制串。具体思路:获取样本-〉提取样本特征-〉更新病毒库-〉查杀病毒62特征值检测技术病毒特征值是反病毒软件鉴别特定计算机病毒的校验和检测技术-预期符合性校验和检测技术:在文件使用/系统启动过程中,检查检测对象的实际校验和与预期是否一致,因而可以发现文件/引导区是否感染。预期:正常文件内容和正常引导扇区数据静态可信:可信计算机对主引导扇区和一些系统关键程序进行了校验,从而保障系统启动之后的初始安全。63校验和检测技术-预期符合性校验和检测技术:在文件使用/系统启
启发式扫描技术经验和知识:专业反病毒技术人员使用反汇编、调试或沙箱工具稍加分析,就可能判定出某程序是否染毒,为什么?启发式代码扫描技术(HeuristicScanning)实际上就是恶意代码检测经验和知识的软件实现。
64启发式扫描技术经验和知识:专业反病毒技术人员使用反汇编、调可疑的程序代码指令序列格式化磁盘类操作搜索和定位各种可执行程序的操作实现驻留内存的操作发现非常用的或未公开的系统功能调用的操作、子程序调用中只执行入栈操作、远距离(超过文件长度的三分之二)跳转指令等敏感系统行为,敏感API函数(序列)调用功能。。。可疑的程序代码指令序列格式化磁盘类操作启发式扫描步骤定义通用可疑特征(指令序列或行为)对上述功能操作将被按照安全和可疑的等级进行排序,授以不同的权值。
鉴别特征,如果程序的权值总和超过一个事先定义的阈值,则认为“发现病毒”启发式扫描步骤定义通用可疑特征(指令序列或行为)启发式扫描优缺点优点能够发现未知病毒缺点误报率高解决方案:启发式扫描技术+传统扫描技术可提高病毒检测软件的检测率,同时有效降低了总的误报率。启发式扫描优缺点优点“启发式扫描+特征值扫描”的检测率“启发式扫描+特征值扫描”的检测率蜜罐蜜罐(Honeypot)通常是指未采取安全防范措施、并且将模拟的程序漏洞主动暴露在网络中的计算机。特点与一般计算机不同,其内部运行着多种多样特殊用途的“自我暴露程序”和行为记录程序引诱恶意软件在蜜罐内更加充分的运行,并记录下其行为。工作模式被动型蜜罐主动型蜜罐自我暴露的诱饵程序自我暴露的诱饵程序行为记录工具蜜罐主机例如:存在漏洞的应用程序、服务等蜜罐蜜罐(Honeypot)自我暴露的诱饵程序自我暴露的诱饵蜜罐主动型蜜罐——实现思路Step1:通过爬虫等主动获取潜在的恶意软件(载体)Step2:将其在蜜罐主机内打开、运行,并模拟进行交互Step3:根据运行特征,发现和收集漏洞利用信息和恶意软件样本。云计算和虚拟化技术使得设计和部署更为真实、更加先进的客户端蜜罐环境变得更加容易和低成本浏览器(flash)漏洞的客户端蜜罐部署示例蜜罐主动型蜜罐——实现思路浏览器(flash)漏洞的客户端蜜71软件安全题型:
选择题(10*2分=20分)填空题(6*3分=18分)
判断题(11*2分=22分)
简答计算题(4-5小题,共40分)
1软件安全题型:72信息的表现形式信息可以以多种形式表现:打印或书写在纸上,以电子数据的方式存储,或以胶片形式显示或者通过交谈表达出来等。2信息的表现形式信息可以以多种形式表现:73安全(SafetyvsSecurity)Safety自然的,物理的,相对具体的如房屋、桥梁、大坝…Security社会的,人为的,相对抽象的如食品、软件…3安全(SafetyvsSecurity)Safety74我们愿意保护我们的信息吗?该信息的价值有多大?可能面临哪些风险?为保护该信息需要付出多少成本?在什么情况下愿意采取安全措施?认识到的价值*认识到的风险>认识到的成本?是否应该采取安全措施?真实价值*真实风险>真实成本?4我们愿意保护我们的信息吗?该信息的价值有多大?系统引导与控制权系统引导与恶意软件有何关系?恶意软件如何再次获得控制权?自身被结束之后操作系统重启之后操作系统重装之后硬盘更换之后。。。75系统引导与控制权系统引导与恶意软件有何关系?恶意软件如何再次计算机系统引导过程主板BIOS系统进行硬件自检硬盘主引导程序(MBR)活动分区引导程序(DBR)操作系统引导(如NTLDR)操作系统内核启动驱动程序及服务系统自启动程序76计算机系统引导过程主板BIOS系统进行硬件自检硬盘主引导程序系统引导与恶意软件的关联系统引导与恶意软件有何关系?恶意软件在植入系统之后,如何再次获得控制权?在计算机系统引导阶段获得控制权Bootkit:BIOS木马、MBR木马等,可用于长期驻留在系统;早期的DOS引导区病毒等。CIH病毒在操作系统启动阶段获得控制权最常见的恶意软件启动方法,多见于独立的恶意软件程序。在应用程序执行阶段获得控制权最常见的文件感染型病毒启动方法。77系统引导与恶意软件的关联系统引导与恶意软件有何关系?7实模式REALPROTECTED保护模式VIRTUAL虚拟8086CR0的PE位
置1CR0的PE位
置0通过中断执行IRETD指令RESET信号RESET对CPU复位Intel80X86处理器三种工作模式关系:
实模式、保护模式和虚拟86模式78实模式REALPROTECTEDVIRTUALCR0的PE位FAT32文件系统结构引导扇区数据存储区(以簇为单位,每簇包含多个扇区,以簇号进行标示)FAT(FileAllocationTable,文件分配表)FAT1+FAT2两个功能:1.记录数据存储区每一个簇的使用情况(是否被使用,或坏簇);2.形成每个文件的簇链表描述分区属性:1.分区大小;2.簇的大小3.FAT表个数与大小4.分区引导程序等功能:存储两类数据目录项(目录和文件的属性信息,如文件名,大小,文件存储首簇号,时间等)-文件档案文件数据79FAT32文件系统结构引导扇区两个功能:描述分区属性:功能:文件的存储操作示意图引导扇区数据存储区FAT…按照文件大小定位足够的空闲簇2.创建文件目录项(32+Bytes)3.在FAT中构建簇链表4.在对应分配的簇中写入数据80文件的存储操作示意图引导扇区数据存储区FAT…按照文件大小2目录项的含义后缀名:INF文件名:AUTORUN文件属性首簇高16位首簇低16位文件更新日期及时间文件访问日期文件创建时间文件创建日期文件大小保留FAT32中,目录也被当作文件进行处理。如果是长文件名,则目录项向上继续扩展。81目录项的含义后缀名:INF文件名:AUTORUN文件属性FA文件创建实例首簇高16位首簇低16位文件大小首簇号:000A08DE(657630)文件大小:D488(54408字节,占14簇,每簇4096字节)82文件创建实例首簇号:000A08DE文件大小:D48812文件删除实例(AUTORUN.INF)
-目录项的变化文件被删除后目录项的变化删除前2.首簇高位被清零83文件删除实例(AUTORUN.INF)
-目录项的变化文件被文件删除实例(AUTORUN.INF)
-簇链表变化文件被删除后FAT表的变化:簇链表已被清空删除前删除后84文件删除实例(AUTORUN.INF)
-簇链表变化删除前删文件删除实例(AUTORUN.INF)
-文件内容无变化85文件删除实例(AUTORUN.INF)
-文件内容无变化152.5.3被删除文件的恢复机理差异目录项:文件名首字节被修改为E5首簇高位被清零FAT表簇链:被全部清空文件内容:无变化可否恢复?目录项文件名首位是否可还原?如何确定高位?FAT表簇链如何修复?连续存储(默认)总簇数(文件大小)862.5.3被删除文件的恢复机理差异目录项:可否恢复?目录项12.5.3被删除文件的恢复机理还原文件名首字节长文件名:直接逆向定位完整文件名。确定高位并还原参考相邻目录项的首簇高位从0往上试探,看首簇指向内容是否为预期文件头部修复FAT表簇链通过文件大小计算所占簇数按照连续存储假设,进行簇链修补,其中末簇FAT项用0FFFFFFF结尾。872.5.3被删除文件的恢复机理还原文件名首字节17PE文件格式查看工具1-PEViewPEView:可按照PE文件格式对目标文件的各字段进行详细解析。88PE文件格式查看工具1-PEViewPEView:可按照PEPE文件格式查看工具2-Stud_PEStud_PE:可按照PE文件格式对目标文件的各字段进行详细解析。89PE文件格式查看工具2-Stud_PEStud_PE:可按照PE程序调试工具-OllydbgOllydbg:可跟踪目标程序的执行过程,属于用户态调试工具。90PE程序调试工具-OllydbgOllydbg:可跟踪目标程16进制文件编辑工具-UltraEditUltraEdit:可对目标文件进行16进制查看和修改。9116进制文件编辑工具-UltraEditUltraEdit:3PE文件格式总体结构1.DOSMZheader2.DOSstub3.PEheader4.Sectiontable5-1Section15-2Section2Section...5.3Sectionn923PE文件格式总体结构1.DOSMZheader2.D3C处的值:000000B0指向PE文件头开始位置933C处的值:000000B0231)字串
“PE\0\0”Signature一dword类型,值为50h,45h,00h,00h(PE\0\0)。
本域为PE标记,可以此识别给定文件是否为有效PE文件。
PE\0\0941)字串“PE\0\0”Signature一dword类2)
映像文件头(0x14)该结构域包含了关于PE文件物理分布的信息,
比如节数目、后续可选文件头大小、机器类型等。
3个节X86可选文件头大小952)映像文件头(0x14)该结构域包含了关于PE文件物理分3)可选文件头定义了PE文件的很多关键信息内存镜像加载地址(ImageBase)程序入口点(代码从哪里开始执行?)节在文件和内存中的对齐粒度本程序在内存中的镜像大小、文件头大小等963)可选文件头定义了PE文件的很多关键信息26ImageBase:PE文件在内存中的优先装载地址。RVA地址:RelativeVirtualAddress,相对虚拟地址,它是相对内存中ImageBase的偏移位置。几个概念-197ImageBase:几个概念-127几个概念-2对齐粒度比喻:桶的容量为100升,现有367升水,请问需要使用多少个桶?问题:代码节的代码实际长度为0x46字节文件中节对齐粒度为0x200,内存中节对齐粒度为0x1000字节,请问代码节在文件和内存中分别占用多少字节?为什么PE文件中有很多“00”字节?98几个概念-2对齐粒度28可选文件头中的一些关键字段名字描述AddressOfEntryPoint*(位置D8H,4字节)PE装载器准备运行的PE文件的第一条指令的RVA。(病毒感染中通用关键字段)ImageBase(位置:E4H,4字节)PE文件的优先装载地址。比如,如果该值是400000h,PE装载器将尝试把文件装到虚拟地址空间的400000h处。SectionAlignment(位置:E8H,4字节)内存中节对齐的粒度。FileAlignment(位置:ECH,4字节)文件中节对齐的粒度。99可选文件头中的一些关键字段名字描述AddressOfEn第一条指令在内存中的地址是多少?401000H=400000H+1000H100第一条指令在内存中的地址是多少?30Directory-16项*8字节101Directory-16项*8字节315.1IMPORTDirectoryTable如何从PE文件定位到引入目录表(IDT)的起始位置?PE可选文件头的DataDirectory。1025.1IMPORTDirectoryTable如何从P5.4IAT
(IMPORTAddressTable)引入地址表:DWORD数组[可通过可选文件头中的DataDirectory的第13项定位]在文件中时,其内容与ImportNameTable完全一样。在内存中时,每个双字中存放着对应引入函数的地址。1035.4IAT
(IMPORTAddressTable为何需要导出序号表?导出函数名字和导出地址表中的地址不是一一对应关系。为什么?一个函数实现可能有多个名字;某些函数没有名字,仅通过序号导出。104为何需要导出序号表?导出函数名字和导出地址表中的地址不是一一堆栈溢出的示意图
可以直观的见到,写入内存的数据大于我们分配的长度,导致临近的内存数据被覆盖,如果精心准备覆盖到程序返回指针的数据,程序的进程可能就会被攻击者所控制.105堆栈溢出的示意图可以直观的见到,写入内存的数1064.1.2.2栈溢出的利用根据被覆盖的数据位置和所要实现的目的不同,分为以下三种:修改邻接变量修改函数返回地址S.E.H.结构覆盖364.1.2.2栈溢出的利用根据被覆盖的数据位置和所要实1074.1.2.2修改邻接变量由于函数的局部变量是依次存储在栈帧上的,因此如果这些局部变量中有数组之类的缓冲区,并且程序中存在数组越界缺陷,那么数组越界后就有可能破坏栈中相邻变量的值,甚至破坏栈帧中所保存的EBP、返回地址等重要数据。374.1.2.2修改邻接变量由于函数的局部变量是依次存储1084.1.2.2修改邻接变量观察如图4-4所示程序源代码,当代码执行到intverify_password(char*password)时,栈帧状态如右图所示。当输入口令超过7个字符,越界字符ASCII码会修改掉authenticated的值,进而绕过密码验证程序。384.1.2.2修改邻接变量观察如图4-4所示程序源代码程序在内存中的映像……文本(代码)段数据段堆栈段内存低地址内存高地址内存递增方向初始化数据段非初始化数据段(BSS)堆(Heap)栈(stack)堆的增长方向栈的增长方向内核数据代码0x800000000x7FFFFFFFPEB&TEB系统DLL代码段109程序在内存中的映像……文本(代码)段数据段堆栈段内存低地址内1104.1.3.1堆的结构堆块空闲态:堆块被链入空链表中,由系统管理。占有态:堆块会返回一个由程序员定义的句柄,由程序员管理。404.1.3.1堆的结构堆块1114.1.3.1堆的结构空闲堆块比占有堆块多出了两个4字节的指针,这两个指针用于链接系统中的其他空闲堆块。414.1.3.1堆的结构空闲堆块比占有堆块多出了两个4字1124.1.3.1堆的结构空表空闲堆块的块首中包含一对重要的指针,这对指针用于将空闲堆块组织成双向链表。根据大小不同,空表总共被分成128条424.1.3.1堆的结构空表1134.1.3.1堆的结构空表堆表区中有一个128项的数组,称作空表索引(每项包含两个指针,标识一条空表)空闲堆块的大小=索引项×8(字节)434.1.3.1堆的结构空表1144.1.3.2堆溢出的利用堆溢出利用的精髓
用精心构造的数据去溢出覆盖下一个堆块的块首,使其改写块首中的前向指针(flink)和后向指针(blink),然后在分配、释放、合并等操作发生时伺机获得一次向内存任意地址写入任意数据的机会(ArbitraryDwordReset,又称DwordShoot)。通过这个机会,可以控制设计的目标(任意地址),选择适当的目标数据,从而劫持进程,运行shellcode。444.1.3.2堆溢出的利用堆溢出利用的精髓1154.1.3.2堆溢出的利用举例:如何通过节点的拆卸产生DwordShoot
拆卸节点node时发生如下操作:
node->blink->flink=node->flink;node->flink->blink=node->blink;
当精心构造的数据淹没前向指针和后向指针时,如果在flink放入4字节的任意恶意数据内容,在blink放入目标地址,当执行以上操作时,导致目标地址的内容被修改为该4字节的恶意数据。454.1.3.2堆溢出的利用举例:如何通过节点的拆卸产生1164.1.3.2堆溢出的利用举例:如何通过节点的拆卸产生DwordShoot
464.1.3.2堆溢出的利用举例:如何通过节点的拆卸产生PE型病毒--传统文件感染型
关键技术重定位病毒代码目标寄生位置不固定API函数自获取需要使用的API函数但无引入函数节支撑117PE型病毒--传统文件感染型
关键技术重定位47PE型病毒--传统文件感染型
关键技术目标程序遍历搜索全盘查找,或者部分盘符查找感染模块病毒代码插入位置选择与写入控制权返回机制118PE型病毒--传统文件感染型
关键技术目标程序遍历搜索48病毒代码植入HOST文件后的位置差异119病毒代码植入HOST文件后的位置差异49解决方法重定位本质:修正实际地址与预期地址的差异解决方案:根据HOST特征逐一硬编码[繁琐,未必准确]病毒代码运行过程中自我重定位120解决方法重定位本质:50常见的重定位方法之一(ebp-offsetdelta)Call语句功能:将下一条语句开始位置压入堆栈JMP到目标地址执行121常见的重定位方法之一(ebp-offsetdelta)Ca(2)API函数地址自获取如何获取API函数地址?DLL文件的引出函数节kernel32.dll:GetProcAddress和LoadLibraryA122(2)API函数地址自获取如何获取API函数地址?52文件感染感染的关键病毒代码能够得到运行选择合适的位置放入病毒代码(已有节,新增节)将控制权交给病毒代码修改程序入口点:AddressofEntryPoint或者在原目标代码执行过程中运行病毒代码(EPO技术,EntryPointObscuring)程序的正常功能不能被破坏感染时,记录原始“程序控制点位置”病毒代码执行完毕之后,返回控制权避免重复感染:感染标记123文件感染感染的关键53宏病毒如何获得控制权
利用如下自动执行宏,将病毒代码写在如下宏中,由于这些宏会自动执行,因此获取控制权。自动宏功能演示124宏病毒如何获得控制权利用如下自动执行宏,将病毒代码写在如下宏病毒的感染
在Word和其他微软Office系列办公软件中,宏分为两种。内建宏:位于文档中,对该文档有效,如文档打开(AutoOpen)、保存、打印、关闭等。全局宏:位于office模板中,为所有文档所共用,如打开Word程序(AutoExec)。宏病毒的传播路线:单机:单个Office文档—〉Office文档模板—〉多个Office文档网络:电子邮件居多125宏病毒的感染在Word和其他微软Office系列办公软件中网络蠕虫基本功能四
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应急联动处置工作指南
- 交通秩序维护方案
- 2026年六安舒城县河棚镇公开招考村级后备干部2名考试备考试题及答案详解
- 2026广东深圳市儿童医院消化内科招聘1人考试模拟试题及答案详解
- 2027届中国长征火箭有限公司校园招聘考试备考题库及答案详解
- 2026年漯河市郾城区住房和城乡建设局人员招聘笔试备考试题及答案详解
- 新能源汽车电池回收技术方案
- 新能源汽车安全性能检测规范方案
- 2026年黄石市黄石港区住房和城乡建设局人员招聘笔试参考题库及答案详解
- 2026年大连市西岗区住房和城乡建设局人员招聘笔试参考题库及答案详解
- 2026年安徽商企文化旅游投资有限公司公开招聘工作人员2名笔试备考题库及答案详解
- 2026年安徽省马鞍山市网格员招聘笔试备考题库及答案详解
- 特种设备安全管理人员A证测试题库(附答案)
- GB/T 3163-2024真空技术术语
- 困难职工帮扶管理制度
- 牛津译林版英语小学五年级下册5B全册知识点
- 危险作业清单
- JB-T 10693-2022 城市轨道交通.用干式牵引整流变压器
- 国投集团笔试测评题
- 英语48个国际音标课件(单词带声、附有声国际音标图)
- 初高中衔接散文形散神聚解读与训练
评论
0/150
提交评论