Lan*_*ens 48 c# encryption ssl .net-4.0 fiddler
我在这里回答了一个问题,如何隐藏我的http请求调用并使它们在我的应用程序中更安全.我不希望人们使用fiddler 2来查看呼叫并设置自动应答器.每个人都告诉我去SSL,呼叫将被隐藏,信息保持安全.
我购买并安装了SSL证书并完成了所有设置.我启动了fiddler 2并运行了一个测试应用程序,该应用程序连接到https Web服务以及连接到https php脚本.
Fiddler 2不仅能够检测到这两个请求,还能解密它们!我能够看到所有信息都返回到第四位,这让我想到了我的问题.
如果SSL与安全性无关,那么拥有SSL有什么意义呢?无论有没有SSL,我都可以看到所有信息都返回第四,而STILL则设置了自动应答器.
在.NET中有什么东西我错过了更好地隐藏我的通过SSL的呼叫?
编辑
由于我收到的一些回复,我在这个问题中添加了一个新的部分.如果应用程序连接到Web服务以进行登录,该怎么办?该应用程序向Web服务发送用户名和密码.然后,Web服务将数据发送回应用程序,说明登录数据良好或不良.即使通过SSL,使用fiddler 2的人也可以设置一个自动应答器,然后应用程序被"破解".我理解在调试中看到数据是多么有用,但我的问题是究竟应该做些什么来确保SSL连接到它请求的那个.基本上说不可能有一个中间人.
Ale*_*kov 51
这包括在这里:http://www.fiddlerbook.com/fiddler/help/httpsdecryption.asp
Fiddler2依赖于"拦截中间人"的"中间人"方法.在您的Web浏览器中,Fiddler2声称是安全的Web服务器,而对于Web服务器,Fiddler2模仿Web浏览器.为了假装是Web服务器,Fiddler2动态生成HTTPS证书.
基本上,您手动信任Fiddler提供的任何证书,如果您手动接受来自与域名不匹配的随机人员的证书,情况也是如此.
编辑:有办法防止Fiddler /中间人攻击 - 即在使用SSL的自定义应用程序中,可能需要使用特定证书进行通信.在浏览器的情况下,他们有UI来通知用户证书不匹配,但最终允许这种通信.
作为显式证书的公开示例,您可以尝试使用Azure服务(即使用Azure的PowerShell工具)并使用Fiddler嗅探流量.由于明确的证书要求,它失败了.
您可以将Web服务设置为需要客户端认证以进行SSL身份验证,以及服务器端.这样Fiddler就无法连接到您的服务.只有具有所需证书的应用程序才能连接.
当然,那么你有如何在应用程序中保护证书的问题,但无论如何你现在已经用你的用户名和密码遇到了这个问题.真正想要破解你的应用程序的人可以使用Reflector,甚至可以搜索与客户端证书关联的私钥.
没有真正的方法来实现100%防弹.电影业在保护DVD内容方面遇到了同样的问题.如果你有能够解密DVD并播放内容的软件,那么有人可以在该软件运行时进行内存转储并找到解密密钥.
一般来说,SSL/TLS的重点在于偶尔使用Wireshark的窃听者无法看到您的有效负载.Fiddler/Burp意味着您与系统交互.是的,这是一个非常简单的交互,但它确实需要(一个)系统受到损害.
如果要通过在这样的基本级别上渲染这些MITM程序来增强安全性,则需要客户端证书身份验证(双向SSL)并固定服务器和客户端证书(例如,要求只有特定证书才有效通讯).您还可以使用每方的公钥加密在线路上传输的有效负载,并确保私钥仅驻留在它们所属的系统上.这种方式即使一方(Bob)受到攻击,攻击者也只能看到发送给Bob的内容,而不是Bob发送给Alice的内容.然后,您将获取加密的有效负载并使用可验证的证书对数据进行签名,以确保数据未被篡改(关于是先加密还是首先签名,btw存在很多争论).最重要的是,
当您不控制(一个)通信系统时,这将使您在安全方式上尽可能合理地实现.
正如其他人提到的,如果攻击者控制系统,他们控制RAM并可以修改内存中的所有方法调用.