基于机器学习的木马检测模型的设计与实现(论文)_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.mzph.cn/news/792889.shtml

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

相关文章

Cisco路由器配置IPv6 Manual隧道

Cisco路由器配置IPv6 Manual隧道 IPv6与IPv4共存的方式 IPv6与IPv4共存方式大致有三种&#xff1a; 双栈&#xff1a;要求网络中所有设备均同时支持IPv4和IPv6转换&#xff1a;转换这种方式将IPv6协议的报头转换成IPv4协议报头。隧道&#xff1a;假定两个IPv6节点要使用IPv6…

flink源码编译-job提交

1、启动standalone集群的taskmanager standalone集群中的taskmanager启动类为 TaskManagerRunner 2 打开master启动类 通过 ctrln快捷键&#xff0c;找到、并打开类&#xff1a; org.apache.flink.runtime.taskexecutor.TaskManagerRunner 3 修改运⾏配置 基本完全按照mas…

NIUSHOP完美运营版商城 虚拟商品全功能商城 全能商城小程序 智慧商城系统 全品类百货商城

完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城 干干净净 没有一丝多余收据 还没过手其他站 还没乱七八走的广告和后门 后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 挺不错的一套源码 前端UNIAPP 后端PHP 一键部署版本 源码免费…

腾讯云4核8G服务器性能怎么样?能用来干什么?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

ros小问题之rosdep update time out问题

在另外一篇ROS 2边学边练系列的文章里有写碰到这种问题的解决方法&#xff08;主要参考了其他博主的文章&#xff0c;只是针对ROS 2做了些修改调整&#xff09;&#xff0c;此处单拎出来方便查找。 在ROS 2中执行rosdep update时&#xff0c;报出如下错误&#xff1a; 其实原因…

elsint报错Delete `␍`eslintprettier/prettier

一&#xff0c;原因 这篇博客写得很清楚&#xff1a;解决VSCode Delete ␍eslint(prettier/prettier)错误_vscode 删除cr-CSDN博客 还有这篇文章&#xff0c;解决办法很详细&#xff1a;滑动验证页面 二&#xff0c;解决办法 根目录下新建.prettierrc.js文件 module.exports…

谷歌AI搜索革新:探索高级搜索服务背后的未来趋势

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

vulhub中Apache Solr RemoteStreaming 文件读取与SSRF漏洞复现

Apache Solr 是一个开源的搜索服务器。在Apache Solr未开启认证的情况下&#xff0c;攻击者可直接构造特定请求开启特定配置&#xff0c;并最终造成SSRF或任意文件读取。 访问http://your-ip:8983即可查看Apache Solr后台 1.访问http://your-ip:8983/solr/admin/cores?indexI…

一致性hash问题(负载均衡原理)

一致性哈希问题 简介 一致性Hash是一种特殊的Hash算法&#xff0c;由于其均衡性、持久性的映射特点&#xff0c;被广泛的应用于负载均衡领域&#xff0c;如nginx和memcached都采用了一致性Hash来作为集群负载均衡的方案。 本文将介绍一致性Hash的基本思路&#xff0c;并讨论其…

gpt国内怎么用?最新版本来了

claude 3 opus面世后&#xff0c;这几天已经有许多应用&#xff0c;而其精确以及从不偷懒&#xff08;截止到2024年3月11日还没有偷懒&#xff09;的个性&#xff0c;也使得我们可以用它来首次完成各种需要多轮对话的尝试。 今天我们想要进行的一项尝试就是—— 如何从一个不知…

正则表达式完全指南:语法、用法及JavaScript实例

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

认识 Redis 与 分布式

Redis 官网页面 Redis官网链接 Redis 的简介 Redis 是一个在内存中存储数据的中间件 一方面用于作为数据库&#xff0c;另一方面用于作为数据缓存&#xff0c;适用于分布式系统中 Redis 基于网络&#xff0c;进行进程间通信&#xff0c;把自己内存中的变量给别的进程&#xf…

Leetcode 300. 最长递增子序列

心路历程&#xff1a; 经典的子串/子序列的DP问题&#xff0c;这道题需要按照最后一个元素包含在子序列的角度去建模比较好做。 状态&#xff1a;以nums[i]为结尾的最长严格递增子序列的长度 动作候选集&#xff1a;每一个[0, i)之间满足比nums[i]小的元素 返回值&#xff1a…

C#/WPF Inno Setup打包程序

Inno Setup介绍 Inno Setup 是一个免费的 Windows 安装程序制作软件。第一次发表是在 1997 年&#xff0c;现在已经更新到Inno Setup 6了。Inno Setup是一个十分简单实用的打包小工具&#xff0c;可以按照我们自己的意愿设置功能&#xff0c;稳定性也很好。 官方网址&#xff1…

F - 创新型机器猫 高性能战斗机器人(遇到过的题,做个笔记)

我的代码&#xff1a; #include <iostream> #include <vector> using namespace std; int main() {string str;cin >> str;int dxy[][2] { {0,1},{1,0},{0,-1},{-1,0} }; //设置偏移量&#xff0c;按照右转顺序&#xff1a;北->东->南->西int now…

RabbitMQ3.7.8集群分区(脑裂现象)模拟及恢复处置全场景测试

测试环境准备: MQ服务器集群地址&#xff0c;版本号为3.7.8&#xff1a; 管理控制台地址:http://173.101.4.6:15672/#/queues 集群状态 rabbitmqctl cluster_status 集群操作相关命令: 创建一个RabbitMQ集群涉及到如下步骤&#xff1a; 安装RabbitMQ&#xff1a; 在每台要在集…

【opencv】教程代码 —photo

将彩色图像转换为去色图像&#xff08;灰度图像&#xff09;和 颜色增强图像 HDR 图像合成&#xff0c;并同时执行色调映射和曝光融合非真实感渲染&#xff08;NPR&#xff09;正常克隆、混合克隆、单色传递、局部颜色改变、局部照明改变和纹理平滑 1. decolorization将彩色图像…

微信小程序 电影院售票选座票务系统5w7l6

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 前端开发:vue.js 可选语言&#xff1a;pythonjavanode.jsphp均支持 运行软件…

竞赛 Yolov安全帽佩戴检测 危险区域进入检测 - 深度学习 opencv

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; Yolov安全帽佩戴检测 危险区域进入检测 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&am…

Flutter仿Boss-4.短信验证码界面

效果 简述 在移动应用开发中&#xff0c;处理短信验证码是确保用户身份验证和安全性的重要步骤。本文将介绍如何使用Flutter构建一个短信验证码界面&#xff0c;让用户输入通过短信发送到他们手机的四位验证码。 依赖项 在这个项目中&#xff0c;我们将使用以下依赖项&#…