一种防止unicode编码绕过的检测方法和装置与流程

文档序号:30299311发布日期:2022-06-04 21:19阅读:264来源:国知局
一种防止unicode编码绕过的检测方法和装置与流程

1.本文涉及信息安全技术领域,尤指一种防止unicode编码绕过的检测方法和装置。


背景技术:

2.现有技术中,通过对攻击行为所对应的网络报文特征进行unicode编码,是攻击者常用的躲避入侵检测的手段;这主要是因为规则定义人员难以按照常规的方法对unicode编码后的网络报文特征进行完全枚举。当前对攻击防止检测绕过的方法主要是针对数据分片或分段的检测,但该类方法并不能解决应用层数据通过unicode编码手段绕过入侵检测的攻击行为问题。


技术实现要素:

3.本技术提供了一种防止unicode编码绕过的检测方法,该方法对unicode编码变形的攻击特征序列进行unicode解码还原后,再进行攻击特征行为检测,有效地解决了通过unicode编码手段绕过入侵检测的攻击行为问题。
4.本技术提供了一种防止unicode编码绕过的检测方法,方法包括:
5.根据预先定义的规则获取匹配数据区;
6.判断该匹配数据区是否存在预先设置的第一关键字;
7.当该匹配数据区包括第一关键字时,对该匹配数据区进行unicode解码还原得到目标匹配数据区;
8.在该目标匹配数据区检测攻击特征行为。
9.一种示例性的实施例中,所述预先定义的规则包括:unicode编码前的攻击特征序列和unicode_decode解码模板。
10.一种示例性的实施例中,所述对该匹配数据区进行unicode解码还原得到目标匹配数据区,包括:
11.根据预先定义的规则中的unicode_decode解码模板对匹配数据区进行unicode解码还原;
12.把unicode解码还原后的数据区作为目标匹配数据区。
13.一种示例性的实施例中,所述unicode_decode解码模板包括:第一关键字unicode_decode和第二关键字unicode_data;
14.其中,第一关键字unicode_decode用于指示对指定的匹配数据区进行unicode解码操作,第二关键字unicode_data是与第一关键字unicode_decode配合使用的字符。
15.一种示例性的实施例中,所述判断该匹配数据区是否存在预先设置的第一关键字后,方法还包括:
16.当该匹配数据区未包括unicode_decode第一关键字时,将所获取的匹配数据区作为目标匹配数据区。
17.一种示例性的实施例中,在该目标匹配数据区检测攻击特征行为后,方法还包括:
18.判断是否对攻击特征行为匹配成功;
19.如果匹配成功,则把匹配成功的规则封装告警事件日志上报。
20.本技术还提供了一种防止unicode编码绕过的检测装置,包括:存储器和处理器;所述存储器,用于保存用于防止unicode编码绕过的检测的程序;
21.所述处理器,用于读取执行所述用于防止unicode编码绕过的检测的程序,执行如下操作:
22.根据预先定义的规则获取匹配数据区;
23.判断该匹配数据区是否存在预先设置的第一关键字;
24.当该匹配数据区包括第一关键字时,对该匹配数据区进行unicode解码还原得到目标匹配数据区;
25.在该目标匹配数据区检测攻击特征行为。
26.一种示例性的实施例中,所述预先定义的规则包括:unicode编码前的攻击特征序列和unicode_decode解码模板;
27.所述对该匹配数据区进行unicode解码还原得到目标匹配数据区,包括:
28.根据预先定义的规则中的unicode_decode解码模板对匹配数据区进行unicode解码还原;
29.把unicode解码还原后的数据区作为目标匹配数据区。
30.一种示例性的实施例中,所述unicode_decode解码模板包括:第一关键字unicode_decode和第二关键字unicode_data;
31.其中,第一关键字unicode_decode用于指示对指定的匹配数据区进行unicode解码操作,第二关键字unicode_data是与第一关键字unicode_decode配合使用的字符;
32.所述判断该匹配数据区是否存在预先设置的第一关键字后,方法还包括:
33.当该匹配数据区未包括unicode_decode第一关键字时,将所获取的匹配数据区作为目标匹配数据区。
34.一种示例性的实施例中,所述处理器读取执行所述用于防止unicode编码绕过的检测的程序,还执行如下操作:
35.在该目标匹配数据区检测攻击特征行为后,判断是否对攻击特征行为匹配成功;
36.如果匹配成功,则把匹配成功的规则封装告警事件日志上报。
37.与相关技术相比,本技术提供一种防止unicode编码绕过的检测方法和装置,方法包括:根据预先定义的规则获取匹配数据区;判断该匹配数据区是否存在预先设置的第一关键字;当该匹配数据区包括第一关键字时,对该匹配数据区进行unicode解码还原得到目标匹配数据区;在该目标匹配数据区检测攻击特征行为。通过本发明的技术方案,对unicode编码变形的攻击特征序列进行unicode解码还原后,再进行攻击特征行为匹配,有效地解决了通过unicode编码进行检测绕过的攻击行为的问题。
38.本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
39.附图用来提供对本技术技术方案的理解,并且构成说明书的一部分,与本技术的实施例一起用于解释本技术的技术方案,并不构成对本技术技术方案的限制。
40.图1为本技术实施例的防止unicode编码绕过的检测方法流程图;
41.图2为一示例性实施例中解码模板中unicode_decode关键字的语法和语义示意图;
42.图3为本技术实施例中防止unicode编码绕过的检测装置示意图;
43.图4为一示例性实施例中防止unicode编码绕过的检测方法流程图。
具体实施方式
44.本技术描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本技术所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
45.本技术包括并设想了与本领域普通技术人员已知的特征和元件的组合。本技术已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本技术中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
46.此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本技术实施例的精神和范围内。
47.研究发现:攻击者通过unicode编码手段躲避入侵检测的基本思路是:
48.对网络报文中的攻击特征对应的字符序列选择随机位置、随机个数的字符进行unicode编码处理,达到编码字符和非编码字符混杂,从而使网络报文中的攻击特征表现出随机性。如下所示:
49.post/app-front/door/queryerrornumber http/1.0
50.host:172.50.3.207:21873
51.connection:close
52.content-length:23745
53.x-real-ip:223.242.23.78
54.x-forwarded-for:223.242.23.78
55.x-forwarded-host:gp.dongguanbank.cn
56.sec-ch-ua:"not;a brand";v="99","google chrome";v="91","chromium";v="91"
57.accept:application/json,text/plain,*/*
58.sessionid:null
59.sec-ch-ua-mobile:?0
60.user-agent:mozilla/5.0(windows nt 6.1;win64;x64)applewebkit/537.36(khtml,like gecko)chrome/91.0.4472.124safari/537.36
61.content-type:application/json;charset=utf-8
62.origin:https://221.4.142.29:8081
63.sec-fetch-site:cross-site
64.sec-fetch-mode:cors
65.sec-fetch-dest:empty
66.referer:https://221.4.142.29:8081/
67.accept-encoding:gzip,deflate
68.accept-language:zh-cn,zh;q=0.9
69.{"userid":"1222222222222","x":{{"\u0040\u0074y\u0070e":"c\u006fm.\u0061liba\u0062a.f\u0061stjson.jsono\u0062ject","a":{"name":{"\u0040\u0074ype":"j\u0061va.l\u0061ng.class","val":"\u006frg.a\u0070ache.i\u0062atis.d\u0061tas\u006furce.un\u0070o\u006fled.unp\u006foleddat\u0061s\u006furce"},"\u0040\u0074y\u0070e":"\u006frg.a\u0070ache.i\u0062atis.d\u0061tas\u006furce.un\u0070o\u006fled.unp\u006foleddat\u0061s\u006furce","driverclassl\u006fader":{"key":{"\u0040\u0074y\u0070e":"j\u0061va.l\u0061ng.cl\u0061ss","v\u0061l":"co\u006d.sun.\u006frg.a\u0070ache.\u0062cel.intern\u0061l.util.cl\u0061ssl\u006fader"},"\u0040\u0074ype":"co\u006d.sun.\u006frg.a\u0070ache.\u0062cel.internal.util.cl\u0061ssl\u006fader"}
70.另外,从编码角度来看,假设攻击特征对应的原始字符串为“@type”,各字符对应的unicode编码如表1。那么攻击者对其进行unicode编码处理后的可能结果包括多种,例如“\u0040type”、“@\u0074ype”、“@t\u0079pe”、“@ty\u0070e”“@typ\u0065”、“\u0040\u0074ype”、“@\u0074\u0079\u0070\u0065”等等,攻击对应的原始字符串越长越难以枚举,并且由于unicode编码的表现形式有多种,比如字符

a’的unicode编码可表示为十进制unicode码点的形式“a”、十六进制unicode码点两字节的形式”a”、十六进制unicode码点四字节形式的”\u0061”等等,导致问题变得更加复杂。
71.表1字符码点表
72.字符unicode码点(十六进制)@0x0040t0x0074y0x0079
p0x0070e0x0065
73.针对攻击特征经unicode编码后难以枚举的难题,需要提出一种有效的防止unicode编码绕过的检测方法。
74.本公开实施例提供了一种防止unicode编码绕过的检测方法,如图1所示,方法包括步骤s100-s130,具体如下:
75.步骤s100.根据预先定义的规则获取匹配数据区;
76.步骤s110.判断该匹配数据区是否存在预先设置的第一关键字;
77.步骤s120.当该匹配数据区包括第一关键字时,对该匹配数据区进行unicode解码还原得到目标匹配数据区;
78.步骤s130.在该目标匹配数据区检测攻击特征行为。
79.在本实施例中,预先定义的规则攻击特征序列变形前的规则,可以由安全服务人员定义;该规则可以为:
80.alert http any any-》any any(msg:"java可疑类unicode编码绕过攻击";http.method;content:"post";http.request_body;unicode_decode:bytes 200,offset 0,relative yes,prefix|5c 75|,suffix||,type hex,valuelen=4,to utf-8;unicode_data;content:"@type";sid:10001;rev:1;)。在这条规则中,unicode decode在http.requestbody之后,就指明了http.requestbody这个数据区关联了unicode_decode关键字。
81.一种示例性的实施例中,所述预先定义的规则包括:unicode编码前的攻击特征序列和unicode_decode解码模板。
82.一种示例性的实施例中,所述unicode_decode解码模板包括:第一关键字unicode_decode和第二关键字unicode_data;
83.其中,第一关键字unicode_decode用于指示对指定的匹配数据区进行unicode解码操作,第二关键字unicode_data是与第一关键字unicode_decode配合使用的字符。
84.unicode解码模型具体是通过在规则定义语言中引入unicode_decode和unicode_data两个关键字来实现。其中,unicode_decode关键字用于指示对指定的数据区进行unicode解码操作;unicode_data关键字用于对unicode_decode解码后的数据区进行查找,与unicode_decode关键字配合使用。
85.unicode_decode关键字包括如图2所示,针对每个关键字的语法和语义如下:
86.unicode_decode:bytes[value|all],offset《value》,relative[no|yes],prefix|5c75|,suffix|5c|,type[hex|dec],valuelen[=|《=]《value》,to[utf-8|ascii|utf-16|utf-32];
[0087]
bytes选项用于指示对匹配数据区多长字节的数据进行unicode解码,可选值all表示对匹配数据区所有数据进行解码,否则为整型值,表示对指定长度数据进行解码。
[0088]
offset选项用于指示对匹配的数据区从偏移多长的字节距离开始解码。
[0089]
relative选项用于指示本次解码的数据区是否相对于前一次匹配的结果处位置算,值yes表示相对位置,值no表示非相对位置。
[0090]
prefix选项用于指示unicode编码样式的前缀字节序列串,使用十六进制值表示,
使用双|包含。
[0091]
suffix选项用于指示unicode编码样式的后缀字节序列串,使用十六进制值表示,使用双|包含。
[0092]
type选项用于指示unicode编码的码点值的编码格式的进制,常见的有十进制(dec)、十六进制(hex)。
[0093]
valuelen选项用于指示unicode编码的码点值进行编码后的长度信息,常见的有固定的十六进制的2字节、十六进制的4字节、非固定长度的十进制;
[0094]
to选项用于指示unicode解码后的字符的存储编码格式,常见有utf-8、ascii。
[0095]
unicode_decode关键字使用示例如下:
[0096]
示例一、假设攻击特征经unicode编码后如下:
[0097]
"{    "a":""}"
[0098]
本示例的unicode编码样式为:前缀为”&#”,后缀为”;”,数据区为十进制编码格式,长度为非固定的小于8字节的字面形式。对应的unicode_decode解码规则的解码模板为:
[0099]
unicode_decode:bytes all,offset 0,relative no,prefix|26 23|,suffix|3b|,type dec,valuelen《=8,to utf-8;
[0100]
其中,字符&的十六进制值为0x26,字符#的十六进制值为0x23,字符;的十六进制值为0x3b。
[0101]
示例二、假设攻击特征经unicode编码后如下:
[0102]
"{    "a":""}"
[0103]
本示例的unicode编码样式为:前缀为”&#x”,后缀为”;”,数据区为十六进制编码格式,长度为固定的2字节的字面形式。对应的unicode_decode解码规则的解码模板为:
[0104]
unicode_decode:bytes all,offset 0,relative no,prefix|26 23 78|,suffix|3b|,type hex,valuelen=2,to utf-8;
[0105]
其中,字符&的十六进制值为0x26,字符#的十六进制值为0x23,字符x的十六进制值为0x78,字符;的十六进制为0x3b。
[0106]
在步骤s110中,当该匹配数据区包括第一关键字时,对该匹配数据区进行unicode解码还原得到目标匹配数据区。在本实施例中,unicode_decode第一关键字用于指示对指定的数据区进行unicode解码操作;unicode_data第二关键字用于对unicode_decode解码后的数据区进行查找,与unicode_decode关键字配合使用,解码出unicode对应的字符。下面用一个示例进行展示:对http.request_body数据的攻击特征串“@type”的一种unicode编码变形如下:
[0107]
post/app-front/door/queryerrornumber http/1.0
[0108]
host:172.50.3.207:21873
[0109]
connection:close
[0110]
content-length:23745
[0111]
x-real-ip:223.242.23.78
[0112]
x-forwarded-for:223.242.23.78
[0113]
x-forwarded-host:gp.dongguanbank.cn
[0114]
sec-ch-ua:"not;a brand";v="99","google chrome";v="91","chromium";v="91"
[0115]
accept:application/json,text/plain,*/*
[0116]
sessionid:null
[0117]
sec-ch-ua-mobile:?0
[0118]
user-agent:mozilla/5.0(windows nt 6.1;win64;x64)applewebkit/537.36(khtml,like gecko)chrome/91.0.4472.124safari/537.36
[0119]
content-type:application/json;charset=utf-8
[0120]
origin:https://221.4.142.29:8081
[0121]
sec-fetch-site:cross-site
[0122]
sec-fetch-mode:cors
[0123]
sec-fetch-dest:empty
[0124]
referer:https://221.4.142.29:8081/
[0125]
accept-encoding:gzip,deflate
[0126]
accept-language:zh-cn,zh;q=0.9
[0127]
{"userid":"1222222222222","x":{{"\u0040\u0074y\u0070e":"c\u006fm.\u0061liba\u0062a.f\u0061stjson.jsono\u0062ject","a":{"name":{"\u0040\u0074ype":"j\u0061va.l\u0061ng.class","val":"\u006frg.a\u0070ache.i\u0062atis.d\u0061tas\u006furce.un\u0070o\u006fled.unp\u006foleddat\u0061s\u006furce"},"\u0040\u0074y\u0070e":"\u006frg.a\u0070ache.i\u0062atis.d\u0061tas\u006furce.un\u0070o\u006fled.unp\u006foleddat\u0061s\u006furce","driverclassl\u006fader":{"key":{"\u0040\u0074y\u0070e":"j\u0061va.l\u0061ng.cl\u0061ss","v\u0061l":"co\u006d.sun.\u006frg.a\u0070ache.\u0062cel.intern\u0061l.util.cl\u0061ssl\u006fader"},"\u0040\u0074ype"
[0128]
:"co\u006d.sun.\u006frg.a\u0070ache.\u0062cel.internal.util.cl\u0061ssl\u006fader"}
[0129]
对应的防止unicode编码绕过的检测规则如下:
[0130]
alert http any any-》any any(msg:"java可疑类unicode编码绕过攻击";http.method;content:"post";http.request_body;unicode_decode:bytes 200,offset0,relative yes,prefix|5c 75|,suffix||,type hex,valuelen=4,to utf-8;unicode_data;content:"@type";sid:10001;rev:1;)
[0131]
在本示例中,对该匹配数据区进行unicode解码还原得到目标匹配数据区后,执行步骤120,在该目标匹配数据区检测攻击特征行为。
[0132]
一种示例性的实施例中,判断所获取的匹配数据区不存在预先设置的第一关键字;将该所获取的匹配数据区作为目标匹配数据区;并执行步骤120,在该目标匹配数据区检测攻击特征行为。在本实施例中,该检测攻击特征行为可以采用字符串匹配、正则匹配、hyperscan库匹配等方法。
[0133]
一种示例性的实施例中,在进行攻击特征行为的匹配查找后,判断是否对攻击特
征行为匹配成功;如果匹配成功,则把匹配成功的规则封装告警事件日志上报。
[0134]
本技术还提供了本技术还提供了一种防止unicode编码绕过的检测装置,如图3所示,装置包括:存储器310和处理器320。
[0135]
所述存储器用于保存用于防止unicode编码绕过的检测的程序;所述处理器用于读取执行所述用于防止unicode编码绕过的检测的程序,执行如下操作:
[0136]
根据预先定义的规则获取匹配数据区;
[0137]
判断该匹配数据区是否存在预先设置的第一关键字;
[0138]
当该匹配数据区包括第一关键字时,对该匹配数据区进行unicode解码还原得到目标匹配数据区;
[0139]
在该目标匹配数据区检测攻击特征行为。
[0140]
一种示例性的实施例中,所述预先定义的规则包括:unicode编码前的攻击特征序列和unicode_decode解码模板;所述对该匹配数据区进行unicode解码还原得到目标匹配数据区,包括:根据预先定义的规则中的unicode_decode解码模板对匹配数据区进行unicode解码还原;把unicode解码还原后的数据区作为目标匹配数据区。
[0141]
一种示例性的实施例中,所述unicode_decode解码模板包括:第一关键字unicode_decode和第二关键字unicode_data;其中,第一关键字unicode_decode用于指示对指定的匹配数据区进行unicode解码操作,第二关键字unicode_data是与第一关键字unicode_decode配合使用的字符;
[0142]
所述判断该匹配数据区是否存在预先设置的第一关键字后,方法还包括:当该匹配数据区未包括unicode_decode第一关键字时,将所获取的匹配数据区作为目标匹配数据区。
[0143]
一种示例性的实施例中,所述处理器读取执行所述用于防止unicode编码绕过的检测的程序,还执行如下操作:在进行攻击特征行为的匹配查找后,判断是否对攻击特征行为匹配成功;如果匹配成功,则把匹配成功的规则封装告警事件日志上报。
[0144]
一示例性实施例
[0145]
本技术提出的防止unicode编码绕过的检测流程,如图4所示,主要操作步骤如下:
[0146]
步骤400:根据预先定义的规则获取指定的匹配数据区,如:匹配数据区可为http.url、http.host、http.request_body等等之一;
[0147]
步骤410:判断当前的匹配数据区是否关联指定进行unicode解码,即是否带有unicode_decode关键字,如果是,则转到步骤420;否则转到步骤440;
[0148]
步骤420:根据当前规则指定的unicode_decode解码模板对匹配的数据区进行unicode解码还原;
[0149]
步骤430:把unicode解码还原后的数据区作为匹配数据区;
[0150]
步骤440:在匹配数据区进行攻击特征行为的匹配查找;在该步骤中,该匹配查找可以通过正则查找或者字符串查找等方法进行。
[0151]
步骤450:判断是否对攻击特征行为匹配成功,如果成功则,转到步骤460,否则结束;
[0152]
步骤460:把匹配成功的规则封装告警事件日志上报。
[0153]
上述防止unicode编码绕过的检测方法的实施例,存在以下技术效果:
[0154]
1、通过对unicode编码变形的攻击特征序列进行unicode解码还原后,再进行攻击特征行为匹配的方案,有效地解决了通过unicode编码进行检测绕过的攻击行为,实现了编辑一条变形前的特征规则可以检测一种或多种unicode编码变形;
[0155]
2、本实施例中的unicode_decode解码模板,可适配不同unicode的编码表示形式,如&#、&#x、\u样式等,并且可扩展性强;
[0156]
3、本实施例中的unicode_decode解码模板中的bytes选项、offset选项、relative选项特性,使得规则定义人员可以根据不同的实际攻击场景灵活指定unicode解码的数据区,提高了攻击行为的检测精度;
[0157]
4、本实施例中提出的解码方案不仅可以对纯unicode编码的数据区进行unicode解码,同时支持对unicode编码与非unicode编码夹杂出现的数据区进行unicode编码区域的还原而不被非编码字符中断。
[0158]
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1