1.OLLYDBG详细介绍
2.fs寄存器
3.针对Office软件的汇汇编渗透攻击实例MS10-087安全漏洞分析学习(index: metasploit)
OLLYDBG详细介绍
OllyDbg是一款强大的调试工具,它针对多种处理器和数据格式提供支持,编源要求至少MHz奔腾处理器和MB内存。汇汇编其功能包括多选项配置、编源源码级调试、汇汇编代码高亮、编源迷恋猫源码多线程分析、汇汇编对象扫描和Implib扫描,编源支持Unicode,汇汇编识别超过个C和Windows API函数,编源连无调试信息的汇汇编递归调用也能处理。OllyDbg展示了函数名称、编源参数和调试信息,汇汇编方便用户理解和使用,编源无需安装,汇汇编直接运行即可。 OllyDbg的强大功能还包括智能栈分析,识别返回地址和参数,SEH链跟踪,以及多种搜索功能如精确和模糊搜索。防止源码被扒它提供窗口管理,包括断点设置和资源查看,支持硬件断点和Hit/Run跟踪,协助代码执行流程分析。工具支持Unicode,允许添加标签和注释,跟踪栈帧和结构化异常处理,并能搜索二进制代码、数据和命令,非常适合现代程序的调试。 OllyDbg可以追踪字符串、符号或Run记录中的引用,列出指向特定地址的命令。它支持条件断点,执行速度高效,带有Hit和Run跟踪功能,分别用于检测代码执行和记录执行历史。工具能处理多线程,自动恢复线程状态,在codalab查找源码并允许创建内存快照,对比不同版本。此外,它简化了添加补丁和修改可执行文件的流程,但需注意不适用于位Win系统。 使用OllyDbg的方法包括副作用检测、自解压入口提取,以及一系列的单步和自动执行操作。工具还支持Hit和Run跟踪,以及条件执行。在反汇编面板中,用户可以通过快捷键快速操作,如设置断点、搜索和修改代码等。 注意,保护或反调试技术可能影响OllyDbg的跟踪效果。在调试独立DLL时,用户可以通过加载DLL、设置断点和调用函数来进行操作,php财务oa源码如调试MessageBoxW函数。同时,理解插件使用和解码技巧对于充分利用OllyDbg也至关重要。扩展资料
OLLYDBG是一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3级调试器,非常容易上手,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。fs寄存器
FS寄存器在汇编编程中至关重要,指向当前活动线程的TEB结构。TEB结构中包括多个关键元素,分别位于特定偏移量处。从开始,指向SEH链指针,然后是线程堆栈的顶部(),线程堆栈的底部(),SubSystemTib(C),夕阳社区系统源码FiberData(),ArbitraryUserPointer(),FS段寄存器的内存镜像地址(),进程PID(),线程ID(),指向线程局部存储指针(C),以及PEB结构地址()。
理解FS寄存器的构成后,使用汇编语言获取自身PID和TID变得简单。例如,通过取fs:[h]操作,即可轻松获取PID。对于更复杂的使用场景,例如获取KERNEL.DLL的基址,可以通过以下步骤实现:
首先,使用assume fs:nothing指令打开FS寄存器。接着,通过fs:[h]获取PEB结构地址,再通过eax + 0ch得到PEB_LDR_DATA结构地址。进一步使用eax + 1ch访问InInitializationOrderModuleList,通过lodsd指令获取KERNEL.DLL所在LDR_MODULE结构的InInitializationOrderModuleList地址。最后,通过eax + 8h获取BaseAddress,即KERNEL.dll的基址。
在现代Linux x-环境下,FS和GS段寄存器的用途与Windows有所不同。具体而言,FS寄存器在Linux中的用途需要根据现代Linux环境进行适应和调整。
针对Office软件的渗透攻击实例MS-安全漏洞分析学习(index: metasploit)
针对Office软件的渗透攻击实例——MS-安全漏洞分析与学习
在Metasploit中搜索“ms_”,加载该模块并显示基本信息。该漏洞的原因是Office程序在处理特殊构造的RTF文件时,相应解析程序在处理名为pFragments的参数时存在栈缓冲区溢出错误,导致异常发生。RTF格式文件属于Word应用程序所处理的文件格式,一个后缀名为rtf的文件在更改后不影响其使用。Office 默认启用了DEP,同时存在ASLR机制,这使得对Office +Windows 7中该漏洞的利用变得更加困难,但并非不可能。利用MS-漏洞的实验并未以Win7为目标。
设置渗透模块的攻击载荷为运行一个计算器,以便于观察。在Metasploit中使用命令“use exploit/windows/fileformat/ms__rtf_pfragments_bof”加载模块,设置攻击载荷为“set payload windows/exec”并设置命令为“set CMD calc.exe”。设置文件名为“ms.rtf”并执行“exploit”。将生成的文件复制给目标机器,双击打开。
深入研究MS-漏洞的渗透攻击模块源代码。该模块范围从到,是一个典型的利用SEH(Structured Exception Handling)的方式,包含Ret和偏移量。变量sploit被填充到名为pFragments的属性参数中,导致缓冲区溢出。逆向分析该漏洞的机理,打开OD(OllyDbg)工具,打开Word进程(winword.exe)并设置断点,观察具体执行过程。
启动IDA Pro,加载mso.dll文件进行反汇编分析。在函数入口处设置断点,运行Word进程并打开测试文件。在函数执行过程中,观察到的数据复制指令会导致栈溢出。利用IDA Pro的图形反汇编视图查看关键信息,发现函数主要功能是复制字符串,涉及三个参数:数据源位置、复制次数和数据源寻址。
通过研究函数的反汇编代码,发现程序没有对输入参数进行检查或限制,这是产生漏洞的根本原因。修改mso.dll文件设置软件断点,观察测试文件利用SEH的过程。在经过超长的数据复制后,栈底附近的SEH链被修改。运行程序时,由于断点的设置或调试过程中的问题,导致报错并跳转到不可达地址。
文件格式分析部分详细介绍了RTF文档格式,包括文档头、图形相关信息、绘图属性、属性名和属性值等。分析了RTF漏洞的原因:在进行复制时未对复制次数进行检测,导致栈溢出。通过源代码展示了RTF解析pFragments属性的部分过程,揭示了复制次数控制的实现方式以及漏洞产生的原理。
基于Metasploit的POC(Proof of Concept)展示了漏洞利用原理,包括栈溢出导致SEH机制触发、异常处理和shellcode执行的过程。具体过程涉及栈溢出时将基本信息压入栈、后续压入直接跳转和执行shellcode的地址。通过构建RTF文档,设置了恰当的pFragments属性值,填充shellcode、directe和Ret等关键信息,最终实现攻击目的。
文件的基本格式构造强调了在构造RTF文档时,正确设置pFragments属性的重要性。构造过程涉及到属性值的前部填充、复制次数、shellcode填充、直接跳转和shellcode执行的地址构建。通过实验和分析,揭示了如何利用MS-漏洞进行渗透攻击。