我的日常工作是分析报告的利用文档查看器的概念文件证明。报告文档查看器漏洞的人只需给我 PoC 和易受攻击的版本号。他们通常会模糊测试并找到导致堆栈溢出等的偏移量。这意味着他们不会向我提供有关漏洞根本原因的信息。因此,仅使用易受攻击的二进制文件和 PoC,我需要分析以下内容:
PoC 真的有效吗?
二进制文件的哪个部分容易受到攻击?(例如,函数 A 中没有参数检查......等等;我需要知道这一点,因为我必须联系供应商来修复漏洞)
我是这个领域的新手,目前这就是我的工作方式(我在 XP 中分析)。
运行 PoC
有异常时查看调用栈->follow them
检查 SEH 是否损坏 -> 在损坏的 SEH 上设置断点以查找溢出堆栈的指令
通过四处寻找,我可以找到触发漏洞利用的汇编指令。然而,很难一直回溯到根本原因。溢出的汇编指令通常在库中,但漏洞不是库,是用户程序恶意调用库对吗?
我不知道我的观点是否清楚,但需要一些技巧来进行这种逆向工程。