惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
Recent Announcements
Recent Announcements
Vercel News
Vercel News
M
MIT News - Artificial intelligence
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
H
Help Net Security
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog
G
Google Developers Blog
罗磊的独立博客
爱范儿
爱范儿
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
月光博客
月光博客
人人都是产品经理
人人都是产品经理
Apple Machine Learning Research
Apple Machine Learning Research

吹比💨

NFS 服务引发的一次“诡异”应急响应 银狐使用WDAC来对抗杀软 浏览器第三方Cookie保护导致无法使用Github.dev 使用pushState伪造浏览器地址栏 一次排查网站劫持过程流水账 手动导出 Microsoft Authenticator 中的2FA密钥 使用CloudFlare的IP Lists功能来做访问控制 FrontJS网站错误监控插件存在弹窗广告 宝塔面板可能存在未知漏洞的分析与处置方法 CDN厂商解决域前置问题 中文域名那些事 [A-Z]{2}\d{2}.cc 团伙的一些公开信息 Azure旗下奇怪的静态托管服务 Csrf与浏览器第三方Cookie策略的问题 Pppoe密码嗅探 Publicsuffix那些事 一次有意思的域名追踪 CobaltStrike通信中host字段的获取 XFF那些事 CORB那些事 Referrer Policy那些事 使用CloudFlare来为网站开启客户端证书验证 DNS那些事 用flask来在线管理你的iptables 屏蔽掉向日葵的有效方法 帝国cms在防止内容采集方面做的工作 身份验证器是如何验证我们的身份? 利用GoogleAppsScript自动回复短信实现保号 Nginx实用模块 有关跨域请求的一些记录
TLS握手指纹(JA3/JA3S)检测恶意软件流量
榆木 · 2022-06-18 · via 吹比💨

前言

最近互联网冲浪,经常看到一个话题。那就是

您的腾讯云账号(账号ID:xxxxx,昵称:xxxxx)下的设备(IP:xxxxx)存在通过技术手段使其成为跨境访问节点等行为

而腾讯云给出的理由是,检测到访问受限网站且和境内有流量传输。在我看来,这不过是搪塞用户的说辞,如果将真正的检测点公布就意味着绕过;并且以机房为单位进行单纯此行为检测的话,误报会非常大,是完全无法进行运营的。正当我好奇腾讯云是如何精准检测的时候,看到如下帖子内容。 瞬间就明白大致情况。

概念最早由salesforce的工程师(https://github.com/salesforce/ja3 )提出,通过TLS握手字段中的 SSLVersion,Cipher,SSLExtension,EllipticCurve,EllipticCurvePointFormat 信息进行计算得出hash,通过该hash来标记SSL握手中客户端、服务端特征。client hello计算出的为ja3,server hello中计算出的为ja3s。

什么是JARM?

概念由salesforce的工程师(https://github.com/salesforce/jarm )提出,JA3/JA3S是在流量被动监听中得到,而JARM则是主动探测得到。由client指定不同的TLS版本、支持套件去试探服务器的响应情况。通过探测的结果形成hash来标记服务器的特征。

可以用来做什么?

两者均是TLS信息(版本、支持套件)的简化表现形式。所以JA3/JA3S可以用来标记特质的客户端、服务端所产生的流量,例如CobaltStrike,目前看到的是CobaltStrike服务端JA3S指纹如下: JA3指纹则根据客户端的不同环境(系统版本等)有变化。Suricata支持ja3关键字,可以直接通过指纹形成规则。

JARM则可以用来威胁狩猎:

回到开头

正如帖子中说到的那样,楼主的FRP被腾讯云识别到。(当然,FRP默认就有很多的特征可以用来识别)巧合的是某款流行的“射线”代理工具(该工具有V2和X两个版本,此处不再具体指明)和FRP一样,都是Golang写的,本地测试一下,得到其握手JA3/JA3S、JARM。通过最新版本的JARM进行测绘:

根据版本的变化会有不同的指纹表现,相信全部拿到也只是时间问题。云供应商 完全可以通过此JA3、JA3S规则进行初步筛选租户的流量,辅以主动探测JARM、流量境内外差值情况佐证,相信准确率可以大大提升。

如何规避?

使用流量基数大的客户端、服务端指纹进行中转,例如:服务端使用Nginx、Apache等主流中间件进行反向代理,客户端在直接链接到服务端之前先过本地的主流中间件中转。或者从底层修改掉相关指纹的表达(此处不再具体延申)。

其他

本文所提到的所有内容均在存在TLS握手过程的情况下才可复现,单纯HTTP流量不适用。

试了一下。挖矿的恶意流量也会表现出特有指纹。