单个样本维度_恶意样本检测——Mathematics Malware Detected Tools

本文为看雪论坛优秀文章

看雪论坛作者ID:xiaoduoduo

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

概述

mmdt(Mathematics Malware Detected Tools)是一款基于数学方法的最简单的类“机器学习”工具。该工具通过数学方法对目标对象进行处理,生成相应的标准“指纹”,通过对指纹的处理,实现“机器学习”中的“分类”、“聚类”方法。

并在此基础上,从“分类”衍生出恶意代码检测功能,从“聚类”衍生出恶意代码同源样本挖掘功能。备注:1. 对该工具而言,分类、聚类之间唯一的区别是有无已知标签,除此之外完全一样。2. 这里“分聚类”的意思已经几乎等价于机器学习中的分聚类,类似的,分类需要有已知的训练集,聚类则不需要。

>>>>工具特点

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

>>>>工具目的

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

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

>>>>原理概要

通过压缩算法对文件进行缩放,生成标准文件、使用哈希函数对标准文件进行处理,得到“分片”哈希(指纹)。详细内容参见后续论文(撰写论文中)。(原理不够,表情包凑。完全一样的约束条件下,能推论出一个特解。我的状态:

491f7fb17dbfe084c11afc93b8d29445.gif

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

8a26bfd311338a5c5fb12b6ba089eae9.png

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

195a2bff5fb6cb10bc6f8cfdee24d6d1.png

配置参数说明

>>>>main.ini

主配置文件,用于配置执行相关功能时的参数选项。

[version]
version=1.0.0
 
[owner]
name=mmdt
 
[main_param]
auto-add=0                     // function-type=3时生效,用于分类“训练模型”时(是否自动更新模型)0:不更新,非0:更新
auto-move=0                    // 用于聚类时是否移动文件,0:不移动,非0:移动
function-type=3                // 选择功能,2:相似度计算比较,3:分类训练/扫描,4:聚类
normalization-standar=100      // 归一化标准,默认100
scan-level=10                  // 扫描覆盖率,取值在[0, 5]之间时越大覆盖率越高,准确性越低,其他值为默认扫描,覆盖率最低,准确性最高
first-level=60                 // 方式1的准确度,取值在[0, 100]之间,越低越准确,覆盖率越低
second-level=50                // 方式2的准确度,取值在[0, 100]之间,越低越准确,覆盖率越低
accury-level=3                 // 计算相似度方式,取值为1、3,取值为1时使用低精度方式,取值为3时使用高精度方式
thresold=0.5                   // 判定阈值
classify-id=-1                 // 分类“训练模型”是生效,需要给定当前这批文件的标签
max-cluster-number=1000        //支持最大聚类数量
max-file-size=20971520         //支持最大处理文件大小20M,超过的截断处理
rule-file=rule.db // 规则库(模型存储)
label-file=classify-label.ini // 标签配置文件

>>>>classify-label.ini

标签配置文件,用于分类(扫描)时,将id转成对应的字符串,节约存储空间。详细使用参考使用场景。

[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

使用场景

本段落主要说明工具的用法以及怎么用。不同的使用场景需要配置不同的参数。目前考虑到使用场景具体包括:1. 分类场景,恶意代码检测2. 聚类场景,自动同源性的化恶意代码挖掘3. 相似度计算场景,如计算可执行文件相似度、计算源代码相似度、计算webshell相似度、计算宏代码相似度、计算图片相似度

>>>>分类场景

生成特征库(模型“训练”)

对有标签样本提取特征,生成指纹,融入特征库。执行命令如下:1. ./mmdt -f 3 -a 1 -j 1 -r rule.db -o classify-label.ini -t /Users/ddvv/gitcode/mmdt/tmp/test/Sality/2. /mmdt -f 3 -a 1 -j 2 -r rule.db -o classify-label.ini -t /Users/ddvv/gitcode/mmdt/tmp/test/Berbew/3. ./mmdt -f 3 -a 1 -j 3 -r rule.db -o classify-label.ini -t /Users/ddvv/gitcode/mmdt/tmp/test/Gandcrab/4. ...(依次对其他文件夹进行处理,生成库文件([“模型”])

-f: 3表示采用扫描/训练模式
-a: 1表示自动存储满足条件的指纹
-j: 1表示标签id
-r: 特征库文名称
-o: 标签文件
-t: 目标对象,可以是单个文件,也可以是目录(目录必须带上最后的斜杆)

1d453909a54890153224b397f7f05698.png

>>>>可执行文件检测

执行命令:

1. ./mmdt -f 3 -r rule.db -o classify-label.ini -t /Users/ddvv/gitcode/mmdt/tmp/test/Wabot/2. ./mmdt -f 3 -r rule.db -o classify-label.ini -t /Users/ddvv/gitcode/mmdt/tmp/test/Gandcrab/

6267b83fb10df4b66c94cb648708c61d.png

输出检出情况。

total number: 表示一共扫描的文件个数
scanned number: 表示本工具能处理的文件个数
can't recognize number: 表示本公举不能处理的文件个数
add rule number: 表示添加的规则数
total classify number: 表示能识别的文件总数
checkout classify ratio: 表示识别率
total run : 表示本次程序执行时间

非可执行文件检测(与PE文件检测完全一致)

>>>>非可执行文件检测(与PE文件检测完全一致)

执行命令:1. 扫描宏:./mmdt -f 3 -r rule.db -o classify-label.ini -t /Users/ddvv/gitcode/mmdt/tmp/test/Macros/2. 扫描11882漏洞利用:./mmdt -f 3 -r rule.db -o classify-label.ini -t /Users/ddvv/gitcode/mmdt/tmp/test/CVE-2017-11882/

d8a089d644f0f7cd4f6a4a848889fc63.png

>>>>聚类场景

恶意代码聚类

对51个文件,共计9个大类进行聚类,执行命令:

1. 聚类,并将同类移动到同一个文件夹下:./mmdt -f 4 -b 1 -m 1000 -t /Users/ddvv/gitcode/mmdt/tmp/test/All/

-f: 4表示采用聚类模式
-b: 1表示自动移动同源文件到相同目录
-m: 表示本次聚类支持的最大类别数量
-t: 目标对象,可以是单个文件,也可以是目录(目录必须带上最后的斜杆)

结果如下:

e309d99f2983a4f24179eedd2f676a87.png

51个样本聚类数量29类。从截图信息可以看出,mmdt_000是CVE-2018-0802类型,共计8个样本。

>>>>相似度计算场景

用于计算文件间的相似度。

恶意文件相似度计算

计算Gandcrab_2和其他文件之间的相似度,执行命令:

./mmdt -f 2 -c /Users/ddvv/gitcode/mmdt/tmp/test/Gandcrab/Gandcrab_2 -t /Users/ddvv/gitcode/mmdt/tmp/test/All/

-f: 2表示采用计算相似度模式
-c: 表示比较的目标对象(只能是文件,不能是文件夹)
-t: 表示目标对象,可以是单个文件,也可以是目录(目录必须带上最后的斜杆)

结果如下:

26ac148d9a7ada3b6cbe7b4ca68a08b2.png

...

1def2c7fbe4cad95e1e060df1ceea171.png

计算CVE-2018-0802_1和其他文件之间的相似度:执行命令:

./mmdt -f 2 -c /Users/ddvv/gitcode/mmdt/tmp/test/CVE-2018-0802/CVE-2018-0802_1 -t /Users/ddvv/gitcode/mmdt/tmp/test/All/结果如下:

7af69cb49c8206ec05628bf435e29091.png

源代码相似度计算

对ssdeep中不同commit间的engine.cpp源码进行相似度计算,原始差异如下图:

6b4a39ec2942a259bc16a7cbf118518a.png

执行命令(归一化标准设置为500),./mmdt -f 2 -n 500 -c /Users/ddvv/gitcode/mmdt/tmp/test/source/engine_new.cpp -t /Users/ddvv/gitcode/mmdt/tmp/test/source/engine_old.cpp相似度计算结果如下:

2954e1f98fe1d9163a43dc72e3465f92.png

webshell相似度计算

对webshell进行相似度计算,原始差异如下图:

ee7e4ee8161c3aee0537a2c550a8d346.png

执行命令(归一化标准设置为默认100),./mmdt -f 2 -c /Users/ddvv/gitcode/mmdt/tmp/test/webshell/php1 -t /Users/ddvv/gitcode/mmdt/tmp/test/webshell/相似度计算结果如下:

481924de88586e004ec25ad2969ab1b7.png

宏代码相似度计算

对宏代码进行相似度计算,原始差异如下图:

e6e4a90114c5284924ac29f262ce6354.png

执行命令(归一化标准设置为默认100),./mmdt -f 2 -c /Users/ddvv/gitcode/mmdt/tmp/test/Macros/Macros_3 -t /Users/ddvv/gitcode/mmdt/tmp/test/Macros/相似度计算结果如下:

8d159d4926f82aa76583e21609d27f23.png

>>>>其他使用场景

通过一些参数优化等方式,有可能也能利用在相似图像查找上面。原图如下:

b2180e1e6a8d70d18b02812ea3ec04a5.png

执行命令(归一化标准设置为210),./mmdt -f 2 -k 3 -n 210 -c /Users/ddvv/gitcode/mmdt/tmp/test/Img/img1.jpeg -t /Users/ddvv/gitcode/mmdt/tmp/test/Img/相似度计算结果如下:

868c8c245bef0384f1b55da884f67638.png

恶意代码检测

对314个恶意样本使用同一参数(见main.ini文件),进行测试统计(样本来源参考malware-samples和APT-Sample)。

069b29db20fc6ae84f129ea49477831b.png

RS比率=规则/样本数量比率可推导出的结论包括:1. RS比率越低表示识别效果越好2. RS比率与恶意样本类型相关3. RS比率高低与配置参数相关

4. 放大数据集,RS比率会降低

其他

为什么不开源代码?

主要还是如下两个原因:

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

为什么单独提供工具?

出于两方面的原因考虑:

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

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

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

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

Github地址

Github -- ddvv:https://github.com/a232319779/mmdt

压缩包解压码

解压码:mmdt

附录

引用1:引用自woffffcibei,感谢大牛贡献数据。

2dcdef18b78fab4a5b01ddf3ce7c8753.png

63f6d36c9180d91767f1cab200cf4873.png

aa32f478961bec121f11d1837ffd9d36.gif

- End -

看雪ID:xiaoduoduo

https://bbs.pediy.com/user-10578.htm

*本文由看雪论坛 xiaoduoduo 原创,转载请注明来自看雪社区

推荐文章++++

* Android 应用多开对抗实践

* Linux pwn从入门到熟练(三)

* 浅谈Bypass disable_function

* 内存dump 获得基于Unity3d的游戏相关代码

* Android逆向入门练习——滑雪大冒险支付分析

0d4a79a6f73d2a0a87bf9ca44407c5cb.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《离散数学及其应用》是一本写给大学生学习离散数学的教材,由肯尼思·罗森(Kenneth Rosen)编写的第七版。这本教材广泛被全球大学使用,被认为是离散数学的经典教材之一。 该书的主要内容包括逻辑、集合论、证明技巧、算法、图论、组合学、递归等等。它的目标是帮助学生培养解决离散数学问题的能力,并应用到计算机科学、信息科学等领域。 《离散数学及其应用》的第七版相对于之前的版本进行了更新和改进。这本书的特点是深入浅出、结构清晰,并通过大量的例题和习题来帮助读者理解和巩固所学的知识。此外,该书还提供了很多实际应用的案例,以帮助读者将理论知识应用到实际问题中。 这本教材的编写风格简单明了,循序渐进,适合初学者学习。它不仅介绍了基础概念和技术,还包含了一些前沿的研究成果,使读者能够了解到离散数学的最新进展。 总的来说, 《离散数学及其应用》是一本优秀且经典的教材,对于学习离散数学的学生和从事相关领域的研究者来说都是一本不可多得的学习和参考资料。无论是想深入了解离散数学理论知识,还是应用到实际问题中,这本书都将是一个非常有价值的工具。 ### 回答2: 《离散数学及其应用(第7版)》是一本经典的数学教材,由肯尼斯·罗森(Kenneth Rosen)编写。该书广泛应用于计算机科学、信息技术和工程等领域的离散数学课程。 该教材主要包括了离散数学的核心概念和方法,如集合论、命题逻辑、谓词逻辑、证明技巧、图论、组合数学、概率论等内容。每一章节都有大量的例子和习题,帮助读者理解和掌握相关概念和技巧。 与其他教材相比,这本书的特点之一是强调数学的应用。例如,在图论部分,书中介绍了图的应用于计算机网络、社交网络和电路设计等方面,并提供了相关的算法和技巧。此外,该书还涵盖了离散数学在密码学、信息安全和计算机算法等领域的应用。 另一个特点是该教材的详细性和全面性。编者在选材上做了周到的考虑,以确保教材尽可能地覆盖离散数学的各个方面。此外,书中内容的组织结构合理,逻辑严谨,帮助读者更好地理解和掌握知识。 总之,《离散数学及其应用(第7版)》是一本经典的离散数学教材,适用于计算机科学、信息技术和工程领域的学生和从业人员。通过学习这本教材,读者可以系统地理解离散数学的基本概念和方法,并能够应用于实际问题的求解。 ### 回答3: 《离散数学及其应用 第7版》是美国著名数学家Kenneth H. Rosen所著的一本教材,广泛应用于离散数学的学习和教学。这本教材被广泛认为是离散数学领域的经典教材之一,内容丰富全面,涵盖了离散数学的各个方面。 该书分为7个部分,分别是基础概念、结构和函数、归纳和递归、计数和概率、图论、树和算法、布尔代数和自动机。每个部分都由多个章节组成,侧重于讲解相应领域的核心概念和基本原理。该书的语言简单明了,循序渐进,既适合作为初学者的入门书,也适合作为高级学习者的参考书。 《离散数学及其应用 第7版》的特点之一是其丰富的例题和习题。每个章节都提供了大量的例题来帮助读者理解概念和应用,而且每章末尾还有大量的习题供读者练习。这些例题和习题的设计非常精细,既涵盖了基本知识点的掌握,也拓展了读者的思维和解题能力。此外,书中还提供了答案和解析供读者参考。 总体而言,Kenneth H. Rosen的《离散数学及其应用 第7版》是一本非常优秀的教材,对于学习离散数学的人来说是一个不可多得的宝库。不仅能够帮助读者建立坚实的数学基础,提高解决问题的能力,也能够培养读者的逻辑思维和分析能力。无论是学生、教师还是专业人士,都能从中获得巨大的收益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值