gpt4 book ai didi

linux - 是否可以拦截本地程序未加密的HTTPS请求体?

转载 作者:行者123 更新时间:2023-12-02 09:37:57 26 4
gpt4 key购买 nike

是否可以编写一个通用的 EBPF 程序来读取所有用户空间程序的未加密 HTTPS 请求和响应主体?

据我了解,EBPF 处理网络第 2、3 和 4 层的数据包。 HTTPS 有效负载在这些数据包中加密,因此 EBPF 可以读取数据包元数据,但不能读取构成 HTTPS 请求/响应的有效负载?

这样做是将日志记录添加到用户空间程序的唯一方法吗?

最佳答案

正如@Qeole 和@Maxim 所解释的那样,如果有效负载在用户空间中加密,您将不得不求助于中间人。还有一种情况:有效载荷可以在内核中用 kTLS 加密 .

如果用户空间进程依赖于kTLS,那么握手仍然在用户空间进行,但后续消息会在内核中进行加密。在这种情况下,您可以 附加类型为 BPF_PROG_TYPE_SK_MSG 的 BPF 程序在 TLS ULP 层 在内核中。

您可以在内核测试中找到此类设置的示例,即 test_sockmap .在该示例中,TLS 连接是在用户空间中设置的 sockmap_init_ktls() .对应的 BPF 程序在 test_sockmap_kern.h .

kTLS 相对较新,所以在我写这个答案时它显然是一个极端情况。然而,随着用户空间库开始透明地使用它,它可能会变得更加普遍。例如,OpenSSL 合并 support for kTLS一年多以前。

关于linux - 是否可以拦截本地程序未加密的HTTPS请求体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59570356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com