我的日常工作是分析利用文档查看器报告的概念文件证明。那些在文档查看器中报告漏洞的人只是给我PoC和易受攻击的版本号。他们通常会模糊处理内容,并找到导致堆栈溢出等的偏移量。这意味着它们没有提供有关外伤的根本原因的信息。因此,仅对于易受攻击的二进制文件和PoC,我需要分析以下内容:


PoC确实有效吗? (例如,没有在函数A中检查参数...等等);我需要知道这一点,因为我必须联系供应商以修复漏洞。我该怎么做(我在XP中进行分析)。


运行PoC
在出现异常时查看调用堆栈->遵循它们
检查是否SEH已损坏->在损坏的SEH上设置断点以查找溢出堆栈的指令

通过玩耍,我可以找到触发漏洞的汇编指令。但是,很难一直追溯到根本原因。溢出的汇编指令通常在库中,但vuln不是库,而是恶意地将用户程序称为库的用户程序吗?

我不知道我的意思是否清楚,但是需要一些技巧来进行这种逆向工程。

评论

我将使用内存/硬件断点,或在缓冲区值中寻找重复模式,以追溯到根本问题。顺便说一下,您在POC代码中看到了如何输入值,因此您应该能够确定从中查找的位置。

谢谢回复。我应该澄清一件事,POC是一个文档文件(例如.doc文件),因此没有输入值的代码:(我只是在查看器中打开它

不要以为有效的漏洞利用总是会引发异常:)

#1 楼

首先,您的平台非常重要(我的操作系统是Windows)

在Windows中WinDbg + !exploitable是快速分析选项之一。
它在这里WinDbg + !analyze确定错误的标准名称...
这是默认的WinDbg扩展名。找出根本原因。