需要帮助分析图像查看器漏洞

逆向工程 开发
2021-07-11 10:57:30

我最近获得了一个图像查看器程序的漏洞并开始分析。

具体细节无法给出,但基本上是使用恶意图像文件的 SEH 覆盖漏洞。

使用免疫 dbg,我看到 SEH 被 38 4c 5c 36 覆盖。但是 dbg 无法执行该内存地址。

Exploit 可以很好地执行 calc,但是通过将调试器附加到查看器程序,它会在尝试执行 38 4c 5c 36 时挂起。

我试图跳转到那个地址,但 dbg 说这是一个未指定的地址。我有几个关于这个内存地址的问题

  1. 在 38 4c 5c 36 附近的内存地址中加载了什么样的数据?(查看加载的 dll 文件之间的内存映射,似乎没有加载任何内容)

  2. 是 38 4c 5c 36 漏洞被加载到内存中还是我猜错了?

  3. 如果它是加载漏洞利用的地方,我应该怎么做才能使用调试器进一步分析?

先感谢您 :)

2个回答

基于 SEH 的 BoF 的标准利用将尝试将 SE 处理程序指向 POP/POP/RET 指令。根据启用的内存保护,情况并非总是如此。(使用 Mona 插件 for Immunity 使用命令检查这一点!mona mod,或者简单地检查易受攻击的二进制特征)

如果您的 SE 处理程序指向0x384c5c36,您应该在该地址处放置一个断点并点击Shift+F9以继续执行到您的断点。

其余的将因漏洞利用的性质和它必须绕过的限制类型而有很大差异。作为一个图像查看器,我怀疑该漏洞是否会使用任何技术,如堆喷射,因为它可以执行任何会喷射堆的代码,如 JavaScript,但你永远不知道。

有关基于 SEH 的溢出的更多信息,我强烈推荐Corelan 教程

38 4c 5c 36 是dbg无法继续时EIP的值。

根据您上面的评论,针对您的问题:

  1. 漏洞利用的有效载荷。
  2. 这是加载漏洞利用程序有效负载的内存位置。
  3. 如果您只想分析有效负载(而不是漏洞利用/触发器),请在该地址上设置断点并从那里进行调试。