前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用DotNet-MetaData识别.NET恶意软件源码文件元数据

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

作者头像
FB客服
发布于 2024-05-27 13:35:39
发布于 2024-05-27 13:35:39
16100
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行
关于DotNet-MetaData

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

工具架构

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

1、DotNetMetadata.yar:这是一个Yara规则文件,用于将源代码数据显示到终端; 2、DotNetMetadata.py:该脚本负责从.NET源代码文件中提取GUID、MVID、YTPELIB和程序集名称等信息;

工具下载

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/bartblaze/DotNet-MetaData.git

工具使用

DotNetMetadata.yar

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yara64.exe DotNetMetadata.yar c:\fakepath\all_samples

Yara规则需要至少Yara v4.2.0版本以上,因此我们建议广大研究人员从【https://github.com/VirusTotal/yara/releases】获取最新的发布版本。

DotNetMetadata.py

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

脚本使用样例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python DotNetMetadata.py c:\fakepath\all_samples -c samples_output.csv

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install pythonnet

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install mono-complete

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

样本规则

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

输出样例

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
c201449a0845d659c32cc48f998b8cc95c20153bb1974e3a1ba80c53a90f1b27


使用Yara规则
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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脚本

单个文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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

目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$  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输出样例

表格:

CSV:

许可证协议

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

项目地址

DotNet-MetaData:

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

参考资料:

https://github.com/VirusTotal/yara/releases https://github.com/0xd4d/dnlib https://github.com/dnSpyEx/dnSpy https://www.freebuf.com/articles/network/396717.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
恶意软件狩猎新途径:使用.NET元数据分析跟踪恶意软件
就在不久前,我们意外发现了一个PureCrypter样本,而PureCrypter则是一款适用于各种类型恶意软件(例如Agent Tesla和RedLine)的加载器和混淆处理工具。深入分析之后,我还专门为该样本编写了Yara检测规则,当时我便意识到,我是不是也可以写一些Yara规则来识别.NET开发的恶意软件或.NET程序集。
FB客服
2024/04/25
1820
恶意软件狩猎新途径:使用.NET元数据分析跟踪恶意软件
使用yara防御恶意软件
本文将分享本人在学习yara时的一些心得,并在后面给出使用yara来防御CobaltStrike的方法。
鸿鹄实验室
2021/03/31
9550
使用yara防御恶意软件
别拿陈旧的恶意软件不当威胁
攻击者通常都要保持恶意软件与攻击技术在最新,但不要因此认为陈旧的恶意软件就会销声匿迹。研究人员在近期就发现了使用 MyDoom 蠕虫的攻击行动。MyDoom(也被称为 Novarg 与 Mimail)在 2004 年被首次发现,距今已经接近二十年了。 钓鱼邮件 典型的 MyDoom 钓鱼邮件通常以邮件退回为主题,电子邮件头会标明退回的原因与自定义的 Content-Type。邮件通常会携带一个附件,有时是压缩的,但也可以不压缩。 钓鱼邮件 被发现的相关恶意邮件标题如下所示: 邮件的恶意附件名如下所示:
FB客服
2023/03/29
5350
别拿陈旧的恶意软件不当威胁
用Yara对红队工具“打标”
YARA 通常是帮助恶意软件研究人员识别和分类恶意软件样本的工具,它基于文本或二进制模式创建恶意样本的描述规则,每个规则由一组字符串和一个布尔表达式组成,这些表达式决定了它的逻辑。
红队蓝军
2023/08/02
6540
用Yara对红队工具“打标”
Black Kingdom恶意软件分析
在2019年发现了针对Microsoft Exchange Server 漏洞的勒索软件Black Kingdom ,该恶意软件由python编码。今年再次发现其恶意活动,该勒索软件利用 Microsoft Exchange 漏洞 (CVE-2021-27065)进行传播。勒索软件使用 Python 编码并用 PyInstaller 编译为可执行文件;它支持两种密钥生成模式:动态生成密钥和硬编码密钥。
FB客服
2021/07/27
6370
Black Kingdom恶意软件分析
dotnet 强签名下使用 InternalsVisibleToAttribute 给程序集加上友元
在 dotnet 里面,可以使用 InternalsVisibleToAttribute 特性,给程序集加上友元程序集,这样能让友元程序集访问到 internal 的程序。也就是说如果我有 A 和 B 两个程序集,我设置了 B 作为 A 的友元程序集 那么此时 B 程序集就能访问 A 程序集里面所有的 internal 成员。默认的友元设置只需要通过 InternalsVisibleToAttribute 特性写入友元程序集名就可以,但是如果程序集有强签名,就需要加上公钥
林德熙
2020/12/22
8020
dotnet 强签名下使用 InternalsVisibleToAttribute 给程序集加上友元
Dotnet 结构分析学习笔记
这两天一直在看 dotnet,重点是对 Dotnet 的结构进行学习,分析。之前有人问我要过博客地址,我的确搭过一个博客平台,将近有半年没有跟新了,就放在 VPS 上吃灰,上面总结的都是学 Web 安全的一些知识,没有什麽技术含量。现在我喜欢把一些心得写到 Onenote 上,即便突然死机,文章也能保存下来。基本上每隔一段时间就会选择性的把一些学习笔记或者总结的东西发出来,几乎把公众号当作博客了……
信安之路
2018/10/18
1.1K0
Dotnet 结构分析学习笔记
恶意软件分析101之文件类型与指纹识别
冰封三尺非一日之寒,本篇先交付恶意软件前置知识的文件类型与指纹识别,来帮助大家打基础。
FB客服
2021/08/24
1.3K0
Aveo恶意软件分析
Palo Alto Networks 发现了一个名为 Aveo 的恶意软件家族,它针对日语用户开发。Aveo 的名字来自于其二进制文件中的嵌入式调试字符串。Aveo 恶意软件家族与 ForrmerFirstRAT 恶意软件家族有密切的联系,二者都针对日语用户。Aveo 会伪装成 Microsoft Excel 文档,并在执行时抛出诱饵文件。诱饵文档与埼玉工業大学 Ido 实验室的研究有关。执行后,Aveo 可以接收多种命令,这将允许攻击者完全控制感染主机。 部署 Aevo 的样本会伪装成 Micros
FB客服
2018/02/09
9630
Aveo恶意软件分析
I Am The King恶意软件家族分析
2020年10月1日,DHS CISA发布了SlothfulMedia恶意软件家族信息;2018年6月,研究人员基于未知家庭恶意软件样本中的字符串发,布了名为IAmTheKing家族的第一份报告。
FB客服
2020/11/06
2.2K0
I Am The King恶意软件家族分析
Dynmx:一款功能强大的基于签名的恶意软件功能检测工具
Dynmx是一款功能强大的基于签名的恶意软件功能检测工具,该工具实现了一种基于Windows API调用序列来检测恶意软件特征和行为的方法,这也是一种基于签名的安全检测方法。在该工具的帮助下,广大研究人员可以将Dynmx视作某种YARA规则,并利用它在恶意软件沙箱环境中实现API调用跟踪。
FB客服
2023/11/27
2930
Dynmx:一款功能强大的基于签名的恶意软件功能检测工具
Superset执行「superset db upgrade」命令的报错记录
关于TypedDict的这个error,其实是Python版本的问题 这里需要将更换为Python3.9
WHYBIGDATA
2023/01/31
2.4K0
Superset执行「superset db upgrade」命令的报错记录
攻克银联QPBOC L2认证的最后两个不过的案例(POS与卡片的数据交互分析)
前几天去北京银联卡检测中心过检QPBOC的 L2测试。一开始挺顺利的,感觉蛮简单的。也不过如此。
杨永贞
2020/08/05
2.3K0
使用 Conan、CMake 组织跨平台 Qt 工程
创建 Qt 工程时,我们通常使用 Qt 提供的 Online installer 安装 Qt Creator 和 Qt 库来创建、编译、发布 Qt 项目,这对开发环境和 CI Agent 环境有较强的要求,一旦环境安装不对或者安装时缺少了一些组件,可能导致无法编译出产物。最近一段时间,Qt 也拥抱 Conan,使我们可以通过 Conan 管理 Qt 库,这样我们就可以真正实现一套 CMake 脚本来管理和发布 Qt 的应用了。以下我们将演示如何通过 CMake + Conan 来组织 Qt 工程和实现程序的发布流程。
我与梦想有个约会
2023/10/21
1.4K0
使用 Conan、CMake 组织跨平台 Qt 工程
Quantum Ransomware
在我们之前观察到的速度最快的勒索案例之一中,在不到四个小时的时间里攻击者就从初始访问变成了域范围内的勒索,而且该初始访问向量是通过电子邮件传递的IcedID有效负载,我们已经观察到IcedID恶意软件被各种勒索软件团体用作初始访问,我们以前的一些案例包括:
Al1ex
2022/09/07
1.7K0
Quantum Ransomware
新型Anatova恶意软件分析
近期,我们发现了一种新型的勒索软件家族-Anatova。Anatova发现于一个私人的点对点(p2p)网络中,目前我们已经确保客户得到了有效的安全保护,并打算在这篇文章中公开我们的研究成果。
FB客服
2019/05/09
5260
新型Anatova恶意软件分析
openstack nova-compute在不同的hypervisors上使用不同的存储后端
实验环境 主机名 IP controller1 192.168.2.240 compute1 192.168.2.242 compute2 192.168.2.243 compute3 192.168
tanmx
2018/07/17
2.5K0
恶意样本自动化配置提取初探
本篇参考 github 上 [CAPEv2](CAPEv2/Emotet.py at f2ab891a278b2875c79b4f2916d086f870b54ed5 · kevoreilly/CAPEv2 (github.com)) 沙箱的提取代码,在前面奇安信攻防社区-APT 恶意 DLL 分析及 C2 配置提取(子 DLL 篇) 分析的基础上尝试编写自动化配置提取,如有错误还请指正。
红队蓝军
2023/09/22
3500
恶意样本自动化配置提取初探
问题随记 —— Python3.8 安装 nemo_toolkit 报错
报错信息如下: 装了n遍还是这样 (nemo) fanyi@ubuntu:~$ pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple Writing to /home/fanyi/.config/pip/pip.conf (nemo) fanyi@ubuntu:~$ pip install nemo_toolkit['all'] Looking in indexes: https://pypi.tuna.tsingh
繁依Fanyi
2023/05/07
1.2K0
【元数据管理】Atlas术语(Glossary)
Atlas的术语表(Glossary)提供了一些适当的“单词”,这些“单词”能彼此进行关连和分类,以便业务用户在使用的时候,即使在不同的上下文中也能很好的理解它们。此外,这些术语也是可以映射到数据资产中的,比如:数据库,表,列等。
mantou
2018/12/13
2.9K0
【元数据管理】Atlas术语(Glossary)
相关推荐
恶意软件狩猎新途径:使用.NET元数据分析跟踪恶意软件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验