CN109190372B - 一种基于字节码的JavaScript恶意代码检测方法 - Google Patents

一种基于字节码的JavaScript恶意代码检测方法 Download PDF

Info

Publication number
CN109190372B
CN109190372B CN201810744375.7A CN201810744375A CN109190372B CN 109190372 B CN109190372 B CN 109190372B CN 201810744375 A CN201810744375 A CN 201810744375A CN 109190372 B CN109190372 B CN 109190372B
Authority
CN
China
Prior art keywords
javascript
code
model
word vector
training
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
Application number
CN201810744375.7A
Other languages
English (en)
Other versions
CN109190372A (zh
Inventor
方勇
刘亮
黄诚
薛敏
苏瑜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan University
Original Assignee
Sichuan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan University filed Critical Sichuan University
Priority to CN201810744375.7A priority Critical patent/CN109190372B/zh
Publication of CN109190372A publication Critical patent/CN109190372A/zh
Application granted granted Critical
Publication of CN109190372B publication Critical patent/CN109190372B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明设计一种基于字节码的能够对JavaScript恶意代码进行检测的系统,通过提取基于V8引擎的字节码序列,对字节码序列从上下文语义的角度进行词向量的提取,使用基于长短期记忆网络(Long Short‑Term Memory,LSTM)的分类算法从而实现准确有效地检测出JavaScript恶意代码的目的。

Description

一种基于字节码的JavaScript恶意代码检测方法
技术领域
本发明设计了一种基于字节码的能够对JavaScript恶意代码进行检测的方法,通过提取基于V8引擎的字节码序列,对字节码序列从上下文语义的角度进行词向量的提取,使用基于长短期记忆网络(Long Short-Term Memory,LSTM)的分类算法从而实现准确有效地检测出JavaScript恶意代码的目的。
背景技术
随着Web应用以B/S(Browser/Server)架构占据主流市场,浏览器和网页成为恶意代码传播的重要渠道。攻击者利用网站代码的脆弱性、第三方应用软件漏洞、浏览器漏洞以及操作系统漏洞等,对网站进行跨站脚本攻击、植入网页木马、网页篡改、网络钓鱼、盗取个人信息等非法操作。
对JavaScript恶意代码的检测是恶意网页检测中必不可少的一部分,并且已有不少研究成果。其中最重要的两个因素就是特征提取和检测模型。
从不同层面提取的恶意代码特征大致有六种,分别是特征码、代码统计特征、序列特征、图特征、代码语义特征和操作码频率特征。比较出名的Snort入侵检测系统便是利用特征码匹配的方式进行攻击检测。代码统计特征是指静态分析恶意代码,统计恶意代码中经常出现关键字的频率、特殊字符频率、代码长度等特征。Kim等人提出基于恶意软件行为序列(API调用序列)和序列比对算法进行动态分析,从而实现恶意软件的检测与分类。杨帆等人通过静态分析技术将原始代码抽象成函数调用图,再利用图编辑距离对恶意代码相似性进行分析。代码语义特征是从指令语义的角度抽象特征。卢占军等人首先将恶意代码反汇编为操作码,再利用N-gram算法提取特征。
检测技术也从传统的基于模式匹配,到现在如火如荼的基于机器学习,对于恶意代码的检测向着更加自动、智能的方向发展,对检测结果的要求也不仅是能准确、无遗漏地识别出已知类型的攻击,更要能对抗各种混淆手段。
针对JavaScript恶意代码的特征提取及检测主要解决的难题在于以下三项。
(1)如何对浏览器环境中的DOM和BOM对象进行模拟,以便于基于V8解析引擎进行字节码的序列提取。
(2)如何对word2vec算法进行优化以使其更适合于当前模型的词向量提取。
(3)如何对抗各种混淆手段以及对混淆JavaScript恶意代码的检测效果进行测试。
本系统重点对于以上三个问题进行解决,实现一种基于字节码的JavaScript恶意代码检测方法。
发明内容
该发明是采用Nodejs平台下的V8解析引擎进行字节码解析、基于word2vec算法中CBOW模型进行词向量模型训练、基于TF-IDF算法进行词向量模型优化、基于深度学习算法LSTM进行分类的多项技术开发的先进模型。通过对样本数据进行预处理,对其中的JavaScript代码进行词向量特征提取,利用LSTM分类模型对源代码中的JavaScript恶意代码进行检测。
该发明旨在实现如下目标。
(1)模型对源代码中的JavaScript代码进行提取,完成对DOM和BOM对象的模拟。模型对数据预处理后的结果进行特征提取并分类,检测出当前输入源代码中的JavaScript代码是否为恶意。
(2)模型能够对收集到的样本代码进行预处理,能将HTML文件中的JavaScript代码分离出来并进行DOM和BOM对象的模拟。在训练阶段,还具备代码样本去重、代码样本标注的能力。
(3)模型使用Nodejs平台的V8解析引擎对JavaScript代码进行解析,对产生的字节码文件中的字节码序列进行提取。
(4)模型具备特征提取能力,可以根据训练样本中的字节码序列进行词向量模型的训练,再根据词向量模型对词向量进行提取。
(5)模型具备检测混淆JavaScript恶意代码的能力,在准确有效地检测出JavaScript恶意代码的同时还能有效对抗混淆。
为了实现上述目的,该发明采用了如下技术方案:基于字节码的JavaScript恶意代码检测模型主要包括三个部分:数据准备、恶意代码特征提取、恶意JavaScript代码检测。
数据准备主要完成字节码提取操作之前的数据准备工作,包括JavaScript代码从HTML文件中分离、对重复样本文件进行过滤、标记正负样本以及对DOM和BOM对象进行模拟。
恶意代码特征提取包括字节码的提取和词向量的提取。字节码提取主要完成字节码生成、字节码筛选以及字节码序列的提取保存。词向量提取主要完成将字节码文本转换为计算机可理解的向量表示,包括基于优化的word2vec算法进行模型训练和词向量生成。
恶意JavaScript代码检测主要是基于LSTM算法进行分类模型的训练和未知类型样本的分类判定。在训练阶段,需要对分类模型中超参数配置进行调试,以训练出最优的分类模型。
附图说明
图1是本发明的模型训练和检测流程图。
具体实施方式
一种基于字节码的JavaScript恶意代码检测方法包括三个模块:数据准备模块、恶意代码特征提取模块、恶意JavaScript代码检测模块。
如图1所示为模型训练和检测流程图,详细地描绘了JavaScript恶意代码检测模型在训练和检测两个阶段的流程。通过对样本文件进行预处理,使用Nodejs下的封装库jsdom进行DOM和BOM对象的模拟,利用V8解析引擎完成JavaScript字节码的生成。在训练阶段,根据字节码序列生成词向量模型,再根据词向量训练生成分类模型。在检测阶段,根据词向量模型提取词向量,再根据分类模型进行分类判定。
本发明的工作过程是:使用Nodejs下的封装库对DOM和BOM对象进行模拟,使用V8解析引擎进行字节码生成,使用word2vec中CBOW模型进行词向量模型训练及词向量提取,使用TF-IDF算法进行词向量模型优化。同时使用基于LSTM算法对提取出的100维词向量进行分类模型训练及最终的分类判定,对其中的超参数进行调试以训练出最优分类模型。
其中,基于TF-IDF算法进行词向量模型优化的过程如下:
Word2vec在自然语言处理中,遇到停用词“的”、“是”等高频词时,会使用降采样的方式来提高模型训练速度,即以一定概率对高频词进行舍弃。但是字节码序列中每一个字节码都是带有信息的,并不能根据其出现频率高就直接进行舍弃,因此为了保证有效高频词得以保留,提出基于TF-IDF算法进行优化。优化后舍弃概率的公式如下:
Figure GDA0003101793500000031
原始舍弃概率与词频成正比,改进目标是舍弃概率与TF-IDF算法计算出的权重成反比。
分类模型中使用长短期记忆网络LSTM算法对提取的词向量特征进行训练,通过对目标函数、优化函数、batch-size、epochs等参数的调试,训练出当前环境下最优的分类模型。当输入新的待测样本时,利用训练好的分类模型对样本进行分类判定。

Claims (1)

1.一种基于字节码的JavaScript恶意代码检测方法,其主要包括以下步骤:
步骤一:预处理数据,将HTML文件中的JavaScript代码分离出来并引入Nodejs下封装库jsdom实现DOM和BOM对象的模拟,在训练阶段,还需要对代码样本进行去重和标注;
步骤二:基于V8解析引擎对经过预处理得到的JavaScript代码样本进行解析,从生成的字节码文件中提取出字节码序列;
步骤三:基于优化后的word2vec算法进行词向量模型的训练及词向量的提取;使用TF-IDF算法进行词向量模型优化,具体为:Word2vec在自然语言处理中,遇到停用词“的”、“是”高频词时,会使用降采样的方式来提高模型训练速度,即根据概率阈值对高频词进行舍弃;但字节码序列中每一个字节码皆携带信息,不能因其出现频率高而直接进行舍弃,为保证有效高频词得以保留,提出基于TF-IDF算法进行优化;优化后舍弃概率的公式为:
Figure FDA0003267479970000011
Figure FDA0003267479970000012
原始舍弃概率与词频成正比,改进目标是舍弃概率与TF-IDF算法计算出的权重成反比;
步骤四:基于LSTM的分类算法对基于上下文语义提取的词向量特征进行训练,调试分类模型中超参数,以训练出最优分类模型。
CN201810744375.7A 2018-07-09 2018-07-09 一种基于字节码的JavaScript恶意代码检测方法 Active CN109190372B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810744375.7A CN109190372B (zh) 2018-07-09 2018-07-09 一种基于字节码的JavaScript恶意代码检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810744375.7A CN109190372B (zh) 2018-07-09 2018-07-09 一种基于字节码的JavaScript恶意代码检测方法

Publications (2)

Publication Number Publication Date
CN109190372A CN109190372A (zh) 2019-01-11
CN109190372B true CN109190372B (zh) 2021-11-12

Family

ID=64936273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810744375.7A Active CN109190372B (zh) 2018-07-09 2018-07-09 一种基于字节码的JavaScript恶意代码检测方法

Country Status (1)

Country Link
CN (1) CN109190372B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109886021A (zh) * 2019-02-19 2019-06-14 北京工业大学 一种基于api全局词向量和分层循环神经网络的恶意代码检测方法
CN112035836B (zh) * 2019-06-04 2023-04-14 四川大学 一种恶意代码家族api序列挖掘方法
CN112307473A (zh) * 2019-08-01 2021-02-02 四川大学 一种基于Bi-LSTM网络和注意力机制的恶意JavaScript代码检测模型
CN112330328A (zh) * 2019-08-05 2021-02-05 四川大学 一种基于特征提取的信用卡欺诈检测方法
CN111090859B (zh) * 2019-11-25 2022-05-13 北京理工大学 一种基于图编辑距离的恶意软件检测方法
CN111832020B (zh) * 2020-06-22 2024-03-19 华中科技大学 一种安卓应用恶意性、恶意种族检测模型构建方法及应用
CN112019497B (zh) * 2020-07-10 2021-12-03 上海大学 一种基于词嵌入的多阶段网络攻击检测方法
CN112199274B (zh) * 2020-09-18 2022-05-03 北京大学 基于V8引擎的JavaScript动态污点跟踪方法及电子装置
CN112632549B (zh) * 2021-01-06 2022-07-12 四川大学 一种基于语境分析的Web攻击检测方法
CN113239354A (zh) * 2021-04-30 2021-08-10 武汉科技大学 一种基于循环神经网络的恶意代码检测方法及系统
CN114065199B (zh) * 2021-11-18 2022-06-21 山东省计算中心(国家超级计算济南中心) 一种跨平台恶意代码检测方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663296A (zh) * 2012-03-31 2012-09-12 杭州安恒信息技术有限公司 面向网页JavaScript恶意代码的智能检测方法
CN104636665A (zh) * 2015-02-03 2015-05-20 南京理工大学 一种Android应用程序的描述和匹配方法
CN107239678A (zh) * 2017-05-10 2017-10-10 东南大学 一种基于Java文件目录结构的Android应用重打包检测方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622543B (zh) * 2012-02-06 2016-08-03 北京百度网讯科技有限公司 一种动态检测恶意网页脚本的方法和装置
CN104268474A (zh) * 2014-09-30 2015-01-07 电子科技大学 一种基于浏览器脚本行为的入侵检测方法及装置
CN104636456B (zh) * 2015-02-03 2018-01-23 大连理工大学 一种基于词向量的问题路由方法
US20160232353A1 (en) * 2015-02-09 2016-08-11 Qualcomm Incorporated Determining Model Protection Level On-Device based on Malware Detection in Similar Devices
CN105279288B (zh) * 2015-12-04 2018-08-24 深圳大学 一种基于深度神经网络的在线内容推荐方法
US9992217B2 (en) * 2015-12-31 2018-06-05 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting malicious network traffic
CN106845230B (zh) * 2016-12-29 2019-05-14 济南大学 基于恶意网络流量词库的恶意软件检测可视化方法及系统
CN106991324B (zh) * 2017-03-30 2020-02-14 兴华永恒(北京)科技有限责任公司 一种基于内存保护类型监控的恶意代码跟踪识别方法
CN107948168A (zh) * 2017-11-29 2018-04-20 四川无声信息技术有限公司 网页检测方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663296A (zh) * 2012-03-31 2012-09-12 杭州安恒信息技术有限公司 面向网页JavaScript恶意代码的智能检测方法
CN104636665A (zh) * 2015-02-03 2015-05-20 南京理工大学 一种Android应用程序的描述和匹配方法
CN107239678A (zh) * 2017-05-10 2017-10-10 东南大学 一种基于Java文件目录结构的Android应用重打包检测方法

Also Published As

Publication number Publication date
CN109190372A (zh) 2019-01-11

Similar Documents

Publication Publication Date Title
CN109190372B (zh) 一种基于字节码的JavaScript恶意代码检测方法
US11481492B2 (en) Method and system for static behavior-predictive malware detection
US11574052B2 (en) Methods and apparatus for using machine learning to detect potentially malicious obfuscated scripts
CN112307473A (zh) 一种基于Bi-LSTM网络和注意力机制的恶意JavaScript代码检测模型
CN102436563B (zh) 一种检测页面篡改的方法及装置
Fang et al. Research on malicious JavaScript detection technology based on LSTM
CN103577755A (zh) 一种基于支持向量机的恶意脚本静态检测方法
CN110191096B (zh) 一种基于语义分析的词向量网页入侵检测方法
Huang et al. JSContana: Malicious JavaScript detection using adaptable context analysis and key feature extraction
Wei-Hong et al. A static malicious javascript detection using svm
CN110096878A (zh) 一种恶意软件的检测方法
Phung et al. Detection of malicious javascript on an imbalanced dataset
KR20210084204A (ko) 악성 코드 수집 방법 및 시스템
CN110362995A (zh) 一种基于逆向与机器学习的恶意软件检测及分析系统
KR20200076426A (ko) 이종 정보 네트워크 기반 악성 코드 탐지 방법 및 장치
CN116015703A (zh) 模型训练方法、攻击检测方法及相关装置
CN109753798A (zh) 一种基于随机森林与FastText的Webshell检测模型
CN112257076A (zh) 一种基于随机探测算法和信息聚合的漏洞检测方法
CN108573148B (zh) 一种基于词法分析的混淆加密脚本识别方法
KR20220009098A (ko) 정적분석과 스태킹 기법을 활용한 악성코드 탐지 시스템에 관한 연구
Guo et al. Classification of malware variant based on ensemble learning
Balan et al. Using api calls for sequence-pattern feature mining-based malware detection
Hess et al. Malicious HTML file prediction: A detection and classification perspective with noisy data
Phung et al. Evaluation of a cGAN Model and Random Seed Oversampling on Imbalanced JavaScript Datasets
Yaseen et al. A Deep Learning-based Approach for Malware Classification using Machine Code to Image Conversion

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