网易首页 > 网易号 > 正文 申请入驻

红队攻防之JS攻防

0
分享至

前言:

随着当前攻防水平的不断提高,实战攻防过程中,经常能遇到前端的参数被各种各样的方式加密的情况。毫无疑问,这种方式能够防止很多脚本小子的脚步,但是很多网站就存在“金玉其外,败絮其内“的情况,将传递的参数加密了事,忽略很多系统本身存在的安全风险。本文以实战角度出发,介绍面对这种前端加密情况下的攻防技巧。

测 试 思 路


常见的JavaScript逆向相关的技巧,包括浏览器调试、Hook、AST、无限Debugger的绕过以及模拟调用JavaScript等,但是在实际对抗过程中,如何将技巧形成一个行之有效的“套路“来应对JavaScript逆向的流程。一般来说,在实战过程中,JavaScript可以分为三大部分:寻找入口、调试分析和模拟执行。▌寻找入口:关键步骤,逆向大部分情况下就是分析加密参数是如何来的,实战过程中,遇到请求中的加密参数比如token、sign等,这个加密逻辑是如何形成的?这个关键逻辑可能写在某个方法、或者隐藏在某个关键变量中,众所周知,一个网站加载了很多JavaScript文件,如何寻找这个加密逻辑就是我们寻找入口所要做的事情。▌调试分析:找到入口之后,我们找到这个参数是在某个方法里面执行的,那么到底是如何执行这个加密逻辑的呢?里面究竟调用了多少加密算法,经历了多少次赋值和转换呢?这些都是我们要思考的点,以便于我们后续进行模拟调用或者逻辑改写。在这个过程中我们主要是借助浏览器的调试工具打断点进行分析,或者借助反混淆工具进行代码的反混淆等。▌模拟执行:经过调试分析后,我们已经大致弄清楚整个加密逻辑,但是我们最终的目的就是如何加解密参数,方便我们进行攻击操作。因此这个过程就需要对整个加密逻辑进行复写或者模拟执行,比如我们输入的是一些恶意代码,经过调用后,就是服务器能够识别的加密代码,从而完成一次攻击。

01

寻找入口


常见的寻找入口的操作很多,其中包括:查看请求、搜索参数、分析发起调用、打断点、Hook等操作,这里来分别介绍一下:「查看请求」以一次访问电影网站为例,可以看到首页有很多数据,这些数据肯定是逐个请求返回的,我们就要思考,究竟是哪一个请求返回的内容呢?打开浏览器开发者工具-->打开网络面板-->点击搜索按钮,比如我们这里就搜索唐伯虎点秋香,如下图所示:

此时可以看到对应的搜索结果,点击搜索到的结果,我们就可以定位到对应的响应结果的位置,如下图所示:

找到响应之后,我们就可以顺便找到是谁发起的请求了,如下图所示:

比如,这里我们想找到我们想要的数据所对应的请求位置了。很明显,请求方法为GET,参数是limit、offset、token。一般来说,可以通过这种方法来寻找最初的突破口,如果这个请求带有加密参数,就需要知道这个参数究竟是在哪里生成的。如果这个参数没有加密,爬虫选手可以直接开爬,就可以获取该系统所有的电影数据。思考一下,如果电影数据是身份信息会怎么样呢?
「搜索参数」在上一步中,我们已经找到了最初的突破口,明确了关键请求是如何发起的,带有什么加密参数,这里发现一个关键参数token,现在就是去寻找token前世今生的时候了。最简单的方法就是直接进行全局搜索。一般来说,参数名就是一个普通的字符串,这里的参数名就叫做token,这里的某个JavaScript文件中肯定有这个字符串。这里有一个搜索技巧,点击ctrl+shift+F,开启全局搜索,如下图所示:

这是一个资源搜索的入口,可以搜索我们下载下来的JavaScript文件的内容,这里我们输入token来进行搜索。

这样我们就找到一些关键点了,一共五个结果,结果不多,我们可以进一步分析。
「调用分析」搜索是一种查找入口的方式,这是从源码层面进行查找,我们也可以从发起调用逻辑的流程进行分析。比如打开Network请求里面的Initiator查看当前请求构造的相关逻辑。

点击光标,会有完整的请求调用流程,我们点进去就可以寻找到相关代码逻辑。

很明显,红框处是我们寻找到的入口点参数,我们找到了入口点。

「断点分析」我们还可以通过一些端点进行入口的查找,比如XHR断点,DOM断点、事件断点等。这里我们在开发者工具Sources面板里添加设置,比如这里我们添加了XHR断点和全局Load时间断点,如图所示:

我们在下图红框处找到了入口点。

「Hook」在实战过程中Hook也是常用的查找入口点的功能。一些代码搜索或者断点并不能很有效地找到对应的入口,这种情况下就可以用Hook。比如说,对一些常见的加密和编码算法、常用的转换操作都可以进行Hook,比如Base64编码、Cookie的赋值、JSON的序列化。常用Hook方式就是通过TemporMonkey来实现。具体实现过程本篇文章暂不详述。

02

调试分析


找到常见入口后,我们需要进行的就是整个流程的调试分析,这个步骤中,我们常用到一些格式化、断点调试、反混淆的手法来辅助整个流程分析。「格式化」格式化过程很重要,能够提高代码的可读性,一般情况下很多JavaScript代码都是经过打包和压缩的。多数情况下,我们可以使用Sources面板下JavaScript窗口左下角的格式化按钮对代码进行格式化。如下图所示:

「断点调试」代码格式化之后,我们就需要进行正式调试,基本操作就是给想要调试的代码添加断点,同时在对应的面板观察变量值。我们知道入口点需要三个参数,核心加密参数是token,那么我么应该着重关注token的生成逻辑,如下图所示,


不断回溯,找到我们的token生成逻辑。

这里的加密逻辑就是:▲ 将/api/movie放到一个列表中;▲ 在列表中添加当前时间戳,调用push方法,添加到列表中;▲ 将列表内容用逗号拼接;▲ 将拼接结果进行SHA1编码;▲ 将编码的结果和时间戳再次拼接;▲ 将拼接后的结果进行Base64编码。这里结果用python模拟,将过程的值输出如下图:

我们已经获取到加密字段,接下来能干的事情就不详述。「反混淆」实战过程中可能遇到各种各样的混淆方式,比如控制流扁平化、数组移位等。对于这种我们可以尝试AST技术来对代码进行还原。比如下图

这里while循环内部,通过一些判断条件执行某些逻辑,这种逻辑我们无法直接判断执行顺序,对于这种类似的混淆技术,我们可以尝试AST进行还原。

03

模拟执行


经过一系列调试,我们已经了解其中的加密逻辑,接下来就是调用执行的过程了。常见的调用流程如下:● Python改写或者模拟执行适用于整体逻辑不复杂,我们可以尝试用Python来实现整个加密流程。● JavaScript模拟执行+API适用于Python不兼容部分JavaScript的情况,而Node.js天生就支持JavaScript,为了更加通用实现JavaScript的模拟调用,我们可以用express类模拟JavaScript,实现跨语言调用。● 浏览器模拟执行适用于调试分析结果不理想的情况,由于整个逻辑都是在浏览器中运行,我们可以利用Selenium、PlayWright来尝试将一些JavaScript代码,得到一些返回结果。

THE AUTHORS

本文作者

本文由易安联

高级攻防实验室写作

专注网安行业发展方向

解读热门产品技术趋势

欢迎技术大咖学习交流

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
凯特服用过量的安眠药,导致了昏迷

凯特服用过量的安眠药,导致了昏迷

金牌娱乐
2024-05-20 15:30:03
多架法军机抵达南太海外属地,法媒声称:为应对中国在该地区影响力

多架法军机抵达南太海外属地,法媒声称:为应对中国在该地区影响力

笔墨V
2024-05-21 13:38:36
太巧了!伊朗总统刚坠机身亡,又一总统车队发生重大车祸

太巧了!伊朗总统刚坠机身亡,又一总统车队发生重大车祸

娱乐的小灶
2024-05-21 18:37:15
赖清德此话一出,台股暴跌丨湾区望海峡

赖清德此话一出,台股暴跌丨湾区望海峡

直新闻
2024-05-20 22:30:22
尽责!姚明提前1天抵达新疆,将见证辽宁3连冠,被骂颁奖时无笑容

尽责!姚明提前1天抵达新疆,将见证辽宁3连冠,被骂颁奖时无笑容

林小湜体育频道
2024-05-21 22:13:30
苏炳添妻子晒家常美食,厨艺令大厨汗颜,经典广东口味,造就飞人

苏炳添妻子晒家常美食,厨艺令大厨汗颜,经典广东口味,造就飞人

小料教你做美食
2024-05-21 14:05:52
降压药什么时候吃最好?记住这3点,降压不用愁,最后1点最重要

降压药什么时候吃最好?记住这3点,降压不用愁,最后1点最重要

碧晴养生汇
2024-05-20 15:40:18
伟大的2-0!中国男网天才创纪录,法网开门红,下轮对手确定!

伟大的2-0!中国男网天才创纪录,法网开门红,下轮对手确定!

刘姚尧的文字城堡
2024-05-21 05:46:54
张召忠预言成真?掏空国库建造的2艘航母,如今彻底沦为废铁

张召忠预言成真?掏空国库建造的2艘航母,如今彻底沦为废铁

星辰故事屋
2024-04-13 12:00:48
徐梓钧真的太美了,但高亚麟你也太糊涂了!

徐梓钧真的太美了,但高亚麟你也太糊涂了!

阿芒娱乐说
2024-05-08 21:44:22
叶浩文任福鼎市代市长

叶浩文任福鼎市代市长

鲁中晨报
2024-05-21 13:59:05
弘一法师:人生病,是做了太多对不起自己的事

弘一法师:人生病,是做了太多对不起自己的事

幸福娃爱扒娱
2024-05-20 09:27:23
《歌手2024》成员惨遭央媒痛批,王力宏当年的话,终于有人信了!

《歌手2024》成员惨遭央媒痛批,王力宏当年的话,终于有人信了!

橘子大娱社
2024-05-20 16:50:03
九亿姐在剧组被虐待过

九亿姐在剧组被虐待过

毒舌扒姨太
2024-05-20 22:09:45
新政后我给七个中介打电话,没想到他们说…

新政后我给七个中介打电话,没想到他们说…

真叫卢俊
2024-05-21 10:20:00
人民日报:专家集体辟谣,大家别再相信了!

人民日报:专家集体辟谣,大家别再相信了!

华人星光
2024-05-19 10:47:29
博主声称小米派人堵家门口,不删微博就折腾他父母

博主声称小米派人堵家门口,不删微博就折腾他父母

映射生活的身影
2024-05-21 13:18:19
宋佳的骨相真是太好了

宋佳的骨相真是太好了

阿芒娱乐说
2024-05-21 16:46:23
记者扮男客潜入采耳店,偷拍服务全过程:女技师、柔式按摩别有洞天

记者扮男客潜入采耳店,偷拍服务全过程:女技师、柔式按摩别有洞天

古今档案
2024-05-07 13:04:58
郭有才突然大火,创造直播神话,两周收入突破1亿

郭有才突然大火,创造直播神话,两周收入突破1亿

新游戏大妹子
2024-05-20 13:44:20
2024-05-21 23:02:44
易安联
易安联
成为零信任安全领导者
315文章数 12关注度
往期回顾 全部

科技要闻

微软发AI PC:这次真的能与MacBook竞争了

头条要闻

美媒:莱希之死基本为小哈梅内伊接替父亲职位铺平道路

头条要闻

美媒:莱希之死基本为小哈梅内伊接替父亲职位铺平道路

体育要闻

兄弟们,为了我,拿下冠军吧!

娱乐要闻

杨洋乔欣聊天记录曝光!还牵扯张天爱

财经要闻

中植系的销售,不退40亿被抓了

汽车要闻

四排八座纯电MPV/续航超过800km 翼真L380开启预订

态度原创

数码
教育
家居
时尚
旅游

数码要闻

微星 Creator P70 主机上市:定位商务办公,首发价 2299-6499 元

教育要闻

最能靠颜值吸引留学生的三所英国大学!

家居要闻

生活蜕变 简约理念雕刻理想居所

今年夏天最流行的颜色居然是它?

旅游要闻

四川广元男子拍到会呼吸的泉水 反复涌出又消失

无障碍浏览 进入关怀版