吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 655|回复: 11
收起左侧

[其他原创] 识别客户端是否使用OpenSSL

[复制链接]
HOWMP 发表于 2024-9-30 11:38

whatssl

识别客户端是否使用OpenSSL,检测网站 https://whatssl.guage.cool:8443/

由于Python,PHP等都使用OpenSSL,也会这可以成为反爬的一个特征

原理

当tls密钥协商结束(ChangeCipherSpec),开始进入加密通信后

如果使用AEAD算法(这也是推荐算法)

  1. 那么使用sequence number(64bit)作为nonce
  2. sequence number也会发送,作为Record数据的前8个字节
  3. sequence number必须从0开始

由于OpenSSL的sequence number没有从0开始,导致其可以轻松被识别

https://www.rfc-editor.org/rfc/rfc5246#page-19

Each connection state contains a sequence number, which is
maintained separately for read and write states.  The sequence
number MUST be set to zero whenever a connection state is made the
active state.  Sequence numbers are of type uint64 and may not
exceed 2^64-1.  Sequence numbers do not wrap.  If a TLS
implementation would need to wrap a sequence number, it must
renegotiate instead.  A sequence number is incremented after each
record: specifically, the first record transmitted under a
particular connection state MUST use sequence number 0.

测试

Name OpenSSL Note
chrome N boringssl
powershell N schannel?
Java N JSSE
python Y OpenSSL
php Y OpenSSL
curl Y OpenSSL

powershell

Invoke-WebRequest https://whatssl.guage.cool:8443/ | Select -ExpandProperty Content

python

python -c "print(__import__('requests').get('https://whatssl.guage.cool:8443/').text)"

php

<?php
echo file_get_contents("https://whatssl.guage.cool:8443/");

curl

curl  https://whatssl.guage.cool:8443/



特征包见图

image.png

代码见: https://github.com/howmp/whatssl

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
侃遍天下无二人 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

sisiisthinking 发表于 2024-11-12 18:02
有意思,感谢楼主分享。话说这个不符合 rfc 的行为是有什么用意吗?还是只是 openssl 实现上的缺陷。

顺便,要绕过的话可以去看看这俩项目:

https://github.com/lexiforest/curl_cffi?tab=readme-ov-file
https://github.com/jonatron/boringssl-python-cffi
BTFKM 发表于 2024-10-15 09:40
本帖最后由 BTFKM 于 2024-10-15 09:45 编辑

https://github.com/lexiforest/curl_cffi 前排给出答案

[Asm] 纯文本查看 复制代码
from curl_cffi import requests
res = requests.get('https://whatssl.guage.cool:8443/', impersonate="chrome101")
print(res.text)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
HOWMP + 1 + 1 我很赞同!

查看全部评分

Knight23 发表于 2024-10-1 23:36
三滑稽甲苯 发表于 2024-10-2 14:27
如果自行编译一个从 0 开始的 openssl,是不是就无法检测了
abcduuz 发表于 2024-10-3 09:44
这也能识别?
 楼主| HOWMP 发表于 2024-10-5 09:05
三滑稽甲苯 发表于 2024-10-2 14:27
如果自行编译一个从 0 开始的 openssl,是不是就无法检测了

是的,但openssl代码太乱了,我没找到应该改哪里
yuleniwo 发表于 2024-10-12 08:47
ubuntu24.04下自带的firefox测试了下也是显示OpenSSL
jhonch 发表于 2024-10-13 14:44
感谢分享
 楼主| HOWMP 发表于 2024-10-15 10:40
BTFKM 发表于 2024-10-15 09:40
https://github.com/lexiforest/curl_cffi 前排给出答案

[mw_shl_code=asm,true]from curl_cffi import  ...

curl_cffi依赖curl-impersonate,而curl-impersonate使用的BoringSSL,所以就检测到不是openssl
BTFKM 发表于 2024-10-15 13:36
HOWMP 发表于 2024-10-15 10:40
curl_cffi依赖curl-impersonate,而curl-impersonate使用的BoringSSL,所以就检测到不是openssl

互联网代码这么多年了, 屎山已经搬不动了, 什么must不must的, must不了就是feature
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-16 03:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表