最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
基于Chrome MCP和AI的红队自动化加解密工作流
时间:2026-07-26 10:13:57 编辑:袖梨 来源:一聚教程网
https://forum.butian.net/ai_security/188

# 基于Chrome MCP与AI的红队自动化加解密工作流
一、研究背景与攻击动机
随着前端加密技术的全面普及,红队测试正面临前所未有的挑战。目标系统的登录接口不再接收明文凭证,取而代之的是经过AES-CBC对称加密或SM2国密算法处理后的密文载荷。部分高安全等级系统甚至采用双重加密策略——先以SM2加密对称密钥,再以AES-CBC加密业务数据,形成多层防护体系。
这一趋势直接导致传统攻击工具体系的结构性失效:|工具/方法|失效原因|表现||:-:|:-:|:-:|
|BurpSuite Intruder|无法生成合法密文|所有爆破请求返回400/403||Hydra/Medusa|不支持加密预处理|无法与目标协议握手|
|自定义字典攻击|明文载荷被服务端拒收|无有效响应||自动化扫描器|缺乏加密载荷生成能力|完全丧失探测功能|
红队迫切需要一套能够穿透前端加密黑箱、自动化完成密钥提取与请求伪造的技术方案。本文基于Chrome DevTools MCP、AI逆向分析与BurpSuite jsrpc,构建了一条端到端的自动化加解密攻击链路,将前端加密防线转化为进攻通道。二、双重加密的技术剖析
### 2.1 常见的双重加密架构
高安全等级系统通常采用混合加密方案,兼顾安全性与性能:
```┌─────────────────────────────────────────────────────────────┐
│ 客户端加密流程 │├─────────────────────────────────────────────────────────────┤
│ ││ 明文数据 ──→ AES-CBC加密 ──→ Base64编码 ──→ 请求体 │
│ ↑ ││ │ │
│ AES密钥 ──→ SM2公钥加密 ──→ 密钥密文 ──→ 请求头 ││ │
└─────────────────────────────────────────────────────────────┘┌─────────────────────────────────────────────────────────────┐│ 服务端解密流程 │
├─────────────────────────────────────────────────────────────┤│ │
│ 密钥密文 ──→ SM2私钥解密 ──→ AES密钥 ││ ↓ │
│ 请求体 ──→ Base64解码 ──→ AES-CBC解密 ──→ 明文数据 ││ │
└─────────────────────────────────────────────────────────────┘```**第一层:非对称加密(SM2/RSA)** — 保护对称密钥的传输安全。前端使用服务端分发的公钥加密AES密钥,确保只有持有私钥的服务端能够解密。
**第二层:对称加密(AES-CBC)** — 保护业务数据的机密性与完整性。使用随机生成的AES密钥加密请求体,密钥本身被非对称加密保护。这一架构的理论安全性在于:攻击者即使截获完整请求,在没有SM2私钥的情况下也无法解密AES密钥,进而无法还原明文数据。
### 2.2 攻击面的重新审视然而,从红队视角看,这一架构存在一个根本性的脆弱点——**加密过程完全发生在客户端**。这意味着:
- 加密算法实现、公钥、IV等所有密码学参数均存在于前端代码中- 加密函数是JavaScript运行时中可被调用的公开接口
- 攻击者可以**直接调用前端加密函数**,而非自行实现算法这一洞察构成了本文攻击方法论的核心:与其逆向算法,不如重用算法;与其提取密钥,不如调用函数。三、自动化攻击架构
### 3.1 整体工作流
本文提出的自动化攻击链路由三个核心组件协同完成:
```┌─────────────────────────────────────────────────────────────┐
│ 阶段一:密钥与逻辑提取 │├─────────────────────────────────────────────────────────────┤
│ ││ Chrome MCP ──→ 自动导航登录页 │
│ ↓ ││ AI自动分析 ──→ 定位加密函数、提取公钥/AES密钥/IV │
│ ↓ ││ jsrpc注入 ──→ 将加密函数暴露为全局可调用接口 │
│ │└─────────────────────────────────────────────────────────────┘
↓┌─────────────────────────────────────────────────────────────┐
│ 阶段二:载荷自动生成 │├─────────────────────────────────────────────────────────────┤
│ ││ AI生成Payload ──→ SQL注入/XSS/越权测试载荷 │
│ ↓ ││ 调用原生加密函数 ──→ 通过jsrpc调用浏览器内加密 │
│ ↓ ││ 生成合法密文 ──→ 可直接提交的有效请求 │
│ │└─────────────────────────────────────────────────────────────┘
↓┌─────────────────────────────────────────────────────────────┐
│ 阶段三:BurpSuite集成 │├─────────────────────────────────────────────────────────────┤
│ ││ BurpSuite插件 ──→ 拦截请求,识别待加密字段 │
│ ↓ ││ jsrpc调用 ──→ 将明文载荷发送至浏览器加密 │
│ ↓ ││ 替换密文 ──→ 自动完成请求加密并转发 │
│ │└─────────────────────────────────────────────────────────────┘
```### 3.2 Chrome MCP:自动化逆向的抓手Chrome DevTools MCP作为MCP协议的浏览器控制实现,使AI能够程序化地操作Chrome浏览器。在攻击流程中,MCP承担以下任务:**任务一:自动导航与状态准备**
```// AI通过MCP执行的自动化操作序列
1.navigate_to("https://target.com/login")2.wait_for_element("#username", timeout=5000)
3.fill_input("#username","test_user")4.fill_input("#password","任意测试密码")
5.click_button("登录")6.capture_network_request("/api/login")
```**任务二:加密函数定位**```
// AI在控制台执行的代码// 搜索加密相关全局对象
constcryptoKeys =Object.keys(window).filter(k=>k.toLowerCase().includes('encrypt') ||
k.toLowerCase().includes('sm2') ||k.toLowerCase().includes('aes')
);console.log('候选加密对象:', cryptoKeys);
// 遍历Vue/React组件树查找加密服务
constapp =document.querySelector('#app').__vue_app__;constcryptoService = app.config.globalProperties.$crypto;
```**任务三:参数提取**```
// 断点提取密钥与IVdebugger;
// 在加密函数入口处执行console.log('AES Key:', key);
console.log('IV:', iv);console.log('SM2 Public Key:', publicKey);
```### 3.3 AI驱动的加密逻辑分析AI模型在接收到MCP捕获的请求和源码后,执行以下分析流程:**第一步:加密类型识别**
|特征|判定|后续动作|
|:-:|:-:|:-:||密文以`04`开头,长度130 字符|SM2|提取公钥,准备SM2加密调用|
|密文为Base64,解码后长度16倍数|AES-CBC|提取Key和IV,确认填充模式||同时存在两种密文|双重加密|定位密钥封装与数据加密的两层逻辑|
**第二步:调用链追踪**AI通过MCP的`evaluate_script`能力,在浏览器中执行JavaScript以追踪加密调用栈:
```// 注入Hook,拦截所有加密相关调用
constoriginalEncrypt =window.encryptFunction;window.encryptFunction =function(...args){
console.trace('Encrypt called with:', args);debugger;// 触发断点,供AI分析上下文
returnoriginalEncrypt.apply(this, args);};
```**第三步:自动化脚本生成**AI根据分析结果,自动生成jsrpc注入脚本,将加密函数暴露给外部BurpSuite调用。
### 3.4 jsrpc:浏览器与BurpSuite的加密桥梁jsrpc技术的核心是在浏览器内维持一个常驻的加密服务,通过WebSocket或HTTP与BurpSuite插件通信。**浏览器端注入脚本**:
```// 通过Chrome MCP注入
(function(){// 定位原始加密函数
constaesKey ="7f3a8b2c5d1e9f4a";constiv ="3c5f7a9b1d3e5f7a";
constsm2PublicKey ="04b9364f5c8a3e2d...";// 封装加密接口window.encryptService = {
// AES-CBC加密aesEncrypt:function(plaintext){
constencrypted = CryptoJS.AES.encrypt(plaintext,CryptoJS.enc.Utf8.parse(aesKey), {
iv: CryptoJS.enc.Utf8.parse(iv),mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7});
returnencrypted.ciphertext.toString(CryptoJS.enc.Base64);},
// SM2加密
sm2Encrypt:function(plaintext){returnSM2Utils.encrypt(sm2PublicKey, plaintext);
},// 双重加密:SM2封装密钥 AES加密数据doubleEncrypt:function(plaintext){
constsessionKey =this.generateSessionKey();constencryptedKey =this.sm2Encrypt(sessionKey);
constencryptedData =this.aesEncryptWithKey(plaintext, sessionKey);return{
key: encryptedKey,data: encryptedData
};}
};// 启动RPC服务constws =newWebSocket("ws://localhost:8080/encrypt");
ws.onmessage =function(msg){constrequest =JSON.parse(msg.data);
constresult =window.encryptService[request.method](request.payload);ws.send(JSON.stringify({id: request.id,result: result }));
};})();
```**BurpSuite插件端**:插件拦截请求后,识别需要加密的字段,将明文通过WebSocket发送至浏览器加密,接收密文后替换原请求内容。
## 四、实战案例:突破双重加密登录接口### 4.1 目标分析某企业后台系统的登录接口采用双重加密架构:**请求格式**:
```POST /api/auth/login HTTP/1.1
Host: admin.target.comContent-Type: application/json
{
"key":"04a3b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4","data":"xK8rP4sL2mN9qR5tY7uW1iE3aG6bH8jK0lZ2xC4vB6nM8pQ0rS2tU4vW6xY8zA0bC2dE4fG6hI8jK0lL2mN4oP6qR8sT0uV2wX4yZ6",
"timestamp":1704067200}
```其中:- `key`字段:SM2加密的AES会话密钥
- `data`字段:AES-CBC加密的业务数据(包含username/password)- `timestamp`:时间戳(明文)
### 4.2 红队工作流执行
**步骤一:Chrome MCP自动化逆向**
使用以下提示词驱动AI完成自动化分析:```
使用 Chrome DevTools MCP js-reverse-automation Skill 对目标站点进行深度登录逆向分析。目标:完整分析登录接口的双重加密逻辑,包括SM2公钥提取、AES密钥生成方式、参数构造流程。
目标站点:
https://admin.target.com/login任务:1. 自动打开登录页,填写测试账号 admin / 123456
2. 抓取登录请求,识别 key 和 data 字段的生成逻辑3. 在 Sources 中定位加密函数,判断是否使用 SM2 AES-CBC 双重加密
4. 提取 SM2 公钥、AES 密钥生成算法、IV 固定值或生成方式5. 自动生成 jsrpc 注入脚本,将加密函数暴露为外部可调用接口
```**步骤二:AI自动定位加密逻辑**AI通过MCP执行以下定位代码:
```// 搜索SM2相关对象
window.sm2;// 输出: {encrypt: ƒ, decrypt: ƒ, utils: {…}}// 搜索AES加密调用// 在network面板的initiator中追踪到 encryptRequest 函数
functionencryptRequest(params){constsessionKey = generateRandomKey(16);// 随机AES密钥
constencryptedKey = sm2.encrypt(publicKey, sessionKey);constencryptedData = aesCbcEncrypt(JSON.stringify(params), sessionKey, iv);
return{key: encryptedKey,data: encryptedData };}
```**关键发现**:- AES密钥**每次请求随机生成**,无法通过静态提取获得
- 但加密函数**完全暴露在客户端**,可被直接调用- IV为**固定值** `3c5f7a9b1d3e5f7a`
**步骤三:jsrpc注入与BurpSuite集成**
AI自动生成注入脚本,将`encryptRequest`函数暴露为RPC服务:```
// 注入脚本window.rpc = {
encryptLogin:function(username, password, timestamp){constparams = {
username: username,password: password,
timestamp: timestamp};
returnwindow.encryptRequest(params);}
};```BurpSuite插件配置为:拦截登录请求 → 提取明文字段 → 通过WebSocket调用`rpc.encryptLogin` → 替换`key`和`data`字段。
**步骤四:自动化攻击测试**完成集成后,红队可以在BurpSuite Intruder中直接使用明文词典:
|明文字典|自动加密后|攻击效果|
|:-:|:-:|:-:||`admin' OR '1'='1`|合法SM2 AES密文|SQL注入探测|
|`admin` 密码字典|每个请求独立加密|身份爆破||`../../etc/passwd`|合法密文|路径遍历测试|
## 五、攻击技术深度解析### 5.1 为什么“调用加密函数”优于“复现加密算法”|对比维度|传统逆向复现|jsrpc调用原生函数|
|:-:|:-:|:-:||算法复杂度|需完整逆向算法实现|无需理解算法细节|
|密钥提取|需从内存/源码提取|函数内部自动处理||动态密钥|无法处理随机生成场景|原生支持,每次调用自动生成|
|维护成本|目标更新需重新逆向|浏览器自动加载最新版本||准确率|可能存在实现偏差|100%与真实请求一致|
### 5.2 绕过加密边界的本质这一方法论的本质在于:**将加密边界从“客户端-服务端之间”重新定义为“浏览器-攻击工具之间”**。传统视角下,加密边界是客户端与服务端的协议边界,攻击者被隔离在密文空间之外。而通过jsrpc,攻击工具被“接入”浏览器内部,与加密函数处于同一信任域,从而获得明文操作能力。
```传统攻击模型:
攻击工具 --(明文)--> [加密边界] --(密文)--> 服务端↑
攻击者无法穿透本文攻击模型:攻击工具 --(明文)--> jsrpc --(明文)--> 浏览器加密函数 --(密文)--> 服务端
↑攻击工具与加密函数同处信任域
```### 5.3 对抗前端混淆与代码加密面对经过Obfuscator.io等工具混淆的前端代码,AI可通过以下策略突破:1. **运行时追踪而非静态分析**:通过MCP触发实际加密调用,观察输入输出关系
2. **Hook关键API**:拦截`Function.prototype.call`、`eval`等动态执行函数3. **内存快照分析**:在加密函数执行后读取闭包变量值
六、防御视角的思考
从蓝队角度,理解这一攻击手法有助于构建有效的防御措施:
### 6.1 服务端加固方案|问题|攻击方式|防御方案|
|:-:|:-:|:-:||加密函数可被外部调用|jsrpc远程调用|增加环境指纹校验(检测WebSocket外连)|
|请求可被重放|拦截合法请求并替换载荷|绑定请求时间戳 一次性Nonce||加密算法完全暴露|攻击者直接调用|将核心加密逻辑迁移至服务端(如WebCrypto 签名)|
### 6.2 检测jsrpc攻击的特征蓝队可通过以下指标检测自动化加密攻击:- **WebSocket外连**:浏览器向localhost或非业务域名发起WebSocket连接
- **异常的函数调用模式**:加密函数在短时间内被高频调用(超出正常用户行为)- **Headless浏览器特征**:检测`navigator.webdriver`、`--headless`等自动化标记
七、总结
本文提出并验证了一套突破前端双重加密防线的自动化红队工作流。核心结论如下:
|组件|作用|关键价值|
|:-:|:-:|:-:||Chrome MCP|自动化导航、代码定位、断点调试|将人工逆向转化为程序化操作|
|AI分析引擎|加密类型识别、函数定位、脚本生成|数分钟完成数小时的逆向工作||jsrpc BurpSuite|保持浏览器加密上下文,实时加解密|将明文攻击载荷自动转换为合法密文|
这一工作流的根本性突破在于:**不再试图“破解”加密,而是“接入”加密**。通过将攻击工具置于与加密函数相同的信任域,前端加密防线被转化为进攻通道。 对于红队而言,这意味着即使面对SM2 AES-CBC双重加密、随机密钥、代码混淆等高级防护,攻击链路依然可自动化完成。对于蓝队而言,这提醒我们:真正的安全边界不在于前端加密的强度,而在于服务端对请求合法性校验的完备性——包括环境指纹、行为模式、请求完整性的多维度验证。","createTime":1782116144,"ext":{"closeTextLink":0,"comment_ban":0,"description":"","focusRead":0},"favNum":0,"html":"","isOriginal":0,"likeNum":0,相关文章
- kiwi浏览器插件安装方法 07-26
- 谷歌浏览器完成下载后网页元素调试与操作教程 07-26
- Chrome浏览器多标签页高效管理实战经验指南 07-26
- Chrome浏览器网页收藏效率提升:操作经验分享 07-26
- google Chrome浏览器下载安装与界面设置 07-26
- 火狐浏览器手机版如何与电脑端跨系统无线传大文件 07-26