您或许知道,作者后续分享网络安全的文章会越来越少。但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个《当人工智能遇上安全》系列博客,详细介绍人工智能与安全相关的论文、实践,并分享各种案例,涉及恶意代码检测、恶意请求识别、入侵检测、对抗样本等等。只想更好地帮助初学者,更加成体系的分享新知识。该系列文章会更加聚焦,更加学术,更加深入,也是作者的慢慢成长史。换专业确实挺难的,系统安全也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~
前一篇文章介绍安全相关的数据集供大家下载和实验,包括恶意URL、流量分析、域名检测、恶意软件、图像分类、垃圾邮件等。这篇文章将讲解如何学习提取的API序列特征,并构建机器学习算法实现恶意家族分类,这也是安全领域典型的任务或工作。基础性文章,希望对您有所帮助~
文章目录
- 一.恶意软件分析
-
* 1.静态特征
- 2.动态特征
- 二.基于逻辑回归的恶意家族检测
-
* 1.数据集
- 2.模型构建
- 三.基于SVM的恶意家族检测
-
* 1.SVM模型
- 2.代码实现
- 四.基于随机森林的恶意家族检测
- 五.总结
作者作为网络安全的小白,分享一些自学基础教程给大家,主要是在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习AI安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔!
前文推荐:
- [当人工智能遇上安全] 1.人工智能真的安全吗?浙大团队外滩大会分享AI对抗样本技术
- [当人工智能遇上安全] 2.清华张超老师 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing
- [当人工智能遇上安全] 3.安全领域中的机器学习及机器学习恶意请求识别案例分享
- [当人工智能遇上安全] 4.基于机器学习的恶意代码检测技术详解
- [当人工智能遇上安全] 5.基于机器学习算法的主机恶意代码识别研究
- [当人工智能遇上安全] 6.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例
- [当人工智能遇上安全] 7.基于机器学习的安全数据集总结
- [当人工智能遇上安全] 8.基于API序列和机器学习的恶意家族分类实例详解
作者的github资源:
一.恶意软件分析
恶意软件或恶意代码分析通常包括静态分析和动态分析。特征种类如果按照恶意代码是否在用户环境或仿真环境中运行,可以划分为静态特征和动态特征。
那么,如何提取恶意软件的静态特征或动态特征呢? 因此,第一部分将简要介绍静态特征和动态特征。
1.静态特征
没有真实运行的特征,通常包括:
- 字节码:二进制代码转换成了字节码,比较原始的一种特征,没有进行任何处理
- IAT表:PE结构中比较重要的部分,声明了一些函数及所在位置,便于程序执行时导入,表和功能比较相关
- Android权限表:如果你的APP声明了一些功能用不到的权限,可能存在恶意目的,如手机信息
- 可打印字符:将二进制代码转换为ASCII码,进行相关统计
- IDA反汇编跳转块:IDA工具调试时的跳转块,对其进行处理作为序列数据或图数据
- 常用API函数
- 恶意软件图像化
静态特征提取方式:
-
IDA Pro
-
安全厂商沙箱
2.动态特征
相当于静态特征更耗时,它要真正去执行代码。通常包括:
– API调用关系:比较明显的特征,调用了哪些API,表述对应的功能
– 控制流图:软件工程中比较常用,机器学习将其表示成向量,从而进行分类
– 数据流图:软件工程中比较常用,机器学习将其表示成向量,从而进行分类
动态特征提取方式:
二.基于逻辑回归的恶意家族检测
前面的系列文章详细介绍如何提取恶意软件的静态和动态特征,包括API序列。接下来将构建机器学习模型学习API序列实现分类。基本流程如下:
![在这里插入图片描述](https://img-
blog.csdnimg.cn/763374c83d2c48c1bc35fb3b6505af92.png#pic_center)
1.数据集
整个数据集包括5类恶意家族的样本,每个样本经过先前的CAPE工具成功提取的动态API序列。数据集分布情况如下所示:(建议读者提取自己数据集的样本,包括BIG2015、BODMAS等)
恶意家族 | 类别 | 数量 | 训练集 | 测试集 |
---|---|---|---|---|
AAAA | class1 | 352 | 242 | 110 |
BBBB | class2 | 335 | 235 | 100 |
CCCC | class3 | 363 | 243 | 120 |
DDDD | class4 | 293 | 163 | 130 |
EEEE | class5 | 548 | 358 | 190 |
数据集分为训练集和测试集,如下图所示:
![在这里插入图片描述](https://img-
blog.csdnimg.cn/8604cb66b9fd43a8b0009bccd89c82da.png#pic_center)
数据集中主要包括四个字段,即序号、恶意家族类别、Md5值、API序列或特征。
![在这里插入图片描述](https://img-
blog.csdnimg.cn/95054b7897ca40a7be9ebbfbe27f7266.png#pic_center