看的论文:Ravi C, Manoharan R. Malware Detection using Windows API Sequence and Machine Learning[J]. International Journal of Computer Applications, 2012, 43(17):12-16.
基础
- 恶意软件:未经用户许可进入系统的软件。 恶意程序的机器代码模式称为签名。
- 恶意软件检测:通过监控主机中正在运行进程的行为来区分是否为恶意软件。
- 现有恶意软件检测方法:使用从windows API调用中提供的信息。数据挖掘,分类模型:Naive Bayes, SVM, Decision Tree 。
相关研究方法
- Faraz Ahmed, Haider Hameed, Zubair Shafiq, Muddassar Farooq
方法:将windows API调用序列作为标准机器学习方法的输入,只监控API类别的最小子集(疑问,为什么是最小子集)。 - Yi-Dong Shen, Zhong Zhang and Qiang Yang
方法:面向对象基于效用的关联模型(OOA)关联挖掘方法。 - Yanfang Ye, Dingding Wang, Tao Li, Dongyi Ye and Qingshan Jiang
方法:基于分类的关联挖掘方法开发的智能恶意软件检测系统(IMDS) - Yanfang Ye, Tao Li, Qingshan Jiang and Youyu Wang
方法:IMDS + CIDCPF = CIMDS ,增加了后处理
本文恶意软件检测方法
1.创新点
典型的监督式学习,由训练资料建立一个新模型,并由此模型推测新的实例。论文中创新点在于将每次都将模型推测的实例放入训练资料中形成新的模型,成为具有迭代学习过程的动态恶意软件检测方法。
2.算法思路
离线阶段(模型训练)
将已知类别的可执行文件样本存放于数据库中,执行样本,通过API调用追踪器记录每个样本执行过程中的API调用序列,经索引化后存放于API索引数据库中, 将数值型API调用序列组合其标签(恶意或非恶意)存入签名数据库。通过关联挖掘算法,生成4-Grams序列,标记每个序列的类别,计算支持度,置信度,将满足支持度和置信度阈值的规则存放在规则数据库中。
- 支持度 : X类别y序列样本在总样本序列中占的比例。
Support = X 类 别 y 序 列 样 本 数 X ( y ) ) 总 样 本 序 列 数 N \frac{X类别y序列样本数 X(y))}{总样本序列数 N} 总样本序列数NX类别y序列样本数X(y)) - 置信度: X类别y序列样本在y序列样本中占的比例。
Confidence = X 类 别 y 序 列 样 本 数 X ( y ) ) y 序 列 样 本 数 N ( y ) \frac{X类别y序列样本数 X(y))}{y序列样本数 N(y)} y序列样本数N(y)X类别y序列样本数X(y))
在线阶段(测试模型)
运行目标进程,通过API调用追踪器捕获目标进程的API调用序列,索引化,在分类算法中,将索引化后的目标进程序列分割成4-grams序列,根据对照模型训练得到的规则数据库,分别计算出目标进程4-grams序列中标签为恶意软件的平均置信度和非恶意软件的平均置信度,如果前者大于后者,则目标进程为恶意软件,反之为非恶意软件。
迭代学习阶段
将目标进程的调用序列及由模型预测的标签组合存入签名数据库中用以加强模型的训练。
总结
初步学了监督式恶意软件检测方法,继续研读其他相关的论文。附上读论文的思维导图。