请问个 https 加密的问题。 我抓包发现 https 的包,里面 user-agent 和域名部分是明文的,其他的内容是加密的。 请问一下 https 加密了哪些内容,换句话说,在没有中间人攻击的前提下,可以通过抓包获取 https 中的哪些信息?
这是抓包的情况,比较疑惑的是,除了host,为什么还要明文的user-agent
感觉楼下给出的意见,已经wireshark抓包,确实在tls client hello阶段有明文的域名,可以用作上网行为分析。后来data传输是全加密的
本次迷惑行为是因为Charles http代理引起。一直只是简单使用代理,没有对http代理有更深入的了解。还需继续学习
1
BrettD 2020-06-18 17:42:34 +08:00
|
2
Aliencn 2020-06-18 18:08:26 +08:00
你自己不都已经通过抓包看出来了?
|
3
leafre 2020-06-18 18:38:02 +08:00
获取不到信息,能获取到还叫 SSL
|
4
hatebugs 2020-06-18 18:41:08 +08:00
show your pcap
|
5
unixeno 2020-06-18 20:58:41 +08:00 via Android 1
会加密所有 http 的内容
开 sni 扩展之后会在 ssl 握手的时候带上域名,不然服务器不知道要给你谁的证书 |
6
supermoonie 2020-06-18 21:47:35 +08:00 via iPhone
顶多能看到 CONNECTING 这一行,剩下的全部加密
|
7
flynaj 2020-06-18 22:27:27 +08:00 via Android
域名是可以看到的,要匹配证书,user-agent 看不到。
|
8
zzetao 2020-06-18 23:05:59 +08:00
HTTPS 是在 应用层 (HTTP) 与 传输层 (TCP) 之间架了一层 TLS/SSL,加密内容是 HTTP 所有内容。
除了 TCP/IP 的数据包,想象一下,如果 TCP/IP 都加密了,那路由器等等怎么找到目标 IP/端口 去传输数据? |
9
ysc3839 2020-06-19 06:27:19 +08:00 via Android 1
整个 HTTP 协议都是加密的,只能获取 TLS 协议的一些信息,比如 SNI 、证书。
|
13
ileeoyo OP @leafre 可以获取到域名啊,这也可以做上网行为分析。比如我有一个路由器的管理权,我想知道除了域名其他的还有没有能获取的
|
16
nieqibest 2020-06-19 09:01:49 +08:00 via Android
我猜楼主不会科学上网
|
17
no1xsyzy 2020-06-19 09:04:19 +08:00 1
草,生了出来
CONNECT 是通过 HTTP 协议实现的代理协议的谓语,而不是 HTTPS 协议的谓语 200 的状态描述也是 Connection established 而不是 OK |
19
monkeyWie 2020-06-19 09:11:32 +08:00 1
那是因为你用的 http 代理抓的包,正常是没有 CONNECT 请求的,这个是和代理服务器的握手
|
20
illl 2020-06-19 09:12:46 +08:00 via iPhone 1
请在 Wireshark 下抓 https 的包
|
22
arloor 2020-06-19 09:23:55 +08:00
你这是在 connect 连代理,练完之后传输的才是被 http over tls 的东西,也就是一串乱码
要理解这个东西,你去搜下 http connect 方法就行。 需要自成体系的学习,咋遇到个问题上 V2EX 呢 |
23
qwerthhusn 2020-06-19 09:30:24 +08:00 3
代理服务器而已,想要理解 TLS 的数据包
去 Wireshark 抓包去看,不要经过代理 https://tls13.ulfheim.net/ https://tls13.ulfheim.net/ 这两个网址,作者做的挺有意思,图示全程分析了 tls 握手的每一步中的每一个字节是什么意思 |
24
smallpython 2020-06-19 09:34:38 +08:00
问题是个好问题, 楼主你不要在意有些莫名其妙的回答
而且我遇到过抓包工具自动读取系统私钥把包解密出来再呈现在屏幕上, 让当时的我以为加密了也能看见明文....... |
25
sujin190 2020-06-19 09:35:19 +08:00
这不是连接你代理服务器的信息么,不明文你咋代理连接
|
26
ileeoyo OP @qwerthhusn 感谢感谢,我已经 wireshark 抓包看了
|
27
caola 2020-06-19 09:41:53 +08:00
HTTP/3 和 ESNI 已经在路上了,DNSsec/DoT/DoH 也在慢慢得到支持
|
28
monkeyWie 2020-06-19 09:44:02 +08:00
@ileeoyo 是的,用 wireshark 就看不到了,但是 tls client hello 里还是会有 SNI 扩展暴露域名,不过现在好像有 ESNI 来做加密了
|
29
holyzhou 2020-06-19 09:53:27 +08:00
@qwerthhusn 两个地址重复的 请问另一个地址是什么?
|
30
ileeoyo OP @smallpython 楼上很多人还是给了很多好的意见,不过确实也有人回复和话题不相关。有时确实在不熟悉的地方有些疑惑,帖子出来以后别人搜索也有个好的借鉴
|
31
ileeoyo OP @caola doh/dot 目前也还没广泛支持,我也在持续关注,毕竟我目前的网络环境就有 dns 劫持的问题,太难受了
|
32
ileeoyo OP @qwerthhusn 感谢,我去看看
|
34
ileeoyo OP @arloor 只是一时很迷惑不知道从何搜起,比如这里你给了关键词 http connect 去搜索学习就快得多了。也给后来的人一些借鉴吧
|
37
no1xsyzy 2020-06-19 17:55:01 +08:00
@smallpython #24 不对啊,这应该是不可能的。TLS 是在用户态每个应用独立实现的,握手产生的一次性密钥应该不会出现在系统里(当然,系统可能会自带一些库,但内容是在进程里的)。
而系统内能读到的是公开的证书,包含的公钥也是无法单方面解密的。 你指的可能是自动往系统内插根证书?这是提权操作,即使没有让你亲手操作也是很明确地提示你这一操作破坏了你机器上 HTTPS 的完整性。 |
38
smallpython 2020-06-22 09:45:15 +08:00
@no1xsyzy 我理解你只要有私钥就可以解密吧, 一般不是存在系统的某一个文件夹下嘛(具体是哪个我也不知道....)
|
39
no1xsyzy 2020-06-22 10:21:28 +08:00
@smallpython #38 因为你说的是私钥,这是非对称加密的术语,所以我认为你是指 TLS 层握手前已经确定的非对称密钥对中的私钥。这个私钥只存在于服务器上,不存在于你本地。对应的公钥则附在证书内分发,一般与域名绑定。也就是说,私钥基本固定到域名,拥有特定私钥即可向任何人伪装这些域名身份。
而且即使拥有私钥也是无法旁观者的,因为非对称加密的效率是比较低的,所以目前来说非对称加密是用来安全地交换一个一次性密钥的。一旦交换完成,这一密钥只存在于每个客户端 /浏览器的用户空间内。所以你必须通过中间人攻击的方法,在两侧使用不同但中间人均知晓的一次性密钥,每次中间人均先解密再加密。 |
40
smallpython 2020-06-22 11:30:41 +08:00
@no1xsyzy 服务器发给我的数据包我不是也要用本地的私钥来解密吗?你的意思是这个私钥每次都是重新生成且存在浏览器的内存中的吗?我一直以为是存在某一个文件里, 是固定的, 除非手动删除再重新生成, 不然不会变.....
|
41
no1xsyzy 2020-06-22 11:51:45 +08:00
@smallpython #40 本地没有私钥,只有公钥(通过证书链分发,存储于内存或长期存储(根证书,或者一些应用用于证书固定))和对称密钥( nonce,Number ONCE,存储于内存,每次握手时生成)。
nonce 不分公私,两边是相同的。 nonce 是每次握手时重新生成的,除了客户端侧生成、通过非对称传递的随机数以外,服务器侧也会每次生成随机数参与 nonce 的生成,避免客户端实现不完全导致的安全性丧失。具体技术上似乎有三个随机数参与 nonce 生成。 我觉得提示了并且被你主观忽略了是有可能的。仅仅上述业余的安全知识就够人吃一壶的了。 |
42
weifan 2020-11-29 23:17:10 +08:00
所以最后结论是啥?都加密了哪些🤣
|