概述
Linux情况下的恶意软件大部门以shell剧本作为母体文件进行流传,并且,统一个病毒家眷所使用的的恶意剧本往往具有极高相似性,新变种的剧本大部门是在旧变种剧本的根蒂长进行点窜,新增或替代部门要害恶意代码,同时,分歧家眷之间的恶意剧本也或者显现代码互相借鉴,部门重合的情形。
[原文来自:www.pp00.com]
该若何揭示病毒家眷中恶意剧本之间的关系呢?接下来,我们就经由手工搭建一个简略的恶意剧本剖析系统,来实现对恶意剧本之间关系的研究。
[转载出处:www.pp00.com]
系统功能
系统的功能如下,首要为3个:使用yara检测剧本对应的病毒家眷。
较量剧本与样本库中每个样本的相似度。
提取剧本新增/篡改的恶意代码。
经由以上3个环节,就能检测出该剧本所属的家眷,与其最相似的样本,以及新篡改的恶意代码,从而快速定位到本次病毒变种更新的恶意项(C&C域名/文件路径/历程名等)。
使用方式
系统构造由3部门构成,yara划定库、病毒样本库、功能代码,后者运行后会读取划定和样本内容进行检测。
系统运行结果如下,测试的剧本为7月份新发现的H2Miner新变种,该变种与1月份变种ex.sh的相似度为97%,与5月份变种sa.sh的相似度为93%。同时,比拟于1月份的变种新增了18行代码,更改了8行代码。
然而,待检测的剧本有或者是新的病毒家眷,已有的yara划定无法成家成功,这时候系统会遍历该剧本与样本库中每一个样本的相似度,筛选出相似度最高的家眷。
系统运行完成后,会生成一个html申报,用于可视化显露剧本之间的具体差别。
显露结果如下,高亮显露剧本与相似样本间具体的新增/更改/删除恶意代码行。
道理剖析
3个焦点功能离别由yara_scan函数、check_similarity函数、parse_modification函数实现,若check_similarity没有较量出相似度高的关系样本,则不执行parse_modification函数。
yara_scan函数
经由yara库,挪用rule_db里的yara划定对方针剧本进行扫描,返回成家到病毒家眷名。
今朝支撑的检测的病毒家眷如下。
check_similarity函数
挪用开源difflib库的SequenceMatcher函数进行文原形似度较量,筛选出相似百分比最高的样本。PS:若前面yara检测出对应的病毒家眷,则只较量该家眷目录下的样原形似度,不然,较量所有家眷样本的相似度。
样本按照发现日期进行存放,便于整顿个中关系。
parse_modifcation函数
最后,使用difflib.context_diff函数提取差别(新增/更改/删除)代码,并使用difflib.HtmlDiff生成具体申报。
总结
Linux恶意剧本大部门没有进行搅浑,使用开源库difflib进行文本对照是个简洁高效的方式,经由该系统,能够快速的剖析新型恶意剧本的更新部门,以及与其他病毒家眷剧本的关系。
出色介绍