前言
在进行渗透测试项目时,我们常常会遭遇数据包加密所带来的挑战。随着信息安全保护等级的要求日益严苛,以及人们对网络安全的意识逐步提升,现在越来越多的系统和应用都将数据安全性放在了首位。
对于渗透测试人员而言,熟练掌握各种常见的加解密技术非常关键。无论是从个人能力发展还是行业发展趋势来看,掌握加解密知识都是迈向专业渗透测试人员的必经之路。
知识点:本篇主要讲解通过关键词定位到加解密函数,作为最基础的JS逆向方法,后续会讲解通过工具和编写脚本来实现自动化处理
1、环境准备
通过使用0ctDay师傅写的一个加解密靶场,用于演示使用,感谢师傅。
https://github.com/0ctDay/encrypt-decrypt-vuls/
2、抓取数据包
经测试发现“明镜Lab”系统请求和响应数据包都进行了加密处理
现在我想进行修改数据包,该如何做到呢?
3、加密逻辑梳理
关键词定位法
常用的关键词如:encrypt、decrypt、 encode、decode等,适用于前端JS代码未混淆的状态下使用。
如果数据包中有关键词,也可以搜索关键词进行定位,例如{“data_text”:“xxxxxxxxx”},这时候可直接尝试搜索data_text关键词。
本案例使用的是全加密方式,那么就尝试搜索加解密的关键词进行定位。
首先F12打开DevTools
打开DevTools的搜索模块
搜索encrypt关键词,发现可疑的函数,点击跳转到函数地址
可以看到此处采用了aes对称加密,加密key为f,偏移量(iv)为h。
梳理加密逻辑可知,aes加密,cbc模式,pkcs7填充 key:1234567891234567,iv:1234567891234567
什么是aes加密
AES加密算法(Advanced Encryption Standard)是一种对称加密算法。AES加密算法使用128位、192位或256位密钥对数据进行加密和解密,具有高强度、高速度和易于实现等优点。
关键JS代码
f = a.a.enc.Utf8.parse("1234567891234567")
h = a.a.enc.Utf8.parse("1234567891234567");
function l(t) {
var e = a.a.AES.encrypt(t, f, {
iv: h,
mode: a.a.mode.CBC,
padding: a.a.pad.Pkcs7
});
return e.toString()
}
现在拿到了key和偏移量(iv),在函数地址处打上断点并重新输入账号密码进行登录。
现在已经在断点处停止,可以通过控制台打印我们需要的数据或者调用函数来进行测试。
通过断点可以看到参数“t”显示了我们提交的明文数据,在控制台打印一下看看
提交的明文被打印,这时候如果想测试加密函数是否可用,替换为我们想修改的数据可以通过在控制台调用。
此处我想修改的话应该运行这个函数,然后把参数“t”替换为自己的内容,记得带上toString()
a.a.AES.encrypt('这是我想加密的数据', f, {
iv: h,
mode: a.a.mode.CBC,
padding: a.a.pad.Pkcs7
}).toString()
因为我们直接定位的函数地址是加密函数本身,所以在控制台需要输入完整的JS代码,如果想简便的调用可通过调试断点来找到他的调用处,此函数名称为“l”。
通过挨个跳转下一个函数运行我们发现了它的调用点:t.data = l(n);
此刻可以在控制台验证一下,直接输入:l(‘这是我想加密的数据’),可以看到和之前加密的结果一致。
使用工具进行加密验证
ok,继续梳理其他逻辑,请求包中还包含了timestamp、requestId、sign
timestamp不用多说,一般都是当前的时间戳。
requestId可以理解为数据包的UUID,请求包的唯一值,一般为了提高速度会存储在服务器的redis数据库里,用来做数据包一次性校验。第二次重放数据包将会无法使用。
同样打上断点跟进函数可以看到逻辑,生成一个32位的字符串
现在还剩一个sign,sign一般用作签名使用,主要作用是校验原数据有没有被篡改。
同样打上断点看下sign的逻辑:s = a.a.MD5(n + i + r);
可以看到:n为明文数据,i为requestId,r为时间戳,也就是timestamp,然后将他们拼接在一起做了md5
至此所有逻辑都梳理清楚了,剩下的就可以达到自己任意修改数据包和解密响应包
总结
本文通过使用靶场环境对基本的加密方法进行了讲解,在实战过程中会遇到更复杂的算法和JS代码混淆,如非对称加密RSA SM2,对称加密AES SM4等等,它们往往会搭配使用。
后续会讲解使用工具完成对加密函数的远程调用和编写脚本与burp联动完成自动化处理,尽量写的更细致一些,对刚接触加解密的兄弟会更友好一些,敬请期待…