CN116127457B - 一种基于winnowing算法的恶意代码检测方法及系统 - Google Patents
一种基于winnowing算法的恶意代码检测方法及系统 Download PDFInfo
- Publication number
- CN116127457B CN116127457B CN202310121817.3A CN202310121817A CN116127457B CN 116127457 B CN116127457 B CN 116127457B CN 202310121817 A CN202310121817 A CN 202310121817A CN 116127457 B CN116127457 B CN 116127457B
- Authority
- CN
- China
- Prior art keywords
- hash
- hash value
- malicious code
- algorithm
- window
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 40
- 238000004364 calculation method Methods 0.000 claims abstract description 34
- 238000005096 rolling process Methods 0.000 claims abstract description 22
- 238000000034 method Methods 0.000 claims abstract description 12
- 101100481876 Danio rerio pbk gene Proteins 0.000 claims abstract description 7
- 101100481878 Mus musculus Pbk gene Proteins 0.000 claims abstract description 7
- 229910002056 binary alloy Inorganic materials 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 6
- 125000004122 cyclic group Chemical group 0.000 claims description 4
- 238000006073 displacement reaction Methods 0.000 claims 2
- 239000012634 fragment Substances 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000009931 harmful effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种基于winnowing算法的恶意代码检测方法及系统,包括在客户端将恶意代码检测对象转换为字节流,通过winnowing算法对字节流进行滑动窗口计算,将字节流转换成哈希值集合;对哈希值集合进行局部敏感哈希计算,通过simhash算法将哈希值转换为一个固定长度的哈希值;将局部敏感哈希值传到远端服务器中,服务器在数据库中对接收的局部敏感哈希值进行检索,返回topk最相似的恶意代码对象,并分别计算相似度;判断相似度是否达到阈值,如果超出阈值,则发送恶意代码警告,否则返回正常状态。本发明采用循环滚动哈希计算滑动窗口片段值与基于simhash哈希值建立索引,提升了恶意代码检测范围和计算效率。
Description
技术领域
本发明涉及数据安全技术领域,尤其涉及一种基于winnowing算法的恶意代码检测方法及系统。
背景技术
恶意代码主要指程序运行起来之后对用户产生有害行为的代码,比如造成后门、安全隐患、信息和数据窃取、以及其他有害行为;而且恶意代码本身也会发生变化,比如作者对恶意代码迭代升级,文件加壳,拼接不同恶意代码等;现有的技术方案通过基于模糊哈希算法,先对检测对象进行基于内容的分片,然后对每个分片进行常规哈希计算,所有片的哈希值最后组成模糊哈希值,用于远端检索,通过与远端库中存储数据计算编辑距离,来判断是否为恶意代码对象,这种方式优于对检测对象进行整体哈希计算的方式,能够识别恶意代码对象的部分变体,但是其主要识别的是相似度很高的对象,对于变动较多的对象,就很难识别。
需要说明的是,在上述背景技术部分公开的信息只用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明的目的在于克服现有技术的缺点,提供了一种基于winnowing算法的恶意代码检测方法及系统,解决了现有传统的恶意代码检测识别方法存在的不足。
本发明的目的通过以下技术方案来实现:一种基于winnowing算法的恶意代码检测方法,所述检测方法包括:
在客户端将恶意代码检测对象转换为字节流,通过winnowing算法对字节流进行滑动窗口计算,将字节流转换成哈希值集合;
对哈希值集合进行局部敏感哈希计算,并通过simhash算法将哈希值集合转换为一个固定长度的哈希值;
对于固定长度的哈希值,建立索引,将局部敏感哈希值传到远端服务器中,服务器在数据库中对接收的局部敏感哈希值进行检索,返回topk最相似的恶意代码对象,并分别计算相似度;
判断相似度是否达到阈值,如果超出阈值,则发送恶意代码警告,否则返回正常状态。
所述通过winnowing算法对字节流进行滑动窗口计算,将字节流转换成哈希值集合包括:
将滑动距离设置为1,读取字节的滑动窗口固定长度设置为k,通过循环滚动哈希公式计算每k个字节生成一个哈希值;
将窗口大小设置为w,对生成的哈希值继续进行滑动窗口处理,保留每w个哈希值中的最小值,如果有多个相等的最小值,则保留最右边的最小哈希值。
所述循环滚动哈希公式的生成步骤包括:
滚动哈希公式通过上一次的哈希值计算当前的哈希值,即G(i+1)=f(G(i),ci+1,ci+1-k),其中k表示滑动窗口长度,i表示滑动窗口长度k中的任意位置,f表示需要定义的哈希函数;
因为哈希值仅与最近的k个值相关,所以将公式转换为其中T[ci+1&0xFF]表示从数组T[]中查找数据;
设定与ci+1-k无关,通过异或的性质,则:
~h(h(G(i)))=h2(G(i))
其中,~表示左右两侧的随机性等价,同理得到:
令k=2n,得到因为需要h函数使G(i+2n)随机性与G(i)无关,因此在h2n(G(i))=G(i)时,满足条件,即当h函数表示循环位移时,h函数满足条件;
进而将滚动哈希公式转变为其中G(k+1)=G(c2,c3,…,ck+1),G(k)=G(c1,c2,…,ck),CLSm(G(k))表示G(k)向左循环移m位,T[]表示从表T中查找数据,/>表示按位异或操作,其中k*m满足哈希值位数的整数倍,一般取k*m等于哈希值的位数。
所述通过simhash算法将哈希值转换为一个固定长度的哈希值包括:
利用循环滚动哈希算法提取检测对象的哈希值集合V,设定指纹权重为1;
初始化一个N维的向量Q,初始值为0,则N位的二进制签名S为0;
对于哈希值集合V中每个指纹,通过mad5或者murmurhash算法计算一个哈希值H;
对于任意j∈1~N,若H第j位为1,则Q的第j维加该特征权重,否则减去;
如果最终Q的第j维元素大于0,则S的第j位为1,否则为0;
最终得到的二进数S,作为检测对象的simhash值。
所述建立索引的步骤包括:
使用64位的二进制哈希值,搜索相似度在90%以上的对象,搜索汉明距离在8以内的相似哈希值;
将64位simhash值分为8个部分,每个部分对应8个二进制,即每个部分映射到256个桶中,检索时将待检测对象的每个部分在响应哈希表中对应的桶进行搜索。
一种基于winnowing算法的恶意代码检测系统,它包括winnowing算法计算模块、simhash算法计算模块、检索模块和判断模块;
所述winnowing算法计算模块:用于在客户端将恶意代码检测对象转换为字节流,通过winnowing算法对字节流进行滑动窗口计算,将字节流转换成哈希值集合;
所述simhash算法计算模块:用于对哈希值集合进行局部敏感哈希计算,并通过simhash算法将哈希值转换为一个固定长度的哈希值;
所述检索模块:用于将局部敏感哈希值传到远端服务器中,服务器在数据库中对接收的局部敏感哈希值进行检索,返回topk最相似的恶意代码对象,并分别计算相似度;
所述判断模块:用于判断相似度是否达到阈值,如果超出阈值,则发送恶意代码警告,否则返回正常状态。
还包括索引建立模块,所述索引建立模块用于使用64位的二进制哈希值,搜索相似度在90%以上的对象,搜索汉明距离在8以内的相似哈希值,不同比特位的占比等于原对象集合的余弦相似度;将64位simhash值分为8个部分,每个部分对应8个二进制,即每个部分映射到256个桶中,检索时将待检测对象的每个部分在响应哈希表中对应的桶进行搜索。
本发明具有以下优点:一种基于winnowing算法的恶意代码检测方法及系统,通过winnowing算法提取信息,保证任意相同片段可以被识别,采用循环滚动哈希计算滑动窗口片段值与基于simhash哈希值建立索引,提升了恶意代码检测范围和计算效率。
附图说明
图1为本发明方法的流程示意图;
图2为Simhash算法的示意图;
图3为索引构建示意图;
图4为检索示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下结合附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的保护范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。下面结合附图对本发明做进一步的描述。
如图1所示,本发明其中一种实施方式涉及一种基于winnowing算法的恶意代码检测方法,所述检测方法包括:
S1、在客户端将恶意代码检测对象转换为字节流,通过winnowing算法对字节流进行滑动窗口计算,将字节流转换成哈希值集合;
S2、对哈希值集合进行局部敏感哈希计算,并通过simhash算法将哈希值集合转换为一个固定长度的哈希值;
S3、对于固定长度的哈希值,建立索引,将局部敏感哈希值传到远端服务器中,服务器在数据库中对接收的局部敏感哈希值进行检索,返回topk最相似的恶意代码对象,并分别计算相似度;
如图2所示,具体利用simhash值进行相似度计算,计算simhash值的汉明距离。
S4、判断相似度是否达到阈值,如果超出阈值,则发送恶意代码警告,否则返回正常状态。
进一步地,通过winnowing算法对字节流进行滑动窗口计算,将字节流转换成哈希值集合包括:
将滑动距离设置为1,读取字节的滑动窗口固定长度设置为k,通过循环滚动哈希公式计算每k个字节生成一个哈希值;
将窗口大小设置为w,对生成的哈希值继续进行滑动窗口处理,保留每w个哈希值中的最小值,如果有多个相等的最小值,则保留最右边的最小哈希值。
进一步地,循环滚动哈希公式的生成步骤包括:
滚动哈希的关键点在于利用上一次哈希值,计算当前哈希值,即G(i+1)=f(G(i),ci+1,ci+1-k),其中k表示滑动窗口长度,i表示滑动窗口长度k中的任意位置,f表示需要定义的哈希函数;
因为哈希值仅与最近的k个值相关,所以将公式转换为其中T[ci+1&0xFF]表示从数组T[]中查找数据,即如果找到一种函数形式h,使/>与ci+1-k无关,则可使用该公式计算滚动哈希值;
设定与ci+1-k无关,通过异或的性质,则:
~h(h(G(i)))=h2(G(i))
其中,~表示左右两侧的随机性等价,同理得到:
令k=2n,得到因为需要h函数使G(i+2n)随机性与G(i)无关,因此在h2n(G(i))=G(i)时,满足条件,即当h函数表示循环位移时,h函数满足条件;
进而将滚动哈希公式转变为其中G(k+1)=G(c2,c3,…,ck+1),G(k)=G(c1,c2,…,ck),CLSm(G(k))表示G(k)向左循环移m位,T[]表示从表T中查找数据,/>表示按位异或操作,其中k*m满足哈希值位数的整数倍,一般取k*m等于哈希值的位数,如哈希值用64位的整数表示,则k*m=64。
进一步地,如图2所示,通过simhash算法将哈希值转换为一个固定长度的哈希值包括:
利用循环滚动哈希算法提取检测对象的哈希值集合V,设定指纹权重为1;
初始化一个N维的向量Q,初始值为0,则N位的二进制签名S为0;
对于哈希值集合V中每个指纹,通过mad5或者murmurhash算法计算一个哈希值H;
对于任意j∈1~N,若H第j位为1,则Q的第j维加该特征权重,否则减去;
如果最终Q的第j维元素大于0,则S的第j位为1,否则为0;
最终得到的二进数S,作为检测对象的simhash值,即通过simhash转换后固定长度的哈希值。
进一步地,如图3和图4所示,建立索引的步骤包括:
使用64位的二进制哈希值,搜索相似度在90%以上的对象,搜索汉明距离在8以内的相似哈希值,不同比特位的占比等于原对象集合的余弦相似度;
将64位simhash值分为8个部分,每个部分对应8个二进制,即每个部分映射到256个桶中,检索时将待检测对象的每个部分在响应哈希表中对应的桶进行搜索。
本发明的另一种实施方式涉及一种基于winnowing算法的恶意代码检测系统,它包括winnowing算法计算模块、simhash算法计算模块、检索模块和判断模块;
所述winnowing算法计算模块:用于在客户端将恶意代码检测对象转换为字节流,通过winnowing算法对字节流进行滑动窗口计算,将字节流转换成哈希值集合;
所述simhash算法计算模块:用于对哈希值集合进行局部敏感哈希计算,并通过simhash算法将哈希值转换为一个固定长度的哈希值;
所述检索模块:用于将局部敏感哈希值传到远端服务器中,服务器在数据库中对接收的局部敏感哈希值进行检索,返回topk最相似的恶意代码对象,并分别计算相似度;
所述判断模块:用于判断相似度是否达到阈值,如果超出阈值,则发送恶意代码警告,否则返回正常状态。
还包括索引建立模块,所述索引建立模块用于使用64位的二进制哈希值,搜索相似度在90%以上的对象,搜索汉明距离在8以内的相似哈希值,不同比特位的占比等于原对象集合的余弦相似度;将64位simhash值分为8个部分,每个部分对应8个二进制,即每个部分映射到256个桶中,检索时将待检测对象的每个部分在响应哈希表中对应的桶进行搜索。
其中,数据T的可能取值如下,(假设按照8比特为一个元素读取,则T数组有256维):T[256]=[0x4476081a7043a46fL,0x45768b8a6e7eac19L,0xebd556c1cf055952L,0x72ed2da1bf010101L,0x3ff2030b128e8a64L,0xcbc330238adcfef2L,0x737807fe42e20c6cL,0x74dabaedb1095c58L,0x968f065c65361d67L,0xd3f4018ac7a4b199L,0x954b389b52f24df2L,0x2f97a9d8d0549327L,0xb9bea2b49a3b180fL,0xaf2f42536b21f2ebL,0x85d991663cff1325L,0xb9e1260207b575b9L,0xf3ea88398a23b7e2L,0xfaf8c83ffbd9091dL,0x4274fe90834dbdf9L,0x3f20b157b68d6313L,0x68b48972b6d06b93L,0x694837b6eba548afL,0xeecb51d1acc917c9L,0xf1c633f02dffbcfaL,0xa6549ec9d301f3b5L,0x451dc944f1663592L,0x446d6acef6ce9e4fL,0x1c8a5b3013206f02L,0x5908ca36f2dc50f7L,0x4fd55d3f3e880a87L,0xa03a8dbeabbf065dL,0x3ccbbe078fabcb6dL,0x1da53a259116f2d0L,0xfb27a96fcb9af152L,0x50aba242e85aec09L,0x24d4e414fc4fc987L,0x83971844a9ce535eL,0xc26a3fdeb849398eL,0xc2380d044d2e70d8L,0xab418aa8ae19b18fL,0xd95b6b9247d5ebeaL,0x8b3b2171fdc60511L,0xe15cd0ae3fcc44afL,0x5a4e27f914a68f17L,0x377bd28ca09aafdcL,0xbbeb9828594a3294L,0x7c8df263ae1de1b9L,0xba0a48a5fd1c1dd0L,0x57cc1b8818b98ee6L,0x8c570975d357dabcL,0x76bdcd6f2e8826aaL,0x529b15b6ec4055f1L,0x9147c7a54c34f8a9L,0x2f96a7728170e402L,0xe46602f455eca72eL,0x22834c4dd1bde03fL,0x2644cf5a25e368ffL,0x907c6de90b120f4aL,0xadfe8ba99028f728L,0xa85199ae14df0433L,0x2d749b946dd3601eL,0x76e35457aa052772L,0x90410bf6e427f736L,
0x536ad04d13e35041L,0x8cc0d76769b76914L,0xae0249f6e3b3c01cL,0x1bdfd075307d6fafL,
0xd8e04f70c221deccL,0x4ab23622a4281a5dL 0x37a5613da2fcaba7L,0x19a56203666d4a9fL,
0x158ffab502c4be93L,0x0bee714e332ecb2fL,0x69b71a59f6f74ab0L,0x0fc7fc622f1dfe8fL,
0x513966de7152a6f9L,0xc16fae9cc2ea9be7L,0xb66f0ac586c1899eL,0x11e124aee3bdefd7L,
0x86cf5a577512901bL,0x33f33ba6994a1fbdL,0xde6c4d1d3d47ff0dL,0x6a99220dc6f78e66L,
0x2dc06ca93e2d25d2L,0x96413b520134d573L,0xb4715ce8e1023afaL,0xe6a75900c8c66c0aL,
0x6448f13ad54c12edL,0xb9057c28cf6689f0L,0xf4023daf67f7677aL,0x877c2650767b9867L,
0xb7ea587dcd5b2341L,0xc048cf111733f9bcL,0x112012c15bc867bfL,0xc95f52b1d9418811L,
0xa47e624ee7499083L,0x26928606df9b12e8L,0x5d020462ec3e0928L,0x8bbde651f6d08914L,
0xd5db83db758e524aL,0x3105e355c000f455L,0xdd7fe1b81a786c79L,0x1f3a818c8e012db1L,
0xd902de819d7b42faL,0x4200e63325cda5f0L,0x0e919cdc5fba9220L,0x5360dd54605a11e1L,
0xa3182d0e6cb23e6cL,0x13ee462c1b483b87L,0x1b1b6087b997ee22L,0x81c36d0b877f7362L,
0xc24879932c1768d4L,0x1faa756e1673f9adL,0x61651b24d11fe93dL,0x30fe3d9304e1cde4L,
0x7be867c750747250L,0x973e52c7005b5db6L,0x75d6b699bbaf4817L,0x25d2a9e97379e196L,
0xe65fb599aca98701L,0x6ac27960d24bde84L,0xdfacc04c9fabbcb6L,0xa46cd07f4a97882bL,
0x652031d8e59a1fd8L,0x1185bd967ec7ce10L,0xfc9bd84c6780f244L,0x0a0c59872f61b3ffL,
0x63885727a1c71c95L,0x5e88b4390b2d765cL,0xf0005ccaf988514dL,0x474e44280a98e840L,
0x32de151c1411bc42L,0x2c4b86d5aa4482c2L,0xccd93deb2d9d47daL,0x3743236ff128a622L,
0x42ed2f2635ba5647L,0x99c74afd18962dbdL,0x2d663bb870f6d242L,0x7912033bc7635d81L,
0xb442862f43753680L,0x94b1a5400aeaab4cL,0x5ce285fe810f2220L,0xe8a7dbe565d9c0b1L,
0x219131af78356c94L,0x7b3a80d130f27e2fL,0xbaa5d2859d16b440L,0x821cfb6935771070L,
0xf68cfb6ee9bc2336L,0x18244132e935d2fdL,0x2ed0bda1f4720cffL,0x4ed48cdf6975173cL,
0xfd37a7a2520e2405L,0x82c102b2a9e73ce2L,0xadac6517062623a7L,0x5a1294d318e26104L,
0xea84fe65c0e4f061L,0x4f96f8a9464cfee9L,0x9831dff8ccdc534aL,0x4ca927cd0f192a14L,
0x030900b294b71649L,0x644b263b9aeb0675L,0xa601d4e34647e040L,0x34d897eb397f1004L,
0xa6101c37f4ec8dfcL,0xc29d2a8bbfd0006bL,0xc6b07df8c5b4ed0fL,0xce1b7d92ba6bccbeL,
0xfa2f99442e03fe1bL,0xd8863e4c16f0b363L,0x033b2cccc3392942L,0x757dc33522d6cf9cL,
0xf07b1ff6ce55fec5L,0x1569e75f09b40463L,0xfa33fa08f14a310bL,0x6eb79aa27bbcf76bL,
0x157061207c249602L,0x25e5a71fc4e99555L,0x5df1fe93de625355L,0x235b56090c1aa55dL,
0xe51068613eaced91L,0x45bd47b893b9ff1eL,0x6595e1798d381f2dL,0xc9b5848cbcdb5ba8L,
0x65985146ff7792bcL,0x4ab4a17bf05a19a0L,0xfd94f4ca560ffb0cL,0xcf9bad581a68fa68L,
0x92b4f0b502b1ce1aL,0xbcbec0769a610474L,0x8dbd31ded1a0fecbL,0xdd1f5ed9f90e8533L,
0x61c1e6a523f84d95L,0xf24475f383c110c4L,0xdb2dffa66f90588dL,0xac06d88e9ee04455L,
0xa215fc47c40504baL,0x86d7caebfee93369L,0x9eaec31985804099L,0x0fba2214abe5d01bL,
0x5a32975a4b3865d6L,0x8cceebc98a5c108fL,0x7e12c4589654f2dcL,0xa49ad49fb0d19772L,
0x3d142dd9c406152bL,0x9f13589e7be2b8a5L,0x5e8dbac1892967adL,0xcc23b93a6308e597L,
0x1ef35f5fe874e16aL,0x63ae9cc08d2e274fL,0x5bbabee56007fc05L,0xabfd72994230fc39L,
0x9d71a13a99144de1L,0xd9daf5aa8dcc89b3L,0xe145ec0514161bfdL,0x143befc2498cd270L,
0xa8e192557dbbd9f8L,0xcbeda2445628d7d0L,0x997f0a93205d9ea4L,0x01014a97f214ebfaL,
0x70c026ffd1ebedafL,0xf8737b1b3237002fL,0x8afcbef3147e6e5eL,0x0e1bb0684483ebd3L,
0x4cbad70ae9b05aa6L,0xd4a31f523517c363L,0xdb0f057ae8e9e8a2L,0x400894a919d89df6L,
0x6a626a9b62defab3L,0xf907fd7e14f4e201L,0xe10e4a5657c48f3fL,0xb17f9f54b8e6e5dcL,
0x6b9e69045fa6d27aL,0x8b74b6a41dc3078eL,0x027954d45ca367f9L,0xd07207b8fdcbb7ccL,
0xf397c47d2f36414bL,0x05e4e8b11d3a034fL,0x36adb3f7122d654fL,0x607d9540eb336078L,
0xb639118e3a8b9600L,0xd0a406770b5f1484L,0x3cbee8213ccfb7c6L,0x467967bb2ff89cf1L,
0xb115fe29609919a6L,0xba740e6ffa83287eL,0xb4e51be9b694b7cdL,0xc9a081c677df5aeaL,0x2e1fbcd8944508ccL,0xf626e7895581fbb8L,0x3ce6e9b5728a05cbL,0x46e87f2664a31712L,0x8c1dc526c2f6acfaL,0x7b4826726e560b10L,0x2966e0099d8d7ce1L,0xbb0dd5240d2b2adeL,0x0d527cc60bbaa936L]。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (5)
1.一种基于winnowing算法的恶意代码检测方法,其特征在于:所述检测方法包括:
在客户端将恶意代码检测对象转换为字节流,通过winnowing算法对字节流进行滑动窗口计算,将字节流转换成哈希值集合;
对哈希值集合进行局部敏感哈希计算,并通过simhash算法将哈希值集合转换为一个固定长度的哈希值;
对于固定长度的哈希值,建立索引,将局部敏感哈希值传到远端服务器中,服务器在数据库中对接收的局部敏感哈希值进行检索,返回topk最相似的恶意代码对象,并分别计算相似度;
判断相似度是否达到阈值,如果超出阈值,则发送恶意代码警告,否则返回正常状态;
所述通过winnowing算法对字节流进行滑动窗口计算,将字节流转换成哈希值集合包括:
将滑动距离设置为1,读取字节的滑动窗口固定长度设置为k,通过循环滚动哈希公式计算每k个字节生成一个哈希值;
将窗口大小设置为w,对生成的哈希值继续进行滑动窗口处理,保留每w个哈希值中的最小值,如果有多个相等的最小值,则保留最右边的最小哈希值;
所述循环滚动哈希公式的生成步骤包括:
滚动哈希公式通过上一次的哈希值计算当前的哈希值,即G(i+1)=f(G(i),ci+1,ci+1-k),其中k表示滑动窗口长度,i表示滑动窗口长度k中的任意位置,f表示需要定义的哈希函数;
因为哈希值仅与最近的k个值相关,所以将公式转换为其中T[ci+1&0xFF]表示从数组T[]中查找数据;
设定与ci+1-k无关,通过异或的性质,则:
其中,~表示左右两侧的随机性等价,同理得到:
令k=2n,得到因为需要h函数使G(i+2n)随机性与G(i)无关,因此在/>时,满足条件,即当h函数表示循环位移时,h函数满足条件;
进而将滚动哈希公式转变为其中G(k+1)=G(c2,c3,…,ck+1),G(k)=G(c1,c2,…,ck),CLSm(G(k))表示G(k)向左循环移m位,T[]表示从表T中查找数据,/>表示按位异或操作,其中k*m满足哈希值位数的整数倍,此处取k*m等于哈希值的位数。
2.根据权利要求1所述的一种基于winnowing算法的恶意代码检测方法,其特征在于:所述通过simhash算法将哈希值集合转换为一个固定长度的哈希值包括:
利用循环滚动哈希算法提取检测对象的哈希值特征指纹集合V,每个特征指纹的权重为1;
初始化一个N维的向量Q,初始值为0,则N位的二进制签名S为0;
对于哈希值特征指纹集合V中每个特征指纹,通过mad5或者murmurhash算法计算一个哈希值H;
对于任意j∈1~N,若H第j位为1,则Q的第j维加该特征指纹的权重,否则减去;
如果最终Q的第j维元素大于0,则S的第j位为1,否则为0;
最终得到的二进数S,作为检测对象的simhash值。
3.根据权利要求1或2所述的一种基于winnowing算法的恶意代码检测方法,其特征在于:所述建立索引的步骤包括:
使用64位的二进制哈希值,搜索相似度在90%以上的对象,搜索汉明距离在8以内的相似哈希值;
将64位simhash值分为8个部分,每个部分对应8个二进制,即每个部分映射到256个桶中,检索时将待检测对象的每个部分在响应哈希表中对应的桶进行搜索。
4.一种基于winnowing算法的恶意代码检测系统,其特征在于:它包括winnowing算法计算模块、simhash算法计算模块、检索模块和判断模块;
所述winnowing算法计算模块:用于在客户端将恶意代码检测对象转换为字节流,通过winnowing算法对字节流进行滑动窗口计算,将字节流转换成哈希值集合;
所述simhash算法计算模块:用于对哈希值集合进行局部敏感哈希计算,并通过simhash算法将哈希值集合转换为一个固定长度的哈希值;
所述检索模块:用于将局部敏感哈希值传到远端服务器中,服务器在数据库中对接收的局部敏感哈希值进行检索,返回topk最相似的恶意代码对象,并分别计算相似度;
所述判断模块:用于判断相似度是否达到阈值,如果超出阈值,则发送恶意代码警告,否则返回正常状态;
所述通过winnowing算法对字节流进行滑动窗口计算,将字节流转换成哈希值集合包括:
将滑动距离设置为1,读取字节的滑动窗口固定长度设置为k,通过循环滚动哈希公式计算每k个字节生成一个哈希值;
将窗口大小设置为w,对生成的哈希值继续进行滑动窗口处理,保留每w个哈希值中的最小值,如果有多个相等的最小值,则保留最右边的最小哈希值;
所述循环滚动哈希公式的生成步骤包括:
滚动哈希公式通过上一次的哈希值计算当前的哈希值,即G(i+1)=f(G(i),ci+1,ci+1-k),其中k表示滑动窗口长度,i表示滑动窗口长度k中的任意位置,f表示需要定义的哈希函数;
因为哈希值仅与最近的k个值相关,所以将公式转换为其中T[ci+1&0xFF]表示从数组T[]中查找数据;
设定与ci+1-k无关,通过异或的性质,则:
其中,~表示左右两侧的随机性等价,同理得到:
令k=2n,得到因为需要h函数使G(i+2n)随机性与G(i)无关,因此在/>时,满足条件,即当h函数表示循环位移时,h函数满足条件;
进而将滚动哈希公式转变为其中G(k+1)=G(c2,c3,…,ck+1),G(k)=G(c1,c2,…,ck),CLSm(G(k))表示G(k)向左循环移m位,T[]表示从表T中查找数据,/>表示按位异或操作,其中k*m满足哈希值位数的整数倍,此处取k*m等于哈希值的位数。
5.根据权利要求4所述的一种基于winnowing算法的恶意代码检测系统,其特征在于:还包括索引建立模块,所述索引建立模块用于使用64位的二进制哈希值,搜索相似度在90%以上的对象,搜索汉明距离在8以内的相似哈希值,不同比特位的占比等于原对象集合的余弦相似度;将64位simhash值分为8个部分,每个部分对应8个二进制,即每个部分映射到256个桶中,检索时将待检测对象的每个部分在响应哈希表中对应的桶进行搜索。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310121817.3A CN116127457B (zh) | 2023-02-16 | 2023-02-16 | 一种基于winnowing算法的恶意代码检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310121817.3A CN116127457B (zh) | 2023-02-16 | 2023-02-16 | 一种基于winnowing算法的恶意代码检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116127457A CN116127457A (zh) | 2023-05-16 |
CN116127457B true CN116127457B (zh) | 2024-05-14 |
Family
ID=86297196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310121817.3A Active CN116127457B (zh) | 2023-02-16 | 2023-02-16 | 一种基于winnowing算法的恶意代码检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116127457B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102811213A (zh) * | 2011-11-23 | 2012-12-05 | 北京安天电子设备有限公司 | 基于模糊哈希算法的恶意代码检测系统及方法 |
CN103281538A (zh) * | 2013-06-06 | 2013-09-04 | 上海交通大学 | 基于滚动哈希和块级别帧内预测的帧内编码方法 |
CN104751055A (zh) * | 2013-12-31 | 2015-07-01 | 北京启明星辰信息安全技术有限公司 | 一种基于纹理的分布式恶意代码检测方法、装置及系统 |
CN105912514A (zh) * | 2016-04-28 | 2016-08-31 | 吴国华 | 基于指纹特征的文本复制检测系统及方法 |
JP2017107472A (ja) * | 2015-12-11 | 2017-06-15 | 日本電信電話株式会社 | 文字列検索方法および装置 |
CN107004015A (zh) * | 2014-12-27 | 2017-08-01 | 英特尔公司 | 用于计算滚动散列的技术 |
CN107423309A (zh) * | 2016-06-01 | 2017-12-01 | 国家计算机网络与信息安全管理中心 | 基于模糊哈希算法的海量互联网相似图片检测系统及方法 |
KR101803888B1 (ko) * | 2017-01-18 | 2017-12-04 | 한국인터넷진흥원 | 유사도 기반 악성 어플리케이션 탐지 방법 및 장치 |
KR101865378B1 (ko) * | 2018-01-31 | 2018-06-07 | 주식회사 에프원시큐리티 | 웹 쉘 탐지 시스템 |
CN111290784A (zh) * | 2020-01-21 | 2020-06-16 | 北京航空航天大学 | 适用于大规模样本的程序源代码相似度检测方法 |
CN115328525A (zh) * | 2022-07-19 | 2022-11-11 | 上海艾拉比智能科技有限公司 | 一种差分包的生成方法 |
CN115658976A (zh) * | 2022-11-10 | 2023-01-31 | 兴业银行股份有限公司 | 基于局部敏感哈希的设备指纹分析方法及系统 |
-
2023
- 2023-02-16 CN CN202310121817.3A patent/CN116127457B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102811213A (zh) * | 2011-11-23 | 2012-12-05 | 北京安天电子设备有限公司 | 基于模糊哈希算法的恶意代码检测系统及方法 |
CN103281538A (zh) * | 2013-06-06 | 2013-09-04 | 上海交通大学 | 基于滚动哈希和块级别帧内预测的帧内编码方法 |
CN104751055A (zh) * | 2013-12-31 | 2015-07-01 | 北京启明星辰信息安全技术有限公司 | 一种基于纹理的分布式恶意代码检测方法、装置及系统 |
CN107004015A (zh) * | 2014-12-27 | 2017-08-01 | 英特尔公司 | 用于计算滚动散列的技术 |
JP2017107472A (ja) * | 2015-12-11 | 2017-06-15 | 日本電信電話株式会社 | 文字列検索方法および装置 |
CN105912514A (zh) * | 2016-04-28 | 2016-08-31 | 吴国华 | 基于指纹特征的文本复制检测系统及方法 |
CN107423309A (zh) * | 2016-06-01 | 2017-12-01 | 国家计算机网络与信息安全管理中心 | 基于模糊哈希算法的海量互联网相似图片检测系统及方法 |
KR101803888B1 (ko) * | 2017-01-18 | 2017-12-04 | 한국인터넷진흥원 | 유사도 기반 악성 어플리케이션 탐지 방법 및 장치 |
KR101865378B1 (ko) * | 2018-01-31 | 2018-06-07 | 주식회사 에프원시큐리티 | 웹 쉘 탐지 시스템 |
CN111290784A (zh) * | 2020-01-21 | 2020-06-16 | 北京航空航天大学 | 适用于大规模样本的程序源代码相似度检测方法 |
CN115328525A (zh) * | 2022-07-19 | 2022-11-11 | 上海艾拉比智能科技有限公司 | 一种差分包的生成方法 |
CN115658976A (zh) * | 2022-11-10 | 2023-01-31 | 兴业银行股份有限公司 | 基于局部敏感哈希的设备指纹分析方法及系统 |
Non-Patent Citations (3)
Title |
---|
一种基于改进模糊哈希的文件比较算法研究;邸宏宇;张静;于毅;王连印;;信息网络安全;20161110(第11期);全文 * |
基于相似性摘要算法的应用与研究;肖锦琦;;现代计算机(专业版);20180115(第02期);全文 * |
大规模数据的集合相似度估计研究进展;何安娜;陈华辉;;无线通信技术;20171215(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116127457A (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7617231B2 (en) | Data hashing method, data processing method, and data processing system using similarity-based hashing algorithm | |
KR101627592B1 (ko) | 비밀 정보의 검출 | |
CN110034921B (zh) | 基于带权模糊hash的webshell检测方法 | |
CN101807208B (zh) | 视频指纹快速检索方法 | |
US8892570B2 (en) | Method to dynamically design and configure multimedia fingerprint databases | |
US20080104404A1 (en) | Method and system for providing image processing to track digital information | |
CN112214984B (zh) | 内容抄袭识别方法、装置、设备及存储介质 | |
CN113901474B (zh) | 一种基于函数级代码相似性的漏洞检测方法 | |
Ahmed et al. | Content-based file-type identification using cosine similarity and a divide-and-conquer approach | |
CN116562297B (zh) | 基于HTrie树的中文敏感词变形体识别方法及系统 | |
CN114372267B (zh) | 一种基于静态域的恶意网页识别检测方法、计算机及存储介质 | |
CN110674635A (zh) | 一种用于文本段落划分的方法和装置 | |
CN112380537A (zh) | 一种检测恶意软件的方法、装置、存储介质和电子设备 | |
CN109359481B (zh) | 一种基于bk树的反碰撞搜索约减方法 | |
CN116127457B (zh) | 一种基于winnowing算法的恶意代码检测方法及系统 | |
CN113037729B (zh) | 基于深度学习的钓鱼网页层次化检测方法及系统 | |
Ahmed et al. | On improving the accuracy and performance of content-based file type identification | |
CN111104674A (zh) | 一种电力固件同源二进制文件关联方法及系统 | |
RU2615317C1 (ru) | Способ обнаружения кодов вредоносных компьютерных программ в трафике сети передачи данных, в том числе подвергнутых комбинациям полиморфных преобразований | |
CN111756735A (zh) | 一种dns隧道流量检测方法及装置 | |
CN107967314B (zh) | 文本特征值的提取方法、装置及电子设备 | |
CN111552864B (zh) | 一种资讯去重的方法、系统、存储介质及电子设备 | |
CN114329287A (zh) | 一种异常链接处理方法、装置、计算机设备和存储介质 | |
CN113987500A (zh) | 一种恶意pdf文档检测方法、装置及电子设备 | |
CN111104484B (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 |