
ETW를 계측하기 위한 Wireshark 플러그인
Wireshark 플러그인으로 Windows용 이벤트 추적(Event Tracing for Windows)과 함께 작동합니다
Microsoft Message Analyzer는 지원이 중단되었으며, 2019년 11월 25일에 microsoft.com 사이트에서 다운로드 패키지가 제거되었습니다.
Wireshark는 방대한 네트워크 프로토콜 디섹터 라이브러리를 구축했습니다.
Windows를 위한 최고의 도구는 모든 유형의 로그를 수집하고 혼합할 수 있는 도구일 것입니다...
환영합니다 Winshark!!!
Winshark는 ETW(Event Tracing for Windows)를 캡처하기 위한 libpcap 백엔드와 사용자 머신에서 알려진 모든 ETW 공급자에 대한 디섹터를 생성하는 생성기를 기반으로 합니다.
Windows 운영 체제의 거의 모든 로그 기술을 포괄하기 위해 Tracelogging 지원을 추가했습니다.
Winshark와 Windows의 강력함을 통해 이제 동일한 도구에서 네트워크 및 이벤트 로그를 캡처할 수 있습니다. Windows는 많은 ETW 공급자, 특히 네트워크 캡처를 위한 공급자를 노출합니다 ;-) 더 이상 외부 NDIS 드라이버가 필요하지 않습니다.
이는 사용 측면에서 큰 개선입니다:
원한다면:
먼저 Wireshark를 설치하세요. 그런 다음 Winshark를 설치하기만 하면 됩니다.
현재 Wireshark가 DLT_USER 147을 ETW로 해석하도록 요청해야 합니다. 이는 아직 libpcap에서 새로운 데이터 링크에 대한 실제 값을 얻지 못했기 때문입니다.
전용 DLT 값을 요청하는 풀 리퀘스트를 제출했지만 아직 보류 중입니다.
이렇게 하려면 Edit 패널 아래의 Preferences 탭을 엽니다. Protocols 아래에서 DLT_USER를 선택하고 캡슐화 테이블을 Edit합니다:

그리고 DLT = 147에 대해 winshark로 설정합니다:

즐기세요!
Winshark는 cmake로 구동됩니다:
git clone https://github.com/airbus-cert/winshark --recursive
mkdir build_winshark
cd build_winshark
cmake ..\Winshark
cmake --build . --target package --config release
Winshark가 어떻게 작동하는지 더 잘 이해하려면 먼저 ETW가 어떻게 작동하는지 이해해야 합니다.
ETW는 세 부분으로 나뉩니다:
다양한 종류의 공급자가 있습니다. 가장 일반적이고 사용 가능한 것은 등록된 공급자(registered providers)입니다. 등록된 공급자 또는 매니페스트 기반 공급자는 레지스트리 키 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers 아래에 기록됩니다.
이를 통해 공급자 ID와 dll 간의 연결이 설정됩니다. 매니페스트는 연결된 dll 내에 리소스 이름 WEVT_TEMPLATE으로 포함됩니다.
logman을 사용하여 머신에 등록된 모든 공급자를 나열할 수 있습니다:
logman query providers
특정 프로세스에 바인딩된 모든 공급자를 나열할 수도 있습니다:
logman query providers -pid 1234
일부는 이름 없이 나타날 수 있습니다. 이러한 유형의 공급자는 WPP 또는 TraceLogging 로그를 생성할 수 있습니다.
세션은 하나 이상의 공급자로부터 로그를 수집하기 위해 생성됩니다.
logman을 사용하여 자신만의 세션을 만들 수 있습니다:
logman start Mysession -p "Microsoft-Windows-RemoteDesktopServices-RdpCoreTS" -ets -rt
logman update MySession -p "Microsoft-Windows-NDIS-PacketCapture" -ets -rt
관리자 명령줄에서 모든 활성 세션을 나열할 수 있습니다:
logman query -ets
Data Collector Set Type Status
-------------------------------------------------------------------------------
...
EventLog-Application Trace Running
EventLog-Microsoft-Windows-Sysmon-Operational Trace Running
EventLog-System Trace Running
...
The command completed successfully.
여기에서 이벤트 로거가 애플리케이션 및 시스템 세션과 Sysmon에서 로그를 캡처하는 데 사용하는 몇 가지 흥미로운 세션을 볼 수 있습니다.
소비자는 세션에서 로그를 읽는 간단한 프로그램입니다. 잘 알려진 소비자는 다음과 같습니다:
logmannetshtracert그리고 이제 Winshark!!! Winshark는 간단한 ETW 소비자입니다. 실제 기본 소비자는 패킷 캡처를 담당하는 프로세스인 dumpcap.exe에서 사용하는 libpcap(Windows의 경우 wpcap.dll)입니다.
Wireshark는 세 부분으로 나뉩니다(역시 그렇습니다):
Wireshark.exedumpcap.exedumpcap.exe와 운영 체제 간의 인터페이스를 담당하는 libpcap (wpcap.dll)Winshark는 첫 번째와 마지막 부분에서 자리잡습니다. ETW 이벤트를 캡처하기 위해 libpcap의 백엔드를 구현합니다.
Winshark는 ETW 세션에서 작동하므로 캡처 시작 시 네트워크 인터페이스 대신 ETW 세션을 선택할 수 있습니다.
그런 다음 Winshark는 설치 단계에서 컴퓨터에 등록된 각 매니페스트 기반 공급자에 대한 lua 디섹터를 생성합니다.
Winshark는 tracelogging 기반 공급자도 구문 분석할 수 있습니다.
Winshark를 사용하여 네트워크 트래픽을 캡처하는 두 가지 간단한 방법이 있습니다:
pktmon은 Windows용 기본 제공, 교차 구성 요소 네트워크 진단 도구입니다. 패킷 캡처, 패킷 드롭 감지, 패킷 필터링 및 카운팅에 사용할 수 있습니다(RS5에서 지원)
(https://docs.microsoft.com/en-us/windows-server/networking/technologies/pktmon/pktmon)
pktmon start -c -m real-mode
추가 옵션을 보려면 pktmon -h를 실행하세요(관리자 권한으로)
예를 들어: 패킷에 대한 필터 추가
pktmon filter add -t icmp
pktmon filter add -t tcp -p 80
그런 다음 관리자 권한으로 Wireshark를 실행하고 Pktmon 인터페이스를 선택합니다:

그러면 패킷 캡처가 시작됩니다:

netsh.exe trace start capture=yes report=no correlation=no
그런 다음 Microsoft-Windows-NDIS-PacketCapture 공급자와 연결된 ETW 세션을 만듭니다:
logman start Winshark-PacketCapture -p "Microsoft-Windows-NDIS-PacketCapture" -rt -ets
그런 다음 관리자 권한으로 Wireshark를 실행하고 Winshark-PacketCapture 인터페이스를 선택합니다:

그러면 패킷 캡처가 시작됩니다:

ETW는 각 패킷에 발신자에 대한 일부 메타데이터를 설정하는 헤더를 표시합니다.
그 중 하나는 발신자의 Process ID입니다. 이는 NDIS 드라이버의 기존 패킷 캡처에 비해 큰 개선입니다.
Wireshark의 필터 필드에 다음 표현식을 입력하기만 하면 됩니다:
winshark.header.ProcessId == 1234

@kobykahane은 NamedPipe에서 수행되는 모든 작업에 대해 ETW를 내보내는 파일 시스템 필터 드라이버를 제공합니다.
bcdedit /set testsigning on
C:\Program Files\Wireshark\WinsharkUpdate.bat를 더블 클릭하여 Winshark 디섹터 업데이트관리자 모드로 cmd.exe 열기sc start NpEtw
logman start namedpipe -p NpEtw -ets -rt
Wireshark를 시작하고 namedpipe 세션을 선택하세요. 즐기세요!
이 프로젝트는 SSTIC에서 발표된 프레젠테이션의 일부입니다.