如何使用DotNet-MetaData识别.NET恶意软件源码文件元数据

关于DotNet-MetaData

DotNet-MetaData是一款针对.NET恶意软件的安全分析工具,该工具专为蓝队研究人员设计,可以帮助广大研究人员轻松识别.NET恶意软件二进制源代码文件中的元数据。

工具架构

当前版本的DotNet-MetaData主要由以下两个部分组成:

1、DotNetMetadata.yar:这是一个Yara规则文件,用于将源代码数据显示到终端;

2、DotNetMetadata.py:该脚本负责从.NET源代码文件中提取GUID、MVID、YTPELIB和程序集名称等信息;

工具下载

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/bartblaze/DotNet-MetaData.git

工具使用

DotNetMetadata.yar

DotNetMetadata.yar可以将目标.NET源代码文件的相关数据显示到终端,使用方法如下:

yara64.exe DotNetMetadata.yar c:\fakepath\all_samples

Yara规则需要至少Yara v4.2.0版本以上,因此我们建议广大研究人员从【这里】获取最新的发布版本。

DotNetMetadata.py

DotNetMetadata.py脚本可以从.NET源代码文件中提取GUID、MVID、YTPELIB和程序集名称等信息,该脚本支持在Windows和Linux操作系统上运行,按理来说macOS也应该没有问题。

脚本使用样例如下:

python DotNetMetadata.py c:\fakepath\all_samples -c samples_output.csv

该脚本的正常运行需要使用到pythonnet库,安装命令如下:

pip install pythonnet

然后dnlib.dll文件也应该位于相同目录中。

针对类Linux系统,你还需要使用mono-complete安装Mono,在Ubuntu上可以使用下列命令安装:

sudo apt-get install mono-complete

然后从【这里】获取并编译dnlib,或直接从【这里】下载dnSpy-netframework.zip,然后从bin目录中获取dnlib.dll文件即可。这里建议使用最新版本的dnlib文件。

样本规则

项目提供的“sample rules”目录中包含了相关的检测样本规则,你可以根据自己的需求跟新和修改规则。

输出样例

下面给出的输出样例主要针对的是“Mpyiuepnw”单个文件,即PureLogStealer的其中一个版本,其SHA256哈希如下:

c201449a0845d659c32cc48f998b8cc95c20153bb1974e3a1ba80c53a90f1b27

使用Yara规则

$ yara64.exe DotNetMetadata.yar c:\fakepath\Mpyiuepnw.virOriginal Filename: Mpyiuepnw.exeInternal Name: Mpyiuepnw.exeImphash (use with caution): f34d5f2d4577ed6d9ceec516c1f5a744Compile timestamp (epoch): 1710224522Module name: Mpyiuepnw.exeAssembly name: MpyiuepnwTypelib: 856e9a70-148f-4705-9549-d69a57e669b0# of GUIDs: 1dotnet.guid: 0-> guid (MVID) = 9066ee39-87f9-4468-9d70-b57c25f29a67# of streams: 5# of resources is: 9dotnet.resource: 0-> name = Rdfeunq.Properties.Resources.resources-> offset = 715528-> length = 2818774dotnet.resource: 1-> name = Mpyiuepnw.Attributes.WrapperManager.resources-> offset = 3534306-> length = 180dotnet.resource: 2-> name = Mpyiuepnw.Collections.ImporterHelperCollection.resources-> offset = 3534490-> length = 180dotnet.resource: 3-> name = Mpyiuepnw.Roles.ConfigOrderRole.resources-> offset = 3534674-> length = 2932dotnet.resource: 4-> name = Mpyiuepnw.Roles.CodeManager.resources-> offset = 3537610-> length = 2933dotnet.resource: 5-> name = NAudio.Pages.TemplateAuthenticationPage.resources-> offset = 3540547-> length = 180dotnet.resource: 6-> name = Mpyiuepnw.Roles.SchemaManager.resources-> offset = 3540731-> length = 2936dotnet.resource: 7-> name = Mpyiuepnw.Polices.SingletonSingleton.resources-> offset = 3543671-> length = 180dotnet.resource: 8-> name = NAudio.Common.PrototypeSingleton.resources-> offset = 3543855-> length = 180# of module references: 7# of strings: 710

使用Python脚本

单个文件

$ python DotNetMetadata.py c:\fakepath\Mpyiuepnw.virFile: c:\fakepath\Mpyiuepnw.virAssembly Name: MpyiuepnwMVID: 9066ee39-87f9-4468-9d70-b57c25f29a67GUID: 856e9a70-148f-4705-9549-d69a57e669b0

目录

$  python DotNetMetadata.py c:\fakepath\quasarFile: c:\fakepath\quasar\02f0a7f184fcdaaa4d9a46ca29712c8daae0a46d2038bd362dc818025df8d553.virAssembly Name: ClientMVID: 60f5dce2-4de4-4c86-aa69-383ebe2f504cGUID: NoneFile: c:\fakepath\quasar\0790bb235f27fa3843f086dbdaac314c2c1b857e3b2b94c2777578765a7894a0.virAssembly Name: spoolsvMVID: fb86b5ea-fecf-4314-9908-dfb44a648349GUID: ab37fd48-1226-4126-b12d-dea3361fb533File: c:\fakepath\quasar\07f103ec9f4cf73a1ea534a7b1fed490045e8611c14cb66dfe8784f01ea63e5c.virAssembly Name: ClientMVID: 60f5dce2-4de4-4c86-aa69-383ebe2f504cGUID: NoneFile: c:\fakepath\quasar\0847a32772909b1685150473294dccd837d8ab3bf8d3a42fc75e8402c8fa9237.virAssembly Name: ClientMVID: 41eb6d08-2e57-46a1-826d-1b6049ebf6a6GUID: NoneFile: c:\fakepath\quasar\1332bb84dff1a55902b5eb2c76988f94a9edf4727d2c79871c47858b270f0856.virAssembly Name: jkepkrMVID: da2e26cb-0ca3-474a-8fb6-08aa7ff3de20GUID: NoneFile: c:\fakepath\quasar\14b67f3273192e061b04c05bb81aea8794f58a856b762006fb2359f55230327c.virAssembly Name: led注SbmMVID: c4653540-cdba-4dba-965f-6b232d0313d8GUID: NoneFile: c:\fakepath\quasar\15931de8e192e8932d881c6d450d52090f92f9b5e9f0f0b903cc5ec033b58b54.virAssembly Name: ClientMVID: 60f5dce2-4de4-4c86-aa69-383ebe2f504cGUID: None

CSV输出样例

表格

文件名

程序集名称

GUID

MVID

c:\fakepath\quasar\02f0a7f184fcdaaa4d9a46ca29712c8daae0a46d2038bd362dc818025df8d553.vir

Client

None

60f5dce2-4de4-4c86-aa69-383ebe2f504c

c:\fakepath\quasar\0790bb235f27fa3843f086dbdaac314c2c1b857e3b2b94c2777578765a7894a0.vir

spoolsv

ab37fd48-1226-4126-b12d-dea3361fb533

fb86b5ea-fecf-4314-9908-dfb44a648349

c:\fakepath\quasar\07f103ec9f4cf73a1ea534a7b1fed490045e8611c14cb66dfe8784f01ea63e5c.vir

Client

None

60f5dce2-4de4-4c86-aa69-383ebe2f504c

c:\fakepath\quasar\0847a32772909b1685150473294dccd837d8ab3bf8d3a42fc75e8402c8fa9237.vir

Client

None

41eb6d08-2e57-46a1-826d-1b6049ebf6a6

c:\fakepath\quasar\1332bb84dff1a55902b5eb2c76988f94a9edf4727d2c79871c47858b270f0856.vir

jkepkr

None

da2e26cb-0ca3-474a-8fb6-08aa7ff3de20

c:\fakepath\quasar\14b67f3273192e061b04c05bb81aea8794f58a856b762006fb2359f55230327c.vir

led注Sbm

None

c4653540-cdba-4dba-965f-6b232d0313d8

c:\fakepath\quasar\15931de8e192e8932d881c6d450d52090f92f9b5e9f0f0b903cc5ec033b58b54.vir

Client

None

60f5dce2-4de4-4c86-aa69-383ebe2f504c

CSV

许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

DotNet-MetaData:【GitHub传送门】

参考资料

Releases · VirusTotal/yara · GitHub

GitHub - 0xd4d/dnlib: Reads and writes .NET assemblies and modules

GitHub - dnSpyEx/dnSpy: Unofficial revival of the well known .NET debugger and assembly editor, dnSpy

恶意软件狩猎新途径:使用.NET元数据分析跟踪恶意软件 - FreeBuf网络安全行业门户

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java图书电子商务网站的设计与实现源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的图书电子商务网站的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 图书电子商…

基于附带Attention机制的seq2seq模型架构实现英译法的案例

模型架构 先上图 我们这里选用GRU来实现该任务,因此上图的十个方框框都是GRU块,如第二张图,放第一张图主要是强调编码器的输出是作用在解码器每一次输入的观点,具体的详细流程图将在代码实现部分给出。 编码阶段 1. 准备工作…

【C++进阶】AVL树

0.前言 前面我们已经学习过二叉搜索树了,但如果我们是用二叉搜索树来封装map和set等关联式容器是有缺陷的,很可能会退化为单分支的情况,那样效率就极低了,那么有没有方法来弥补二叉搜索树的缺陷呢? 那么AVL树就出现了&…

6.小程序页面布局 - 账单明细

文章目录 1. 6.小程序页面布局 - 账单明细1.1. 竞品1.2. 布局分析1.3. 布局demo1.4. 页面实现-头部1.5. 账单明细1.5.1. 账单明细-竞品分析1.5.2. 账单明细-实现1.5.2.1. 账单明细-实现-mock数据1.5.2.2. 每日收支数据的聚合整理1.5.2.3. 页面scroll-view 1.6. TODO 1. 6.小程序…

java —— 封装、继承、接口和多态

一、封装 封装是将数据和操作这些数据的方法整合成一个类。在这个类中,用 private 修饰符将某些数据隐藏起来,只通过特定的方法实现这些数据的访问和修改,以此实现数据的完整和安全性。 封装的步骤: 二、继承 继承是指把子类共有…

Meta发布Chameleon模型预览,挑战多模态AI前沿

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

【数据结构与算法】之堆的应用——堆排序及Top_K问题!

目录 1、堆排序 2、Top_K问题 3、完结散花 个人主页:秋风起,再归来~ 数据结构与算法 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 1、堆排序 对一个无序的数组…

03_前端三大件CSS

文章目录 CSS用于页面元素美化1.CSS引入1.1style方式1.2写入head中,通过写style然后进行标签选择器加载样式1.3外部样式表 2.CSS样式选择器2.1 元素选择器2.2 id选择器2.3 class选择器 3.CSS布局相关3.1 CSS浮动背景:先设计一些盒子因此,引出…

[图解]产品经理创新模式02改善信息流转

1 00:00:02,160 --> 00:00:04,000 第二种改进模式 2 00:00:04,010 --> 00:00:06,340 就是改善信息流转 3 00:00:06,550 --> 00:00:08,000 它是这样的 4 00:00:09,250 --> 00:00:11,290 当电脑系统越来越多的时候 5 00:00:11,300 --> 00:00:12,530 就会出现这…

linux centos stream 9 定时任务

定时任务,也称为计划任务,指在规定时间执行某项任务。在各操作系统中都有此功能,如Windows下的计划任务:定时关机等。 linux用户定时任务和系统定时任务是在Linux操作系统中用于自动执行特定任务的机制。它们基于cron(cron daemon)服务来完成的。 cron是linux系统中以后台…

Hive运行错误

Hive 文章目录 Hive错误日志错误SessionHiveMetaStoreClientql.Driver: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTaskerror: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster Please check …

DOS学习-目录与文件应用操作经典案例-type

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 1. 查看文本文件内容 2. 同时查看多个文本文件内容 3. 合并文…

可视化 | Seaborn中的矩阵图及示例

Seaborn是python提供的一个很棒的可视化库。它有几种类型的绘图,通过这些绘图,它提供了惊人的可视化能力。其中一些包括计数图,散点图,配对图,回归图,矩阵图等等。本文讨论了Seaborn中的矩阵图。 示例1&am…

第十三期Big Demo Day聚焦Web3前沿,FaceN.AI项目路演揭幕创新技术

第十三期Big Demo Day活动即将于2024年5月28日在香港数码港的CyberArena隆重举行。FaceN.AI将亮相本次Big Demo Day,参与精彩的项目路演,展示其在跨链去中心化数字身份、On-chain to Off-chain数据应用、DIDFi探索以及元宇宙与AIGC人格化发展等领域的领先…

HTML静态网页成品作业(HTML+CSS)——宠物狗介绍网页(3个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有3个页面。 二、作品演示 三、代…

下载CentOS系统或者下载Ubuntu系统去哪下?

因为Centos官网是挂在国外的服务器上,下载镜像时相比于国内的下载速度会慢很多,分享国内的镜像站去阿里巴巴下载Centos镜像。 首先分享两种下载方式,如果只想下载Centos那么就访问方式一的下载地址即可,如果还想下载其他的系统&a…

【算法设计与分析】基于Go语言实现动态规划法解决TSP问题

本文针对于最近正在学习的Go语言,以及算法课实验所需内容进行Coding,一举两得! 一、前言 由于这个实验不要求向之前的实验一样做到那种连线的可视化,故可以用图形界面不那么好实现的语言进行编写,考虑到Go语言的…

C# 结合 JS 暴改腾讯 IM SDK Demo

目录 关于腾讯 IM SDK Demo 范例运行环境 设计思路 服务端生成地址 IM 服务端接收 IM 客户端程序 小结 关于腾讯 IM SDK Demo 腾讯云即时通信 IM SDK 提供了单聊、群聊、关系链、消息漫游、群组管理、资料管理、直播弹幕等功能,并提供完备的 App 接入及管…

数据可视化第9天(利用wordcloud和jieba分析蝙蝠侠评论的关键字)

数据可以在这里下载 https://github.com/harkbox/DataAnalyseStudy WordCloud wordcloud可以很方便的生成词云图,方便的提供可视化可以直接使用pip install wordcloud进行安装如果使用的是Anaconda,可以使用conda install进行安装 下面看一个简单的例子 txt &qu…

【游戏引擎】Unity动画系统详解

持续更新。。。。。。。。。。。。。。。 【游戏引擎】Unity动画系统详解 Unity动画系统详解简介关键帧动画创建关键帧动画的步骤: Mecanim动画系统Mecanim的关键组件:使用Mecanim创建动画的步骤: 动画控制器动画控制器的高级功能&#xff1a…