【A9】简单聊聊前端加密

文摘   科技   2023-11-18 08:00   广东  

“A9 Team 甲方攻防团队,成员来自某证券、微步、青藤、长亭、安全狗等公司。成员能力涉及安全运营、威胁情报、攻防对抗、渗透测试、数据安全、安全产品开发等领域,持续分享安全运营和攻防的思考和实践。”


01

前言


在现实的攻防中,不管是上线检测或红蓝对抗,或多或少的会遇到前端加密的问题,这类加密越来越成为多数网站的首选,但是对于前端加密来说,总感觉有“掩耳盗铃”的错觉,毕竟前端加密,其实只能“防君子不能防小人”。前端系统的控制权是完全在用户手里的,也就是说,前端做什么事情,用户有完全的控制权。本文抛砖引玉,简单说说这类问题。


02

相关工具

“工欲善其事必先利其器”,以下简单介绍一下笔者日常常用的小工具


(1)burp插件是 jsEncrypter 与 BurpCrypto 相关插件的使用大家各自看这两位师傅的GitHub介绍即可,但笔者比较偏向于BurpCryto 的使用了。

(2)前端加密组件:crypto-js,crypto-js是谷歌开发的一个纯JavaScript的加密算法类库,可以非常方便的在前端进行其所支持的加解密操作


03

相关实战案例参考

aes加密


(1)在网上在例子,发现某站登录对密码做了加密处理,经过进一步分析调试,查看登录事件,发现encryptPassword()函数,通过函数进一步处理


跟进该处理函数desEncrypt,得到加解密方式、key、iv和security



最后查看j_password的值


扣取js代码,使用 jsEncrypter 工具即可批量爆破登录接口


sign值验证


(1)通过网上案例,发现数据包经过了sign值校验,重新发送数据包,会报错。







(2)下断调试,跟踪一下`sign`值的形成。





跟进`No`函数





最终可调式得到sign值是经过添加secret=nM26]^9{nb,后用&的符合连接,变成字符password=123456&timestamp=1700142322672&username=admin&secret=nM26]^9{nb,最后经过SHA1加密而得到。



04

前端防止调试的简单混淆举例


在调试前端过程中,会遇到一些奇怪的js代码,这便是前端js 混淆技术,站在开发的角度来看有以下好处:


1、保护业务的前端代码逻辑

2、精简代码,加快了系统的响应速度。


所以从攻防视角来看有必要了解相关的混淆思路,笔者本次只列举简单的例子。


JS压缩


特征:



原理:

削减是一个从源代码中删除不必要的字符的技术使它看起来简单而整洁。这种技术也 被称为代码压缩和最小化


常用压缩工具:https://javascript-minifier.com/ 

破解方法-代码格式化:http://tool.oschina.net/codeformat/js/


05

Base62混淆

特征:最明显的特征是生成的代码以eval(function(p,a,c,k,e,r))开头



原理: 

这类混淆的关键思想在于将需要执行的代码进行一次编码,在执行的时候还原出浏览器可执行的合法的脚本


常用混淆工具:http://dean.edwards.name/packer/ 

破解方法-浏览器:


1.打开 谷歌 或者 火狐 浏览器 

2. 按 F12 打开控制台 

3. 把代码复制进去 

4. 删除开头 eval 这4个字母 

5. 按回车键


06

总结

这里笔者只是抛砖引玉的写了点关于这方面的简单知识,希望能帮到师傅们,谢谢。









A9 Team
A9 Team 甲方攻防团队,成员来自某证券、微步、青藤、长亭、安全狗等公司。成员能力涉及安全运营、威胁情报、攻防对抗、渗透测试、数据安全、安全产品开发等领域,持续分享安全运营和攻防的思考和实践,期望和朋友们共同进步,守望相助,合作共赢。
 最新文章