漁滒 发表于 2022-2-13 22:56

【JS逆向系列】某海关公示平台分析

@(【JS逆向系列】某海关公示平台分析)

## 1.样本地址
aHR0cDovL2NyZWRpdC5jdXN0b21zLmdvdi5jbi9jY3Bwd2Vic2VydmVyL3BhZ2VzL2NjcHAvaHRtbC9kZWNsQ29tcGFueS5odG1s

## 2.反调试
使用无痕窗口,打开f12后打开网页。发现自己在断点处停下了

![在这里插入图片描述](https://img-blog.csdnimg.cn/8c0c633f08aa488da56aec3dad9fbd8e.png?)
在调用堆栈网上找,这种格式的混淆就是使用的ob混淆,首先使用ast把【SwCaHu_p.js】和【menuManger.js】这两个文件进行反混淆。反混淆的方法在前面的AST系列文章有说到,这里就跳过了。

反混淆完成后,使用Fiddler.exe抓包并自动响应这两个js文件,再尝试打开网页。

![在这里插入图片描述](https://img-blog.csdnimg.cn/4aaf787a47774c2c9c5af30a4828f1c3.png?)
## 3.页面分析

反混淆之后就不会出现无限debugger的情况了,但是这时出现了滑块。先在网页手动滑一次

![在这里插入图片描述](https://img-blog.csdnimg.cn/7922dba8bce245b38d4c31bd4ffb2499.png?)

滑块通过的话,code为0,这时得到【csessionid】和【value】。那这两个值进行下一步接口请求,正常情况下会有一个307的响应,这时会得到一个【acw_sc__v3】的cookie值,此时再请求接口,就可以得到加密的数据

![在这里插入图片描述](https://img-blog.csdnimg.cn/30bed4d943ed49ae8ea5a1a6d8f8e8ca.png?)

通过调用堆栈,找到请求成功时的回调函数,并设断点,然后刷新

![在这里插入图片描述](https://img-blog.csdnimg.cn/ee03d10f1e244316a8c5b7053e9cbc70.png?)

![在这里插入图片描述](https://img-blog.csdnimg.cn/21faf4ad8a5b4a379ca94972a282431f.png?)
往下调试可以看到,通过loadAESDecryptStr方法后,就可以得到明文,跟入这个方法

![在这里插入图片描述](https://img-blog.csdnimg.cn/cec9d5e64fc6403990e39d40adbe6a4b.png#pic_center)
最后是调用的MuData_KXC方法

![在这里插入图片描述](https://img-blog.csdnimg.cn/6cf4b77785404a03b16a31c5ce4dc401.png?)
## 4.算法分析

看到这里有isPadding、mode、sk。猜测是sm4算法,并且存在一句【_0x3ca6b6['sk'] = _0x3ca6b6['sk']["reverse"]()】。这是密钥轮换后,在解密是需要对密钥得到的sk进行反转,那就可以确定,CaData_KXC是sm4加密函数,MuData_KXC是sm4解密函数。

但是使用标准sm4进行解密,发现解密得到的是一堆乱码。仔细查看代码,发现进行了一些魔改,包括初始化数值和算法细节

![在这里插入图片描述](https://img-blog.csdnimg.cn/3cb98c8b9ca54758a5361b860974f7c6.png?)
复制gmssl库中的sm4代码,并且按照js的代码进行魔改

![在这里插入图片描述](https://img-blog.csdnimg.cn/06c92286efe84485b66e3199cf94b973.png?)
![在这里插入图片描述](https://img-blog.csdnimg.cn/b614894ed1384c20b11756abc4cab605.png?)
最后尝试进行解密,可以解出明文了

![在这里插入图片描述](https://img-blog.csdnimg.cn/edfcc9d9feca4b94a1b0a9053bec6b98.png?)

ggcall 发表于 2022-10-8 09:59

本帖最后由 ggcall 于 2022-10-29 19:36 编辑

漁滒 发表于 2022-10-5 00:54
说明算法细节有可能改错了
已经修改和js里的比对过,一模一样
就是两个互换的代码改的是这样,另外我pip来的gmssl代码和大佬您贴的版本不一样

漁滒 发表于 2022-10-5 00:54

ggcall 发表于 2022-10-4 18:46
https://sm4.oss-cn-hangzhou.aliyuncs.com/test_sm4_edit.py
大佬,这是按照您帖子里的图片修改sm4的pyth ...

说明算法细节有可能改错了

正己 发表于 2022-2-13 23:02

什么网站都逃不过漁哥哥的魔爪{:301_988:}

唯有清风丶 发表于 2022-2-13 23:13

感谢分享

我是不会改名的 发表于 2022-2-13 23:15

试了好久,第一步都没过去{:1_937:}

七剑 发表于 2022-2-13 23:31

向大神们学习。

bwuaich 发表于 2022-2-14 00:42

来看看; 学习下; 谢谢分享!!!

kvstone 发表于 2022-2-14 08:19

可不敢对政府网站动手{:1_918:}

10Bang 发表于 2022-2-14 08:36

感谢分享

M1A2 发表于 2022-2-14 08:42

感谢大佬的分享

hnwang 发表于 2022-2-14 09:39

收藏学习,感谢分享!
页: [1] 2 3 4
查看完整版本: 【JS逆向系列】某海关公示平台分析