github.com/gojue/ecapture@v0.8.2/tests/issue_463/readme.md (about)

     1  ## 背景介绍
     2  在eCapture社区的issue 463:[TLS 模式下,对被检测程序的性能影响](https://github.com/gojue/ecapture/issues/463)提到,eCapture启用后,对程序带来较大性能影响。
     3  
     4  
     5  ## 解决思路
     6  选择低频的、有符号表导出的、可取密钥的函数进行HOOK。
     7  参见 [PR 471](https://github.com/gojue/ecapture/pull/471)
     8  
     9  ## 环境搭建
    10  
    11  ### TLS Server
    12  1. 在ubuntu 22.04 上执行sudo apt install nginx
    13  2. 开启SSL 443的服务(这里我以我的博客域名为例)
    14  3. 在本目录,执行make,编译测试的客户端进程
    15  
    16  ## 执行测试
    17  
    18  ### 原生测试
    19  ```shell
    20  time ./openssl_client
    21  
    22  real	0m5.677s
    23  user	0m3.088s
    24  sys	0m2.565s
    25  ```
    26  
    27  #### 启用eCapture后测试
    28  **运行eCapture**
    29  新开一个终端,打开eCapture的`keylog`模式
    30  ```shell
    31  sudo bin/ecapture tls -m keylog
    32  [sudo] password for cfc4n:
    33  tls_2024/01/27 13:42:55 ECAPTURE :: ecapture Version : linux_aarch64:0.7.2-20240104-f368e82:[CORE]
    34  tls_2024/01/27 13:42:55 ECAPTURE :: Pid Info : 124787
    35  tls_2024/01/27 13:42:55 ECAPTURE :: Kernel Info : 5.15.131
    36  tls_2024/01/27 13:42:55 EBPFProbeOPENSSL	module initialization
    37  tls_2024/01/27 13:42:55 EBPFProbeOPENSSL	master key keylogger: ecapture_openssl_key.og
    38  tls_2024/01/27 13:42:55 ECAPTURE ::	Module.Run()
    39  tls_2024/01/27 13:42:55 EBPFProbeOPENSSL	Keylog MODEL
    40  tls_2024/01/27 13:42:55 EBPFProbeOPENSSL	OpenSSL/BoringSSL version not found from shared library file, used default version:linux_default_3_0
    41  tls_2024/01/27 13:42:55 EBPFProbeOPENSSL	HOOK type:2, binrayPath:/usr/lib/aarch64-linux-gnu/libssl.so.3
    42  tls_2024/01/27 13:42:55 EBPFProbeOPENSSL	Hook masterKey function:[SSL_get_wbio SSL_in_before]
    43  tls_2024/01/27 13:42:55 EBPFProbeOPENSSL	target all process.
    44  tls_2024/01/27 13:42:55 EBPFProbeOPENSSL	target all users.
    45  tls_2024/01/27 13:42:55 EBPFProbeOPENSSL	BPF bytecode filename:user/bytecode/openssl_3_0_0_kern.o
    46  tls_2024/01/27 13:42:55 EBPFProbeOPENSSL	perfEventReader created. mapSize:4 MB
    47  tls_2024/01/27 13:42:55 EBPFProbeOPENSSL	module started successfully.
    48  tls_2024/01/27 13:42:55 ECAPTURE :: 	start 1 modules
    49  tls_2024/01/27 13:42:59 EBPFProbeOPENSSL	TLS1_2_VERSION: save CLIENT_RANDOM 8516901707503cfcfb0b63d02adc5deba9f7bc3e64418212f4a9c7b0c4007cca to file success, 176 bytes
    50  ^Ctls_2024/01/27 13:43:15 EBPFProbeOPENSSL	close.
    51  tls_2024/01/27 13:43:15 EBPFProbeOPENSSL	close
    52  ```
    53  
    54  **运行测试程序**
    55  ```shell
    56  time ./openssl_client
    57  
    58  real	0m7.133s
    59  user	0m4.735s
    60  sys	0m2.394s
    61  ```
    62  
    63  ### 结果
    64  可以看到,当使用`keylog`模式后,耗时从30秒下降到7秒。