
POC مبني على ETW لتحديد استدعاءات النظام المباشرة وغير المباشرة
هذا نموذج إثبات مبدأ (POC) قائم على ETW لمراقبة استدعاءات النظام غير الطبيعية.
في الوقت الحالي، تتم مراقبة استدعاءَي النظام NtOpenThread وNtSetContextThread لتحديد مؤشرات الاختراق (IOCs) التي تشير إلى كلٍ من استدعاءات النظام المباشرة وغير المباشرة.
يستخدم هذا المشروع ETW، وتحديدًا موفري ETW القائمين على النواة، لمراقبة مؤشرات الاختراق (IOCs).
يمكن الاستفادة بفعالية من موفري ETW الموجودين في النواة، إذ تحتوي آثار الاستدعاءات (calltraces) للأحداث المُصدَرة على عنوان وضع المستخدم الذي نُفّذَت منه استدعاءات النظام.
يتيح ذلك مراقبة مؤشرات الاختراق (IOCs) الدالة على استدعاءات النظام المباشرة وغير المباشرة، وهي تقنية يستخدمها المهاجمون غالبًا:
1: تم تنفيذ استدعاء نظام من وحدة غير موثوقة (= استدعاء نظام مباشر)
2: لا يطابق كعب استدعاء النظام (syscall stub) المستخدم في ntdll استدعاء النظام المنفَّذ (= استدعاء نظام غير مباشر)
يستخدم هذا المشروع الموفِّر: Microsoft-Windows-Kernel-Audit-API-Calls لمراقبة أحداث OpenThread وSetContextThread التي تُطلَق بواسطة استدعاءَي النظام NtSetContextThread أو NtOpenThread على التوالي.
يتم تفعيل آثار الاستدعاءات (Calltraces) باستخدام العلامة EVENT_ENABLE_PROPERTY_STACK_TRACE.
هذا نموذج إثبات مبدأ (POC)، ويراقب استدعاءَي نظام محددين فقط. ومن الممكن بالطبع استخدام موفري آخرين قائمين على النواة لتعزيز القياس عن بُعد (telemetry).
يحتوي هذا المشروع على برنامجين نموذجيين يستخدمان استدعاءات النظام المباشرة وغير المباشرة، أُنشئا باستخدام SysWhispers3 الرائع. تم إنشاؤهما على النحو التالي:
python3 syswhispers.py -a x64 -m jumper_randomized --functions NtSetContextThread
python3 syswhispers.py -a x64 -m embedded --functions NtSetContextThread
عند التشغيل، يجب تحديد استدعاءات النظام غير الطبيعية:

تم اختباره على 10.0.19044.
IsElevated()