Paper: 利用RNN来提取恶意软件家族的API调用模式
论文

摘要
- 恶意软件家族分类是预测恶意软件特征的好方法,因为属于同一家族的恶意软件往往有相似的行为特征
- 恶意软件检测或分类方法分静态分析和动态分析两种:
- 静态分析基于恶意软件中包含的特定签名进行分析,优点是分析的范围覆盖了整个代码,并且可以在不执行恶意软件的情况进行;但恶意软件设计者可以通过多态和加密的方法躲避静态分析
- 动态分析基于恶意软件的行为进行分析,因此动态分析的结果可以用于检测或分类一些经过伪装的恶意软件变体。可以利用API调用序列来检测或分类恶意软件变体。
- 本文提出了一种利用RNN来提取恶意软件家族的API调用模式,进而实现对恶意软件进行检测与分类的方法。对9个恶意软件家族的787个恶意软件样本进行了实验,发现正确分类恶意软件的概率为71%,实验证明该方法是有效的。
Introduction
- 近年来,新的恶意软件及恶意软件的变体不断增加,而且其设计者们通过加密、多态等方法修改签名,尽可能避开检测。
- 虽然恶意软件的签名都不尽相同,但相同家族的恶意软件都有着相似的行为模式,因此,恶意软件的家族分类就成为了恶意软件分析的一个重要的预处理步骤。我们可以将一个未知的恶意软件分类到已知的恶意软件家族中,来预测该恶意软件的行为,这样会极大的缩短该恶意软件的分析时间。
- API信息常用于恶意软件家族分类,(包括API名,参数,返回值等),本文将API的名字作为序列数据,用于RNN模型的输入和输出。
- API调用序列是恶意软件家族分类的一个重要特征,用RNN对属于同一家族的恶意软件的API调用序列进行训练,可以提取出具有代表性的API调用模式,即针对每个恶意软件家族的整体的API调用序列。该总体调用序列(调用模式)可以作为恶意软件家族分类的特征。
方法

- 提取API调用序列
- 运行Cuckoo Sandbox(恶意软件动态分析框架),生成分析报告,提取出恶意软件运行过程中的API调用序列,将这些调用序列作为LSTM网络的输入。
- 训练LSTM网络
- LSTM网络包括3层,一层LSTM层,一层隐藏层,一层输出层。输入API调用序列,输出提取出的对应每个恶意软件家族的API调用模式。
实验
- 实验选取了来自VxHeaven的9个恶意软件家族共781个样本,其中70%是训练集,30%是测试集。
- 训练时,对于每个恶意软件家族,将该家族所有恶意软件的API调用序列concatenate到一起,训练LSTM网络,来得到每个恶意软件家族的API调用模式。
- 测试时,对于每一个样本看它的API调用序列符合(计算相似度,选相似度最大的)哪个家族的API调用模式,则该样本就是那个家族的恶意软件。

评估
- 比较测试集恶意软件API调用序列和自己家族、或其他家族的API调用模式的相似度,发现相似度均不是太高,但与自己家族的相似度还是明显高于与其他家族相似度的。

- 比较从每个恶意软件家族中提取出的API调用模式与测试集恶意软件的API调用序列的相似性,选择与恶意软件相似度最高的前3个API调用模式,并将这三个恶意软件家族与正确答案进行比较。序列相似性度量采用Jaccard相似系数。测试集分类准确度如下。

- 上图可见平均准确率达到了71%,只有一个家族(Lmir)在50%以下,原因可能是因为:
- Lmir家族只有27个独特的API调用,这在计算Jaccard相似度的时候会增大分母,导致无法正确的进行分类。
- 本文用的数据集的标注可能错误。
- 可见,总体来讲,利用家族的API调用模式和测试样本的API调用序列计算相似度的方式还是可以对测试样本进行分类的。
改进空间
- 使用比LSTM提取特征能力更强的神经网络
- 本文使用的数据集可能不准确
- 本文只考虑了API的类型和调用顺序,如果考虑API更多的语义信息效果会更好
结论
本论文将LSTM/RNN模型应用于提取恶意软件家族的API调用模式上,利用该调用模式与新的恶意软件的API调用序列计算相似度的方式可以对新的恶意软件分类。经实验验证,在VxHeaven上9个恶意软件家族共781个样本的数据集上可以达到71%的分类准确率。
参考文献
【1】Kwon I, Im E G. Extracting the representative api call patterns of malware families using recurrent neural network[C]//Proceedings of the International Conference on Research in Adaptive and Convergent Systems. 2017: 202-207.
补充:Jaccard相似系数(来自这里)
Jaccard相似系数用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高,公式:
- 假设arr1 = [11, 2, 3, 8, 10, 0, 2, 0, 0, 2, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0] ,长度为21
- 假设arr2 = [9, 4, 4, 6, 6, 1, 3, 1, 0, 0, 4, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0],长度为21
- 则arr1,arr2的公共部分arr_common = [3,0,0,0,1,0,0,0, 0, 0, 0, 0, 0, 0], 长度为14,那么arr1,arr2的Jaccard相似度为:14 / (21+21-14) = 0.5
相关文章:
Paper: 利用RNN来提取恶意软件家族的API调用模式
论文 摘要 恶意软件家族分类是预测恶意软件特征的好方法,因为属于同一家族的恶意软件往往有相似的行为特征恶意软件检测或分类方法分静态分析和动态分析两种: 静态分析基于恶意软件中包含的特定签名进行分析,优点是分析的范围覆盖了整个代码…...
sdkman 安装以及 graalvm安装
sdkman安装以及graalvm安装全过程, (可能需要梯子) tiamTiam-Lenovo:~$ curl -s "https://get.sdkman.io" | bash-syyyyyyys:/yho: -yd./yh/ m..oho. hy ..sh/ :N -/…...
如何正确使用 WEB 接口的 HTTP 状态码和业务状态码?
当设计和开发 Web 接口时,必然会和 HTTP 状态码与业务状态码这两个概念打交道。很多同学可能没有注意过这两个概念或者两者的区别,做得稀里糊涂,接下来详细讲解下二者的定义、区别和使用方法。 HTTP 状态码 HTTP 状态码是由 HTTP 协议定义的…...
Spark【Spark SQL(三)DataSet】
DataSet DataFrame 的出现,让 Spark 可以更好地处理结构化数据的计算,但存在一个问题:编译时的类型安全问题,为了解决它,Spark 引入了 DataSet API(DataFrame API 的扩展)。DataSet 是分布式的数…...
制作立体图像实用软件:3DMasterKit 10.7 Crack
3DMasterKit 软件专为创建具有逼真 3D 和运动效果的光栅图片而设计:翻转、动画、变形和缩放。 打印机、广告工作室、摄影工作室和摄影师将发现 3DMasterKit 是一种有用且经济高效的解决方案,可将其业务扩展到新的维度,提高生成的 3D 图像和光…...
高校 Web 站点网络安全面临的主要的威胁
校园网 Web 站点的主要安全威胁来源于计算机病毒、内部用户恶意攻击和 破坏、内部用户非恶意的错误操作和网络黑客入侵等。 2.1 计算机病毒 计算机病毒是指编制者在计算机程序中插入的破坏计算机功能或者数据, 影响计算机使用并且能够自我复制的一组计算机指令或…...
vue前端解决跨域
1,首先 axios请求,看后端接口路径,http://122.226.146.110:25002/api/xx/ResxxList,所以baseURL地址改成 ‘/api’ let setAxios originAxios.create({baseURL: /api, //这里要改掉timeout: 20000 // request timeout}); export default s…...
【Cicadaplayer】解码线程及队列实现
4.4分支https://github.com/alibaba/CicadaPlayer/blob/release/0.4.4/framework/codec/ActiveDecoder.h对外:送入多个包,获取一个帧 int send_packet(std::unique_ptr<IAFPacket> &packet, uint64_t timeOut) override;int getFrame(std::u...
把文件上传到Gitee的详细步骤
目录 第一步:创建一个空仓库 第二步:找到你想上传的文件所在的地址,打开命令窗口,git init 第三步:git add 想上传的文件 ,git commit -m "给这次提交取个名字" 第四步:和咱们在第…...
基于keras中Lenet对于mnist的处理
文章目录 MNIST导入必要的包加载数据可视化数据集查看数据集的分布开始训练画出loss图画出accuracy图 使用数据外的图来测试图片可视化转化灰度图的可视化可视化卷积层的特征图第一层卷积 conv1 和 pool1第二层卷积 conv2 和 pool2 MNIST MNIST(Modified National …...
Python爬虫 教程:IP池的使用
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、简介 爬虫中为什么需要使用代理 一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率…...
Ansible之playbook剧本
一、playbook概述1.1 playbook 介绍1.2 playbook 组成部分 二、playbook 示例2.1 playbook 启动及检测2.2 实例一2.3 vars 定义、引用变量2.4 指定远程主机sudo切换用户2.5 when条件判断2.6 迭代2.7 Templates 模块1.先准备一个以 .j2 为后缀的 template 模板文件,设…...
unique_ptr的大小探讨
unique_ptr大小和删除器有很大关系,具体区别看如下代码的分析。不要让unique_ptr占用的空间太大,否则不会达到裸指针同样的效果。 #include <iostream> #include <memory> using namespace std;class Widget {int m_x;int m_y;int m_z;publ…...
人工智能TensorFlow PyTorch物体分类和目标检测合集【持续更新】
1. 基于TensorFlow2.3.0的花卉识别 基于TensorFlow2.3.0的花卉识别Android APP设计_基于安卓的花卉识别_lilihewo的博客-CSDN博客 2. 基于TensorFlow2.3.0的垃圾分类 基于TensorFlow2.3.0的垃圾分类Android APP设计_def model_load(img_shape(224, 224, 3)_lilihewo的博客-CS…...
ElementPlus·面包屑导航实现
面包屑导航 使用vue3中的UI框架elementPlus的 <el-breadcrumb> 实现面包屑导航 <template><!-- 面包屑 --><div class"bread-container" ><el-breadcrumb separator">"><el-breadcrumb-item :to"{ path:/ }&quo…...
【项目管理】PM vs PMO 18点区别
导读:项目经理跟PMO主要有哪些区别?首先从定义上了解,然后根据其他维度进行对比分析,基本可以了解这二者的区别,文中罗列18点区别供各位参考。 目录 1、定义 1.1 PMO 1.2 PM 2、两者区别 2.1 ROI 2.2 项目成功率…...
13 Python使用Json
概述 在上一节,我们介绍了如何在Python中使用xml,包括:SAX、DOM、ElementTree等内容。在这一节,我们将介绍如何在Python中使用Json。Json的英文全称为JavaScript Object Notation,中文为JavaScript对象表示法ÿ…...
PDFBOX和ASPOSE.PDF
一、aspose.pdf 文档 https://docs.aspose.com/pdf/java/ 1、按段落分段 /*** docx文本按段分段*/ public static void main(String[] args) {int i 1;try {// 打开文件流FileInputStream file new FileInputStream("I:\\范文.docx");// 创建 Word 文档对象XWPFDo…...
第51节:cesium 范围查询(含源码+视频)
结果示例: 完整源码: <template><div class="viewer"><el-button-group class="top_item"><el-button type=...
YOLOv5改进算法之添加CA注意力机制模块
目录 1.CA注意力机制 2.YOLOv5添加注意力机制 送书活动 1.CA注意力机制 CA(Coordinate Attention)注意力机制是一种用于加强深度学习模型对输入数据的空间结构理解的注意力机制。CA 注意力机制的核心思想是引入坐标信息,以便模型可以更好地…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
