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

时间:2012-03-05 08:44:24

标签: c# security https 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上使用还是有假的?这有帮助吗?

enter image description here

更新&结论

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

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

所以......

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

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

  3. 确保记忆力 - 让事情变得更难 - 是下一步。

  4. 我写过这些东西作为谁将研究相同主题的未来参考。得到你的认可。

    感谢。

    有人已经提到假证书:

    1. Detecting Man in the Middle Attacks with DNS By Jason Coombs, December 18, 2003

3 个答案:

答案 0 :(得分:6)

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

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

您是否安装了fiddler root CA?如果你这样做,那么你的系统就会信任fiddler软件颁发的证书,就像信任Verisign或其他可信任机构颁发的证书一样。

你必须在大多数编程环境中努力accept an untrusted certificate,所以在将流量发送到服务器之前,它应该在那时未通过检查。

修改 如果您尝试保护对GData存储的访问权限,那么您应该阅读Authentication and Authorization documentation WRT。是的,这是一个痛苦的屁股,但这是一种保护数据的方法,而不会在客户端应用程序级别泄露您的用户帐户信息。

答案 1 :(得分:2)

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

request.Proxy = null;

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

答案 2 :(得分:0)

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

  

两端的SSL匹配

SSL match at both ends

  

MITM怀疑!

MITM Suspect!


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