我正在对 Zeus 2.x 进行一些研究,试图了解它的工作原理。通过使用此代码。我已经构建了自己的构建器来在我的测试环境中工作。
知道我想做一件非常具体的事情,那就是从内存中提取 webinjects 配置。我做的第一个实验是附加到 IExplorer 并监视对我知道 Zeus 挂钩的函数的调用,例如HttpSendRequest*. 我期待在逐步执行这些执行时的某个时候,我会看到注入配置加载到内存中。我尝试在调用此函数时自动设置断点并使用 OllyDbg 的 Memory Watch 插件,该插件会转储遇到的每个字符串。
所以现在我想精确定位并理解我应该在哪里查看内存中的解密配置。
到目前为止我的假设:
- 我看不到任何奇怪的东西,因为
HttpSendRequestX我设置断点的函数实际上是原始的,与 Wininet 没有变化; - 转储机器的内存并离线分析它是不够的,因为保存 webinjects (BinStorage) 的结构在需要时被加载到内存中,然后被丢弃 (free'd)
在这一点上,我正在考虑监视VirtualAlloc对那些新分配区域的内存写入的调用并放置一个断点(在某些时候,Zeus 必须将加密的配置放在那里,然后对其进行解密)。
但这仍然是一个远景。有任何想法吗?此外,我通过附加在 上来完成大部分工作IExplore.exe,我应该explorer.exe改为吗?
任何提示表示赞赏!