CN117891502B - 一种jsp文件解混淆方法、系统、设备及存储介质 - Google Patents
一种jsp文件解混淆方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN117891502B CN117891502B CN202410288265.XA CN202410288265A CN117891502B CN 117891502 B CN117891502 B CN 117891502B CN 202410288265 A CN202410288265 A CN 202410288265A CN 117891502 B CN117891502 B CN 117891502B
- Authority
- CN
- China
- Prior art keywords
- file
- decoding
- code
- jsp
- explicit information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000001514 detection method Methods 0.000 claims abstract description 40
- 230000006870 function Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 208000018208 Hyperimmunoglobulinemia D with periodic fever Diseases 0.000 claims 1
- 206010072219 Mevalonic aciduria Diseases 0.000 claims 1
- DTXLBRAVKYTGFE-UHFFFAOYSA-J tetrasodium;2-(1,2-dicarboxylatoethylamino)-3-hydroxybutanedioate Chemical compound [Na+].[Na+].[Na+].[Na+].[O-]C(=O)C(O)C(C([O-])=O)NC(C([O-])=O)CC([O-])=O DTXLBRAVKYTGFE-UHFFFAOYSA-J 0.000 claims 1
- 238000011161 development Methods 0.000 abstract description 13
- 238000004891 communication Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明实施例提供了一种JSP文件解混淆方法、系统、设备及存储介质,在保持检测引擎已有的开发语言不变的情况下,通过对JSP文件进行多次识别编码,针对每次识别的不同编码调用对应的JAVA解码服务对其进行解码,对最后的解码文件进行语法解混淆。本申请兼容JSP语法解混淆,特别是能够检测多重编码混淆。此外,本申请避免在编译未知代码时可能造成的安全隐患,本申请适配性更好,可以适配各个版本的Web服务器,对开发语言的适配度高,效率高。
Description
技术领域
本发明实施例涉及网络安全技术领域,具体涉及一种JSP文件解混淆方法、系统、设备及存储介质。
背景技术
JSP(JavaServer Pages)是一种用于构建动态Web应用程序的JAVA技术,它允许开发人员将JAVA代码嵌入到HTML页面中,从而生成动态内容。
Webshell通常是由黑客或攻击者用于远程访问和控制受感染的Web服务器的程序,旨在提供对Web服务器或网站的未经授权访问和控制。总体上,Webshell经常被攻击者用来入侵Web服务器、窃取数据、执行操作和获得未经授权的访问权限。
为了规避Webshell静态检测引擎的查杀,Webshell代码一般会进行一定程度上的混淆,将代码中一些敏感的关键字变成静态检测引擎无法解析的字符,以达到无法通过明文或哈希匹配等方式查杀。
目前针对JSPWebshell混淆的方式主要有两种:
语法混淆:使用JSP本身语法,如使用Pi、CDATA标签等混淆技巧拆分敏感关键字,使得简单的明文匹配关键字的检测方式失效。
字符编码混淆:对Webshell文件进行字符编码,使得代码能正常执行但静态检测引擎因为无法正确解码从而无法正确理解文件内容从而导致绕过,该类绕过是一种十分通用的混淆方式。
目前针对混淆JSPWebshell进行检测主要思路如下:
非直接进行解混淆JSPWebshell,直接使用对应Web服务器的编译程序编译混淆的Webshell,在编译过程中获得明文JSP代码。此种方式虽然能够避开了混淆问题,但是由于使用了开源编译器,其编译过程存在一些不需要的流程,编译效率十分缓慢且存在一些需要代码审计才能了解到的安全隐患,需要花费大量时间修改开源编译器,且修改后的效率仍远远比不上纯静态检测的效率。并且由于开源编译器版本不同,需要准备多个版本的编译器编译才能达到完全检测的效果,此时效率问题又会成倍地凸显出来。
直接进行解混淆JSPWebshell,用检测引擎的开发语言实现语法解混淆以及字符编码解混淆。但是由于开发语言的限制,基本上无法支持多种字符编码解混淆,故大部分只能针对JSP语法混淆本身进行针对性地解混淆,无法支持字符编码解混淆,更是无法支持多重编码混淆。在实际工程中,若检测引擎的开发语言使用其他语言,如C/C++、Golang、Python等非JAVA语言,则完全无法支持如此多种编码,最终导致检测引擎被绕过。
发明内容
为此,本发明实施例提供一种JSP文件解混淆方法、系统、设备及存储介质,以解决当前检测引擎对JSP Webshell解混淆受到开发语言限制无法实现多种字符编码文件解混淆的技术问题。
为了实现上述目的,本发明实施例提供如下技术方案:
根据本发明实施例的第一方面,本申请实施例提供了一种JSP文件解混淆方法,所述方法包括:
接收混淆的JSP文件;
判断所述JSP文件的头部字节流中是否存在第一显式信息;
如果所述JSP文件的头部字节流中存在第一显式信息,则利用所述第一显式信息识别出对应的文件编码;
调用对应的解码器利用所述文件编码对所述JSP文件进行第一解码,获取第一解码文件;
判断所述第一解码文件的第一预设标签中是否存在第二显式信息;
进一步地,如果所述第一解码文件的第一预设标签中存在第二显式信息,则利用所述第二显式信息识别出对应的页面编码;
调用对应的解码器利用所述页面编码对所述第一解码文件进行第二解码,获取第二解码文件;
判断所述第二解码文件的第二预设标签中是否存在第三显式信息;
进一步地,如果所述第二解码文件的第二预设标签中存在第三显式信息,则利用所述第三显式信息识别出对应的内容编码;
调用对应的解码器利用所述内容编码对所述第二解码文件进行第三解码,获取第三解码文件;
进一步地,对所述第三解码文件进行语法解混淆,得到JSP明文文件。
进一步地,所述混淆的JSP文件包括从主机文件中获取的HIDS场景文件和从网络流量中获取IDS场景文件。
进一步地,所述方法还包括:
如果所述JSP文件的头部字节流中不存在第一显式信息,则将文件编码识别为默认编码;
其中,所述第一显式信息为显式指明文件编码为UTF-8编码、UTF-16编码、UTF-32编码或CP037编码的BOM头,所述默认编码为UTF-8编码。
进一步地,所述方法还包括:
如果所述第一解码文件的第一预设标签中不存在第二显式信息,则将页面编码识别为默认编码;
其中,所述第一预设标签为XML标签,所述第二显式信息为指明页面编码为UTF-8编码、UTF-16编码、UTF-32编码或CP037编码的第一编码值,所述第一编码值为根据JSP语法从所述第一解码文件提取出的XML标签中的encoding的值,所述默认编码为UTF-8编码。
进一步地,所述方法还包括:
如果所述第二解码文件的第二预设标签中不存在第三显式信息,则将内容编码识别为默认编码;
其中,所述第二预设标签为directive page标签,所述第二显式信息为指明页面编码为UTF-8编码、UTF-16编码、UTF-32编码或CP037编码的第二编码值,所述第二编码值为根据JSP语法从所述第二解码文件提取出的directive page标签中的charset的值,所述默认编码为UTF-8编码。
进一步地,调用对应的解码器利用所述文件编码/所述页面编码/所述内容编码对所述JSP文件/所述第一解码文件/所述第二解码文件进行第一解码/第二解码/第三解码,获取第一解码文件/第二解码文件/第三解码文件,包括:
启用一个JAVA解码服务;
向所述JAVA解码服务发起RPC协议请求;
利用JAVA内置解码函数调用对应的解码器,基于所述文件编码/所述页面编码/所述内容编码对所述JSP文件/所述第一解码文件/所述第二解码文件进行第一解码/第二解码/第三解码;
接收返回的RPC协议响应,获取第一解码文件/第二解码文件/第三解码文件。
进一步地,对所述第三解码文件进行语法解混淆,得到JSP明文文件,包括:
使用正则引擎或有限状态机对所述第三解码文件进行语法解混淆。
根据本发明实施例的第二方面,本申请实施例提供了一种JSP文件解混淆系统,所述系统应用于检测引擎,所述系统包括:
接收模块,用于接收混淆的JSP文件;
第一识别模块,用于判断所述JSP文件的头部字节流中是否存在第一显式信息;如果所述JSP文件的头部字节流中存在第一显式信息,则利用所述第一显式信息识别出对应的文件编码;
解码模块,用于调用对应的解码器利用所述文件编码对所述JSP文件进行第一解码,获取第一解码文件;
第二识别模块,用于判断所述第一解码文件的第一预设标签中是否存在第二显式信息;如果所述第一解码文件的第一预设标签中存在第二显式信息,则利用所述第二显式信息识别出对应的页面编码;
所述解码模块还用于调用对应的解码器利用所述页面编码对所述第一解码文件进行第二解码,获取第二解码文件;
第三识别模块,用于判断所述第二解码文件的第二预设标签中是否存在第三显式信息;如果所述第二解码文件的第二预设标签中存在第三显式信息,则利用所述第三显式信息识别出对应的内容编码;
所述解码模块还用于调用对应的解码器利用所述内容编码对所述第二解码文件进行第三解码,获取第三解码文件;
语法解混淆模块,用于对所述第三解码文件进行语法解混淆,得到JSP明文文件。
根据本发明实施例的第三方面,提供了一种JSP文件解混淆设备,所述设备包括:处理器和存储器;
所述存储器用于存储一个或多个程序指令;
所述处理器,用于运行一个或多个程序指令,用以执行如上任一项所述的一种JSP文件解混淆方法的步骤。
根据本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的一种JSP文件解混淆方法的步骤。
与现有技术相比,本申请实施例提供的一种JSP文件解混淆方法、系统、设备及存储介质,在保持检测引擎已有的开发语言不变的情况下,通过对JSP文件进行多次识别编码,针对每次识别的不同编码调用对应的JAVA解码服务对其进行解码,对最后的解码文件进行语法解混淆,最终得到JSP明文文件。本申请兼容JSP语法解混淆,特别是能够检测多重编码混淆。此外,本申请不再需要对对应Web服务器的编译程序编译混淆的Webshell,避免了开源编译器的使用,从而避免在编译未知代码时可能造成的安全隐患。本申请适配性更好,可以适配各个版本的Web服务器,对开发语言的适配度高,效率高,可以运用于对检测效率需求高的场景,如流量检测场景。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。
图1为本发明实施例提供的一种JSP文件解混淆系统的逻辑框图;
图2为本发明实施例提供的一种JSP文件解混淆方法的流程示意图;
图3为本发明实施例提供的一种JSP文件解混淆方法中调用对应的解码器实现解码的流程示意图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的目的在于:针对当前检测引擎对JSP Webshell解混淆受到开发语言限制无法实现多种字符编码文件解混淆。
为了解决上述技术问题,如图1所示,本申请实施例提供了一种JSP文件解混淆系统,该系统应用于检测引擎。
在本发明实施例中,检测引擎用来抵御恶意系统攻击,如果检测到归类为恶意软件的对象,将开始清除。检测引擎可以通过先阻止它,然后清除、删除或将其移至隔离区来消除威胁。
具体地,本申请实施例提供的一种JSP文件解混淆系统包括:接收模块1、第一识别模块2、解码模块3、第二识别模块4、第三识别模块5以及语法解混淆模块6。
具体的,本发明实施例提供的接收模块1用于接收混淆的JSP文件,第一识别模块2用于判断JSP文件的头部字节流中是否存在第一显式信息,如果JSP文件的头部字节流中存在第一显式信息,则利用所述第一显式信息识别出对应的文件编码。
进一步地,解码模块3用于调用对应的解码器利用文件编码对JSP文件进行第一解码,获取第一解码文件,第一解码文件被第二识别模块4进行判断,第二识别模块4判断第一解码文件的第一预设标签中是否存在第二显式信息,如果第一解码文件的第一预设标签中存在第二显式信息,则利用第二显式信息识别出对应的页面编码。
进一步地,解码模块3调用对应的解码器利用页面编码对所述第一解码文件进行第二解码,获取第二解码文件,第二解码文件被第三识别模块5进行判断,第三识别模块5判断第二解码文件的第二预设标签中是否存在第三显式信息,如果第二解码文件的第二预设标签中存在第三显式信息,则利用第三显式信息识别出对应的内容编码。
进一步地,解码模块3调用对应的解码器利用内容编码对第二解码文件进行第三解码,获取第三解码文件,第三解码文件被语法解混淆模块6进行语法解混淆,从而得到JSP明文文件。
与现有技术相比,本申请实施例提供的一种JSP文件解混淆系统,针对检测引擎在保持已有的开发语言不变的情况下,通过第一识别模块2、第二识别模块4和第三识别模块5识别的不同编码,解码模块3调用对应的解码器利用不同编码对识别文件进行不同解码,语法解混淆模块6对最后取得的解码文件进行语法解混淆,最终得到JSP明文文件。实现了JSPWebshell字符编码解混淆,兼容JSP语法解混淆,特别是能够检测多重编码混淆,从而避免了恶意代码绕过检测引擎的查杀,进而提高检测引擎的检测效率。
与上述公开的一种JSP文件解混淆系统相对应,本发明实施例还公开了一种JSP文件解混淆方法。以下结合上述描述的一种JSP文件解混淆系统详细介绍本发明实施例中公开的一种JSP文件解混淆方法。
本申请实施例提供的一种JSP文件解混淆方法,该方法应用于检测引擎,检测引擎用来抵御恶意系统攻击,如果检测到归类为恶意软件的对象,将开始清除。检测引擎可以通过先阻止它,然后清除、删除或将其移至隔离区来消除威胁。
如图2所示,以下对本申请实施例提供的一种JSP文件解混淆方法具体步骤进行详细描述。
在本发明实施例中,由接收模块1接收混淆的JSP文件。
具体地,在本发明实施例中,所述混淆的JSP文件包括和获取IDS场景文件。HIDS场景文件来源为HIDS场景从主机文件中获取,IDS场景文件的来源为从网络流量中获取。
其中, HIDS(Host-based Intrusion Detection System)是一种基于主机的入侵检测系统,旨在检测单个计算机或服务器上的恶意活动和安全漏洞。IDS(intrusiondetection system,入侵检测系统)是一种对网络传输进行即时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备。
进一步地,由第一识别模块2判断混淆的JSP文件的头部字节流中是否存在第一显式信息。
进一步地,如果JSP文件的头部字节流中存在第一显式信息,则利用第一显式信息识别出对应的文件编码;如果JSP文件的头部字节流中不存在第一显式信息,则将文件编码识别为默认编码。
其中,文件编码指的是文件本身的字符编码,由于文件本身以字节流的形式存在,则需要知道对应的字符编码才能正确得到文件内容。
字符编码是一种将字符映射到数字值的方法,以便计算机能够在存储、传输和处理文本数据时理解和操作字符。由于计算机内部处理的是数字,所以字符需要通过编码来表示。每个字符都会被映射到一个唯一的数字值,这使得计算机能够正确地显示、存储和传输文本。正确地设置字符编码可以防止乱码问题,并确保跨语言的支持。字符编码的不正确使用可能会导致安全漏洞,例如利用编码的差异来进行攻击。
第一显式信息为显式指明文件编码为UTF-8编码、UTF-16编码、UTF-32编码或CP037编码的BOM头,所述默认编码为UTF-8编码。
获取文件编码只需要取出文件字节流的前几个字节,然后按照BOM头与字符编码和字节序的对照表(如以下表1所示)对应即可获得字符编码和字节序。
其中,BOM头(Byte-Order Mark,字节顺序标记)是被用来标示其字节序,它常被用来当做标示文件是以UTF-8、UTF-16或UTF-32编码的标记。字节顺序标记通常有多种涵义,例如:(1)在16位和32位的情况下,表示文字流的字节顺序;(2)表示文字流非常有可能是Unicode编码;(3)使用的是哪一Unicode字符编码。其中,Unicode为统一码,它也叫万国码或单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
Tomcat服务器默认支持四种编码:UTF-8、UTF-16、UTF-32、CP037编码。
;
进一步地,由解码模块3调用对应的解码器,利用第一显式信息识别出的文件编码对JSP文件进行第一解码,获取第一解码文件。
此外,对于JSP文件的头部字节流中不存在第一显式信息,而将文件编码识别为默认编码后,同样由解码模块3调用对应的解码器,利用识别的默认编码对JSP文件进行第一解码,获取第一解码文件。
其中,调用对应的解码器利用识别出的文件编码对JSP文件进行第一解码,获取第一解码文件,即启用一个JAVA解码服务,可通过RPC通信的方式调用对应的JAVA解码服务对文件内容进行解码。如图3所示,解码器解码流程如下:启用一个JAVA解码服务,向JAVA解码服务发起RPC协议请求,利用JAVA内置解码函数调用对应的解码器,基于文件编码对JSP文件进行第一解码,接收返回的RPC协议响应,获取第一解码文件。
JAVA基本数据类型支持多种编码的解码以及其编码别称,JAVA内置解码函数包括但不限于:java.lang.String.getBytes、java.nio.charset.CharsetDecoder等。
其中,在本发明实施例中,可以使用gRPC调用Java写的特定解码服务。gRPC(gRemote Procedure Call)是一种高性能、开源的远程过程调用(RPC)框架,由Google开发并开源。它旨在简化不同服务之间的通信,使开发者能够像调用本地函数一样调用远程服务,而无需过多关注底层通信细节。
进一步地,由第二识别模4块判断第一解码文件的第一预设标签中是否存在第二显式信息。
进一步地,如果第一解码文件的第一预设标签中存在第二显式信息,则利用第二显式信息识别出对应的页面编码;如果第一解码文件的第一预设标签中不存在第二显式信息,则将页面编码识别为默认编码。
其中,第一预设标签为XML标签。
第二显式信息为指明页面编码为UTF-8编码、UTF-16编码、UTF-32编码或CP037编码的第一编码值,第一编码值为根据JSP语法从第一解码文件提取出的XML标签中的encoding的值,默认编码为UTF-8编码。
具体地,在正确识别文件编码的基础上解码获取当前文件内容,根据JSP语法提取出XML标签中的编码值,如<?xml version="1.0" encoding="cp037?>标签中的encoding的值cp037,表示接下来的页面内容由cp037进行的编码。若无该标签则默认为UTF-8。
进一步地,再次由解码模块3调用对应的解码器利用页面编码对第一解码文件进行第二解码,获取第二解码文件。
此外,对于第一解码文件的第一预设标签中不存在第二显式信息,而将页面编码识别为默认编码后,也同样由解码模块3调用对应的解码器,利用页面编码对第一解码文件进行第二解码,获取第二解码文件。
其中,调用对应的解码器利用页面编码对第一解码文件进行第二解码,获取第二解码文件,即启用一个JAVA解码服务,可通过RPC通信的方式调用对应的JAVA解码服务进行解码。如图3所示,解码器解码流程如下:启用一个JAVA解码服务,向JAVA解码服务发起RPC协议请求,利用JAVA内置解码函数调用对应的解码器,基于页面编码对第一解码文件进行第二解码,接收返回的RPC协议响应,获取第二解码文件。
进一步地,由第三识别模块5判断第二解码文件的第二预设标签中是否存在第三显式信息。
进一步地,如果第二解码文件的第二预设标签中存在第三显式信息,则利用第三显式信息识别出对应的内容编码;如果第二解码文件的第二预设标签中不存在第三显式信息,则将内容编码识别为默认编码。
其中,第二预设标签为directive page标签。
第二显式信息为指明页面编码为UTF-8编码、UTF-16编码、UTF-32编码或CP037编码的第二编码值,第二编码值为根据JSP语法从第二解码文件提取出的directive page标签中的charset的值,默认编码为UTF-8编码。
具体地,在正确识别页面编码的基础上解码获取当前页面内容,根据JSP语法提取出directive page标签中的编码值,如<jsp:directive.pagecontentType="text/html;charset=UTF-8" />中charset的值UTF-8以及另一种形式的directive page标签<%@ pagepageEncoding="UTF-16LE"%>中的pageEncoding值UTF-16LE。
进一步地,再次由解码模块3调用对应的解码器利用内容编码对第二解码文件进行第三解码,获取第三解码文件。
此外,对于第二解码文件的第二预设标签中不存在第三显式信息,而将内容编码识别为默认编码后,也同样由解码模块3调用对应的解码器,利用内容编码对第二解码文件进行第三解码,获取第三解码文件。
其中,调用对应的解码器利用内容编码对第二解码文件进行第三解码,获取第三解码文件,即启用一个JAVA解码服务,可通过RPC通信的方式调用对应的JAVA解码服务进行解码。如图3所示,解码器解码流程如下:启用一个JAVA解码服务,向JAVA解码服务发起RPC协议请求,利用JAVA内置解码函数调用对应的解码器,基于内容编码对第二解码文件进行第三解码,接收返回的RPC协议响应,获取第三解码文件。
进一步地,由语法解混淆模块6对第三解码文件进行语法解混淆,例如,可以使用正则引擎或有限状态机对第三解码文件进行语法解混淆。
其中,正则引擎(Regular Expression Engine)是一种用于处理正则表达式的软件组件或模块,它用于在文本中进行模式匹配、搜索和替换操作。正则表达式是一种用于描述文本模式的表达式,可以用来查找特定的文本模式。
Ragel是一种用于生成状态机的工具,通常用于编写词法分析器(Lexer)和有限状态机(FSM)。它的设计目标是生成高效且可靠的状态机代码,以用于处理字符串、文本解析、语法分析等任务。Ragel 可以用来生成 C、C++、Objective-C、D、Golang等编程语言的代码。
其中,以下表2列举几种语法混淆方式以及对应的语法解混淆方法。
;
此步骤可以由正则引擎进行匹配-替换,也可以使用有限状态机,如Ragel实现进行解混淆替换,专用的解混淆状态机的效率会比正则引擎高。
进一步地,得到JSP明文文件。
其中,获得JSP代码明文后,即可进行快速的明文匹配,匹配敏感关键字,以判断是否为恶意代码,Webshell等。
现有技术中,由于引擎开发语言的限制,无法支持多种字符编码的解混淆,且JSP使用的编码别名不一定与开发语言对应得上,这些都将导致无法正确处理编码,导致绕过。而本申请中启用一个JAVA解码服务通过gRPC调用Java写的特定解码服务,JAVA语言本身可以支持900多种字符编码,解决了JSP多重编码解混淆问题,避免黑客利用该手段混淆恶意JSP代码绕过检测引擎。
在实际工程中,若检测引擎的开发语言使用其他语言,如C/C++、Golang、Python等非JAVA语言,则完全无法支持如此多种编码,最终导致检测引擎被绕过。
此外,相较于基于开源编译器编译解混淆的现有技术方案,本申请中一种JSP文件解混淆方法效率高,适用于对检测效率要求较高的流量检测场景,并且检测适配性强,检出率高,避免了由于编译而产生的安全隐患。
另外,本发明实施例还提供了一种JSP文件解混淆设备,所述设备包括:处理器和存储器;所述存储器用于存储一个或多个程序指令;所述处理器,用于运行一个或多个程序指令,用以执行如上任一项所述的一种JSP文件解混淆方法的步骤。
另外,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述一种JSP文件解混淆方法的步骤。
在本发明实施例中,处理器可以是一种集成电路芯片,具有信号的处理能力。处理器可以是通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。处理器读取存储介质中的信息,结合其硬件完成上述方法的步骤。
存储介质可以是存储器,例如可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
其中,非易失性存储器可以是只读存储器(Read-Only Memory,简称ROM)、可编程只读存储器(Programmable ROM,简称PROM)、可擦除可编程只读存储器(Erasable PROM,简称EPROM)、电可擦除可编程只读存储器(Electrically EPROM,简称EEPROM)或闪存。
易失性存储器可以是随机存取存储器(Random Access Memory,简称RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,简称SRAM)、动态随机存取存储器(Dynamic RAM,简称DRAM)、同步动态随机存取存储器(Synchronous DRAM,简称SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,简称DDRSDRAM)、增强型同步动态随机存取存储器(EnhancedSDRAM,简称ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,简称SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,简称DRRAM)。
本发明实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件与软件组合来实现。当应用软件时,可以将相应功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (6)
1.一种JSP文件解混淆方法,其特征在于,应用于检测引擎,所述方法包括:
接收混淆的JSP文件;
判断所述JSP文件的头部字节流中是否存在第一显式信息;
如果所述JSP文件的头部字节流中存在第一显式信息,则利用所述第一显式信息识别出对应的文件编码;
调用对应的解码器利用所述文件编码对所述JSP文件进行第一解码,获取第一解码文件;
判断所述第一解码文件的第一预设标签中是否存在第二显式信息;
如果所述第一解码文件的第一预设标签中存在第二显式信息,则利用所述第二显式信息识别出对应的页面编码;
调用对应的解码器利用所述页面编码对所述第一解码文件进行第二解码,获取第二解码文件;
判断所述第二解码文件的第二预设标签中是否存在第三显式信息;
如果所述第二解码文件的第二预设标签中存在第三显式信息,则利用所述第三显式信息识别出对应的内容编码;
调用对应的解码器利用所述内容编码对所述第二解码文件进行第三解码,获取第三解码文件;
对所述第三解码文件进行语法解混淆,得到JSP明文文件;
所述方法还包括:
如果所述JSP文件的头部字节流中不存在第一显式信息,则将文件编码识别为默认编码;
其中,所述第一显式信息为显式指明文件编码为UTF-8编码、UTF-16编码、UTF-32编码或CP037编码的BOM头,所述默认编码为UTF-8编码;
所述方法还包括:
如果所述第一解码文件的第一预设标签中不存在第二显式信息,则将页面编码识别为默认编码;
其中,所述第一预设标签为XML标签,所述第二显式信息为指明页面编码为UTF-8编码、UTF-16编码、UTF-32编码或CP037编码的第一编码值,所述第一编码值为根据JSP语法从所述第一解码文件提取出的XML标签中的encoding的值,所述默认编码为UTF-8编码;
如果所述第二解码文件的第二预设标签中不存在第三显式信息,则将内容编码识别为默认编码;
其中,所述第二预设标签为directive page标签,所述第二显式信息为指明页面编码为UTF-8编码、UTF-16编码、UTF-32编码或CP037编码的第二编码值,所述第二编码值为根据JSP语法从所述第二解码文件提取出的directive page标签中的charset的值,所述默认编码为UTF-8编码;
调用对应的解码器利用所述文件编码/所述页面编码/所述内容编码对所述JSP文件/所述第一解码文件/所述第二解码文件进行第一解码/第二解码/第三解码,获取第一解码文件/第二解码文件/第三解码文件,包括:
启用一个JAVA解码服务;
向所述JAVA解码服务发起RPC协议请求;
利用JAVA内置解码函数调用对应的解码器,基于所述文件编码/所述页面编码/所述内容编码对所述JSP文件/所述第一解码文件/所述第二解码文件进行第一解码/第二解码/第三解码;
接收返回的RPC协议响应,获取第一解码文件/第二解码文件/第三解码文件。
2.如权利要求1所述的一种JSP文件解混淆方法,其特征在于,所述混淆的JSP文件包括从主机文件中获取的HIDS场景文件和从网络流量中获取IDS场景文件。
3.如权利要求1所述的一种JSP文件解混淆方法,其特征在于,对所述第三解码文件进行语法解混淆,得到JSP明文文件,包括:
使用正则引擎或有限状态机对所述第三解码文件进行语法解混淆。
4.一种用于执行如权利要求1至3任一项所述JSP文件解混淆方法的系统,其特征在于,所述系统包括:
接收模块,用于接收混淆的JSP文件;
第一识别模块,用于判断所述JSP文件的头部字节流中是否存在第一显式信息;如果所述JSP文件的头部字节流中存在第一显式信息,则利用所述第一显式信息识别出对应的文件编码;
解码模块,用于调用对应的解码器利用所述文件编码对所述JSP文件进行第一解码,获取第一解码文件;
第二识别模块,用于判断所述第一解码文件的第一预设标签中是否存在第二显式信息;如果所述第一解码文件的第一预设标签中存在第二显式信息,则利用所述第二显式信息识别出对应的页面编码;
所述解码模块还用于调用对应的解码器利用所述页面编码对所述第一解码文件进行第二解码,获取第二解码文件;
第三识别模块,用于判断所述第二解码文件的第二预设标签中是否存在第三显式信息;如果所述第二解码文件的第二预设标签中存在第三显式信息,则利用所述第三显式信息识别出对应的内容编码;
所述解码模块还用于调用对应的解码器利用所述内容编码对所述第二解码文件进行第三解码,获取第三解码文件;
语法解混淆模块,用于对所述第三解码文件进行语法解混淆,得到JSP明文文件。
5.一种JSP文件解混淆设备,其特征在于,所述设备包括:处理器和存储器;
所述存储器用于存储一个或多个程序指令;
所述处理器,用于运行一个或多个程序指令,用以执行如权利要求1至3任一项所述的一种JSP文件解混淆方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述一种JSP文件解混淆方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410288265.XA CN117891502B (zh) | 2024-03-14 | 2024-03-14 | 一种jsp文件解混淆方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410288265.XA CN117891502B (zh) | 2024-03-14 | 2024-03-14 | 一种jsp文件解混淆方法、系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117891502A CN117891502A (zh) | 2024-04-16 |
CN117891502B true CN117891502B (zh) | 2024-05-24 |
Family
ID=90642648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410288265.XA Active CN117891502B (zh) | 2024-03-14 | 2024-03-14 | 一种jsp文件解混淆方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117891502B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105247472A (zh) * | 2013-06-28 | 2016-01-13 | 英特尔公司 | 用于对统一码字符的可变长度代码点转码的处理器、方法、系统和指令 |
CN109194606A (zh) * | 2018-07-05 | 2019-01-11 | 百度在线网络技术(北京)有限公司 | 攻击检测系统、方法、计算机设备及存储介质 |
CN112639774A (zh) * | 2018-07-06 | 2021-04-09 | 皇家飞利浦有限公司 | 具有掩蔽功能的编译器设备 |
CN114707150A (zh) * | 2022-03-21 | 2022-07-05 | 安芯网盾(北京)科技有限公司 | 一种恶意代码检测方法、装置、电子设备和存储介质 |
CN117573142A (zh) * | 2024-01-15 | 2024-02-20 | 广州大学 | 基于模拟执行的java代码反混淆器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11973780B2 (en) * | 2020-10-14 | 2024-04-30 | Palo Alto Networks, Inc. | Deobfuscating and decloaking web-based malware with abstract execution |
CN116340939A (zh) * | 2021-12-16 | 2023-06-27 | 三六零数字安全科技集团有限公司 | webshell检测方法、装置、设备及存储介质 |
-
2024
- 2024-03-14 CN CN202410288265.XA patent/CN117891502B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105247472A (zh) * | 2013-06-28 | 2016-01-13 | 英特尔公司 | 用于对统一码字符的可变长度代码点转码的处理器、方法、系统和指令 |
CN109194606A (zh) * | 2018-07-05 | 2019-01-11 | 百度在线网络技术(北京)有限公司 | 攻击检测系统、方法、计算机设备及存储介质 |
CN112639774A (zh) * | 2018-07-06 | 2021-04-09 | 皇家飞利浦有限公司 | 具有掩蔽功能的编译器设备 |
CN114707150A (zh) * | 2022-03-21 | 2022-07-05 | 安芯网盾(北京)科技有限公司 | 一种恶意代码检测方法、装置、电子设备和存储介质 |
CN117573142A (zh) * | 2024-01-15 | 2024-02-20 | 广州大学 | 基于模拟执行的java代码反混淆器 |
Also Published As
Publication number | Publication date |
---|---|
CN117891502A (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8893278B1 (en) | Detecting malware communication on an infected computing device | |
US9560059B1 (en) | System, apparatus and method for conducting on-the-fly decryption of encrypted objects for malware detection | |
US20190373003A1 (en) | Resisting the spread of unwanted code and data | |
US7464408B1 (en) | Damage containment by translation | |
KR101811325B1 (ko) | 네트워크 환경에서의 악성 스크립트 언어 코드의 검출 | |
US7950059B2 (en) | Universal worm catcher | |
US7496962B2 (en) | Intrusion detection strategies for hypertext transport protocol | |
CN102622543B (zh) | 一种动态检测恶意网页脚本的方法和装置 | |
KR101005927B1 (ko) | 웹 어플리케이션 공격 탐지 방법 | |
US20100037317A1 (en) | Mehtod and system for security monitoring of the interface between a browser and an external browser module | |
US9838418B1 (en) | Detecting malware in mixed content files | |
US9038161B2 (en) | Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor | |
US10650144B2 (en) | Detecting executable code within a data entity | |
CN113645234B (zh) | 基于蜜罐的网络防御方法、系统、介质及装置 | |
WO2011154454A1 (en) | Method and device for mitigating cross-site vulnerabilities | |
US10789360B2 (en) | Protection against third party JavaScript vulnerabilities | |
CN108319822B (zh) | 一种保护网页代码的方法、存储介质、电子设备和系统 | |
KR102473312B1 (ko) | 유출 정보 보호 시스템 및 방법 | |
CN117891502B (zh) | 一种jsp文件解混淆方法、系统、设备及存储介质 | |
CN114006746A (zh) | 一种攻击检测方法、装置、设备及存储介质 | |
CN111767540A (zh) | Jart恶意软件自动化分析方法、装置和计算机可读存储介质 | |
US10412114B1 (en) | Application randomization mechanism | |
Mac Vittie | SQL Injection Evasion Detection | |
KR101256463B1 (ko) | 악성 코드 검사 장치 및 방법 | |
CN116502192B (zh) | 数据混淆方法、装置和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |