【安全研究】某黑产网站后台滲透与逆向分析

news2024/12/15 11:42:57

文章目录

  • x01. 前言
  • x02. 分析

【🏠作者主页】:吴秋霖
【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作!
【🌟作者推荐】:对爬虫领域以及JS逆向分析感兴趣的朋友可以关注《爬虫JS逆向实战》《深耕爬虫领域》
未来作者会持续更新所用到、学到、看到的技术知识!包括但不限于:各类验证码突防、爬虫APP与JS逆向分析、RPA自动化、分布式爬虫、Python领域等相关文章

作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

x01. 前言

  本次案例为非公开站点分析,源于协助某省公安厅开展的一次黑产打击溯源取证行动。近年来,境内外黑产活动猖獗,涉及领域广泛

在本次行动中,通过对目标团队某成员设备中获取的提权信息进行短时间内的分析与还原,成功抽取到了一批有价值的数据,一般后台普通的网站防护都是较低的(但是它的后台很硬!防护很高

此类黑产平台也许时常会顾虑到被滲透的风险,所以在里面加固了一套JS层面防护较高的整套产品,因为加上日志登录记录就算短时被黑掉只要能够发现就会被阻断(想要收集数据还需要花费时间逆向所有的加密跟数据解密

这里作者据回忆复盘画了一下它后台防护的概览图,如下所示:

在这里插入图片描述

本案例中所需解决的防护措施主要集中在加密与逆向分析(验签、解密)由于需要快速获取 member的信息身份、手机号、银行卡等,破解加密防护后还需面对验证检测机制(U盾触发)这一环节是较为棘手的。触发风控机制将直接导致操作被阻断

在有限的时间内,需要尽可能完成分析与信息收集,因为系统会实时记录登录活动

据说此类防护流程在此类黑产平台应用广泛,价值高达数百万一套!并且会配备几名专业开发人员升级、开发、维护

再说个题外话,member的数量如果我没记错的话高达近10W,涉及的资金流水规模庞大~可见其黑产运作的复杂性和广泛性

x02. 分析

后台页面呈现的数据来源于多个独立接口,其中较为敏感和有价值的信息姓名、手机号、银行卡…这些字段的明文信息经过了两层解密,如下所示:

在这里插入图片描述

点击页面上红色形状的锁将弹出第一层(U盾验证码)进行数据解密,如下所示:

在这里插入图片描述

查看网络发包,可以看到所有的API接口地址都是经过动态加密处理的,如下所示:

在这里插入图片描述

接口请求参数跟响应数据同样全部也是经过加密处理的,如下所示:

在这里插入图片描述

在这里插入图片描述

通过对堆栈调用和 JS 代码的静态分析,发现了相关的加密特征。起初猜测目标可能采用了第三方 WAF(Web 应用防火墙)服务,但进一步分析发现其加密核心算法基于 WebAssembly(WASM)。加密逻辑可能由 C/C++ 编写后转换为 WASM 文件,并通过 JS 调用,具体如下图所示:

在这里插入图片描述

WASM 的引入在一定程度上提高了对 JS 逆向分析的防护能力,有效阻断了常规的 XHR 断点调试方式。对此,采用堆栈调用静态分析法,定位 API 接口加密前的明文数据及请求参数成为主要破解手段。好在目标常规的JS代码并未进行混淆或VMP

在这里插入图片描述

直接快速打日志点找到明文的接口发包以及头部所有参数的加密流程梳理快速进行验签还原,如下所示:

在这里插入图片描述

在这里插入图片描述

首先分析头部里面的第一个参数XXXXX1,对JS算法中生成的字符进行替换与反转最后再拼接,这里可以直接将一些无关的依赖函数去掉,使用任意语言可实现,如下所示:

def generate_result(self):
        def r(p):
            h = p.replace("&", "8").replace("*", "c").replace("%", "a")
            return h[::-1]
        def d(p, h, m): 
            return ''.join([p, h, m][::-1])
        h = "" # 动态字符
        m = "" # 动态字符
        E = "" # 动态字符
        return d(r(h), r(m), r(E))

请求头内的第二个XXXXX2参数的话通过分析JS发现是固定的,如下所示:

在这里插入图片描述

如上可看到它会对wasm处理后的API、参数都会进行二次校验,接下来分析头部的(3、4、5)三个参数,都是动态更新通过两层AES解密得到,第一层的话它将密文放在了localStorage中,通过对应的Key获取经过第一层AES解密后将得到新的密文(一串JSON),新的密文则放在JSON中某个Key下面,获取后再次经过AES解密即可得到最终参数的正确值如下所示:

在这里插入图片描述

在这里插入图片描述

所有加密相关的参数都处理完之后,拿到的都是密文数据,如下所示:

在这里插入图片描述

在上图的基础之上需要再次经过两层数据解密才能拿到完整的明文数据!第一层的话就是上面提到的U盾,这一步就省略不细说,直接看第二层的解密方法,所有字段的密文都交由一个独立的接口去进行解密,接受三个参数,如下所示:

_encryptedString(密文)、_signature(密钥)、_fingerprint(指纹)

这里逆向分析完数据的解密流程及算法后开始编写程序进行快速验证,明文数据如下所示:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2259906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记

文章目录 微信小程序字符串字符串模板字符串拼接 上传图片编写JS代码编写wxml代码编写wxss代码 GET请求测试编写测试代码域名不合法问题 GET和POST请求测试编写JS代码编写wxml代码编写wxss代码 效果展示 微信小程序字符串 字符串模板 这是ES6引入的特性,允许你通过…

6.2 Postman接口收发包

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 接口收发包的类比1.1 获取对方地址(填写接口URL)1.2 选择快递公司(设置HTTP方法)1.3 填写快递单(设置请求头域&#…

数据链路层(Java)(MAC与IP的区别)

以太网协议: "以太⽹" 不是⼀种具体的⽹络, ⽽是⼀种技术标准; 既包含了数据链路层的内容, 也包含了⼀些物理 层的内容. 例如: 规定了⽹络拓扑结构, 访问控制⽅式, 传输速率等; 例如以太⽹中的⽹线必须使⽤双绞线; 传输速率有10M, 100M, 1000M等; 以太…

SpringBoot2+Vue2开发工作管理系统

项目介绍 在工作中使用的管理系统,可以随手记录一些笔记、可以汇总一些常用网站的链接、可以管理自己负责的项目、可以记录每日日报和查看历史日报、可以记录加班情况、可以记录报销内容、可以编写文章文档。 系统功能 我的笔记快捷入口项目管理今日日报我的日报…

软考中级-软件设计师通过心路经验分享

执念,第四次终于通过了 没买书,下班后每天2小时,四个2个月终于过了 学习经验: 1.下班后学习真的靠毅力,和上学的时候考证不是一个状态,大家要及时调整,否则过程很痛苦 2.失败三次的经验&#xf…

burp(2)利用java安装burpsuite

BurpSuite安装 burpsuite 2024.10专业版,已经内置java环境,可以直接使用, 支持Windows linux macOS!!! 内置jre环境,无需安装java即可使用!!! bp2024.10下载…

el-table 动态计算合并行

原始表格及代码 <el-table:data"tableData"class"myTable"header-row-class-name"tableHead" ><el-table-column prop"date" label"日期"> </el-table-column><el-table-column prop"name" …

【Tomcat】第二站:Tomcat通过反射机制运行项目

目录 前言 1. 动态资源&静态资源 1.1 为什么要区分&#xff1f; 1.2 静态资源 1.3 动态资源 1.4 如何判断 2. Tomcat优先动态 2.1 原因 3. Tomcat运行项目的流程 前言 我们在写项目时&#xff0c;在进行前后端交互时&#xff0c;都会创建一个servlet&#xff0c;然…

vue canvas 绘制选定区域 矩形框

客户那边文档相当的多&#xff0c;目前需要协助其将文档转为数据写入数据库&#xff0c;并与其他系统进行数据共享及建设&#xff0c;所以不得不搞一个识别的功能&#xff0c;用户上传PDF文档后&#xff0c;对于关键信息点进行识别入库&#xff01; 以下为核心代码&#xff0c…

[Pro Git#3] 远程仓库 | ssh key | .gitignore配置

目录 1. 分布式版本控制系统的概念 2. 实际使用中的“中央服务器” 3. 远程仓库的理解 4. 新建远程仓库 5. 克隆远程仓库 6. 设置SSH Key 实验 一、多用户协作与公钥管理 二、克隆后的本地与远程分支对应 三、向远程仓库推送 四、拉取远程仓库更新 五、配置Git忽略…

【Python网络爬虫笔记】11- Xpath精准定位元素

目录 一、Xpath 在 Python 网络爬虫中的作用&#xff08;一&#xff09;精准定位元素&#xff08;二&#xff09;应对动态网页&#xff08;三&#xff09;数据结构化提取 二、Xpath 的常用方法&#xff08;一&#xff09;节点选取&#xff08;二&#xff09;谓词筛选&#xff0…

Spark执行计划解析后是如何触发执行的?

在前一篇Spark SQL 执行计划解析源码分析中&#xff0c;笔者分析了Spark SQL 执行计划的解析&#xff0c;很多文章甚至Spark相关的书籍在讲完执行计划解析之后就开始进入讲解Stage切分和调度Task执行&#xff0c;每个概念之间没有强烈的关联&#xff0c;因此这中间总感觉少了点…

java抽奖系统登录下(四)

6.4 关于登录 最简单的登录&#xff1a; 1、web登录页填写登录信息&#xff0c;前端发送登录信息到后端&#xff1b; 2、后端接受登录信息&#xff0c;并校验。校验成功&#xff0c;返回成功结果。 这种登录会出现一个问题&#xff0c;用户1成功登录之后&#xff0c;获取到后台…

基于米尔全志T527开发板的OpenCV进行手势识别方案

本文将介绍基于米尔电子MYD-LT527开发板&#xff08;米尔基于全志T527开发板&#xff09;的OpenCV手势识别方案测试。 摘自优秀创作者-小火苗 米尔基于全志T527开发板 一、软件环境安装 1.安装OpenCV sudo apt-get install libopencv-dev python3-opencv 2.安装pip sudo apt…

【传感器技术】第6章 压电式传感器,压电材料,压电效应,电压放大器

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…

AI 智能体(AI Agent)到底什么原理?能干什么事情

智能体应用有哪些&#xff1f; 智能体在千行百业中有着广泛的应用&#xff0c;目前已经在 600 多个项目落地和探索&#xff0c;广泛应用于政府与公共事业、交通、工业、能源、金融、医疗、科研等行业。智能体是模拟人类智能的计算机系统&#xff0c;能自主感知环境、智能决策并…

力扣-图论-12【算法学习day.62】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…

智慧政务数据中台建设及运营解决方案

数据中台&#xff1a;政府数字化转型的引擎 数据中台作为政府数字化转型的核心驱动力&#xff0c;起源于美军的作战体系&#xff0c;强调高效、灵活与强大。它不仅促进了政府决策的科学性&#xff0c;还推动了政府服务的精细化与智能化。 数据中台的应用场景&#xff1a;数字…

如何使mysql数据库ID从0开始编号——以BiCorpus为例

BiCorpus是北京语言大学韩林涛老师研制一款在线语料库网站&#xff0c;可以通过上传tmx文件&#xff0c;实现在线检索功能&#xff0c;程序在github上开源免费&#xff0c;深受广大网友的喜欢。 在使用过程中&#xff0c;我发现我上传的语言资产经历修改后&#xff0c;mysql的…

开启第二阶段---蓝桥杯

一、12.10--数据类型的范围及转化 今天是刚开始&#xff0c;一天一道题 对于这道题我想要记录的是Java中的整数默认是 int 类型&#xff0c;如果数值超出了 int 的范围&#xff0c;就会发生溢出错误。为了避免这个问题&#xff0c;可以将数字表示为 long 类型&#xff0c;方法…