Sekiro+Yakit 热加载无痛绕sign
字数 1363 2025-08-22 12:23:06

Sekiro与Yakit热加载无痛绕Sign技术详解

1. 背景与问题概述

在Web安全与逆向工程中,经常会遇到需要绕过签名验证(sign)的场景。传统方法需要完整分析加密算法并还原加密链,但面临以下挑战:

  • 多层加密或自研算法
  • 代码混淆严重
  • 算法复杂度高
  • 存在反调试机制(如无限debugger)

本文介绍基于Sekiro框架和Yakit热加载技术的无痛绕签方案,无需完全理解算法细节即可实现签名绕过。

2. 技术原理

2.1 JSRPC技术

JSRPC(JavaScript Remote Procedure Call)是一种远程调用JavaScript函数的技术,其工作原理:

  1. 在客户端(浏览器)注入JSRPC环境
  2. 建立与JSRPC服务器的WebSocket连接
  3. 注册需要调用的加解密函数
  4. 服务器通过WebSocket发送调用请求
  5. 客户端执行函数并返回结果

2.2 Sekiro框架

Sekiro是基于JSRPC的封装框架,主要特点:

  • 提供稳定的WebSocket通信通道
  • 简化函数注册和调用流程
  • 支持多语言客户端调用
  • 内置负载均衡和故障转移

3. 实战演示:绕过签名验证

3.1 目标分析

目标场景:实名认证接口

  • 无频率限制但存在签名验证
  • 关键参数:APP_TIME、APP_LICENSE_ID
  • 签名函数:dd()
  • 签名生成逻辑:sign=dd(l + cl + r + s, r)
    • l = APP_TIME
    • cl = APP_LICENSE_ID
    • r = appKey
    • s = URL编码后的姓名和身份证号

3.2 反调试绕过

目标网站设置了无限debugger反调试,绕过方法:

var _constructor = constructor;
Function.prototype.constructor = function (s) {
    if (s == "debugger"){
        console.log(s)
        return null;
    }
    return _constructor(s)
}

配合Chrome开发者工具的"一律不在此处暂停"选项,可有效绕过。

3.3 签名函数定位

  1. 通过删减参数法确定影响签名的参数
  2. 在JS代码中搜索关键参数(APP_TIME、APP_LICENSE_ID)
  3. 定位到签名函数dd()
  4. 通过断点调试确认函数调用逻辑

3.4 Sekiro环境搭建

  1. 下载并启动Sekiro服务端(默认端口5612)
  2. 在浏览器控制台注入以下代码(需修改4处关键点):
// 修改1: WebSocket地址改为本地
// 修改2: 自定义group名称
// 修改3: 自定义action名称
// 修改4: 实际业务逻辑

(function(){
    var client = new SekiroClient("ws://127.0.0.1:5612/business/register?group=wsyu9a&clientId="+Math.random().toString(36).substr(2));
    client.registerAction("signDecrypt",function(request, resolve, reject){
        // 这里实现签名生成逻辑
        var result = dd(request['data1'], request['data2']);
        resolve(result);
    })
})()
  1. 将目标签名函数(dd)作用域提升至全局

3.5 Python客户端调用

import requests

data = {
    "group": "wsyu9a",  # 与注册时一致
    "action": "signDecrypt",  # 与注册时一致
    "data1": "参数1",  # 对应dd函数第一个参数
    "data2": "参数2"   # 对应dd函数第二个参数
}

res = requests.get("http://127.0.0.1:5612/business/invoke", params=data)
print(res.text)

3.6 Yakit热加载实现

在Yakit中创建热加载脚本:

signDecryot = func(sfz) {
    APP_TIME = '1735326352548'
    APP_LICENSE_ID = '1730789038315978754'
    appKey = '9b5a1fa345624fdf937312eb93aabe4e'
    s=codec.EscapeQueryUrl('张三')+'&'+sfz+'&' 
    
    data1=APP_TIME+APP_LICENSE_ID+appKey+codec.EncodeUrl(s)
    data2=appKey
    
    rsp = http.Get(f"http://127.0.0.1:5612/business/invoke?group=wsyu9a111&action=signDecrypt&data1=${data1}&data2=${data2}")
    return json.Find(rsp.Data(), "$.data")
}

4. 技术优势

  1. 无需逆向算法:直接调用目标网站的JS函数,无需理解内部实现
  2. 实时生效:修改后立即生效,无需重启或重新部署
  3. 跨语言调用:任何语言都可以通过HTTP/WebSocket调用JS函数
  4. 批量处理:可轻松实现批量自动化操作
  5. 动态调试:结合浏览器调试工具,方便验证和调整

5. 注意事项

  1. 确保目标函数已提升至全局作用域
  2. 保持Sekiro服务端稳定运行
  3. 注意WebSocket连接的安全性(生产环境建议使用wss)
  4. 对于频繁变更的签名算法,需要及时更新注册的函数
  5. 合理设置超时和重试机制,避免因网络问题导致失败

6. 参考资源

  1. Sekiro官方文档: https://sekiro.iinti.cn/sekiro-doc/
  2. 双层mitmproxy代理实现自动化加解密
  3. JSRPC技术原理详解

通过这套方案,安全研究人员可以高效绕过复杂的签名验证机制,专注于核心业务逻辑的分析和测试。

Sekiro与Yakit热加载无痛绕Sign技术详解 1. 背景与问题概述 在Web安全与逆向工程中,经常会遇到需要绕过签名验证(sign)的场景。传统方法需要完整分析加密算法并还原加密链,但面临以下挑战: 多层加密或自研算法 代码混淆严重 算法复杂度高 存在反调试机制(如无限debugger) 本文介绍基于Sekiro框架和Yakit热加载技术的无痛绕签方案,无需完全理解算法细节即可实现签名绕过。 2. 技术原理 2.1 JSRPC技术 JSRPC(JavaScript Remote Procedure Call)是一种远程调用JavaScript函数的技术,其工作原理: 在客户端(浏览器)注入JSRPC环境 建立与JSRPC服务器的WebSocket连接 注册需要调用的加解密函数 服务器通过WebSocket发送调用请求 客户端执行函数并返回结果 2.2 Sekiro框架 Sekiro是基于JSRPC的封装框架,主要特点: 提供稳定的WebSocket通信通道 简化函数注册和调用流程 支持多语言客户端调用 内置负载均衡和故障转移 3. 实战演示:绕过签名验证 3.1 目标分析 目标场景:实名认证接口 无频率限制但存在签名验证 关键参数:APP_ TIME、APP_ LICENSE_ ID 签名函数:dd() 签名生成逻辑: sign=dd(l + cl + r + s, r) l = APP_ TIME cl = APP_ LICENSE_ ID r = appKey s = URL编码后的姓名和身份证号 3.2 反调试绕过 目标网站设置了无限debugger反调试,绕过方法: 配合Chrome开发者工具的"一律不在此处暂停"选项,可有效绕过。 3.3 签名函数定位 通过删减参数法确定影响签名的参数 在JS代码中搜索关键参数(APP_ TIME、APP_ LICENSE_ ID) 定位到签名函数dd() 通过断点调试确认函数调用逻辑 3.4 Sekiro环境搭建 下载并启动Sekiro服务端(默认端口5612) 在浏览器控制台注入以下代码(需修改4处关键点): 将目标签名函数(dd)作用域提升至全局 3.5 Python客户端调用 3.6 Yakit热加载实现 在Yakit中创建热加载脚本: 4. 技术优势 无需逆向算法 :直接调用目标网站的JS函数,无需理解内部实现 实时生效 :修改后立即生效,无需重启或重新部署 跨语言调用 :任何语言都可以通过HTTP/WebSocket调用JS函数 批量处理 :可轻松实现批量自动化操作 动态调试 :结合浏览器调试工具,方便验证和调整 5. 注意事项 确保目标函数已提升至全局作用域 保持Sekiro服务端稳定运行 注意WebSocket连接的安全性(生产环境建议使用wss) 对于频繁变更的签名算法,需要及时更新注册的函数 合理设置超时和重试机制,避免因网络问题导致失败 6. 参考资源 Sekiro官方文档: https://sekiro.iinti.cn/sekiro-doc/ 双层mitmproxy代理实现自动化加解密 JSRPC技术原理详解 通过这套方案,安全研究人员可以高效绕过复杂的签名验证机制,专注于核心业务逻辑的分析和测试。