首页 > 其他分享 >【App渗透】BurpSuite插件-Brida 2024最新自动加解密Custom plugins演示

【App渗透】BurpSuite插件-Brida 2024最新自动加解密Custom plugins演示

时间:2024-07-17 09:54:32浏览次数:10  
标签:AESCipher 插件 加密 hook 二进制 App 加解密 安全

文章目录


前言

之前有写过如何安装brida的文章和视频讲解,大家感兴趣的可以看看之前的内容,分别是
①BurpSuite插件Brida的安装
②Brida js-hook脚本的简单配置和debug调试。
完整内容在这里:
我的B站主页
今天就是介绍下Brida的核心功能——自动加解密;如何在反编译之后hook加密和解密函数,自动加解密暴破密码。


提示:以下是本篇文章正文内容,下面案例可供参考

一、测试app的客户端和服务端

由于直接拿网上线成的app来做测试的话,会涉及到法律问题,所以干脆我就自己开发了一个,大致效果如下图:

在这里插入图片描述

在这里插入图片描述

功能非常简单,所以需要暴破出正确的密码登录进去就算通关了。客户端就是这样,想要源码或者apk的可以公众号找我要,我就不直接在这里公开了。

在这里插入图片描述

说完客户端,接下来讲下服务端,服务端也简单,我是直接用python写的:

在这里插入图片描述

直接把server.py文件放到一台公网的服务器上面,直接用python3运行就可以了:

python3 server.py

在这里插入图片描述

二、BurpSuite设置代理

手机安装burpsuite证书,然后电脑和手机连接同一个wifi,burp监听8080,手机代理端口8080保持ip和端口一直,输入用户名admin,密码随意,显示登录失败:
在这里插入图片描述

密码为密文。

在这里插入图片描述

说明配置都没问题,可以进行下一步,也就是Brida的核心,Custom plugins自定义组件实现自动加解密。

三、反编译apk文件

我比较喜欢用JEB这款工具,使用起来很方便,直接把apk文件拖进去就行了。

在这里插入图片描述

选中任意一个类,点击解析:
在这里插入图片描述

因为我写的这个程序比较简单啊,其实我就写了两个类,所以找加解密的函数是很好找的:
在这里插入图片描述

也可以直接搜索名字,比如encrypt,就可以很方便的定位:

在这里插入图片描述

先来看看这个加密函数的逻辑:
这个encrypt方法用的是AES加密算法,需要传两个参数,对原始的数据进行一个加密。返回的数据是以Base64编码格式的字符串。

鼠标选中这个函数,然后右键交叉引用,就可以找到这个方法的调用。

在这里插入图片描述

在这里插入图片描述

在这段核心代码里面,s1就是密码文本框里面的数据,后面这一大串数字就是aes的秘钥key,这个字符串s2就是加密后的内容。

在这里插入图片描述

在搞懂了逻辑了之后就可以开始写brida的脚本,去尝试hook这个方法,这里直接导入一下,关于怎么调试这个js脚本,我在之前的视频里面已经讲过了,所以就不多说,直接看下一标题的演示吧。

四、编写brida/frida hook脚本

配置brida环境,这些内容都在之前的博客里有十分详细的介绍,不懂的可以回顾之前的超详细文章。

获取app的id:

frida-ps -a -U

在这里插入图片描述

启动frida服务端:
在这里插入图片描述

Start Server,Attach application,下图表示成功:

在这里插入图片描述

加载brida.js:

在这里插入图片描述

,
	test: function(){
		console.log(123123);
		return "test123213123";
		},

先点击Sava JS file再点击Compile & reload JS,后续的所有js脚本都需要按照这个步骤来,否则极其容易报错。

在这里插入图片描述

成功返回测试数据,说明配置成功。

在这里插入图片描述

那么调试没有问题的话,就可以开始写加密的hook脚本了,关于这个脚本的文档,其实frida官方是有的:https://frida.re/docs/javascript-api/
访问这个url,搜索Java.perform。不懂的话可以翻译一下。根据反编译的源码,编写hook脚本非常简单:

 encrypt: function(data, key) {
        var encrypted = "";
        Java.perform(function() {
            try {
                var AESCipher = Java.use("com.example.myapplication.AESCipher");
                encrypted = AESCipher.encrypt(data, key);
                console.log("Encrypted: " + encrypted);
            } catch (e) {
                console.log(e);
            }
        });
        return encrypted;
},

但是由于这里的key是一个常量,所以脚本还可以再优化一下,只传入一个明文的参数就行了:

encrypt: function(data){
			var encrypted= "";
			Java.perform(function(){
				var AESCipher = Java.use("com.example.myapplication.AESCipher");
				encrypted = AESCipher.encrypt(data,"1234567890123456");
				console.log("加密后结果:"+encrypted);
				});
			return encrypted;
			}

在这里插入图片描述

app上输入999999:
在这里插入图片描述

请求包显示加密后的字符串为:
在这里插入图片描述

这个返回的结果跟我们在app上面操作的是一样,说明我们的脚步写的没问题,解密的脚本也很好写,变化其实不大:

decrypt: function(encryptedData){
			var decrypted= "";
			Java.perform(function(){
				var AESCipher = Java.use("com.example.myapplication.AESCipher");
				decrypted = AESCipher.decrypt(encryptedData,"1234567890123456");
				console.log("解密后结果:"+decrypted);
				});
			return decrypted;
			}

也是一样,测试下能不能调用成功。
在这里插入图片描述

ok,脚本没问题的话就可以设置一个自定义的插件了。

五、Custom plugins自动加解密

这里介绍下每个标签的意思。
Plugin name: 插件名
Plugin Type: 有4种类型,每种类型后面都会有英文的解释。这里选IHttpListener就可以了。意思是:动态处理每个请求和响应的插件
在这里插入图片描述
Name of the Frida exported function:要使用的JS函数名。因为app的密码是加密过的,我们暴破字典是明文的,所以我们要hook加密函数,把字典里的明文自动变成密文呢,因此这里的名字选encrypt。
Execute on:作用于什么地方,有3个选项,请求、响应和所有。因为用户名和密码字段在请求包中,所以选择“请求”——Requests。
Burp Suite Tools:作用于Burpsuite的哪个工具中?这里选重放Repeater和暴破Intruder就行了。

Execute:作用于哪个接口。我选择用正则去匹配请求和响应的内容,指定/login登录接口。

在这里插入图片描述

其他保持默认。
Parameters:hook脚本的参数。用正则匹配。
Plugin output:也是用正则,作为插件的输出。

在这里插入图片描述

点击Add plugin->Enable:

在这里插入图片描述

这时,我们直接用明文来请求,发现请求是能正常过去的。说明没问题。

在这里插入图片描述

返回插件面板,打开debug窗口:

在这里插入图片描述

重放一下这个接口,就能发现整体的逻辑了。我们输入的是明文999999,但是修改后的请求Modefied request已经将密码自动加密成密文去请求。

在这里插入图片描述

为了更直观的看到效果,把插件先关掉。

在这里插入图片描述

再明文请求一次,会发现是报错的。状态码500,服务端异常,因为我们的服务端无法处理明文的数据。

在这里插入图片描述

重新把插件打开,直接用明文的字典来暴破。

在这里插入图片描述

可以直接用字典,但是由于时间关系,我就随便手打一些上去吧。

在这里插入图片描述

最终也是用明文的字典成功暴破出了正确的密码。

在这里插入图片描述
在这里插入图片描述

admin 123456

在这里插入图片描述

Login Successful!!

在这里插入图片描述

六、本期送书《二进制安全基础》

在这里插入图片描述

如果对二进制感兴趣的朋友,这本书很不错!推荐大家阅读。

《二进制安全基础》为二进制安全技术知识普及与技术基础教程,不仅能为初学二进制安全技术的读者提供全面、实用的C语言反汇编知识,而且能有效培养读者的漏洞挖掘和软件逆向分析基础能力。《二进制安全基础》配套示例源码、PPT课件、教学大纲、教案、习题答案、作者QQ群答疑。 《二进制安全基础》共12章,内容包括二进制安全概述、基本数据类型、表达式、流程控制、函数、变量、数组和指针、结构体、C++反汇编、其他编程知识、二进制漏洞挖掘(PWN)、软件逆向分析。 《二进制安全基础》适合二进制安全初学者和网络安全从业人员,也适合作为应用型本科与高职高专网络空间安全、信息安全类专业的教材。

推荐

《二进制安全基础》以网络空间安全中常见的二进制安全技术为主线,详细介绍 C 语言反汇编技术、二进制漏洞挖掘和软件逆向分析基础技能。 《二进制安全基础》配套示例源码、PPT课件、教学大纲、教案、习题答案、作者QQ群答疑。 《二进制安全基础》适合二进制安全技术初学者、系统安全研究人员、底层软件开发人员、病毒分析人员。 《二进制安全基础》可以作为企事业单位网络安全从业人员的技术参考用书,也可以作为应用型本科、高职高专网络空间安全、信息安全类专业的教材。

如何领书

公众号送书(EureKa安全团队)
关注公众号,参与抽奖,中奖即可送书

标签:AESCipher,插件,加密,hook,二进制,App,加解密,安全
From: https://blog.csdn.net/weixin_43847838/article/details/140451912

相关文章

  • ASP.NET Core 集成 AutoMapper 的介绍和实际开发应用
    目录一、介绍二、原理三、实际开发应用1.安装AutoMapper包2.创建映射配置3.初始化AutoMapper4.使用AutoMapper进行数据映射5.注意事项和拓展四、总结一、介绍AutoMapper是一个对象-对象映射器(OOM),它主要用于在.NET应用程序中实现对象之间的自动转换。在ASP.NET......
  • 生成自己的网易云音乐接口--音乐插件功能
    获取自己的网易云接口用途:该接口用于个人博客添加音乐功能,详情可以参加我的个人博客:https://mebius.fun/公益api请求地址:GEThttps://api.yimian.xyz/msc/在网易云网页版歌单页面查看地址栏:例如我的歌单页面地址:网易云音乐(163.com)api地址:api.yimian.xyz/msc/?typ......
  • 基于SpringBoot+Uniapp的微信阅读小程序系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 基于Linux的Flappy bird游戏开发
    gitee源码获取链接:一、项目功能按下空格键小鸟上升,不按空格键小鸟下降。搭建小鸟需要穿过的管道。管道自动左移和创建。小鸟与管道碰撞游戏结束。二、知识储备C语言。数据结构——链表。Ncurses库。信号机制。三、项目框图四、Ncurses库问题引入?如何显示游戏界......
  • 加油卡APP系统,大众省钱加油,商家盈利!
    随着汽车的普及,人们的出行方式发生了改变,汽车加油成为了社会中一种必不可少的消费需求。汽车加油市场目前持续呈现增长的态势,加油卡也成为了汽车加油的常见方式,它不仅能够帮助居民优惠加油,还能提高加油站的销售额。此外,加油卡具有较高的便利性,能够让大众快速加油,因此,加油卡的推......
  • 新版网页无插件H.265播放器EasyPlayer.js如何测试demo视频?
    H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,支持H.264与H.265编码格式,性能稳定、播放流畅;支持WebSocket-FLV、HTTP-FLV,HLS(m3u8)、WebRTC、WS-FMP4、HTTP-FMP4等格式的视频流,并且已实现网页端实时录像、在iOS上实现低延时......
  • 【AI】DeepStream(16):deepstream_image_decode_app-MJPEG编解码器的使用
    【AI】AI学习目录汇总1、简介deepstream-test1:演示各种DeepStream插件构建GStreamer管道。从文件中获取视频、解码、批处理,然后进行对象检测,最后在屏幕上渲染框。deepstream_image_decode_app示例是在deepstream-test1示例之上,增加如下功能:在管道pipe中使用多个......
  • iOS开发基础103-APP之间跳转
    iOS提供了多种方式来实现应用之间的相互跳转。其中,URLSchemes和UniversalLinks是两种主要的方法。下面详细介绍这两种方法,并提供相应的示例代码,同时对它们的优缺点进行分析。一、URLSchemes1.什么是URLSchemesURLSchemes是一种基于URL的通讯方式,允许一个应用通过指定的UR......
  • ComfyUI进阶:Comfyroll插件 (一)
    ComfyUI进阶:Comfyroll插件(一)前言:学习ComfyUI是一场持久战,而ComfyrollStudio是一款功能强大的自定义节点集合,专为ComfyUI用户打造,旨在提供更加丰富和专业的图像生成与编辑工具。借助这些节点,用户可以在静态图像的精细调整和动态动画的复杂构建方面进行深入探索。ComfyrollS......
  • uniApp 接入微信短剧播放器
    短剧播放器是微信官方为微短剧类目小程序提供的播放器插件。开发者可引入短剧播放器插件后,基于自身需求快速进行开发上线。 小程序中使用短剧播放器需要以下几个条件小程序已有短剧类目(文娱->微短剧),并且将该类目设为主类目小程序引入短剧播放器插件   微信官方短剧......