4

国内部分地区用户遭到中间人攻击 | news view

 3 years ago
source link: https://zsqk.github.io/news/2020-03-27-man-in-the-middle-attack.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

news view

根据 V2EX 社区帖子, GitHub 在国内遭受大规模中间人攻击.

什么是中间人攻击? 如何防范?

什么是中间人

在用户与服务器之间的任何层, 都可以称为中间人. 包括但不仅限于:

  • 本机设备的恶意软件
  • 本地路由器
  • 各级电信运营商
  1. 阻断沟通.
  2. 伪造身份.

大多数中间人攻击都是为了伪造身份, 比如攻击者不是银行, 伪装成银行与客户进行沟通 以套取密码.

  1. 直接劫持并替换数据包.
  2. 通过 DNS spoofing.
  3. 阻断数据包.

什么是 DNS spoofing?

https://en.wikipedia.org/wiki/DNS_spoofing https://www.cloudflare.com/learning/dns/dns-cache-poisoning/

我们经常遇到这种 DNS 攻击, 如何识别与防范以后单独写一下.

  1. 本地客户端对等加密.
  2. 传输层加密.

本地客户端对等加密 比较简单, 应用范围有限, 目的是为了防止中间人直接获取有效信息, 提高难度.

什么是本地客户端对等加密? 比如本地向服务器传输 123 这个字符串, 但不直接传输, 而是与服务器端沟通好, 以 ! 代表 1, @ 代表 2, # 代表 3, 实际传输 !@#. 这样, 如果中间人不知道二者的加解密方法, 则无法获取有效信息.

但这种方法有很大局限性, 比如如何保证中间人不知情? 加解密方法不能通过中间人网络. 前期沟通成本高.

为了解决上述问题, 更常用的是传输层加密, 比如 HTTP over TLS, 也就是我们说的 HTTPS.

有人会问, TLS 与 SSL 是什么关系? 调侃地说: 就像 ECMAScript 与 JavaScript 的关系. 中文维基百科上有一句话: “IETF将SSL进行标准化,1999年公布第一版TLS标准文件”.

TLS 是如何防范伪造身份为目的的中间人攻击呢?

  1. 客户端发给服务器端本地可用的加密方法.
  2. 服务器端看一下自己能使用哪一种, 然后告诉客户端用什么方法加密和公钥证书.
  3. 客户端此时判断服务器的公钥证书是否可信. 证书是由第三方发放的, 如果客户端认为 该第三方可信, 即证书颁发者在自己的可信根内, 则认为服务器可信.
  4. 客户端与服务器端建立有效连接.

如果想进一步知道, 客户端与服务器端如何建立有效连接, 服务器如何信任客户端, 请看:

  1. 客户端根据公钥加密一个随机数据, 发给服务器端.
  2. 服务器端解密后得到这个随机数据.
  3. 此时双方都获得了这个随机数据, 然后双方利用这个随机数据再次对等加密收发数据.

详细的 TLS 细节请看: https://en.wikipedia.org/wiki/Transport_Layer_Security#Protocol_details

https://v2ex.com/t/656394 https://www.cnbeta.com/articles/tech/960295.htm

- network-security

This site is open source. Improve this page.

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK