CN109190372B - 一种基于字节码的JavaScript恶意代码检测方法 - Google Patents
一种基于字节码的JavaScript恶意代码检测方法 Download PDFInfo
- 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
Links
Images
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
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification 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恶意代码进行检测的方法,通过提取基于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算法进行优化。优化后舍弃概率的公式如下:
原始舍弃概率与词频成正比,改进目标是舍弃概率与TF-IDF算法计算出的权重成反比。
分类模型中使用长短期记忆网络LSTM算法对提取的词向量特征进行训练,通过对目标函数、优化函数、batch-size、epochs等参数的调试,训练出当前环境下最优的分类模型。当输入新的待测样本时,利用训练好的分类模型对样本进行分类判定。
Claims (1)
1.一种基于字节码的JavaScript恶意代码检测方法,其主要包括以下步骤:
步骤一:预处理数据,将HTML文件中的JavaScript代码分离出来并引入Nodejs下封装库jsdom实现DOM和BOM对象的模拟,在训练阶段,还需要对代码样本进行去重和标注;
步骤二:基于V8解析引擎对经过预处理得到的JavaScript代码样本进行解析,从生成的字节码文件中提取出字节码序列;
步骤三:基于优化后的word2vec算法进行词向量模型的训练及词向量的提取;使用TF-IDF算法进行词向量模型优化,具体为:Word2vec在自然语言处理中,遇到停用词“的”、“是”高频词时,会使用降采样的方式来提高模型训练速度,即根据概率阈值对高频词进行舍弃;但字节码序列中每一个字节码皆携带信息,不能因其出现频率高而直接进行舍弃,为保证有效高频词得以保留,提出基于TF-IDF算法进行优化;优化后舍弃概率的公式为: 原始舍弃概率与词频成正比,改进目标是舍弃概率与TF-IDF算法计算出的权重成反比;
步骤四:基于LSTM的分类算法对基于上下文语义提取的词向量特征进行训练,调试分类模型中超参数,以训练出最优分类模型。
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)
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)
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)
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 | 四川无声信息技术有限公司 | 网页检测方法及装置 |
-
2018
- 2018-07-09 CN CN201810744375.7A patent/CN109190372B/zh active Active
Patent Citations (3)
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 |