
순수 Python으로 작성된 이벤트 추적 로그 파일 파서
순수 Python으로 작성된 이벤트 추적 로그(ETL) 파일 리더
etl-parser는 ETL Windows 로그 파일을 위한 순수 Python 3 파서 라이브러리입니다. ETL은 ETW의 기본 형식이자 커널 로거의 기본 형식입니다.
etl-parser는 시스템 종속성이 없으며 Windows와 Linux 모두에서 잘 동작합니다.
이 형식은 문서화되어 있지 않기 때문에 Geoff Chappel의 블로그 정보와 Airbus CERT 팀의 리버스 엔지니어링 활동을 결합했습니다.
ETL이란 무엇이며 왜 다루기 어려운가요? ETL을 컨테이너로 생각해보세요. 비디오 파일에서 AVI와 같습니다. 적절한 코덱 없이 AVI 파일을 읽는 것처럼 ETL을 읽는 것도 비슷하게 어렵습니다.
etl-parser는 다음과 같은 잘 알려진 로그 형식에 대한 파서를 포함하여 이 문제를 해결하려고 합니다:
etl-parser 사용법etl-parser는 두 가지 스크립트를 제공합니다.
첫 번째 스크립트 etl2xml은 알려진 모든 ETL 이벤트를 XML로 변환합니다:
etl2xml -i example.etl -o example.xml
두 번째 스크립트 etl2pcap은 netsh를 통해 생성된 네트워크 캡처를 pcap 파일 형식으로 변환합니다:
netsh trace start capture=yes
netsh trace stop
etl2pcap -i NetTrace.etl -o NetTrace.pcap
또한 etl-parser를 라이브러리로 사용할 수 있습니다:
from etl.etl import IEtlFileObserver, build_from_stream
from etl.system import SystemTraceRecord
from etl.perf import PerfInfo
from etl.event import Event
from etl.trace import Trace
from etl.wintrace import WinTrace
class EtlFileLogger(IEtlFileObserver):
def on_system_trace(self, event: SystemTraceRecord):
"""프로세스 ID 및 스레드 ID가 포함된 Mof 커널 메시지"""
mof = event.get_mof() # MOF 파서 호출
def on_perfinfo_trace(self, event: PerfInfo):
"""타임스탬프가 포함된 Mof 커널 메시지"""
mof = event.get_mof() # MOF 파서 호출
def on_trace_record(self, event: Trace):
"""알 수 없음"""
def on_event_record(self, event: Event):
"""ETW 이벤트 - 이것이 당신이 찾는 것입니다"""
# 이벤트에 해당하는 "parse_" 함수를 선택하세요
message = event.parse_tracelogging() # TraceLogging 파서 호출
message = event.parse_etw() # 매니페스트 기반 파서 호출
def on_win_trace(self, event: WinTrace):
"""알 수 없음"""
etw = event.parse_etw()
with open("example.etl", "rb") as etl_file:
etl_reader = build_from_stream(etl_file.read())
etl_reader.parse(EtlFileLogger())
etl-parser는 pip에서 사용할 수 있습니다:
pip install etl-parser
또는 setup.py를 사용하여 etl-parser를 설치할 수 있습니다:
git clone https://github.com/airbus-cert/etl-parser.git
cd etl-parser
pip install -e .
파싱 오류가 발생하면 Airbus CERT GitHub 저장소에 이슈를 열어 주세요.
EVTX 로그 형식은 상당히 잘 문서화되어 있으며 현재 많은 라이브러리와 도구를 사용할 수 있습니다. 그러나 ETL은 그렇지 않습니다: 개발 시점에 알려진 주요 오픈 소스 프로젝트가 없으며 ETL 형식은 잘 문서화되어 있지 않습니다.
ETL은 Windows 시스템 프로그래머가 유용한 아티팩트를 기록하기 위해 대규모로 사용합니다:
C:\Windows\System32\WDI\LogFiles\BootPerfDiagLogger.etlC:\Windows\System32\WDI\LogFiles\ShutdownPerfDiagLogger.etlNetTrace.etl via netshC:\Windows\System32\WDI\<GUID>\<GUID>\snapshot.etlTracelogging이나 WPP와 같은 많은 새로운 API는 ETW를 기반으로 합니다. 이러한 API는 Microsoft 개발자가 Windows에서 광범위하게 사용합니다. etl-parser는 Tracelogging을 지원하며, WPP는 향후 릴리스에서 지원될 예정입니다.
Microsoft는 xperf.exe, logman.exe, netsh.exe 등 ETL 추적을 생성하는 많은 소비자 도구를 제공합니다.
DFIR 분석가에게는 금광이라고 생각합니다.
etl-parser는 Apache 2.0 라이선스로 배포됩니다.