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

news2025/3/10 5:58:31

摘    要

科技的发展带来了人们生活的改变,近年来我国网民已突破十亿人口, 而且在后疫 情时代, 经历了疫情时期的一系列线上活动, 人们对网络的依赖比以往任何时期都要高 得多。高频次的上网行为也带来了一系列安全问题,黑客们通过在正常的网页中插入 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.coloradmin.cn/o/1569284.html

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

相关文章

FPGA实现Canny算法(Verilog)

在边缘检测算法里面Sobel是比较简单的一个算法&#xff0c;但是其检测出来的边缘往往是比较粗的&#xff0c;效果不是很好&#xff0c;因为我们最理想的边缘肯定就是一个宽度为1的细线。 Canny算法在此基础上进行了改进&#xff0c;通过使用边缘的梯度信息进行非最大值抑制(NM…

面向作家的 ChatGPT 教程

原文&#xff1a;ChatGPT for authors 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 介绍我坐在电脑前几个小时&#xff0c;盯着一张空白的 Word 文档。文字就是无法流畅地表达出来。这并不是什么新鲜事&#xff1b;称之为写作障碍&#xff0c;称之为缺乏灵感&#x…

大创项目推荐 深度学习 python opencv 火焰检测识别

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

51单片机入门_江协科技_19~20_OB记录的笔记

19. 串口通讯 19.1. 串口介绍&#xff1a; •串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信。 •单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#xff0c;极大的…

STM32的CAN外设

我们的CAN控制器支持最高的通讯速率为1Mb/s&#xff0c;可以自动地接收和发送CAN报文&#xff0c;支持使用标准ID和扩展ID地报文&#xff0c;外设中具有3个发送邮箱&#xff0c;发送报文的优先级可以使用软件控制&#xff0c;还可以记录发送的时间&#xff0c;具有两个3级深度的…

langchain + azure chatgpt组合配置并运行

首先默认你已经有了azure的账号。 最重要的是选择gpt-35-turbo-instruct模型、api_version&#xff1a;2023-05-15&#xff0c;就这两个参数谷歌我尝试了很久才成功。 我们打开https://portal.azure.com/#home&#xff0c;点击更多服务&#xff1a; 我们点击Azure OpenAI&#…

MacBook安装使用XMind

MacBook安装使用XMind XMind简介 官方地址: https://www.xmind.cn/ XMind 是一个全功能的思维导图和头脑风暴软件,为激发灵感和创意而生。作为一款有效提升工作和生活效率的生产力工具,受到全球百千万用户的青睐。 XMind 是一款非常实用的商业思维导图软件&#xff0c;应用…

《QT实用小工具·十一》Echart图表JS交互之仪表盘

1、概述 源码放在文章末尾 该项目为Echart图表JS交互之炫酷的仪表盘&#xff0c;可以用鼠标实时改变仪表盘的读数。 下面为demo演示&#xff1a; 该项目部分代码如下&#xff1a; #include "widget.h" #include "ui_widget.h" #include "qurl.h&q…

【Java程序员面试专栏 综合面试指南】5年资深程序员面试指南

基础知识对于5年内工作经验的同学考察相对比较多。包括编程语言、计算机网络、操作系统、设计模式、分布式知识、MySQL、Redis这种。其中随着年限的增长,基础知识考察的会越来越少,例如操作系统基本上只在学生阶段考察,计算机网络对于5年经验来说也考察的相对较少。5年以上对…

蓝桥杯单片机速成8-NE555频率测量

一、原理图 NOTE&#xff1a;使用NE555测量频率之前&#xff0c;需要将J3-15(SIGNAL)与J3-16(P34短接) 在使用矩阵键盘的时候也记得把跳冒拔下&#xff0c;因为有公共引脚P34 又是因为他的输出引脚是P34&#xff0c;所以只能用定时器0来作为计数器进行频率测量了 二、代码实现 …

清明时节雨纷纷,AI达人用Bedrock(第一季)

今天是清明小长假第一天&#xff0c;没有外出踏青&#xff0c;在家体验Amazon Bedrock的强大能力。Amazon Bedrock是专门为创新者量身打造的平台&#xff0c;它提供了构建生成式人工智能应用程序所需的一切。 这次我主要尝试的是通过 Amazon Bedrock 里的 Stability AI SDXL 1…

单目标跟踪 多目标跟踪 目标跟踪 运动估计/光流 OPENCV光流源码分析 基于卷积神经网络的光流预测算法 相关滤波方法

目标跟踪 目标跟踪算法总结 目标跟踪算法是指通过视频分析技术,实时追踪视频序列中的目标并获取其位置、形状、速度等信息的一种算法。目标跟踪在多个领域有着广泛的应用,如监控安防、无人驾驶、人机交互以及虚拟现实等。 目标跟踪算法有多种分类方式。一种分类是基于主动…

Qt | 发布程序(以 minGW 编译器为例)

1、注意:修改 pro 文件后,最好执行“构建”>“重新构建项目”,否则 pro 文件的更改将不会反应到程序上。 2、发布程序的目的:就是让编译后生成的可执行文件(如 exe 文件),能在其他计算机上运行。 一、编译后生成的各种文件简介 Qt Creator 构建项目后产生的文件及目录…

KIl5:Stm32L071下载出现flash download faild “cortex-m0+“的解决方法

首先看看有没有芯片&#xff0c;没有芯片下载一下 下载并在device选择对应的芯片 选择调试器 选择flash

如何保护IP地址不被泄露?

当互联网成为每个家庭的重要组成部分后&#xff0c;IP地址就成了你的虚拟地址。您的请求从该地址开始&#xff0c;然后 Internet 将消息发送回该地址。那么&#xff0c;您担心您的地址被泄露吗&#xff1f; 对于安全意识高或者某些业务需求的用户&#xff0c;如果您正在寻找保护…

《YOLOv8:从入门到实战》专栏介绍 专栏目录

&#x1f31f;YOLOv8&#xff1a;从入门到实战 | 目录 | 使用教程&#x1f31f; 本专栏涵盖了丰富的YOLOv8基础知识源码解析入门实践算法改进项目实战系列教程&#xff0c;专为学习YOLOv8的同学而设计&#xff0c;堪称全网最详细的教程&#xff01;该专栏针对YOLOv8内容的学习…

蓝桥杯备考2

P8839 [传智杯 #4 初赛] 组原成绩 题目描述 花栗鼠科技大学&#xff08;Hualishu University of Science and Technology, HUST&#xff09;的计算机组成原理快要出分了。你现在需要计算你的组原成绩如何构成。 具体来说&#xff0c;组原成绩分为三部分&#xff0c;分别是平…

卡奥斯工业互联网平台分析

一、 背景 卡奥斯是海尔推出的具有中国自主知识产权、全球首家引入用户全流程参与体验的工业互联网平台。其核心是大规模定制模式&#xff0c;通过持续与用户交互&#xff0c;将硬件体验变为场景体验&#xff0c;将用户由被动的购买者变为参与者、创造者&#xff0c;将企业由原…

刷题之Leetcode34题(超级详细)

34. 在排序数组中查找元素的第一个和最后一个位置 力扣链接(opens new window)https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/ 给定一个按照升序排列的整数数组 nums&#xff0c;和一个目标值 target。找出给定目标值在数组中的开始…

3. python练习题3-自由落体

3. python练习题3-自由落体 【目录】 文章目录 3. python练习题3-自由落体1. 目标任务2. 解题思路3. 知识回顾-%占位符格式化处理3.1 概述3.2 占位符的多种用法3.3 格式化操作符辅助指令3.4 将整数和浮点数格式化为字符串 4. 解题思路4.1 球第1次下落4.2 球第2次下落 5. 最终代…