jetbrains新的绕过方式

查看 159|回复 11
作者:openais   
我看论坛有通过屏蔽注册窗口绕过注册的,这种只是对ide有效,对于插件就没用了。网络上也基本上是key和server方式的,对于账户模式很少介绍。
账户模式和server模式有很多相似之处,返回的都是xml格式数据,区别在于,server模式的server地址是可以自己填的,可以自定义,账户模式不是,这个是内置且固定的,而且只支持https协议。我们如果想自己实现这种方式,至少需要两步,第一改变dns解析,指向我们的服务器;第二就是实现https校验,检验不通过https通信也建立不了。
https://bbs.kanxue.com/thread-251584.htm
这个文档已经分析了思路,dns是通过反射修改缓存实现的,https通过修改"sun/net/www/protocol/https/Handler”实现的。
但是jdk21以后由于模块化的验证强了,再调用反射模块会失败,没有采用,优化后的方式是agent方式修改InetAddress的解析返回结果。
对于修改Handler实现感觉影响较大,又看到一篇新的帖子
https://linux.do/t/topic/116435/36
这个方法可以插入到ssl证书链中,调用流程如下
[Java] 纯文本查看 复制代码at java.base/java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java)
at java.base/sun.security.provider.certpath.PKIXExtendedParameters.(PKIXExtendedParameters.java:55)
at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:218)
at java.base/sun.security.validator.Validator.validate(Validator.java:264)
at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:242)
at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:113)
at com.intellij.util.net.ssl.ConfirmingTrustManager.checkServerTrusted(ConfirmingTrustManager.java:209)
at com.intellij.util.net.ssl.ConfirmingTrustManager.lambda$checkServerTrusted$2(ConfirmingTrustManager.java:179)
at com.intellij.util.net.ssl.ConfirmingTrustManager.withCalculatedCertificateStrategy(ConfirmingTrustManager.java:190)
at com.intellij.util.net.ssl.ConfirmingTrustManager.checkServerTrusted(ConfirmingTrustManager.java:176)
at java.base/sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:1441)
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1335)
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1226)
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1169)
at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)
at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480)
... 34 more
既然可以插入证书认证链,我们就制作一个根证书插入进去,然后用自己根证书制作网站证书了,https认证就通过了。
解决了这两个问题基本就没啥难度了,研究服务器返回的数据自己生成就可以了,为了获得样本,自己还购买了一个学生账户,花了三十来块。
最后效果如下:


Image_1724420546527.gif (204.42 KB, 下载次数: 0)
下载附件
2024-8-24 20:53 上传

附件的插件目录有updns.jar和pki.jar,这两个是dns解析和证书链注入的,其他插件都是ja-netfilter的常见插件了,仅供研究,请及时删除。

证书, 方式

openais
OP
  


st0rm 发表于 2024-8-26 09:02
从未设想过的道路

这两个插件结合,实际作用很大的,不止这一个场景,都可以魔改自己的服务。
openais
OP
  


Zxis 发表于 2024-8-25 12:44
抓网络日志看了一下,似乎updns没生效,没有将account.jetbrains.com的DNS劫持。这是否代表javaagent没有 ...

命令行下启动ide,比如idea是bin目录下的idea.bat
首先开启日志输出
set JANF_DEBUG=1
然后启动ide
idea.bat
如果ja-netfilter生效会有输出,这个是所有插件生效的前提
[Asm] 纯文本查看 复制代码
============================================================================
    ja-netfilter 2022.2.0
    A javaagent framework :)
    https://github.com/ja-netfilter/ja-netfilter
  ============================================================================
updns如果生效,你点击账户激活有如下日志,估计有大量pki的日志,需要仔细看
[Asm] 纯文本查看 复制代码
2024-08-25 12:49:43.285 DEBUG [ApplicationImpl pooled thread 7@16936] my.sample.plugin.DnsFilter-40 : Inject dns: account.jetbrains.com.cn, by: jetbrain.live
梦毁他城   

mac 下怎么操作呀,只要执行 sudo bash install.sh 就可以 激活了吗
lqyppp   

这个方法不错,每次都是通过认证服务器的链接来弄的,经常提示No matching licenses left on the server
sdieedu   

咋使用啊一脸雾水
openais
OP
  


梦毁他城 发表于 2024-8-25 01:33
mac 下怎么操作呀,只要执行 sudo bash install.sh 就可以 激活了吗

这个也是基于ja-netfilter的,只不过加了两个新的插件,没有mac电脑,我实际没有测试过,你可以试试。
openais
OP
  


lqyppp 发表于 2024-8-25 02:27
这个方法不错,每次都是通过认证服务器的链接来弄的,经常提示No matching licenses left on the server

一般是不会,除非网络真不好,网上server各种语言都有,可以本地搭建就稳定了,思路都有了,自己可以改。
openais
OP
  


sdieedu 发表于 2024-8-25 06:52
咋使用啊一脸雾水

基本就是解压到非中文目录,根据系统运行script目录下的安装脚本,用account方式激活,没有登陆需要先登陆,登陆是跳转浏览器的。
fireworld   

哈哈 可以啊 平时凑合用社区版就行
您需要登录后才可以回帖 登录 | 立即注册