基于机器学习的木马检测模型的设计与实现(论文)_kaic

摘    要

科技的发展带来了人们生活的改变,近年来我国网民已突破十亿人口, 而且在后疫 情时代, 经历了疫情时期的一系列线上活动, 人们对网络的依赖比以往任何时期都要高 得多。高频次的上网行为也带来了一系列安全问题,黑客们通过在正常的网页中插入 JavaScript  木马,使人们在不知不觉中就受到黑客攻击。机器学习具有准确率高、 预测 效果好等特征, 运用训练机器学习模型的方法检测木马是网络安全界的热门方向。
本次实验通过在互联网上收集正常JavaScript 和木马JavaScript 数据,研究JavaScript 木马的特征, 用 Python   的 Pandas  和 Scikit-learn  库进行数据处理和机器学习训练。 JavaScript  木马识别根本上是二分类问题, 所以算法的选择上本次实验选择了随机森林 分类算法、KNN 分类算法和 SVM 分类算法, 这三种分类算法是二分类问题中常用的方 法。通过机器学习训练后的模型识别木马准确率很高, 可以有效的识别 JavaScript 木马 文件。

关键词: 机器学习;JavaScript ;木马;Python
 


Design and Implementation of Trojan Detection Model Based on Machine Learning

Abstract

The development of technology has brought about changes in people's lives. In recent years, China's internet population has exceeded one billion, and in the post pandemic era, people have experienced a series of online activities during the epidemic period, and their dependence on the internet is much higher than ever before. Frequent online behavior has also  brought a series of security issues, as hackers insert JavaScript trojans into normal webpages,  making  people  unknowingly  vulnerable  to  hacker  attacks.  Machine  learning  has  the characteristics of high accuracy and good prediction performance, and using the method of training machine  learning  models to  detect  trojans  is  a  popular  direction  in  the  field  of network security.
This experiment collected normal JavaScript and Trojan JavaScript data on the internet to  study  the  characteristics  of JavaScript  Trojans.  Data  processing  and  machine  learning training were conducted using Python's Pandas and Scikit learn libraries. JavaScript Trojan horse recognition is basically a binary classification problem, so the selection of algorithms in this experiment chose random forest classification algorithm, KNN classification algorithm and  SVM  classification  algorithm,  which  are  commonly  used  in  binary  classification problems. The model trained through machine learning has a high accuracy in identifying trojans and can effectively recognize JavaScript trojan files.

Key Words:Machine Learning;JavaScript;Torjan;Python

目    录
摘    要
Abstract 
1  绪论
1.1  研究背景
1.2  国内外研究现状
1.2.1  国外研究状况
1.2.2  国内研究状况
1.3  论文主要工作
2 JavaScript 木马检测的相关理论与技术 
2.1 JavaScript 语言概述 
2.2 JavaScript 木马概述 
2.3  机器学习及其相关算法概述
2.3.1  随机森林算法
2.3.2 SVM 算法 
2.3.3 KNN 算法 
3  需求与可行性分析
3.1  可行性分析
3.1.1  技术可行性
3.1.2  经济可行性
3.2  需求分析
4  基于机器学习分类模型的 JavaScript 木马检测 
4.1 检测的整体流程
4.2  数据集的获取
4.2.1  正常 JavaScript 数据集的获取 
4.2.2  含有木马的 JavaScript 数据集的获取 
4.3  数据集处理
4.3.1  数据集导入
4.3.2  数据集清洗
4.4  数据集的特征提取
4.5  训练集的划分和模型调参
4.5.1  划分训练集和测试集
4.5.2  模型调参
4.6  实验结果与对比
4.6.1  实验结果
4.6.2  实验结果对比
5  总结与展望
5.1  总结
5.2  展望
参 考 文 献
致    谢
 
1 绪论

1.1 研究背景
随着互联网和信息技术的高速进步,特别是后疫情时代, 人类活动中随处可见互联 网的痕迹。中国互联网信息中心于 2023 年 03 月 02  日发布的第 51 次《中国互联网络发 展状况统计报告》 [1]中指出, 截至 2022 年 12 月, 中国网民规模已至 10.67 亿,较 2021 年 12 月增长 3549 万人,互联网普及率高达 75.6% 。图 1.1 可以看出自 2020 年 3 月至 2 022 年 12 月我国网民规模和互联网普及率的变化。
图 1.1 中国网民规模与互联网普及率统计

在网民数量急剧增长的状况下, 网络的安全问题也随之而来,瑞星公司在 2023 年 2  月 17 日发布的《2022 年中国网络安全报告》[2]中指出, 2022 年瑞星公司拦截病毒样本 7355 万个, 其中木马病毒新增 4515 万个, 蠕虫病毒新增 1392 万个,其余病毒如后门、 感染型病毒和灰色软件总体数量也有增加。如图 1.2 可以看出, 木马病毒占总体总量的 61.39% ,是目前最主要的威胁。网站挂马是木马传播的主要途径之一[3],黑客一般通过 网站的漏洞去进攻网站, 然后把准备好的木马嵌入 HTML  代码中, 当用户访问网站的 时候, 就会受到木马的攻击,被黑客窃取信息。 这一攻击技术主要使用 JavaScript 语言 实现, 把 JavaScript 作为载体,实现木马病毒从黑客服务器到客户主机的传递[4]。
 


 
图 1.2  瑞星 2022 年病毒种类统计

现在针对 JavaScript 木马检测的研究主要以机器学习算法为主[5]。机器学习技术现 在应用于农业、 工业等许多领域, 在自然语言处理方面尤为常用。由于编程语言与自然 语言存在相似,研究员将适用于自然语言处理的模型使用在编程语言之中, 并把机器学 习算法用于木马病毒检测,这是目前来说网络安全领域的一大热门。 由于本人之前参加 过大创项目《农业大数据平台核心技术》,对使用机器学习进行预测的技术有一定的研 究,而且平时对木马病毒比较感兴趣, 故而想用机器学习技术检测 JavaScript 木马作为 毕业设计。
1.2 国内外研究现状
目前, JavaScript  木马检测技术已经成为安全界研究的重点,对于现有的检测方法 都可以归纳为两大类,一类是对代码文本研究的静态检测,另一类是对代码行为研究的 动态检测。 静态检测主要是通过对代码进行分析, 通常与分类技术结合使用, 通过抓取 代码的特征来训练模型, 然后判断网页是否含有 JavaScript 木马。 静态检测对计算机资 源消耗少, 训练完成后的模型检测时间很快, 但是对一些特殊木马检测准确率不高。动 态检测主要会将网页在虚拟机中打开, 观察网页的行为来判断里面有没有隐藏木马。动 态检测通常准确率较好,但是要占用额外的计算机资源, 而且检测时间较长。
1.2.1 国外研究状况
由于国外对于机器学习概念应用较早,已经有许多学者应用机器学习来检测 JavaSc ript 木马,Ndichu  S[6]等人提出一种从 JavaScript 的 AST 进行代码结构表示, 并使用 Do
 


c2vec 神经网络模型进行机器学习训练,最后比较发现, Doc2vec 在识别使用了 AST 的 JavaScript 代码的速度和精准度都高于传统 JavaScript 代码。
Ishida  M [7]等人提出一种检测 JavaScript 木马的新方法 MOJI,它是一种静态检测的 方法,不需要对代码进行特征提取,只需要简单的字符编码即可。MOJI 使用了最新的 字符级卷积神经网络模型进行训练,不需要对单词进行拆分,但是对内存的需求比较大。
Fass  A[8]等人通过设计一种模块化静态 JavaScript 检测系统,它拥有十个模块五种 不同的代码抽象方式, 并且每个模块都训练了一个随机森林分类器,训练了 270000 余 个样本, 达到 99.4%的预测率。
Morishige  S[9]等人提出了一种基于分割 URL 特征的恶意 JavaScript 检测方案,通过 分割恶意 JavaScript 片段以获取特征, 将这些特征存储在字典中, 然后从测试代码中找 到 URL 链接并分割, 用分割后的 URL 片段匹配字典中的特征, 如果能够匹配成功,则 该 URL 是恶意的。 该设计能够很好的检测重定向类型的恶意代码, 但是没有在 URL 上 混入恶意代码的 JavaScript 片段则很难检测出来。
Phung N  M[10]等人在进行恶意JavaScript 研究时不仅仅只关注于模型的训练和特征 的搜集, 而是在数据集上做出创新, 提出了更符合现实情况的在不平衡数据集上检测 J avaScript 木马。 一般研究者在进行数据集搭建的过程中会选择恶意代码与正常代码差不 多的数量, 或者选择搭建恶意代码更多的数据集,但是这并不符合现实情况, 现实中往 往恶意数据要远远小于正常数据的,所以构建的数据集一共两万条数据,其中恶意数据 只有几百条。 为了弥补数据集不平衡的弊端, 作者提出了基于 DCGAN 的过采样模型, 这个模型在恶意数据集中使用, 使其“生 ”出新的恶意数据, 并且新生成的数据与源数 据相似但不相同,提高了检测的正确率。
1.2.2 国内研究状况
近几年, 对于国内研究信息安全的学者, 使用机器学习技术检测木马方面的研究是 一大热门方向,四川大学的 Yong  Fang[11]等人提出一种基于图神经网络的静态检测模型 JStrong ,为了能够将 JavaScript 代码冗余部分删除,作者团队从对象依赖图 ODG 获得 灵感, 研究出一种新的提取代码属性图,通过修剪原始程序依赖图 PDG,保留数据流依 赖和控制流依赖等最重要信息,最后形成的新 PDG 检测效果较之前有了明显提升, 而 且花费时间也更少。
卢镓[12]使用 CNN 神经网络算法设计模型, 对恶意代码攻击类型进行分析, 采用 8  个输入节点对应八种攻击类型,8 个输出节点对应训练完成的输出值, 较为全面的根据 攻击类型对恶意代码进行分类。最后模型检测率达到 99.4% ,并且设计了一整套完善的 Chrome 插件,部署在 Chrome 浏览器中, 实现了在浏览器中实时检测网站的恶意代码。
 


孟雨[5]在传统的模型基础上, 使用了较新的融合模型 XGBoost 检测 JavaScript 木马, 获得了更高的准确率和速度。并且在研究过程中应用基于 RabbitMQ 的高并发爬虫技术, 构建了一个代码抓取器, 较为高效的抓取嵌入在网站代码里的 JavaScript 文件。
邱瑶瑶[13]等人提出了基于语义的检测方法, 通过提取 AST 抽象语法树获取词法单 元序列, 然后利用 Google 的 word2vec 词向量特征训练工具得到序列的词向量, 之后将 其输入到 LSTM 检测模型中进行训练。这种方法检测效果与时间都优于同实验对比的两 种模型,但是处理的数据集不能过大。
1.3 论文主要工作
本文主要研究如何运用机器学习模型检测 JavaScript 木马。通过分析 JavaScript 木 马代码的特征,然后使用多种机器学习算法模型对数据进行训练, 最后比较各个算法模 型的时间、准确率,挑选出最佳算法模型。
这次实验主要从下面几个方面进行探究:
(1)从多个途径获取 JavaScript 木马文件, 并且通过软件爬取知名网站获得正常的 JavaScript 文件,将两种类型文件分别以.js 文件的形式存储在主机中。
(2)研究 JavaScript 代码特征, 将数据进行预处理,然后得出可以进行训练的有效 数据,研究数据特征。
(3)运用多种机器学习算法模型对数据训练,并通过调参方法对模型调参, 对比 各个模型的准确率,得出最优解。
 


2 JavaScript 木马检测的相关理论与技术

2.1 JavaScript 语言概述
JavaScript  语言是面向对象的脚本语言,不用被编译为机器码就能执行。因为其跨 平台和易于上手的特性,被全世界前端工程师追捧。JavaScript 由 ECMAScript、DOM、 BOM 三部分组成:
(1)ECMAScript:客户端脚本语言的标准, 不同浏览器有着不同的实现, 如 Chr ome 的 V8 、FireFox 的 SpiderMonkey 、微软的 JScript 等。
(2)DOM:可以将网页里的东西转换为 JavaScript 对象, 然后用脚本控制它。 (3)BOM:可以将浏览器当作对象看待, 通过脚本访问浏览器的功能。
2.2 JavaScript 木马概述
JavaScript 木马实质上就是存在一段恶意的 JavaScript 代码,它可以通过<script></s  cript>嵌入 HTML 页面,也可以独立生成一个.js 文件, 被正常的 HTML 链接。这些木马 在满足一定的条件后开始运作, 一般表现为: 转到赌博或色情网站、弹出广告页面、修 改浏览器配置、 盗取个人信息等。强大的木马可能会在用户浏览某个页面时在后台下载 木马文件, 然后伪装成正常.exe 文件,用户执行被伪装的应用后,黑客便能控制住电脑。
2.3 机器学习及其相关算法概述
机器学习是人工智能实现的一种方法。机器学习就是让计算机运用收集到的数据搭 建模型, 并让这个模型对一些事件做出预判的技术。有监督机器学习主要分为分类和回 归两种,回归一般应用于对事件的预测, 比如让模型学习过去一段时间天气的规律, 预 测出明天天气可能是怎么样的。分类则应用于判断检测,比如让模型学习大量狗的照片, 通过抓取狗的特征构建特征库,判断某只动物是否是狗。 对于 JavaScript 木马病毒的检 测, 需要用数据进行训练,所以实验选择使用有监督学习的分类模型。
2.3.1 随机森林算法
随机森林算法是 Bagging 算法的进化版, 思想仍然是 bagging ,但是进行了独有的 改进。 随机森林算法在二分类问题中比较有效果,基学习器是一个个决策树, 树多了就 组成森林。随机森林模型是本次实验的核心算法,它的流程如图 2. 1 所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/305115.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ISTQB选择国内版,还是国际版呢

1, ISTQB简介 ISTQB&#xff08;International Software Testing Qualifications Board&#xff09;是一个国际软件测试资格认证机构&#xff0c;旨在提供一个统一的软件测试认证标准。ISTQB成立于2002年&#xff0c;是非盈利性的组织&#xff0c;由世界各地的国家或地区软件测…

动态规划刷题(2)之杨辉三角(详细解释)

最近在自学动态规划,网上到处找资料学习: 在这里记录我的刷题历史: 题目都是在力扣里面刷的!! 这里,我放一个刷动态规划的链接在这里:动态规划知识点题库 - 力扣(LeetCode) 力扣 在这里附加动态规划相关知识点:动态规划(DP)-CSDN博客文章浏览阅读197次。动态规划…

Redis Cluster集群模式

目录 一、理论 1.1 概念 1.2 集群的作用 1.3 redis集群的数据分片 1.4 Redis集群的主从复制模型 二、实践 2.1 Redis集群模式的搭建 2.1.1 cluster集群前期工作 2.1.2 开启群集功能 2.1.3 启动redis节点 2.1.4 启动集群 2.2 测试集群 总结 一、理论 1.1 概念 集群&a…

html与css练习

一丶学校官方网站页面制作 1.代码 ①html代码 ②css代码 2.实现效果图 二丶使用动画完成过度变换效果 1.代码 ①html代码 ②css代码 2.效果图片

【java探索之旅】走进循环结构 深入解析while、for和do while的用法

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java编程秘籍 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、循环结构1.1 while循环1.2 while代码示例1.3 break1.4 continue 二、for循环2.1 基…

5分钟了解清楚【osgb】格式的倾斜摄影数据metadata.xml有几种规范

数据格式同样都是osgb&#xff0c;不同软件生产的&#xff0c;建模是参数不一样&#xff0c;还是有很大区别的。尤其在应用阶段。 本文从建模软件、数据组织结构、metadata.xml&#xff08;投影信息&#xff09;、应用几个方面进行了经验性总结。不论您是初步开始建模&#xf…

2024/4/5—力扣—字符串相乘

代码实现&#xff1a; 方法一&#xff1a;常规解法——超出整数表示范围 long long char_to_num(char *str) {long long num 0;for (int i 0; i < strlen(str); i) {num num * 10 (str[i] - 0);}return num; }char* multiply(char *num1, char *num2) {long long a cha…

Docker端口一直占用问题,docker重置(端口无法释放)(彻底重置docker环境)

文章目录 背景解决方法&#xff1a;彻底重置docker环境1. 停止所有Docker容器2. 删除所有容器3. 删除所有Docker镜像4. 删除所有Docker网络5. 删除所有Docker卷6. 清理Dangling资源7. 停止Docker服务8. 删除Docker数据和配置文件9. 重启Docker服务10. 验证 在这里插入图片描述验…

2023年上半年信息系统项目管理师——综合知识真题与答案解释(1)

2023年上半年信息系统项目管理师 ——综合知识真题与答案解释(1) 零、00时光宝盒 1009 Rejections 1009 拒绝 Once, there was an old man, who was broke, living in a tiny house and owned a beat-up car. 有一次&#xff0c;有一个老人&#xff0c;他破产了&#…

百度Create AI开发者大会剧透丨用好三大AI神器 ,人人都是开发者

程序员会消失&#xff0c;真的吗&#xff1f;大模型的下一站是什么&#xff1f;开发者的机会在哪里&#xff1f;什么才是最好用的AI应用开发工具&#xff1f;在4月16日举办的2024百度Create AI开发者大会上&#xff0c;百度创始人、董事长兼首席执行官李彦宏将就这些备受瞩目的…

基于springboot实现医院管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现医院管理系统演示 摘要 随着信息互联网信息的飞速发展&#xff0c;医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求&#xff0c;创建了一个计算机管理医院管理系统的方案。文章介绍了医院管理系…

推荐一个大学生可以参加的榜单赛事|人工智能赛道

【榜单赛事】第十四届全国大学生计算机应用能力与数字素养大赛 - 人工智能产业应用赛道人工智能编程赛项 正在火热报名中 本赛道定位于人工智能产业应用和实践&#xff0c;把人工智能产业真实的技能要求、能力要求体现在竞赛内容设计当中&#xff0c;并在竞赛环节融入实战项目…

八次危机笔记

文章目录 前言一、思维导图危机一危机二危机三危机四危机五危机六危机七危机八 前言 重塑三观&#xff0c;致敬温老。一个有良心的学者&#xff01;&#xff01;&#xff01; 一、思维导图 危机一 危机二 危机三 危机四 危机五 危机六 危机七 危机八 ☆

Spring: 后端状态码如何与http状态码保持一致

文章目录 一、背景二、解决方案 一、背景 今天使用postman在做接口测试的时候发现了一个有趣的问题&#xff1a;响应体的status和http的status一样&#xff0c;出于好奇对该现象进行了总结。 二、解决方案 通过拦截器ResponseBodyAdvice&#xff0c;做到统一拦截 Controll…

leetcode 322

leetcode 322 题目 例子 思路 记忆化搜索&#xff0c;使用数组&#xff0c;记录val的最少硬币数量&#xff1b; 递归加bfs; 代码实现 #include <vector> #include <climits> // For INT_MAX #include <algorithm> // For minclass Solution { public:int…

Java File类

2. File类 2.1 概述 java.io.File 类是文件和目录路径名的抽象表示&#xff0c;主要用于文件和目录的创建、查找和删除等操作。 2.2 构造方法 public File(String pathname) &#xff1a;通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 public File(String …

抖音引流私域转化模式1.0现场视频,从抖音源源不断把人加到私域买单

抖音-引流私域转化模式1.0现场视频&#xff0c;从抖音源源不断把人加到私域&#xff0c;让加到私域的粉丝买单 课程内容&#xff1a;抖音引流私域转化模式1.0现场视频&#xff0c;从抖音源源不断把人加到私域买单 - 百创网-源码交易平台_网站源码_商城源码_小程序源码 01.第一…

大恒相机-程序异常退出后显示被占用

心跳时间代表多久向相机发送一次心跳包&#xff0c;如果超时则设备会认为断开了&#xff0c;停止工作并主动释放占用资源。 在相机打开后添加代码&#xff1a; #ifdef _DEBUG//设置心跳超时时间 3sObjFeatureControlPtr->GetIntFeature("GevHeartbeatTimeout")-&…

程序员生产力工具推荐

1.SSH客户端 XTerminal Xterminal - 更好用的开发工具&#xff0c;但不止于(SSH/控制台/More) 有着比XShell好看的多的界面&#xff0c;免费版使用起来绰绰有余。 2.文件内容搜索工具 FileLocator FileLocator Pro 专业全文检索工具文件搜索软件丨中文网站特价购买 everyth…

idea Springboot校园新闻系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 校园新闻发布系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&a…