53

不久前,我在这里问了一个问题,关于如何隐藏我的 http 请求调用并使它们在我的应用程序中更安全。我不希望人们使用 fiddler 2 来查看通话并设置自动应答器。每个人都告诉我使用 SSL,电话将被隐藏,信息将被安全保存。

我购买并安装了 SSL 证书并设置了所有内容。我启动了 fiddler 2 并运行了一个连接到 https Web 服务以及连接到 https php 脚本的测试应用程序。

Fiddler 2 不仅能够检测到这两个请求,还能够解密它们!我能够看到所有信息,这让我想到了我的问题。

如果 SSL 对安全性的影响为零,那么它的意义何在。无论有没有 SSL,我都可以看到所有信息都返回和第四个,并且仍然设置了一个自动响应器。

在 .NET 中我是否缺少一些东西来更好地隐藏通过 SSL 进行的调用?

编辑

由于我收到了一些回复,我正在为这个问题添加一个新部分。如果应用程序连接到 Web 服务以登录会怎样。该应用程序向 Web 服务发送用户名和密码。然后,Web 服务将数据发送回应用程序,说明登录数据是否良好。即使通过 SSL,使用 fiddler 2 的人也可以设置一个自动响应程序,然后应用程序被“破解”。我知道在调试中查看数据会有什么用,但我的问题是,究竟应该做些什么来确保 SSL 连接到它所请求的那个。基本上说不可能有中间人。

4

3 回答 3

53

这在这里涵盖:http ://www.fiddlerbook.com/fiddler/help/httpsdecryption.asp

Fiddler2 依赖于“中间人”的 HTTPS 拦截方法。对于您的网络浏览器,Fiddler2 声称是安全的网络服务器,而对于网络服务器,Fiddler2 模仿网络浏览器。Fiddler2为了伪装成web服务器,动态生成HTTPS证书。

本质上,您手动信任 Fiddler 提供的任何证书,如果您手动接受来自与域名不匹配的随机人的证书,情况也是如此。

编辑:有一些方法可以防止 Fiddler/man-in-the-middle 攻击 - 即在自定义应用程序中,使用 SSL,可以要求使用特定证书进行通信。在浏览器的情况下,他们有 UI 来通知用户证书不匹配,但最终允许这样的通信。

作为显式证书的公开可用示例,您可以尝试使用 Azure 服务(即使用 Azure 的 PowerShell 工具)并使用 Fiddler 嗅探流量。由于明确的证书要求,它失败了。

于 2012-05-30T01:36:09.960 回答
9

您可以将 Web 服务设置为要求 SSL 身份验证的客户端认证以及服务器端。这样 Fiddler 将无法连接到您的服务。只有具有所需证书的应用程序才能连接。

当然,那么您会遇到如何保护应用程序中的证书的问题,但无论如何,您现在遇到了用户名和密码的问题。真正想要破解您的应用程序的人可以使用 Reflector,甚至可以对与客户端证书关联的私钥进行内存搜索。

没有真正的方法可以做到 100% 防弹。这与电影业在保护 DVD 内容方面遇到的问题相同。如果您拥有能够解密 DVD 并播放内容的软件,那么有人可以在该软件运行时进行内存转储并找到解密密钥。

于 2012-05-30T02:08:39.440 回答
6

一般来说,SSL/TLS 的意义在于,偶尔使用 Wireshark 的窃听者无法看到您的有效负载。Fiddler/Burp 意味着您与系统进行了交互。是的,这是一个非常简单的交互,但它确实需要(一个)系统受到损害。

如果您想通过使这些 MITM 程序在这样的基本级别无用来增强安全性,您将需要客户端证书身份验证(2 路 SSL)并固定服务器和客户端证书(例如,要求只有特定证书对通讯)。您还将使用每一方的公钥加密在线传输的有效负载,并确保私钥仅驻留在他们所属的系统上。这样,即使一方(Bob)受到攻击,攻击者也只能看到发送给 Bob 的内容,而看不到 Bob 发送给 Alice 的内容。然后,您将获取加密的有效负载并使用可验证的证书对数据进行签名,以确保数据没有被篡改(顺便说一句,关于是先加密还是先签名存在很多争论)。最重要的是,

当您不控制(一个)通信系统时,这将使您尽可能合理地实现安全。

正如其他人所提到的,如果攻击者控制了系统,他们就控制了 RAM,并且可以修改内存中的所有方法调用。

于 2015-01-02T09:04:01.047 回答