通过代理记录 HTTPS 流量

通过代理记录 HTTPS 流量

如何配置 squid(或任何其他)代理服务器以记录通过 HTTPS 访问的 URL 和下载的文件?这可能吗?

答案1

只有在非常特定和特殊的情况下才能做到这一点。

问题在于,在 HTTPS 连接中,访问的 URL 以及其中发生的一切均受 SSL 保护。要查看内部情况,您必须突破该保护。

要做到这一点,唯一的办法(除非通过破解一两种加密算法而出名)就是对用户进行中间人攻击。您必须为代理服务器设置一个适用于全球每个域的 SSL 证书 - 要么是全球通配符证书(具有 AltNames 的证书**.**.*.*等等),要么是可以动态生成 SSL 证书的东西(使用您自己的本地 CA)。您不会从已建立的“全球信任” CA 获得这样的证书(好吧,也许科摩多...),因此您必须对所有内容进行自签名,然后配置所有使用此代理的设备以信任该本地 CA。这个信任问题就是为什么您只能在“非常具体和特殊的情况下”这样做的原因。

完成该设置后,您可以解密所有通过的 HTTPS 流量、记录它,然后使用最终站点自己的 SSL 证书重新加密它。

在你跳起来、用脚后跟敲击并大喊“耶!”之前,有一些事情需要注意。这个过程中的危险和注意事项相当多。

您需要一个代理服务器(或代理场),它有足够的能力终止使用代理的任何人建立的每个连接的 SSL。对于小型办公室来说,这并不难,但如果您在任何一家大型公司工作,那么您将面临重大的扩展问题。

安全风险也不容小觑。你的这个代理农场现在是一个难以置信对于任何想要获得一些有价值的凭证的人来说,这都是高价值目标。请记住“不要把所有的鸡蛋都放在一个篮子里”这句话——或者在这种情况下更有用的是“把所有的鸡蛋都放在一个篮子里,只要确保它是真的强篮子”。不要以为人们不会发现它;如果你知道你在寻找什么,识别这类东西并不难,而且由于你无法在没有人发现的情况下在组织中部署它(不管怎样),任何可能怀有顽皮想法的内部人员都可能非常非常受到诱惑。闯入十几台台式机来获取凭据可能不值得,但弹出中央 HTTPS 代理并观察一切进展更有价值——而且工作量和风险更小。

至于如何在 Squid 或任何其他可用的代理解决方案中执行此操作,而不是手动输入所有内容,我将向您推荐 Squid 文档SSL 碰撞动态 SSL 证书生成这些功能结合起来,将使您能够访问加密流量,而不会生成不必要的浏览器安全警告。一旦您掌握了这些,记录连接就很简单了。

相关内容