
Biblioteca Python para análise de metadados CLR/PE em assemblies .NET, expondo streams e fingerprints de hash para apoiar a análise de malware e a caça a ameaças.
dotnetfile é uma biblioteca de análise do cabeçalho Common Language Runtime (CLR) para arquivos .NET do Windows, escrita em Python. O cabeçalho CLR está presente em todo assembly .NET do Windows, ao lado do cabeçalho Portable Executable (PE). Ele armazena uma grande quantidade de informações de metadados para a parte gerenciada do arquivo.
dotnetfile é, de certa forma, o equivalente ao pefile, mas para amostras .NET.
A biblioteca fornece uma API fácil de usar, mas também tenta contribuir com novos métodos para melhorar a detecção de arquivos. Isso inclui o hash MemberRef (experimental) e a versão original e uma versão modificada do hash TypeRef.
O objetivo deste projeto é dar a analistas de malware e caçadores de ameaças uma ferramenta para extrair facilmente informações do cabeçalho CLR. Você não precisa ser um especialista no cabeçalho CLR nem se perder em sua especificação para usar esta biblioteca. Ao usar a API, você também aprenderá como o cabeçalho é estruturado e, esperançosamente, entenderá melhor esse tipo de arquivo de modo geral.
dotnetfile requer Python >= 3.7.
Você pode instalar facilmente o dotnetfile com pip:
pip install dotnetfile
Para instalar o dotnetfile como um módulo, use o arquivo setup.py fornecido. Isso pode ser feito com a ajuda do Python:
python3 setup.py install
Para usar o dotnetfile, basta importar o módulo e criar uma instância da classe DotNetPE com o caminho do assembly .NET como parâmetro. Um exemplo mínimo que imprime o número de streams de um assembly é mostrado abaixo:
# 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()}')
Você está convidado a explorar as ferramentas de exemplo: https://github.com/pan-unit42/dotnetfile/blob/main/tools/
Mais informações sobre como usar esta biblioteca podem ser encontradas nas páginas de documentação.
A documentação completa pode ser encontrada em https://pan-unit42.github.io/dotnetfile/
Este projeto foi iniciado em 2016 com o desenvolvimento da biblioteca de análise para uso interno na Palo Alto Networks. Foi melhorado/ampliado com a biblioteca de interface e disponibilizado como código aberto em 2022 pelas seguintes pessoas:
Este projeto está em andamento. Se você encontrar algum problema ou tiver sugestões, por favor, relate-os na página do projeto no GitHub.
Agradecimentos especiais a todos os colaboradores que ajudaram a melhorar este projeto.
dotnetfile é fortemente baseado na .NET specification.