我可以使用winpkfilter捕获https(CONNECT)URL吗
本文关键字:CONNECT URL https 可以使 winpkfilter 捕获 我可以 | 更新日期: 2023-09-27 18:26:27
我正在尝试确定在本地机器上打开哪些https URL。我安装了winpkfilter并尝试使用C#来捕获流量。
我可以很好地捕获数据包,甚至可以在未加密的流量中看到GET和POST请求(在HTTP上向站点发出的标准请求)
我的问题是:
是否可以确定正在打开哪些HTTP-S(CONNECT)URL?例如https://facebook.com
请告知是否可能。我不能使用fiddler或任何其他代理工具,必须使用网络驱动程序才能实现这一点。请告诉我这是否可能,如果不可能,替代解决方案是什么?
感谢
编辑
我必须在本地计算机上做这件事,我在那里以管理员权限运行我的示例应用程序。我只是想知道我是否可以在没有代理的情况下实现这一目标。如果用户打开urlhttps://www.google.com那么我只想捕捉到这一点。我还需要一个中间人来获得这个CONNECT HTTPS url吗?请澄清。非常感谢。
是的,没错,没有MITM就无法提取完整的URL。要组织此操作,您必须使用WinpkFilter将传出HTTPS会话重定向到本地HTTPS代理并实现一些SSL代理。
然而,有一个有限但有一个替代方案。使用WinpkFilter,您可以拦截DNS请求/响应,通常在任何HTTPS会话之前,都会发送DNS查询以将域名转换为IP地址。您可以使用DNS响应中的IP到域名关联来确定HTTPS会话试图连接的域名。例如,您捕获了到104.1635.249端口443的传出TCP SYN数据包,但在此之前,您看到了www.stackeoverlow.com的DNS响应,其中104.1635.249%是为域名返回的IP地址之一。因此,您可以很容易地确定HTTPS会话正在建立到https://www.stackoverflow.com.当然,这种方法不会为您提供完整的URL,而只提供域名,例如。https://www.stackoverflow.com相反https://www.stackoverflow.com/questions/18045764/can-i-capture-https-connect-urls-using-winpkfilter.But对于某些任务来说,这可能就足够了。
HTTPS用于防止任何窃听(您正试图这样做)。因此,当HTTPS设置正确时,您将无法执行任何操作。如果你可以控制客户端计算机和软件,你可以在用户的系统中安装一个假的可信根证书,然后拦截HTTPS请求,动态生成服务器证书,用可信根证书签名,并充当中间人。
BTW找到关于中间人攻击的信息并阅读它们-这正是你想要做的。