从应用程序拦截 zip 解密密钥或文件

逆向工程 调试 解密 勾搭
2021-06-12 10:24:49

如果应用程序正在读取受密码保护的 zip 文件,是否有办法拦截发送的密钥以解密 zip 文件。或者,有没有办法转储自己读取的文件?

1个回答

我在假设 OP 是在他共享二进制文件的合法权利范围内写这个答案的。

首先,我阅读了受密码保护的 zip 文件。显然,这不是 ZIP 规范本身的一部分,而是 WinZip 的发明。他们在此页面上记录了他们的格式修改和所有详细信息:

https://www.winzip.com/win/en/aes_info.html

这里需要注意的是密钥派生的工作原理。它通过 PKBDF2 提供给定的密码,迭代次数为 1000 次,以推导出 AES 中使用的真实密钥。

使用 PEiD,我检查了加密签名并找到了 4 个对 AES 的引用(通过他们的 sbox)。然后我检查了使用这些 AES 函数的周围代码,并偶然发现了一个以 1000 作为参数的函数调用。

然后我只是运行带有附加调试器的二进制文件,中断了那个调用。然后我检查了传递的参数,第一个参数似乎是关键。

我用密钥确认成功解压了女性zip文件。

如何导出该密钥?

请注意,程序使用的算法似乎有点复杂。如果您检查 zip 文件,则并非其中的所有文件都已加密。

两个未加密的 XML 文件包含一个名为 的 XML 属性encryption key,它看起来与上面的真实文件相似,但字节不同。

应用程序可能使用此属性来推导出上述密钥,该密钥最终被馈送到 AES 以解密同一存档中的加密文件。我不知道这个内部推导是如何工作的。如果您想编写一个通用工具来解压缩这些加密文件,您可能必须找到代码,可能通过遵循 XML 解析器。