我的意思是,例如,如果我在 Facebook 上,我从 NIC 发出的每个数据包都是加密的。但是在加密之前必须有该数据包的阶段。浏览器(我认为)必须创建该数据包并在之后对其进行加密。因此,如果我在创建这些数据包的机器上,我能否在加密之前看到它们?
如果是,是否有恶意软件能够做到这一点?我认为使用管理员/root 权限可以肯定它可以,但是没有它们怎么办?
我的意思是,例如,如果我在 Facebook 上,我从 NIC 发出的每个数据包都是加密的。但是在加密之前必须有该数据包的阶段。浏览器(我认为)必须创建该数据包并在之后对其进行加密。因此,如果我在创建这些数据包的机器上,我能否在加密之前看到它们?
如果是,是否有恶意软件能够做到这一点?我认为使用管理员/root 权限可以肯定它可以,但是没有它们怎么办?
随着浏览器扩展的可用性,实际读取流量应该是非常可行的。如果恶意软件和 Web 浏览器都以同一用户身份运行(因此可以写入浏览器配置文件目录),则可以相对轻松地安装浏览器扩展。
您还可以打开Web Developer Tools,通常可以通过按下F12并访问Networking选项卡来访问。这将在加密并推送到网络之前向您显示所有流量。
以上方法是不干扰通信的被动方式。主动方法执行中间人 (MitM) 攻击,并在数据被转发之前实际修改数据(Tylerl 描述了 Fiddler 的示例)。
在浏览器调用将其放入网络之前,浏览器的网络流量会被加密send()
。所以要在加密之前拦截它,你必须在它被发送之前拦截它——也就是说,在浏览器本身内。这并非不可能,但需要大量工作。
另一种方法是设置一个“中间人”代理,例如fiddler,它会在流量离开您的网络之前对其进行解密,对其进行检查,然后在离开网络时对其进行重新加密。通常 SSL 旨在防止这种情况发生,因此您需要计算机的一些配合才能允许它(即您的浏览器必须信任 fiddler 的公钥),但这都是您设置 fiddler 的一部分,所以很好- 足够的记录。
浏览器(我认为)必须创建该数据包并在之后对其进行加密。因此,如果我在创建这些数据包的机器上,我能否在加密之前看到它们?
不,这不是它的工作原理。在浏览器内部,数据是加密的,只有加密数据在浏览器和网络堆栈之间传递。网络堆栈将加密数据拆分为数据包,并将从数据包中接收到的加密数据重新组合成数据流,供浏览器解密。浏览器处理的级别根本没有任何数据包,浏览器处理加密和解密。
所以你的问题是基于一个错误的前提。