我有一个专有的仅适用于 Windows 的应用程序,它使用 HTTPS 与(也是专有的、未记录的)Web 服务进行通信。
为了最终能够在我的 Linux 机器上使用 Web 服务的功能,我想通过分析应用程序发送的请求来对 Web 服务 API 进行逆向工程。
现在的问题是:我如何解密并记录 HTTPS 流量?
我知道有几种解决方案不适用于我的情况:
- Fiddler是一个中间人 HTTPS 代理,由于应用程序不支持代理,因此我无法使用。此外,我(目前)还不知道它是否适用于自签名服务器证书,对此我表示怀疑。
- Wireshark能够解密 SSL 流,如果你有服务器的私有证书,而我没有。
- 任何浏览器扩展,因为应用程序不是浏览器
如果我没记错的话,有些木马通过挂接/替换窗口的加密 API 来捕获网上银行信息。由于这台机器是我的,所以可以进行低级更改。也许有一个非木马(白帽)网络日志应用程序可以做同样的事情?
有一个黑帽演示,包含一些细节可供阅读。他们指的是微软研究院的绕行之路以便轻松实现 API 挂钩。请参阅Detours 挂钩示例。
相关问题:
答案1
如果应用程序带有自己的静态链接 HTTPS 实现,您将无法轻易入侵任何东西,因为您只能看到加密流量。中间人攻击是您最好的选择,但您最好祈祷应用程序不检查证书。
关于“不能使用”:通常,您不需要应用程序“启用中间人”即可发起 MITM 攻击。此类攻击的重点在于,您以某种方式操纵网络环境,使您的代理占据应用程序期望其对等点的位置。由于您控制环境,所以这应该相当容易。
最后,如果您无法窃听流量,您可以通过内存调试器运行您的应用程序,看看是否可以在某处找到明文。
答案2
讽刺的是,就在今天下午,我正在读 Greg Hoglund 的Rootkit提到使用以下方式记录和解密 SSL伊特卡普。
答案3
奥斯皮是一款专门用于对专有 Windows 应用程序通信进行逆向工程的工具,支持 SSL/HTTPS。这似乎是最适合我任务的工具。通过API 监控工具列表。
还有一个可视化脚本在 Linux 机器上分析转储:)
更新:我尝试使用 ospy,但它只能在一台 WindowsXP VM 上运行,而无法在另一台我想用于测试的 VM 上运行。这个错误是已知的,需要修复,但 ospy 似乎自 2009 年以来就已停用,修复这些错误的可能性不大。我基本上无法使用它。
答案4
如果您下载SSL条,您可以设置端口转发(例如,从端口 80 到端口 10000 的 HTTP 流量,SSL 条会拾取它、解密它,然后将其放在路径上),它将在系统的其余部分接收 SSL 加密数据包之前解密它们(如 Ettercap)。