0

在接下来的几行中,我将解释我担心的技巧,并解释我的确切问题

技巧: 过去我曾经使用虚假服务器响应来破解程序

  1. 将程序(客户端)的连接循环回我的计算机
  2. 嗅探真实服务器的登录成功包
  3. 创建一个伪造的服务器(监听器),它监听来自客户端的连接并发回伪造的响应(我嗅探到的)

但是自从他们改变了一些东西以来并没有很多时间,我的把戏不再奏效了

(每次我尝试发送一些嗅探的登录数据包时,客户端都会崩溃并且不再接受虚假的服务器响应)


问题: 现在我正在创建自己的客户端服务器通信,我想防止我的客户端被虚假的服务器响应技巧所愚弄(任何人都可以使用任何用户名和密码登录)并提供来自窃听者的最佳安全性

(如何确保此数据包来自我的服务器,而不是来自其他仅发送嗅探登录成功数据包以欺骗我的客户端并登录的假服务器)(以另一种方式如何防止客户端被欺骗但假服务器(模拟器))

注意:我的意思是防止不要让它 100% 安全,因为一切都可以被破解,但要避免这种破坏整个项目的愚蠢事情


我希望我没有偏离重点,但我只是想清楚地解释每一点

4

1 回答 1

0

如果我了解您的目的,那么使用 TLS 是一种方便的方式,可以让您确信客户端正在连接到正确的一方。

通过根据本地根受信任证书或对等受信任证书验证服务器的证书,您可以验证服务器的证书是由“受信任的”第三方颁发的,并且连接的主机名是预期的一方。如果此类验证失败,您可以阻止与服务器的通信。

当然,这仅在客户端没有完全被入侵时才有用。

以下内容可能会对您有所帮助:

了解身份验证
传输层安全性

如果设置正确,SSL 可以确保客户端连接到正确的服务器。它与用于确保您将登录信息提交到 stackoverflow 或 gmail 或大多数其他网站的技术相同。服务器将其证书发送给客户端。客户端将获取该证书并使用一些数学魔法来确保它是由机器受信任存储中的一个证书颁发的。嵌入在该证书中的是主机名。如果主机名与客户端连接的内容匹配,并且证书是由受信任存储中的证书颁发的,则将建立连接。由于您信任受信任存储中的实体以知道他们向谁颁发证书,因此无法伪造服务器证书。但是,如果客户端运行的机器完全受到攻击,他们可以将自己的受信任证书安装到受信任的存储中,从而允许他们假装是从受感染机器连接的客户端的服务器。在这种情况下反编译源代码将不允许攻击者伪装成服务器。您利用 SSL 的最简单方法是让您的服务器作为 Web 服务运行。我确信那里可能也有实现 TLS 的库。

于 2012-07-30T16:56:01.933 回答