恶意代码检测工具 -- Mathematics Malware Detected Tools


Mathematics Malware Detected Tools

重要:由于缺少测试数据,部分结论可能不正确。更多更准确的结论,还需要进行大量实验。

概述

mmdt(Mathematics Malware Detected Tools)是一款基于数学方法的最简单的类“机器学习”工具。该工具通过数学方法对目标对象进行处理,生成相应的标准“指纹”,通过对指纹的处理,实现“机器学习”中的“分类”、“聚类”方法。
并在此基础上,从“分类”衍生出恶意代码检测功能,从“聚类”衍生出恶意代码同源样本挖掘功能。

备注:

  1. 对该工具而言,分类、聚类之间唯一的区别是有无已知标签,除此之外完全一样。
  2. 这里“分聚类”的意思已经几乎等价于机器学习中的分聚类,类似的,分类需要有已知的训练集,聚类则不需要。

工具特点

工具特点如下:

  1. 还原最古老、原始、简单的机器学习过程,
  2. 实现从数据到信息的转换,适用于最真实的大数据场景
  3. 检测过程高效、快捷,支持多级索引,实现毫秒级处理
  4. 单机模式对百万级数量的特征实现毫秒级的检索、匹配
  5. 实现100%“见过即可查”,将检出问题简单转化为数据问题,数据越多,检出越多
  6. 不用担心数据灾难,维度灾难等问题。
  7. 支持几乎所有文件格式

工具目的

可参考著名工具ssdeep的目的及意义。

该工具相对于ssdeep的优势:

  1. 处理结果的记忆属性:提供处理结果存储功能,实现对历史数据的回溯。
  2. 对大数据的支持:单机版支持百万级别的特征数量,100万条特征所占磁盘空间不足100M。
  3. 快速高效的匹配:增加多级索引模式,支持更高效快速的检索、匹配。
  4. 完整的使用流程:傻瓜式的适用方式,类似于常规机器学习过程,设置标签,配置参数,提供训练集,即可以自动化的生成最小规则库(机器学习中的最小模型)
  5. 智能的学习过程:学习结果实时反馈,避免重复学习。

原理概要

通过压缩算法对文件进行缩放,生成标准文件、使用哈希函数对标准文件进行处理,得到“分片”哈希(指纹)。详细内容参见后续论文(撰写论文中)。

原理不够,表情包凑。

完全一样的约束条件下,能推论出一个特解。我的状态:

弱化(减少)约束条件之后,面对新的数学问题时,我的状态:

在群里请教大佬数学问题时,我的状态:

配置参数说明

使用场景

[version]
version=1.0.0

[owner]
name=mmdt

[label_name]
-1=Unknown              // id: -1 保留值,映射为 Unknown
0=Clean                 // id: 0 保留值,映射为 Clean
1=Sality                // id: 1 自增,映射为 Sality(病毒名)
...                     // 后续依次自增

cmd参数

参数意义见main.ini

Version: 1.0.0
Options:
    --help,                   -h,show help info.
    --auto-add,               -a,auto add rule.
    --auto-move,              -b,auto move cluster.
    --function-type,          -f,function type.
    --normalization-standard, -n,normalization standard.
    --scan-level,             -l,scan level.
    --first-level,            -d,first level.
    --second-level,           -e,second level.
    --classify-id,            -j,classify id.
    --thresold,               -p,thresold value.
    --compare-file,           -c,comare file.
    --max-cluster-number,     -m,max cluster number.
    --ini-file,               -i,ini file
    --label-file,             -o,label file
    --rule-file,              -r,rule file
    --target,                 -t,target

main.ini文件),进行测试统计(样本来源参考malware-samples和APT-Sample)。

标签名 样本数量 规则数量 规则/样本数量比率
Clean 5 4 0.800
Sality 3 2 0.667
Berbew 4 4 1.000
Gandcrab 6 3 0.500
Malex 3 1 0.333
Wabot 3 3 1.000
CVE-2017-11882 7 5 0.714
CVE-2018-0802 16 4 0.250
Macros 4 3 0.750
Malware 78 71 0.910
APT 185 171 0.924
总计 314 271 0.863

RS比率=规则/样本数量比率

可推导出的结论包括:

  1. RS比率越低表示识别效果越好
  2. RS比率与恶意样本类型相关
  3. RS比率高低与配置参数相关
  4. 放大数据集,RS比率会降低

其他

为什么不开源代码?

主要还是如下两个原因:

  1. code水平很差,代码太丑,暂时不好意思开源
  2. 这个工具是论文的验证demo,需要完成论文后,才方便开源

为什么提供该工具?

出于两方面的原因考虑:

  1. 主要希望能换取更多的合法数据(样本),进行测试
  2. 次之希望有大佬能提供测试结果,能引用到论文中。

未来是否对这个工具的改进?

会。比如考虑支持以下一些场景和功能:

  1. 结合动态技术,对内存做运算,生成指纹,进行匹配
  2. 增加C/S,B/S模式,增加缓存机制,以支持更大数据集提供更好的特征子集
  3. 智能配置文档生成,更优支持更多的文件类型

Github地址

Github -- ddvv

压缩包解压码

解压码:mmdt