如何评价2020年3月26日大陆对GitHub.io的中间人攻击

By 张怀义 at 2020-03-26

https://www.v2ex.com/t/656367

划重点,DNS返回的IP是真实地github.io地址, 但是这个IP返回的证书是假的

io, 26, 2020, GitHub, 中间人


吃瓜,坐等下文

小二 at 2020-03-26
1

@小二 #1

cookie是什么?证书又是什么?同样是认证方式,这两者间有什么区别?

mimi0123 at 2020-03-26
2

@mimi0123 #2 cookie是网站的,比如你登录后,网站就给你生成一个cookie,只要没有过期或者重置,你就不需要再登录了。之前2049每次重启都会重置cookie,导致每次重启后都要重新登录。

中间人攻击就是,你可以类比为送信,中间有个人拦截了你的信件,然后把内容又转给你,证书相当于给信件加密的密码本。

小二 at 2020-03-26
3

@mimi0123 #2 cookie存了这次session的token,这样你就不用每次操作都要输入秘密//证书就是网站的身份证//cookie不是服务端确认客户端的身份,证书是客户端确认服务器的身份

张怀义 at 2020-03-26
4

@小二 #3

cookie会生成一段字符串,也就是所谓的STOKEN,通过这段字符串服务器可以实时认证访问者的身份。用户输入的密码其实是前端认证,真正和服务器相互认证的就是cookie。

中间人攻击方式比较好理解,跟前置代理差不多的原理,通过拦截转发错误信息。一些抓包修改工具就是前端代理。

证书就是加密手段么?为什么浏览器会有很多证书?https隧道加密才需要证书么?

mimi0123 at 2020-03-26
5

必然的,github上的反共材料太多了。 同时各位提醒在github放东西的人士,世上没有100%安全。

该干嘛继续干 at 2020-03-26
6

@张怀义 #4

本地cookie就是服务器用来确认用户身份的信息。所以本地cookie绝对不能外泄,因为事关身份认证。

mimi0123 at 2020-03-26
7

@mimi0123 #5 证书是证明服务器身份的身份证,里面存了服务器的公钥。用来协商aes密钥的。浏览器里的叫根证书,用来验证服务器证书是否合法。证书发生在TLS层,而不是HTTPS层

张怀义 at 2020-03-26
8

@张怀义 #8

那数字签名指的就是证书相互验证的过程么?

mimi0123 at 2020-03-26
9

@mimi0123 #5 证书很多,你可以理解为担保链,浏览器和操作系统会签发一些可信实体的证书,这些可信实体再一级一级地给其他实体签发证书。之前中国的某证书厂商就违规签发证书,导致其根证书被浏览器厂商撤销。

小二 at 2020-03-26
10

@小二 #10

能不能把目标服务器和客户端之间通过证书签发相互认证的过程描述清楚?可以的话从协议层面讲起。

mimi0123 at 2020-03-26
11

@mimi0123 #11 可以去找专门的文章,应该比较多。我不是科班,也说不太清楚。

小二 at 2020-03-26
12

@mimi0123 #9 还是我来吧

1.浏览器访问目标网站

2.目标网站返回证书

3.浏览器校验证书没有问题,完成TLS握手

4.在TLS上传输HTTP明文

数字签名是用来防止证书被篡改,伪造。小二说的不对,浏览器和操作系统不签发证书!这些证书叫根证书,是CA签发的,浏览器会把自己信任的CA签发的根证书打包到自己发布的二进制文件里。

张怀义 at 2020-03-26
13

@张怀义 #13

数字签名是一串字符还是什么?CA是什么?根证书是从何而来?浏览器自带的么?

mimi0123 at 2020-03-26
14

@小二 #12 这些知识我都是再cloudflare的学习库和博客里看的…cloudflare的水平真的是一线大厂级,以后上市了绝对要买

sorrysorrysorry at 2020-03-26
15

@mimi0123 #14 数字签名你可以理解为一串乱七八糟的字符串。CA是证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构。根证书其实就是一个公钥,certbot就可以自己造一个。的确是浏览器自带的。不过也可以自己安装自己信任的根证书

张怀义 at 2020-03-26
16

@张怀义 #16 根证书和服务器用来验证的证书是什么关系?相互验证么?

mimi0123 at 2020-03-26
17

@mimi0123 #17 证书就是公钥。不管是根证书还是服务器的证书,长得一样,都是X509v3格式。

如果我是服务器,我需要找一个CA给我签一个证书。这样我的证书才能被其他浏览器识别承认。如果我自己签发的证书,就会出现我帖子里的情况,浏览器报错说证书非法。

证书都是单向的,不存在你说的相互验证过程。

整个过程非常复杂,我需要给你完整讲解一遍密码学原理了。你还是看我前面几楼说的精简版本吧

张怀义 at 2020-03-26
18

自有域名的看来暂时不会受影响?技术上有可能吗?

kyq at 2020-03-26
19

MITM github.io是为了掩护MITM cloudflare: https://archive.vn/8kFpG

dou4cc at 2020-03-26
20

@kyq #19 城门失火,殃及池鱼

张怀义 at 2020-03-27
21

@dou4cc #20 不知道你电脑安装卡巴斯基没有。原理类似,应该是某个出国网关部署了这个证书,导致那个网关的证书都被mitm了。我觉得肯定GFW做的,不是被黑。

张怀义 at 2020-03-27
22

中间人攻击是不是要么劫持了某个DSN 要么直接利用DSN 进行攻击? 如果是的话,要么有人真的劫持了很多DSN要么就是中共自己喽?

electron8964 at 2020-03-27
23

@electron8964 #23 我猜你想说的是DNS,GFW只是做了DNS抢答罢了。但是这次攻击没有DNS劫持。是真的在出口网关直接mitm攻击

张怀义 at 2020-03-27
24