
Библиотека Python для разбора метаданных CLR/PE в сборках .NET, предоставляющая потоки и хеш-отпечатки для поддержки анализа вредоносных программ и поиска угроз.
dotnetfile — это библиотека для разбора заголовка Common Language Runtime (CLR) для файлов Windows .NET, написанная на Python. Заголовок CLR присутствует в каждой сборке Windows .NET рядом с заголовком Portable Executable (PE). В нём хранится множество метаданных для управляемой части файла.
dotnetfile в некотором смысле является аналогом pefile, но для .NET-образцов.
Библиотека предоставляет простой в использовании API, но также старается добавить новые методы для улучшения обнаружения файлов. Это включает хэш MemberRef (экспериментальный), а также оригинальную и модифицированную версии хэша TypeRef.
Цель этого проекта — предоставить аналитикам вредоносного ПО и охотникам за угрозами инструмент для лёгкого извлечения информации из заголовка CLR. Вам не нужно быть экспертом в заголовке CLR и теряться в его спецификации, чтобы использовать эту библиотеку. Используя API, вы также узнаете, как устроен заголовок, и, надеюсь, лучше поймёте этот тип файлов в целом.
Для dotnetfile требуется Python >= 3.7.
Вы можете легко установить dotnetfile с помощью pip:
pip install dotnetfile
Чтобы установить dotnetfile как модуль, воспользуйтесь предоставленным файлом setup.py. Это можно сделать с помощью Python:
python3 setup.py install
Чтобы использовать dotnetfile, достаточно импортировать модуль и создать экземпляр класса DotNetPE, передав в качестве параметра путь к сборке .NET. Ниже приведён минимальный пример, который выводит количество потоков сборки:
# Import class DotNetPE from module dotnetfile
from dotnetfile import DotNetPE
# Define the file path of your assembly
dotnet_file_path = '/Users/<username>/my_dotnet_assembly.exe'
# Create an instance of DotNetPE with the file path as a parameter
dotnet_file = DotNetPE(dotnet_file_path)
# Print out the number of streams of the assembly
print(f'Number of streams: {dotnet_file.get_number_of_streams()}')
Приглашаем вас изучить примеры инструментов: https://github.com/pan-unit42/dotnetfile/blob/main/tools/
Больше информации об использовании этой библиотеки можно найти на страницах документации.
Полная документация доступна по адресу https://pan-unit42.github.io/dotnetfile/
Этот проект был начат в 2016 году с разработки библиотеки парсера для внутреннего использования в Palo Alto Networks. Он был улучшен/расширен с помощью интерфейсной библиотеки и открыт в 2022 году следующими людьми:
Этот проект находится в разработке. Если вы обнаружите какие-либо проблемы или у вас есть предложения, сообщите о них на странице проекта на GitHub.
Особая благодарность всем участникам, которые помогли улучшить этот проект.
dotnetfile во многом основан на .NET спецификация.