如何使用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.vir

Original Filename: Mpyiuepnw.exe

Internal Name: Mpyiuepnw.exe

Imphash (use with caution): f34d5f2d4577ed6d9ceec516c1f5a744

Compile timestamp (epoch): 1710224522

Module name: Mpyiuepnw.exe

Assembly name: Mpyiuepnw

Typelib: 856e9a70-148f-4705-9549-d69a57e669b0

# of GUIDs: 1

dotnet.guid: 0

 -> guid (MVID) = 9066ee39-87f9-4468-9d70-b57c25f29a67

# of streams: 5

# of resources is: 9

dotnet.resource: 0

 -> name = Rdfeunq.Properties.Resources.resources

 -> offset = 715528

 -> length = 2818774

dotnet.resource: 1

 -> name = Mpyiuepnw.Attributes.WrapperManager.resources

 -> offset = 3534306

 -> length = 180

dotnet.resource: 2

 -> name = Mpyiuepnw.Collections.ImporterHelperCollection.resources

 -> offset = 3534490

 -> length = 180

dotnet.resource: 3

 -> name = Mpyiuepnw.Roles.ConfigOrderRole.resources

 -> offset = 3534674

 -> length = 2932

dotnet.resource: 4

 -> name = Mpyiuepnw.Roles.CodeManager.resources

 -> offset = 3537610

 -> length = 2933

dotnet.resource: 5

 -> name = NAudio.Pages.TemplateAuthenticationPage.resources

 -> offset = 3540547

 -> length = 180

dotnet.resource: 6

 -> name = Mpyiuepnw.Roles.SchemaManager.resources

 -> offset = 3540731

 -> length = 2936

dotnet.resource: 7

 -> name = Mpyiuepnw.Polices.SingletonSingleton.resources

 -> offset = 3543671

 -> length = 180

dotnet.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.vir

File: c:\fakepath\Mpyiuepnw.vir

  Assembly Name: Mpyiuepnw

  MVID: 9066ee39-87f9-4468-9d70-b57c25f29a67

  GUID: 856e9a70-148f-4705-9549-d69a57e669b0

目录

复制代码
$  python DotNetMetadata.py c:\fakepath\quasar

File: c:\fakepath\quasar\02f0a7f184fcdaaa4d9a46ca29712c8daae0a46d2038bd362dc818025df8d553.vir

  Assembly Name: Client

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

  GUID: None

 

File: c:\fakepath\quasar\0790bb235f27fa3843f086dbdaac314c2c1b857e3b2b94c2777578765a7894a0.vir

  Assembly Name: spoolsv

  MVID: fb86b5ea-fecf-4314-9908-dfb44a648349

  GUID: ab37fd48-1226-4126-b12d-dea3361fb533

 

File: c:\fakepath\quasar\07f103ec9f4cf73a1ea534a7b1fed490045e8611c14cb66dfe8784f01ea63e5c.vir

  Assembly Name: Client

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

  GUID: None

 

File: c:\fakepath\quasar\0847a32772909b1685150473294dccd837d8ab3bf8d3a42fc75e8402c8fa9237.vir

  Assembly Name: Client

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

  GUID: None

 

File: c:\fakepath\quasar\1332bb84dff1a55902b5eb2c76988f94a9edf4727d2c79871c47858b270f0856.vir

  Assembly Name: jkepkr

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

  GUID: None

 

File: c:\fakepath\quasar\14b67f3273192e061b04c05bb81aea8794f58a856b762006fb2359f55230327c.vir

  Assembly Name: led注Sbm

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

  GUID: None

 

File: c:\fakepath\quasar\15931de8e192e8932d881c6d450d52090f92f9b5e9f0f0b903cc5ec033b58b54.vir

  Assembly Name: Client

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

  GUID: 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网络安全行业门户

相关推荐
一丝晨光11 小时前
Java、PHP、ASP、JSP、Kotlin、.NET、Go
java·kotlin·go·php·.net·jsp·asp
yufei-coder12 小时前
C#基础语法
开发语言·c#·.net
Mudrock__13 小时前
前后端传输文件(图片)
vue·.net
时光追逐者2 天前
WaterCloud:一套基于.NET 8.0 + LayUI的快速开发框架,完全开源免费!
前端·microsoft·开源·c#·.net·layui·.netcore
friklogff2 天前
【C#生态园】打造现代化跨平台应用:深度解析.NET桌面应用工具
开发语言·c#·.net
@Unity打怪升级2 天前
【C#】CacheManager:高效的 .NET 缓存管理库
开发语言·后端·机器学习·缓存·c#·.net·.netcore
yufei-coder3 天前
.Net 9与AI开发
人工智能·.net
孟章豪3 天前
深入理解.NET中的委托与事件:实现灵活的事件驱动编程
.net
小彰5 天前
.Net 6.0 Windows平台如何判断当前电脑是否联网
windows·.net
小码编匠5 天前
.NET 中的表达式树(Expression Trees)
后端·c#·.net