一种动态Web应用防护系统
文献发布时间:2023-06-19 09:27:35
技术领域
本发明涉及信息安全技术领域,尤其是涉及一种动态Web应用防护系统。
背景技术
随着Web应用越来越丰富,Web服务器以其强大的计算能力、处理性能及蕴含的较高价值逐渐成为主要攻击目标。SQL注入、网页篡改、网页挂马等安全事件,频繁发生。
因此,为保证Web安全,企业等用户一般采用防火墙作为安全保障体系的第一道防线。但是在现实中,Web服务器和应用存在各种各样的安全问题,并随着黑客技术的进步也变得更加难以预防,因为这些问题是普通防火墙难以检测和阻断的,由此产生了WAF。
WAF是Web应用防护系统的外文名称,是通过执行一系列针对HTTP/HTTPS的安全策略来专门为web应用提供保护的一款产品。
目前,传统的WAF通过获取应用层数据,根据获取到的数据匹配自己的规则库,利用正则表达式来分析判断数据的合法性,生成白名单、黑名单,最后进行访问控制。这种防御形式依赖规则库被动防御,规则库的升级也主要靠网络攻击成功后对规则进行提取,导致安全防御的滞后性;且随着网络攻击手段及攻击形式的日益繁多,导致规则库和特征库也随之增加,网络运维人员要实时关注规则库及特征库的升级,劳心劳力且收获甚微。
发明内容
针对上述问题,本发明提供了一种动态Web应用防护系统,在保证传统WAF功能的前提下,使得WAF由被动防御变为主动防御,降低规则策略维护成本的同时提升WAF的防御能力。
为实现上述目的,本发明提供了一种动态Web应用防护系统,包括:前端防护模块、Html源码加密防护模块、元素动态变形防护模块、网页内容防护模块、漏洞扫描防护模块、原文件防护模块和人机识别防护模块中的一个或多个;
所述前端防护模块,用于:
在每次网页接受访问时,对JS源代码进行多态变异;
所述Html源码加密防护模块,用于:
通过对Html页面源码进行加密,使客户端的页面源码成为密文;
所述元素动态变形防护模块,用于:
赋予网页元素动态变形能力,使网页每次访问或刷新时元素发生动态变化;
所述网页内容防护模块,用于:
对网页显示内容的字体进行加密;
对字体的加密密码进行动态处理;
对字体路径进行动态变化处理;
对动态变换后的字体路径设置访问时限;
所述漏洞扫描防护模块,用于:
自动修改网站反馈给客户端或扫描软件的Web服务器响应信息,抹去包括IIS、Apache、Nginx的信息特征;
所述原文件防护模块,用于:
将静态原文件缓存在WAF中,将WAF作为备用Web服务器;
所述人机识别防护模块,用于:
检测异常行为、识别机器人行为,判断访问者是否是人机,若判断为人机则停止接受访问。
作为本发明的进一步改进,所述对JS源代码进行多态变异包括:
在JS源代码中内置JS引擎;
每次调用JS源代码时,所述JS引擎对源代码进行词法分析、语法分析;
根据所述词法分析分离出变量和常量;
将变量经过Base/MD5转化,常量阵列化、加密,再插入僵尸代码、加入反调试、经平展控制流后进行代码压缩,生成新的JS代码。
作为本发明的进一步改进,所述对Html页面源码进行加密,使客户端的页面源码成为密文;具体为:
获取web服务器返回给客户端的Html页面源码;
对所述Html页面源码进行加密运算得到新的Html页面源码;
在所述新的Html页面源码中加入解密函数后发送给客户端;
客户端收到新的Html页面源码和解密函数,解密函数自动解析新的Html页面源码,使客户端展示正常的网页内容。
作为本发明的进一步改进,所述赋予网页元素动态变形能力,使网页每次访问或刷新时元素发生动态变化,包括:
选择网页中一个或多个关键元素,包括用户名、密码ID和Name属性;
针对所述的一个或多个关键元素分别设置动态变形池,分别存放一个或多个所述关键元素和动态变形内容的对应关系;
网页每次访问或刷新时,对选择的一个或多个关键元素进行动态变形;
将变形后内容与对应的所述关键元素的对应关系保存在变形池中,将变形后内容发送客户端。
作为本发明的进一步改进,网页元素动态变形不影响网页正常功能,客户端接收到变形后内容,根据变形池中对应关系还原关键元素,将还原后的数据发送到被保护网页,实现网页正常功能。
作为本发明的进一步改进,所述对网页显示内容的字体进行加密可使用自定义字体表示网页显示内容,包括使用数字代码表示网页显示内容。
作为本发明的进一步改进,所述对字体的加密密码进行动态处理,包括:
当收到网页访问请求时,随机生成字体加密密码对网页显示内容进行加密;
网页显示内容时,根据对应的解密密码进行解密,显示解密后的网页显示内容。
作为本发明的进一步改进,所述对字体路径进行动态变化处理,包括:
在网页显示内容的相关数据发往客户端前对字体路径做动态变化处理,得到变化后字体路径;
将字体路径和变化后字体路径的对应关系保存在路径变化池中;
客户端收到变化后的字体路径,发起路径请求,得到原始字体路径,显示网页内容。
作为本发明的进一步改进,所述对动态变换后的字体路径设置访问时限,具体为:
设置动态变换后的字体路径只能访问一次;
网页正常访问时可以正常读取网页显示内容,获取文件路径重新打开网页时不能读取网页显示内容。
作为本发明的进一步改进,所述检测异常行为、识别机器人行为,判断访问者是否是人机,若判断为人机则停止接受访问,包括:
网页后端通过规则检测异常登录行为,前端页面植入JS脚本引擎,分析页面行为,识别机器人行为。
与现有技术相比,本发明的有益效果为:
对JS源码进行多态变异及通过JS多态变异、对网站源码、Html标签字段等进行动态封装加密实现WAF的主动防御功能、在浏览器端实现的机器人检测和前端WAF功能。
附图说明
图1为本发明一种实施例公开的动态Web应用防护系统模块示意图;
图2为本发明一种实施例公开的JS引擎对源代码的操作展示图;
图3为本发明一种实施例公开的加密前Html页面源码展示图;
图4为本发明一种实施例公开的加密后Html页面源码展示图;
图5为本发明一种实施例公开的以用户名为例,使用元素动态变形防护前,页面源码展示图;
图6为本发明一种实施例公开的使用元素动态变形防护后,元素名称变为无规则随机数展示图;
图7为本发明一种实施例公开的使用随机生成字体加密密码对原始字体进行加密得到编码文字展示图;
图8为本发明一种实施例公开的字体路径进行动态变化后一次访问时字体路径展示图;
图9为本发明一种实施例公开的字体路径进行动态变化后又一次访问时字体路径展示图;
图10为本发明一种实施例公开的复制动态变化后的网页路径直接在浏览器中打开效果展示图;
图11为本发明一种实施例公开的为一台IIS服务器使用漏洞扫描防护前识别服务器展示图;
图12为本发明一种实施例公开的一台IIS服务器使用漏洞扫描防护后误识别服务器展示图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明做进一步的详细描述:
如图1所示,本发明提供的一种动态Web应用防护系统,包括:前端防护模块、Html源码加密防护模块、元素动态变形防护模块、网页内容防护模块、漏洞扫描防护模块、原文件防护模块和人机识别防护模块中的一个或多个;
前端防护模块,用于:
在每次网页接受访问时,对JS源代码进行多态变异,进而抵御自动化攻击、SQL注入、XSS、CSRF以及JS功能逻辑篡改;
具体实现方法为:
在JS源代码中内置JS引擎;
每次调用JS源代码时,JS引擎对源代码进行一系列操作,如图2所示,包括词法分析、语法分析;
根据词法分析分离出变量、常量、函数和关键字,根据语法分析生成语法树;
将变量经过Base/MD5转化、常量阵列化、加密,再插入僵尸代码、加入反调试、经平展控制流后进行代码压缩,生成新的JS代码。
如第N次调用,新的JS源代码示例:
var_0x6430=['hello\x20world'];(function(_0x1f3f04,_0x536307){var_0x314db3=function(_0x56a8cf){while(--_0x56a8cf){_0x1f3f04['\x70\x75\x73\x68'](_0x1f3f04['\x73\x68\x69\x66\x74']());}};_0x314db3(++_0x536307);}(_0x6430,0x11f));var_0x0643=function(_0x4ce68d,_0x1bea29){_0x4ce68d=_0x4ce68d-0x0;var_0x5eb6e8=_0x6430[_0x4ce68d];return_0x5eb6e8;};function
hello_world(){alert(_0x0643('0x0'));}hello_world();
第NN次调用,新的JS源代码示例:
var_0x21bf=['aGVsbG8gd29ybGQ\x3d'];(function(_0x330e8c,_0x50314b){var_0x442a6d=function(_0x40a41d){while(--_0x40a41d){_0x330e8c['\x70\x75\x73\x68'](_0x330e8c['\x73\x68\x69\x66\x74']());}};_0x442a6d(++_0x50314b);}(_0x21bf,0x10d));var_0xf21b=function(_0x14762e,_0x4b3bb5){_0x14762e=_0x14762e-0x0;var_0x53a8a9=_0x21bf[_0x14762e];if(_0xf21b['\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x65\x64']===undefined){(function(){var_0x56cd94=Function('\x72\x65\x74\x75\x72\x6e\x20\x28\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x28\x29\x20'+'\x7b\x7d\x2e\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x28\x22\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x69\x73\x22\x29\x28\x29'+'\x29\x3b');var_0x50b39b=_0x56cd94();var_0x32700d='\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';_0x50b39b['\x61\x74\x6f\x62']||(_0x50b39b['\x61\x74\x6f\x62']=function(_0x588dbb){var_0x35073b=String(_0x588dbb)['\x72\x65\x70\x6c\x61\x63\x65'](/=+$/,”);for(var_0x5d89bf=0x0,_0x34f447,_0x4ab501,_0x5ca80c=0x0,_0x6a066b=”;_0x4ab501=_0x35073b['\x63\x68\x61\x72\x41\x74'](_0x5ca80c++);~_0x4ab501&&(_0x34f447=_0x5d89bf%0x4?_0x34f447*0x40+_0x4ab501:_0x4ab501,_0x5d89bf++%0x4)?_0x6a066b+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0xff&_0x34f447>>(-0x2*_0x5d89bf&0x6)):0x0){_0x4ab501=_0x32700d['\x69\x6e\x64\x65\x78\x4f\x66'](_0x4ab501);}return_0x6a066b;});}());_0xf21b['\x62\x61\x73\x65\x36\x34\x44\x65\x63\x6f\x64\x65\x55\x6e\x69\x63\x6f\x64\x65']=function(_0x486dc0){var_0x14a91c=atob(_0x486dc0);var_0x41ef2a=[];for(var_0x26b3a0=0x0,_0x57c5f5=_0x14a91c['\x6c\x65\x6e\x67\x74\x68'];_0x26b3a0<_0x57c5f5;_0x26b3a0++){_0x41ef2a+='\x25'+('\x30\x30'+_0x14a91c['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x26b3a0)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x10))['\x73\x6c\x69\x63\x65'](-0x2);}returndecodeURIComponent(_0x41ef2a);};_0xf21b['\x64\x61\x74\x61']={};_0xf21b['\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x65\x64']=!![];}if(_0xf21b['\x64\x61\x74\x61'][_0x14762e]===undefined){_0x53a8a9=_0xf21b['\x62\x61\x73\x65\x36\x34\x44\x65\x63\x6f\x64\x65\x55\x6e\x69\x63\x6f\x64\x65'](_0x53a8a9);_0xf21b['\x64\x61\x74\x61'][_0x14762e]=_0x53a8a9;}else{_0x53a8a9=_0xf21b['\x64\x61\x74\x61'][_0x14762e];}return_0x53a8a9;};function
hello_world(){alert(_0xf21b('0x0'));}hello_world();
第NNN次调用,新的JS源代码示例:
var_0xbb7b=['pSk','hello\x20world'];(function(_0x10e2f9,_0x754a1c){var_0x291c5b=function(_0xa42128){while(--_0xa42128){_0x10e2f9['\x70\x75\x73\x68'](_0x10e2f9['\x73\x68\x69\x66\x74']());}};_0x291c5b(++_0x754a1c);}(_0xbb7b,0x134));var_0xbbb7=function(_0x41aca6,_0x9cc910){_0x41aca6=_0x41aca6-0x0;var_0x1770aa=_0xbb7b[_0x41aca6];return_0x1770aa;};function
hello_world(){var_0x3accef={'\x70\x53\x6b':function_0xd9021a(_0x44258c,_0x55465d){return_0x44258c(_0x55465d);}};_0x3accef[_0xbbb7('0x0')](alert,_0xbbb7('0x1'));}hello_world();
Html源码加密防护模块,用于:
通过对Html页面源码进行加密,使客户端的页面源码成为密文;
具体实现方法为:
获取web服务器返回给客户端的Html页面源码;
对Html页面源码进行加密运算得到新的Html页面源码;
在新的Html页面源码中加入解密函数后发送给客户端;
客户端收到新的Html页面源码和解密函数,解密函数自动解析新的Html页面源码,使客户端展示正常的网页内容。
如,加密前Html页面源码截图如图3所示,加密后Html页面源码截图如图4所示。
元素动态变形防护模块,用于:
赋予网页元素动态变形能力,使网页每次访问或刷新时元素发生动态变化;进而使攻击者无法锁定网页元素,无法使用如撞库、密码暴力破解、爬虫、猫池、嗅探、拦截篡改、重放等自动化攻击手段,可以彻底防御此类自动化工具及脚本对网页进行攻击,达到主动、动态保护重要网页内容的目的;
具体实现方法为:
选择网页中一个或多个关键元素,包括用户名、密码ID和Name属性;
针对的一个或多个关键元素分别设置动态变形池,分别存放一个或多个关键元素和动态变形内容的对应关系;
网页每次访问或刷新时,对选择的一个或多个关键元素进行动态变形;
将变形后内容与对应的关键元素的对应关系保存在变形池中,将变形后内容发送客户端。
网页元素动态变形不影响网页正常功能,客户端接收到变形后内容,根据变形池中对应关系还原关键元素,将还原后的数据发送到被保护网页,实现网页正常功能。
例如:以用户名为例,使用元素动态变形防护前,如图5所示,页面源码中可以看到有名称为“UserName”的元素;使用元素动态变形防护后,如图6所示,元素名称变为无规则随机数。
网页内容防护模块,用于:
对网页显示内容的字体进行加密;
包括:对网页显示内容的字体进行加密可使用自定义字体表示网页显示内容,包括使用数字代码表示网页显示内容。
对字体的加密密码进行动态处理;
包括:当收到网页访问请求时,随机生成字体加密密码对网页显示内容进行加密;网页显示内容时,根据对应的解密密码进行解密,显示解密后的网页显示内容。
如图7所示,随机生成字体加密密码font1,使用font1对原始字体进行加密得到编码文字。
对字体路径进行动态变化处理;
包括:在网页显示内容的相关数据发往客户端前对字体路径做动态变化处理,得到变化后字体路径;将字体路径和变化后字体路径的对应关系保存在路径变化池中;客户端收到变化后的字体路径,发起路径请求,得到原始字体路径,显示网页内容。
如图8所示为一次访问时,字体路径,如图9所示为又一次访问时字体路径,
对动态变换后的字体路径设置访问时限;
包括:设置动态变换后的字体路径只能访问一次;网页正常访问时可以正常读取网页显示内容,获取文件路径重新打开网页时不能读取网页显示内容。
如图10所示,为复制网页路径后,直接在浏览器中打开效果图,显示已无法读取网页内容。
漏洞扫描防护模块,用于:
自动修改网站反馈给客户端或扫描软件的Web服务器响应信息,抹去包括IIS、Apache、Nginx的信息特征,防止扫描工具对网站发起漏洞扫描;
如图11所示,为一台IIS服务器使用漏洞扫描防护前,识别为IIS;如图12所示,为使用漏洞扫描防护后,误识别为Nginx。
原文件防护模块,用于:
将静态原文件缓存在WAF中,将WAF作为备用Web服务器,如此,即使原网站服务器文件被非法修改、甚至网站被删除,也不会影响正常访问。
人机识别防护模块,用于:
检测异常行为、识别机器人行为,判断访问者是否是机器人行为或自动化工具,若判断为是则停止接受访问。
包括:
(1)网页后端通过规则检测异常登录行为,根据异常行为判定是否为自动化工具访问,例如:
连续多次登录页面,但登陆成功次数为零,可判断为自动化工具在进行枚举暴力破解;
统一访问者连续大量访问多个页面,可判断为DDOS工具,或爬虫,或自动刷量工具等;
访问者的特征含有明显的三方驱动浏览器标志;
(2)前端页面植入JS脚本引擎,分析页面行为,识别机器人行为,例如:
连续访问多页面而无点击、无输入、无按键等行为;
输入行为异常,一次性键入多个字符或无按键行为实现的输入等。
本发明的优点为:
对JS源码进行多态变异及通过JS多态变异、对网站源码、Html标签字段等进行动态封装加密实现WAF的主动防御功能、在浏览器端实现的机器人检测和前端WAF功能。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种动态Web应用防护系统
- 一种Web应用防护系统平滑重启方法