欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    麦洛克菲 逆向病毒分析课程课件.ppt

    • 资源ID:3001995       资源大小:1.01MB        全文页数:49页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    麦洛克菲 逆向病毒分析课程课件.ppt

    2012-03-10,麦洛克菲内核开发-逆向病毒分析课程,麦洛克菲,麦洛克菲,提纲,病毒分析的基本工具方法实战分析-复合类多态感染病毒病毒结构分析及特点混淆的解密头注意事项单步逆向分析分析总结,病毒分析的基本工具方法,1 调试工具:IDA,Ollydbg.2 PE分析类工具:PEid,FFI,CFF Explorer.3 PE文件对比分析类工具:PEinfo.4 编辑工具:winhex,ultraEdit.,病毒分析的基本工具方法,1 先整体,后局部,从文件对比入手(文件大小,ultral Edit 简单对比,IDA bindiff 流程观察)。2 观察PE文件各个“段结构”,“大小”,“属性”(PEinfo 等对比工具)。3 明确待分析文件是由什么编程工具编写,查明EOP异同点。4 当简单分析后,无法发现明显代码流程劫持的情况下,可以特别关一 下这几个API的调用的变化,exit,exit,ExitProcess。5 碰到混淆的的循环功能代码时,要多从大的文件感染特性上判断,找思路。6 分析时,主要观察内存变化(段的属性,是否被重新填充),寄存器的变化,eax,ecx,esi,edi。,实战分析-复合类多态感染病毒,win32.virus.sality-目前全球威胁趋势排名前10变形感染类蠕虫病毒)1 内置多态引擎2 文件型感染3 p2p僵尸网络,病毒结构分析及特点,sality 感染的模型,obfuscation decryptor,host,junk code,junk data,bound PE,eop,Ori eop,病毒结构分析及特点,sality 执行流程路径,病毒结构分析及特点,感染前后,整体程序流程的差异,混淆的解密头注意事项,1 起始地址的位置,一般我们判断向上的jmp 跳转情况。,混淆的解密头注意事项,2 结束位置,如果混淆的比较复杂情况,结束位置需要仔细找一下。,混淆的解密头注意事项,3 看解密的方向:向上或是向下,这一点主要是为了写解密函数时需要关注的,否则可以忽略,混淆的解密头注意事项,4 看每次解密的步数:这个非常重要的一个点,一般可以在一个寄存器里面Rx,通常是ECX,但也可能是其他的寄存器或是内存的某个地址处的数据。极端一些的情况下还有针对这个步数的混淆。,混淆的解密头注意事项,5 看解密后的跳转这次的情况很简单,直接在解密后的指令中,复杂的情况还需要单补跟踪到。,混淆的解密头注意事项,6 观察能操作内存的操作。,混淆的解密头注意事项,7 对call 的跟踪要类似分析壳一样,哪些F7进入,哪些F8步过要试探着运行。,单步逆向分析,1 利用push imm32,call sub_xx,ret,原因是什么?anti-static check 目的。,单步逆向分析,2 了解典型的解密代码结构,单步逆向分析,3 跨段跳转,是最关键的流程转换!学会从jmp,ja,jl,jne,je.中发现出口的关键跳。学会观察寄存器的变化,找到最有效的寄存器值。,单步逆向分析,4跨段跳转:,单步逆向分析,5大段垃圾指令中,插入有效指令,注意区分,单步逆向分析-破解病毒解密的方法,1)看段的跳转变化,进入一个新的方式的开始.,单步逆向分析-破解病毒解密的方法,2)代码里面充满了无效的指令,但这些需要我们自己判断。需要注意的指令是Mov Rx,Ry|Mov Rx,memMov Rm,Rx1 要注意的寄存器,esi,edi。观察解密ctrl+F7,单步逆向分析-破解病毒解密的方法,3)可以看到解密方向是向上解密。,单步逆向分析-破解病毒解密的方法,4)如果解密的情况非常复杂,那么合适才算是解密结束,调向我们想要的代码?方法:1 寻找在解密过程中,涉及到的跳转指令,哪些是通用解密过程中不被执行的。2 找不是向上跳转的代码,单步逆向分析-破解病毒解密的方法,4)如果解密的情况非常复杂,那么合适才算是解密结束,调向我们想要的代码?方法:1 寻找在解密过程中,涉及到的跳转指令,哪些是通用解密过程中不被执行的。2 找不是向上跳转的代码,单步逆向分析,6 小结:如何寻找到跳转入口 1)单步跟踪,直到发现2)tc 跟踪,查找间隙大的指令。3)F9 运行,各个段下断点。可以观察到,如何解密开原函数的开头。4)断在最后一次运行的所有跳转位置设置断点。,单步逆向分析 病毒body code,因为病毒是附着在宿主程序的代码之上的。他要操作引用自己的变量及数据,都要用相对的操作来完成。一般为 mov eax,ebp+xxx/变量 call ebp+yyy/调用API/函数call _delta_delta:pop ebpsub ebp,offset _delta,单步逆向分析 病毒body code,堆栈中存放病毒自身的数据,单步逆向分析 病毒body code,7当病毒重定位后,ebp-通常是用来做重定位的基址,典型结构:VIR_STRUCT structaLoadLibrary dd?;0aCloseHandle dd?;4aGetCurrentDirectory dd?;8 aMultiByteToWideChar dd?;12 aFindFirstFile dd?;16aFindNextFile dd?;20aFindClose dd?;24aCreateFile dd?;28VIR_STRUCT ends,单步逆向分析 病毒body code,重定位,获得kernel32基址的办法:mov eax,fs:30h;得到PEB结构地址mov eax,eax+0ch;得到PEB_LDR_DATA结构地址mov esi,eax+1chLodsd;得到KERNEL32.DLL所在LDR_MODULE结构的;InInitializationOrderModuleList地址mov edx,eax+8h;得到BaseAddress,既Kernel32.dll基址,单步逆向分析 病毒body code,830000 CreateMapping地址,copy 自身解密代码到另一块内存,单步逆向分析 病毒body code,创建病毒线程,这是我们单步跟踪的一个原因,当然当分析熟 悉后,可直接下断点 Bp CreateThread位置通过简单分析,可知创建线程后sleep等待,线程中完成更多的具体工作。,单步逆向分析 病毒body code,发现了stolencode,原来的入口点代码被修复。如何能知道是原来的入口点代码呢?一般是靠猜测,更多是多熟悉更重编译器入口代码的特点。,单步逆向分析 病毒body code,在病毒最后一个节里面寻找PE文件,然后完成自己加载的PE文件,执行的功能。,单步逆向分析 病毒body code,替换宿主程序的导入表,单步逆向分析,8病毒修改了GetProcAddress 在IAT中的地址,所以这时候我们可以下断点,单步逆向分析,自己展开PE文件的方式:1 copy PE header2 copy sections3 fix import address table 4 jmp eop,单步逆向分析,9 解析绑定的PE结构,ImageBase,NumberofSections,SizeOfImage+0 x100 10 VirtualAlloc 一段可读写SizeofImage 内存,pMem11 把绑定的PE文件0 x1026f102-copy 到新分配的内中pMem。,单步逆向分析,12 在edi-pMem+最后一个节点virtual address,Esi-最后一个节倒数0 x200字节执行copy 操作,循环执行完所有节点扩展,单步逆向分析,13 判断重定位表(0 x1071180)重定位表达定义:Struct Image_Base_ReloctionDWORD virtualAddress;DWORD SizeofBlockWORD TypeOffset;(高4bit是重定位类型,低12bit是虚拟机地址偏移)【最终重定位地址】=virtualAddress+typeoffset 重定位的类型:0-无定义3-对应的地址要修正10-x64下PE文件的地址要修改修正:【最终重定位地址】=当前地址数据+修正值,单步逆向分析,重定位信息,单步逆向分析,14 自己完成PEloader 功能,解析导入表,完成填充IAT的功能。,单步逆向分析,15.1 自己完成对IAT表填充工作:对比捆绑的PE,与od的情况。从ollydbg 中dump出捆绑的PE,单步逆向分析,15.2 填充完毕后运行,单步逆向分析,15.3 获得EOP 地址,转向跳转到绑定展开的pe EOP 地址运行。那么病毒如何再次获得控制权呢?思路我们的处理思路是否有问题,漏下来什么,如何解决?病毒为什么要这样做?绑定一个PE文件直接释放文件不就可以了吗,单步逆向分析,1 当我们已经熟悉的分析过了,再次分析可以直接在cdata(最后一个节)段下F2断点。2 F9 运行到断点,下.text段F2断点,F9运行。此时就已经跳过了混淆的代码区域。3 后面的分析可以单步跟踪了。,分析总结,1 把真正的代码入口加密保存在自身的body中,使得修复变得困难。2 改写程序新入口。3 通过大量junk code 干扰分析。4 控制流程,采用分段式,先是EOP的修改,而后是API的hook。5 病毒有感染部分+捆绑的PE组成,自行展开捆绑PE并运行.,分析总结,分析时有用断点:bp 0 x0100200a 多态解密头结束bp 0 x0101F000 第二次解密开始Bp 0 x0101f5be 二次解密出口关键跳Bp 0 x0101ff97-二次解密出口BP 0X010207d4 创建的线程工作函数Bp 0 x01020806 恢复抽掉的入口代码Bp 0 x01020e79-hook 宿主的导入表函数Bp 01020B06-修正重定位地址Bp 01020bae-填充导入表BP 0102Bda-填充导入表完成后,运行点,下断点,否则跑飞。,分析总结,如何更快的跳过解密的混淆头如何dump出捆绑的PE如何自己load PE展开在内存中,

    注意事项

    本文(麦洛克菲 逆向病毒分析课程课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开