
Libreria Python per il parsing dei metadati CLR/PE negli assembly .NET, che espone stream e impronte hash per supportare l'analisi del malware e il threat hunting.
dotnetfile è una libreria per il parsing dell'header Common Language Runtime (CLR) per file Windows .NET, scritta in Python. L'header CLR è presente in ogni assembly .NET di Windows accanto all'header Portable Executable (PE). Memorizza una grande quantità di informazioni di metadati per la parte gestita del file.
dotnetfile è in un certo senso l'equivalente di pefile ma per i campioni .NET.
La libreria offre un'API facile da usare, ma cerca anche di contribuire con nuovi metodi per migliorare il rilevamento dei file. Questi includono l'hash MemberRef (sperimentale) e la versione originale e una modificata dell'hash TypeRef.
L'obiettivo di questo progetto è fornire agli analisti di malware e ai cacciatori di minacce uno strumento per estrarre facilmente informazioni dall'header CLR. Non è necessario essere esperti dell'header CLR né perdersi nella sua specifica per usare questa libreria. Usando l'API, imparerai anche come è strutturato l'header e, si spera, acquisirai una migliore comprensione di questo tipo di file in generale.
dotnetfile richiede Python >= 3.7.
Puoi installare facilmente dotnetfile con pip:
pip install dotnetfile
Per installare dotnetfile come modulo, utilizza il file setup.py fornito. Puoi farlo con l'aiuto di Python:
python3 setup.py install
Per usare dotnetfile, tutto ciò che devi fare è importare il modulo e creare un'istanza della classe DotNetPE con il percorso dell'assembly .NET come parametro. Di seguito è mostrato un esempio minimale che stampa il numero di stream di un assembly:
# 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()}')
Sei invitato a esplorare gli strumenti di esempio: https://github.com/pan-unit42/dotnetfile/blob/main/tools/
Maggiori informazioni su come usare questa libreria sono disponibili nelle pagine di documentazione.
La documentazione completa è disponibile all'indirizzo https://pan-unit42.github.io/dotnetfile/
Questo progetto è iniziato nel 2016 con lo sviluppo della libreria parser per uso interno in Palo Alto Networks. È stato migliorato/esteso con la libreria di interfaccia e reso open-source nel 2022 dalle seguenti persone:
Questo progetto è in continua evoluzione. Se trovi problemi o hai suggerimenti, segnalali nella pagina del progetto su GitHub.
Un ringraziamento speciale a tutti i contributori che hanno aiutato a migliorare questo progetto.
dotnetfile si basa in gran parte sulla .NET specification.