
مكون إضافي لـ Wireshark لاستخدام ETW
إضافة Wireshark للعمل مع Event Tracing for Windows
Microsoft Message Analyzer في طور الإهمال وتمت إزالة حزم التنزيل الخاصة به من مواقع microsoft.com في 25 نوفمبر 2019.
قام Wireshark ببناء مكتبة ضخمة من محلّلات بروتوكولات الشبكة.
الأداة الأفضل لنظام Windows ستكون تلك التي تستطيع جمع وخلط جميع أنواع السجلات...
مرحباً Winshark!!!
Winshark يعتمد على خلفية libpcap لالتقاط ETW (Event tracing for Windows)، ومولّد ينتج جميع المحلّلات لموفري ETW المعروفين على جهازك.
أضفنا دعم Tracelogging لتغطية جميع تقنيات التسجيل تقريباً على نظام تشغيل Windows.
مع Winshark وقوة Windows، يمكننا الآن التقاط سجلات الشبكة والأحداث في نفس الأداة. يكشف Windows عن الكثير من موفري ETW، ولا سيما موفر لالتقاط الشبكة ;-) لم تعد هناك حاجة لبرنامج تشغيل NDIS خارجي.
هذا تحسين كبير من حيث الاستخدام:
إذا كنت تريد:
يرجى تثبيت Wireshark أولاً. ثم قم فقط بتثبيت Winshark.
حالياً، عليك أن تطلب من Wireshark تفسير DLT_USER 147 على أنه ETW. هذا لأنه ليس لديك بعد قيمة حقيقية من libpcap لرابط البيانات الجديد الخاص بنا.
لقد أصدرنا طلب سحب للحصول على قيمة DLT مخصصة؛ لا يزال معلقاً.
للقيام بذلك، عليك فتح علامة التبويب Preferences تحت لوحة Edit. حدد DLT_USER ضمن Protocols وEdit جدول التغليف:

وضبط winshark لـ DLT = 147:

استمتع!
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 مقسم إلى ثلاثة أجزاء:
هناك أنواع مختلفة كثيرة من الموفّرين. الأكثر شيوعاً وقابلية للاستخدام هي الموفّرين المسجلين. الموفّر المسجل، أو الموفّر القائم على البيان (manifest-based provider)، يتم تسجيله تحت مفتاح التسجيل HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers.
هذا يربط بين معرف الموفّر وملف 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 بسيط. المستهلك الأساسي الحقيقي هو libpcap (wpcap.dll لنظام Windows) الذي يستخدمه dumpcap.exe وهو المسؤول عن التقاط الحزم.
Wireshark مقسم إلى ثلاثة أجزاء (نعم، هو أيضاً):
Wireshark.exe المسؤول عن تحليل البروتوكولات وتفكيكهاdumpcap.exe المسؤول عن التقاط الحزمlibpcap (wpcap.dll) المسؤول عن التوصيل بين dumpcap.exe ونظام التشغيلWinshark يحل محل الجزء الأول والأخير. يقوم بتنفيذ خلفية لـ libpcap لالتقاط أحداث ETW.
يعمل Winshark على جلسات ETW، ولهذا يمكنك اختيار جلسة ETW بدلاً من واجهة الشبكة عند بدء الالتقاط.
ثم يقوم Winshark بإنشاء محللات lua لكل موفّر قائم على البيان (manifest-based) مسجل على جهاز الكمبيوتر الخاص بك، أثناء خطوة التثبيت.
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
ثم قم بإنشاء جلسة ETW مرتبطة بالموفّر Microsoft-Windows-NDIS-PacketCapture:
logman start Winshark-PacketCapture -p "Microsoft-Windows-NDIS-PacketCapture" -rt -ets
ثم قم بتشغيل Wireshark بصلاحيات المسؤول واختر واجهة Winshark-PacketCapture:

سيؤدي ذلك إلى بدء التقاط الحزم:

ETW يضع علامات على كل حزمة برأس يضع بعض البيانات الوصفية عن المرسل.
أحد هذه البيانات هو معرف العملية (Process ID) للمُرسِل. هذا تحسين كبير مقارنة بالتقاط الحزم التقليدي من برنامج تشغيل NDIS.
ببساطة املأ حقل التصفية في Wireshark بالتعبير التالي:
winshark.header.ProcessId == 1234

يوفر @kobykahane برنامج تشغيل مرشح نظام الملفات الذي يصدر ETW لكل إجراء يتم على NamedPipe.
bcdedit /set testsigning on
Winshark بالنقر المزدوج على C:\Program Files\Wireshark\WinsharkUpdate.bat بصلاحيات المسؤولcmd.exe في وضع المسؤولsc start NpEtw
logman start namedpipe -p NpEtw -ets -rt
Wireshark واختر جلسة namedpipe. استمتع!
هذا المشروع جزء من عرض تقديمي لـ SSTIC