
.NET 어셈블리의 CLR/PE 메타데이터를 파싱하여 스트림과 해시 지문을 노출함으로써 악성코드 분석 및 위협 헌팅을 지원하는 Python 라이브러리입니다.
dotnetfile은(는) Python으로 작성된 Windows .NET 파일용 CLR(Common Language Runtime) 헤더 파서 라이브러리입니다. CLR 헤더는 모든 Windows .NET 어셈블리에서 PE(Portable Executable) 헤더 옆에 존재합니다. 이 헤더는 파일의 관리되는 부분에 대한 수많은 메타데이터 정보를 저장합니다.
dotnetfile은(는) 어떤 면에서 pefile과 같지만 .NET 샘플을 위한 것입니다.
이 라이브러리는 사용하기 쉬운 API를 제공할 뿐만 아니라 파일 탐지를 개선하기 위한 새로운 메서드 도입에도 기여하고자 합니다. 여기에는 MemberRef 해시(실험적)와 TypeRef 해시의 원본 및 수정된 버전이 포함됩니다.
이 프로젝트의 목표는 맬웨어 분석가와 위협 헌터에게 CLR 헤더에서 정보를 쉽게 추출할 수 있는 도구를 제공하는 것입니다. 이 라이브러리를 사용하기 위해 CLR 헤더 전문가가 될 필요도, 그 사양에서 헤맬 필요도 없습니다. API를 사용하면 헤더가 어떻게 구조화되어 있는지 배우게 되며, 전반적으로 이 파일 유형에 대한 더 나은 이해를 얻을 수 있기를 바랍니다.
dotnetfile은(는) Python >= 3.7이 필요합니다.
pip으로 dotnetfile을(를) 쉽게 설치할 수 있습니다:
pip install dotnetfile
dotnetfile을(를) 모듈로 설치하려면 제공된 setup.py 파일을 사용하세요. 이 작업은 Python으로 수행할 수 있습니다:
python3 setup.py install
dotnetfile을(를) 사용하려면 모듈을 임포트하고 .NET 어셈블리 경로를 매개변수로 DotNetPE 클래스의 인스턴스를 생성하기만 하면 됩니다. 어셈블리의 스트림 수를 출력하는 최소 예제는 다음과 같습니다:
# 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 사양에 크게 기반을 두고 있습니다.