通信安全:Fiddler拦截我的谈话。 我如何保护我的应用程序?

我构建了一个GData应用程序并发送了我的Google凭据以使用我的帐户。 Fiddler可以轻松拦截我的通信并显示用户名和密码。

有什么方法可以防止窥探? 如果不是,有人可以轻松揭示我的密码……

POST https://www.google.com/accounts/ClientLogin HTTP/1.1 Content-Type: application/x-www-form-urlencoded Host: www.google.com Content-Length: 109 Expect: 100-continue Connection: Keep-Alive Email=xxxxxxxxxx%40gmail.com&Passwd=veryhigh-secure-ultra-strenght-passord-is-this-HHDGdgddhdyhghdeeehdeg^3h37373dE^^^+--XXXxxx123123h37ddg3g36dhjfhfg6373udbgd634t&source=database&service=writely&accountType=HOSTED_OR_GOOGLE 

附加:我们了解Google Docs的公共SSL证书。 我们可以检查一下它是在客户端的PC上使用还是有假的? 有帮助吗?

在此处输入图像描述

更新和结论:

Fiddler充当中间人并在Windows的受信任的根证书中注入假根证书。 商店。 然后为目标站点生成假证书。 浏览器使用伪造的认证 – 公共密钥 – 并加密和发送数据给Fiddler本身。 Fiddler使用伪根证书-private密钥解密数据。 然后使用远程站点的原始认证并加密数据并发送到目标站点。 对响应浏览器反向重复相同的操作。

我只是问如何在另一个问题上检测这些假certificate。 如果我使用.NET构建一个简单的应用程序,应用程序将依赖并使用Windows的“默认/存储”认证用于目标站点。 如果没有,Fiddler将动态生成一个。

所以…

  1. 我不依赖Windows上的证书并直接从目标站点获取真实证书/或者我必须在我的应用程序中包含有效的目标站点证书。

  2. 我必须修改Google Data API的源代码,以便在我的https通信中使用我附带的-authentic one-SSL证书 – 一个简单的.crt文件。 因此,数据将在我的应用程序中加密,并仅在目标站点解密。

  3. 保护记忆 – 让事情变得更难 – 是下一步。

我已经把这些东西写成了未来的参考,以便谁来研究相同的主题并得到你的认可。

谢谢。

有人已经提到假证书:

  1. 用DNS探测中间人的攻击作者:Jason Coombs,2003年12月18日

Fiddler可以泄露密码的原因是因为它充当了HTTPS代理。 它充当了中间人; 在客户端解密您的安全流量并在将其发送到目标服务器之前重新加密。 这一切都发生在您的安全流量离开系统之前。 一旦它离开您的计算机,数据就会被加密。

只要您确信您的计算机不受恶意软件和其他类似软件的侵害,那么您应该认为HTTPS流量是安全且加密的,并且不会受到窥探。

你安装了fiddler root CA吗? 如果您这样做,那么您的系统会信任fiddler软件颁发的证书,其方式与信任Verisign或其他受信任机构颁发的证书相同。

在大多数编程环境中,您必须努力接受不受信任的证书 ,因此在将流量发送到服务器之前,它应该在那时未通过检查。

编辑:如果您正在尝试保护对GData存储的访问权限,那么您应该阅读认证和授权文档 WRT。 是的,这是一个痛苦的屁股,但这是一种保护数据的方法,而不会在客户端应用程序级别显示您的用户帐户信息。

您可以使用以下简单代码隐藏从您的应用中流出的流量:

 request.Proxy = null; 

但是,这只适用于提琴手。 我不知道它是否适用于其他交通监控软件….

现在我可以检测到正在使用的假证书。 这不仅仅是保护我的密码,我的所有SSL通信都可见,包括其他敏感数据。

两端的SSL匹配

两端的SSL匹配

MITM怀疑!

MITM怀疑!


当然,假SSL可能包含匹配的字符串,因此我应该比较两个证书文件以确保它们是相同的。 或者更好的方法是简单地用两个证书加密测试字符串并比较结果……