用 JavaScript 对抗 DDOS 攻击 (下)

news2024/10/6 10:19:12

抗 v2

之前的那些奇技淫巧,纯属娱乐而已,并不能撑多久。

但简单、好玩,似乎这正是对抗的乐趣。之前从未想过,居然还能把脚本黑科技,用在网络防御上。

于是,又陆陆续续对抗了一段时间。

直到兴致淡却,懒得再频繁升级了,于是换上一个更复杂的脚本。其中打包了大量的算法库,光是代码,就能吓退一些密集恐惧症者。

此外,还暗藏了一些自检功能,干扰脚本的分析破解。

这时,要把脚本逻辑移植出来,就格外困难了。

这迫使攻击者,不得不用另一种方式。。。

对抗 v3

为何要破解脚本,为何要了解其中的细节?直接让攻击器运行脚本,不就可以了!

之前担心的,还是发生了。升级后的攻击器,居然会弹网页了,看起来和正常用户一样。。。

黑盒攻击!加密混淆那些都没用了,只能寻找一些破绽。开始收集区分“真网页”和“内嵌网页”的黑魔法。

例如,有些攻击者为了隐蔽,把网页弹在屏幕之外。因此,分析页面 screenLeft、screenTop 就可以识破。

例如,内嵌网页的尺寸是锁定的。而弹出的网页,没准能调整大小,可以改变一两个像素试试。

.....

于是,光坐标尺寸,就扛了一阵子。


事实上,大多攻击者都不注重细节。所以,破绽还是不少的。

不过,发现破绽后怎么处理?直接在前端中止吗?当然不是,这样太明显。

即使识破,仍会发送请求,仍能进白名单。只是,请求里悄悄做了标记,暗示这是一个可疑用户 —— 最终白名单的有效时间,比正常短得多。

这样,就把测试效果延后了,增加破解时间。


同时,升级了防火墙策略,增加了“黑名单”机制。黑名单的 IP,是永远不能变白的。

因此,某些用户的可疑值积累到一定程度,就直接拉黑了。

随着防火墙装机量增加,将黑名单进行了共享,避免了不少重复分析。

对抗 v4

前端的秘密,早晚会被发现的。

最后,逼迫攻击器也采用了“内嵌网页”!之前的黑魔法,又纷纷失效了。。。

然而,破绽总还是有的。

很多攻击器,程序界面是隐藏的。这,会导致一些渲染上的差异。

例如,Flash 就有这么个机制:当界面不可见时,帧率会降到 2 fps,以节省开销。

例如,复杂的 JS 动画特效,原本跑的并不流畅。但界面挡住后,就能毫无压力的运行。

.....

当然,这些只能用来参考,并非一定正确。

同时,对防火墙的策略也进行了调整:只有当机器压力大时,才开启拦截。尽量降低被“黑科技”误伤的可能。

就这样,修修补补又一年。

对抗 v5

Chrome 浏览器流行后,极大激发了人们研究前端的热情。同时,脚本调试也变得更容易了。

为了不丧失最后的优势,决定“反其道而行之” —— 将脚本的部分逻辑,换成了 VBScript,迫使停留在 IE 上。而正常用户都运行于 WebBrowser,并无影响。

同时还将一些功能,做到了 Flash 里。

整个流程,需要 JS、VBS、Flash、iframe 等交互才能完成,大幅增加了调试复杂度。

对抗 v6

在对抗窘迫时,甚至还尝试了一些下策。例如,弹出一个对话框:

alert('欢迎光临 XXX')

只有点了确定,才能继续运行。于是,一些假人就卡死在了这里。

当然,攻击者很快做出回应 —— 屏蔽了对话框。

我是如何知道的呢?因为每次弹框,都记录了停顿时间:

t = time()
alert(...)
t = time() - t

然而这其中,居然有 0ms 的!!!

这是有多快的手速??即使一直按着 ESC 键,对话框好歹也会闪一下,至少也有几十毫秒了。怎么试不出这么快的~~~

最终,将过短的时间都 XXX

对抗 v7

一段时候后,攻击者也摸索出了规律,不直接屏蔽了。

先让它弹出来,延时几秒,再发送回车键去关闭。。。反正我都想到了,人家也想得到。

于是,改成弹两个、三个、随机个对话框,而对方也许只会点一次。

当然,这都是临时的搞笑方案。

。。。

最后,迫不得己,不再使用系统对话框。而是用 HTML 画一个,并且只能通过鼠标点击关闭。

其实这早已想过,但一直不敢实施 —— 因为这只是个内嵌网页,即使不点,也不影响程序使用。一些用户可能没注意到,就错过了。

系统对话框没有这个问题。因为它会阻塞整个程序的消息,不点就无法其他操作。

为了不让用户错过,这次做了一个格外醒目的浮层,并配上声音和闪烁效果。

回到了 HTML,对抗优势就大幅增加了。

尽管攻击者也能模拟鼠标点击,但是,光点击是远远不够的 —— 鼠标不可能一出来,正好就在关闭按钮上吧,肯定还得先移进去。

因此,还统计了鼠标 move、over、out 等事件。如果次数特别少,也是极其可疑的。

类似的行为分析方式,还有不少。配合独特的思路,陆续更新直到最后。

其他对抗

当然,并非所有攻击,都从脚本着手的。

还是有不少喜欢简单暴力的 —— 网络攻击。尤其那台“授权服务器”,自然成了众矢之的。

使用传统的负载均衡?简单,但不隐蔽。攻击者只需跟踪域名,既可遍历出 IP。

为了隐蔽,于是将 IP 列表写在脚本里,让脚本程序来负载。而脚本,是经过加密混淆的。

这样,又把攻击者带回“前端黑魔法”这个坑里了!

当然,“授权服务器” 的实际 IP,在网页运行时还是能够观察到,只是麻烦一些。

同时,结构上也进行一些策略优化。

例如,在游戏服务器上,也开了一个“授权服务”。

平时拦截未开启时,可直接走这条“绿色通道”;只有走不通时,才通过“授权服务器”中转。

这样,就大幅降低对“授权服务器”的依赖!

当然,这么做也有弊端:授权服务的逻辑泄露了。所以,防火墙的部分模块,也做了一些加壳处理。

结束

随着前端技术日趋成熟,优势大不如从前。而且对黑科技的淡却,以及其他工作,逐渐减少了更新。

到了大学结束前,已彻底放弃了更新。

虽然其中趣事还有不少,但这是最长、最有科技的一段。不,并没有什么高级技术,除非“思路”也算。

前前后后绝大多数的时间,都花在“想”上面,“码”的过程少之又少。

当然,这其中也想过一些其他类型的 “JavaScript 防火墙”,例如“跨站防火墙”、“流量劫持防火墙”等等。后来也都变成了现实,用在了工作之中。

用前端脚本玩转安全防御,从那一刻起,持续至今。


后记:关于 JS 前端加密与混淆的方案,可以查看:https://github.com/EtherDream/myppt/blob/master/前端加密与混淆.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/593591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WordPress 网站管家小程序源码

正文: Wordpress网站管家小程序源码,基于uniapp开发的产品,WP管家是主打用户访问端,兼容了微信小程序与安卓APP(其他端未测试),用于用户的访问。 1、在Wordpress根目录新建一个文件夹&#xf…

达美乐的面试(部分)(未完全解析)

Java如何保证非线程安全的数据结构(比如HashMap)的原子性?读多写少时用哪种锁好? A: 方法1:CAS等乐观锁机制,方法2:如果读多写少,可以使用读写锁(ReentrantReadWriteLock&#xff0…

在Centos Stream 9上Docker的实操教程(二) - Docker的常用命令

在Centos Stream 9上Docker的实操教程 - Docker的常用命令 Docker启动类命令Docker镜像命令镜像列表 docker images镜像查找 docker search拉取镜像 docker pull删除镜像 docker rmi查看占用信息 docker system df容器创建新镜像 docker commit 容器命令启动容器 docker run查看…

vue组件化路由

文章目录 vue项目1.vue组件2.插槽3.自定义指令4.vue路由 vue项目 vue项目中src目录的构成 assets: 存放项目中用到的静态资源文件,例如css,图片资源等components: 存放我们封装的、可复用的组件main.js: 项目的入口文件,整个项目的运行要先执行main.jsApp.vue: 项目的根组件 …

定时器详解 -- 定时器中断、PWM输出 --stm32

STM32定时器使用 STM32定时器计数模式定时器工作原理基本定时器:TIM6、TIM7示例代码代码讲解 通用定时器:TIM2、TIM3、TIM4、TIM5高级定时器:TIM1、TIM8定时器PWM输出原理通用定时器3控制通道1输出PWM脉冲代码 总结参考资料 STM32定时器 STM…

加密与解密 调试篇 动态调试技术 (三)-OllyDbg 插件 Run/Hit 符号调试 加载程序

目录 插件 这里给出一个命令行插件 Run Trace 运行 Hit Trace 符号调试 符号格式 1.SYM格式 2.COFF格式 3.CodeView格式 4.PDB格式 5.DBG格式 6.MAP文件 创建调试文件 加载程序 1.CreateProcess 2.将OllyDbg附加到一个正在运行的程序上 插件 OllyDbg允许插件 …

1计算机网络体系结构_1.1计算机网络概述

1.1.1计网_概念 概念: 计网是一个 将【分散的、具有独立功能的】计算机系统,通过【通信设备与线路】连接起来,由功能完善的软件实现资源共享和信息传递的系统。简言之,计算机网络就是一些 互连的、自治的 计算机系统 的 集合。 …

excel函数采集,截取特殊符号前面/后面数据

截取前面 LEFT(I2,FIND("-",I2)-1) 截取后面 MID(I2,FIND("-",I2)1,99) 房贷利率计算公司,等额本金 (B2-G2*A2)*F2*0.01 Excel常用电子表格公式大全  一、Excel基本公式   1、查找重复内容公式:IF(COUNTIF(A:A,A2)>1,&qu…

国密算法解析

国密算法即国家密码局认定的国产密码算法。 国密算法是商用密码,仅能用于商业用途。国密算法是一套标准,由国家密码局制定的规范,凡是符合的,都可以称之为国密算法。国密算法暂无官方的代码实现,企业可以自己编码实现…

2022年五一杯数学建模A题血管机器人的订购与生物学习解题全过程及论文和程序

2022年五一杯数学建模A题 血管机器人的订购与生物学习 原题再现: 随着微机电系统的发展,人类已经可以加工越来越小的机器。这些机器小到一定程度就可以放进血管开展疾病治疗,这就是血管机器人。血管机器人可以携带药物放入血管里定点治疗与…

信号调制的工作原理

要理解如何进行无线数据传输,我们需要了解: 什么是频率? 信息/数据信号 时间表示 频率表示,为什么它很重要? 滤波器如何工作? FCC通信频段 调制和解调 这些主题可能您在大学专业课上学过&#xff0c…

uboot下的mw写内存和md显示内存命令以及nand命令

配置uboot参数 setenv ipaddr 192.168.0.10;setenv serverip 192.168.0.40;setenv gatewayip 192.168.0.1;setenv netmask 255.255.255.0 setenv bootargs mem512M consolettyAMA0,115200 root/dev/mtdblock2 rootfstypeyaffs2 rw init/init mtdpartshinand:1M(boot),4M(kern…

面试offer收割机,爆肝整理高频软件测试面试题(带答案)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 软件测试面试题&am…

excel 给合并的单元格进行序号填充

一、问题描述 提示:这里描述项目中遇到的问题: 在使用excel 的时候,是否遇到过要给合并单元格排序的情况,下拉会显示需要相同的单元格才行,如图: 二、解决方案 目的是给单元格计数,所以使用…

Module not found: Error: Can‘t resolve ‘fs‘ in ‘/root/workspace/

项目发版时 因为webpack5 不会自动引入polyfills 导致报了一系列错, 按照提示做如下配置 externals 官网文档解释的很清楚,就是webpack可以不处理应用的某些依赖库,使用externals配置后,依旧可以在代码中通过CMD、AMD或者wi…

打车/代驾/跑腿小程序源码司机入住uniapp/thinkphp

开发代驾顺风车货运 客户端:Uniapp 开发 司机端:Uniapp 开发 后台:thinkphp5 框架 数据库:MySQL 打车/代驾/跑腿小程序源码司机入住uniapp/thinkphp 为什么用UNIAPP开发? UNIAPP框架简单,学习成本低…

Spring(IOC,DI,事务)属性

Spring(IOC,DI,事务)属性 IOC 概念 Inverse Of Controll:控制反转;反转了依赖关系的满足方式,由之前的自己创建依赖对象,变为由工厂推送。(变主动为被动,即反转)解决了…

1_5 optical_flow

采用特征点法做VO存在耗时较大的问题,一般耗时情况:如下 (1) 在图像中提取特征点并计算特征描述, 非常耗时 ~10ms ORB,shift耗时更多; (2) 在不同图像中寻找特征匹配, 非常耗时 …

day43|动态规划5-不同0-1背包的问题形态

关键点: 找到前后两种状态的依赖关系 经典0-1背包: 给定一个背包,问装满该背包的最大价值。分割等和子集: 给定一个背包,能不能装满该背包(将重量抽象成价值)最后一块石头重量: 给一…

如何快速图片压缩指定大小?图片压缩到200k以内的方法

图片压缩到200k以内的介绍 在现代社交媒体和网页设计中,高质量的图片是必不可少的。但是,大型图像文件可能会导致页面加载时间过长,从而影响用户体验。这时就需要使用图片压缩技术来将图片文件大小减小到合理的范围内。其中,将图…