FBI WARNING
此站点由骚扰短信提供。
任何观看此文产生的非技术探讨面想法皆由读者自己负责。
帮助安全研究人员提供算法逆向思路参考,为扼制灰黑产发展贡献出自己的一份力量。
初探
“ 叮~” 的一声,收到了一条新短信。
现在能主动发信息给我的除了中国移动就是广告推销,这些广告中偶尔夹杂着注册某些平台被贩卖出去的信息。
“XXX先生,我在xxx.com等你。点击链接下载app和妲己一起来玩耍呀”。
在我准备长按信息进行删除时候,一只蚊子明目张胆停留在我的手指上。
想抖动手指进行驱之别院,却在不经意间让长按变成了点击~~
很多事情就是在这种极度巧合的情况下发生。
待我回过神来再次看向手机屏幕,映入眼帘的是五彩斑斓的黄。
我一个遵纪守法的好公民,还是第一次见过这种场面。实在唏嘘不已同时令我愤怒不已!
这短信太过分了,平日里给我发些垃圾营销广告也就算了,现在居然还给我发付费的...
所以,平时能少注册一些网站就少注册,即便注册也不要用自己的手机号码。不要相信99%的平台,因为它们经常为了节省支出经常聘用临时工。所以每一次事故,都是临时工的错。俗语有言:死道友不死贫道。
再探
打开的网页中有个下载按钮,但是不等我点击。已经偷偷下载了个描述文件。
在好奇心的驱使下,打开看了下这个描述文件内容。
有了以往的经验,这次我花了几秒从中提取出了这个越过道德底线的恶意网站。
顺手掀开了久违的MBP(MacBookPro)屏幕,之后打开了Chrome浏览器,新建了一个无痕浏览标签粘贴这个恶意网站的网址,并以迅雷不及掩耳之势按下回车键。
....
带着分析的目光欣赏了下,联想出的是一些技术名词。。诸如页面布局,数据结构设计此类的。
经过一番分析,得知这个网站的盈利模式是靠会员还有投放广告来挣钱。
前面也说了,要扼制灰黑产发展。到了这里也就是破了他的一些收费项,例如会员视频。这样可以让他的收入在一定程度减少从而有效延迟发展速度。
罢了,今天就来替天行道。于是喊来了我的好朋友 F12,与之一起并肩战斗!
分析 & 调试
可以看到这个ui界面是用canvas画出来的,但是没多大影响。
看到发送的请求数据是经过加密的。
返回的数据也是加密的。
看一下请求的堆栈信息,出现了 dart 关键字,结合刚刚看到的 html 标签结构确定了这个是由 flutter 编译出来的。
维基百科关于flutter的介绍
可以看到堆栈中的js文件地址带着随机参数,加了随机参数可以有效防止浏览器缓存。但同时也为我们的断点调试带来了一些不便,例如有些断点打在了变量初始化的位置。如果不去掉参数,刚打上的断点就会在你刷新完毕后消失,这一点可以理解成对于chrome来说两个js的版本不一样了。
这个问题其实很好解决,有多种解决方法。我是利用chrome浏览器的 Override 功能来重写请求响应。
首先我们需要看看这个 main.dart.js 在哪里加载的
提示在 101 行,点进去看:
右键选择 Override content ,之后去掉 t 后面的参数即可。
记得保存之后刷新一下才能在 main.dart.js 这个文件中打断点,否则打的断点不会生效。
再来看下这个数据是怎么加密的,得找到加密方法才能进行请求。
随便搜索一个字段,这里我选 sign 进行搜索。
运气还挺好的,一下子就找到了。看来没有使用除了flutter编译时候的混淆外其他混淆。
在第一行打个断点后触发一下,进入断点。
把参数放控制台去欣赏一下,得知:
a 变量是原始请求参数
B.fn 是加密方法,为 aes cbc
$.ben() 获得aes加密的 key 或者是 iv
$.bel() 获得aes加密的 key 或者是 iv
我们再随便找一个aes在线加密的工具,来验证下哪个是key、iv分别是哪个。
我们需要把key和iv从字节集转换成ASCII码,临时封装个转换函数:
asciiToString = asciis=>asciis.map(c=>String.fromCharCode(c)).join('')
再把网页上的加密结果打印出来,等下与我们找的在线加密工具得到的结果做对比。
可以看到加密结果一致的,经过鉴定得出 $.ben() 是 key 、$.bel() 是 iv。
现在可以把 key、iv 复制出来,顺手写一个加解密方法:
再来看下面的逻辑,顺手在这一行下断点
这个加密是计算签名的,j 的长度为64位,计算 j 值的方法又没有第二个参数。盲猜是sha256计算请求体哈西,再找一个计算sha256的在线工具:
结果都一样,证实了确实是 sha256,再次增加一个函数:
再来看 n 值
n 值是32位的,计算 n 值的方法传入经典的 123456 得到的是 e10adc 开头又验证了是个 md5。
所以请求体加密签名方法的代码应该是这样,再次顺手翻译成:
获取 VIP 视频播放链接
原理其实很简单,就是利用未授权访问漏洞。
在这个网站上的应用就是:随便找一个限免的视频取得播放链接对比下收费视频的链接,改一下子域名即可完成。
由于时间关系,具体的我就不放出来了,其实还可以写更多内容。比如绕过广告之类的骚操作也是可以实现的!
文末结语
我已经写好了部分代码,如果需要可以在公众号内一起学习研究。
黑灰产对抗之路漫漫其修远兮。就先这样吧,再见!
原文始发于微信公众号(随心记事):[小记] 某不良网站逆向分析破解
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论