
Python-Bibliothek zum Parsen von CLR/PE-Metadaten in .NET-Assemblies, die Streams und Hash-Fingerabdrücke bereitstellt, um Malware-Analyse und Threat Hunting zu unterstützen.
dotnetfile ist eine in Python geschriebene Parser-Bibliothek für den Common Language Runtime (CLR)-Header von Windows-.NET-Dateien. Der CLR-Header ist in jeder Windows-.NET-Assembly neben dem Portable-Executable-(PE)-Header vorhanden. Er speichert eine Fülle von Metadateninformationen für den verwalteten Teil der Datei.
dotnetfile ist gewissermaßen das Äquivalent zu pefile, aber für .NET-Beispiele.
Die Bibliothek bietet eine einfach zu bedienende API, versucht aber auch, neue Methoden zur Verbesserung der Dateierkennung beizutragen. Dazu gehören der MemberRef-Hash (experimentell) sowie eine originale und eine modifizierte Version des TypeRef-Hash.
Das Ziel dieses Projekts ist es, Malware-Analysten und Threat Hunter ein Werkzeug an die Hand zu geben, mit dem sie einfach Informationen aus dem CLR-Header extrahieren können. Sie müssen kein Experte für den CLR-Header sein und sich nicht in seiner Spezifikation verlieren, um diese Bibliothek zu nutzen. Durch die Verwendung der API lernen Sie außerdem, wie der Header aufgebaut ist, und hoffentlich ein besseres Verständnis für diesen Dateityp im Allgemeinen.
dotnetfile erfordert Python >= 3.7.
Sie können dotnetfile einfach mit pip installieren:
pip install dotnetfile
Um dotnetfile als Modul zu installieren, verwenden Sie bitte die mitgelieferte Datei setup.py. Dies kann mit Hilfe von Python erfolgen:
python3 setup.py install
Um dotnetfile zu verwenden, müssen Sie nur das Modul importieren und eine Instanz der Klasse DotNetPE mit dem Pfad zur .NET-Assembly als Parameter erstellen. Ein minimales Beispiel, das die Anzahl der Streams einer Assembly ausgibt, ist unten gezeigt:
# 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()}')
Sie sind eingeladen, die Beispielwerkzeuge zu erkunden: https://github.com/pan-unit42/dotnetfile/blob/main/tools/
Mehr über die Verwendung dieser Bibliothek finden Sie in den Dokumentationsseiten.
Die vollständige Dokumentation finden Sie unter https://pan-unit42.github.io/dotnetfile/
Dieses Projekt wurde 2016 mit der Entwicklung der Parser-Bibliothek für die interne Verwendung bei Palo Alto Networks gestartet. Es wurde mit der Interface-Bibliothek verbessert/erweitert und 2022 von den folgenden Personen als Open Source veröffentlicht:
Dieses Projekt befindet sich in ständiger Weiterentwicklung. Wenn Sie Probleme finden oder Vorschläge haben, melden Sie diese bitte auf der GitHub-Projektseite.
Besonderer Dank gilt allen Mitwirkenden, die dazu beigetragen haben, dieses Projekt zu verbessern.
dotnetfile basiert stark auf der .NET-Spezifikation.