
Windows Analysis and Research Toolkit
⚠️ بعض أجزاء هذا المشروع كُتبت بأسلوب "vibe coding" بمساعدة الذكاء الاصطناعي، لذا قد تحتوي على بعض الأخطاء. يجب تثبيت برنامج تشغيل النواة (KWinSys) فقط في جهاز افتراضي مخصص للاختبار ولأغراض البحث.

| المكوّن | الوظيفة |
|---|---|
| NtWarden | تطبيق واجهة رسومية (ImGui + DirectX 11) |
| WinSys |
تحليل أمني لكل عملية، يمكن الوصول إليه من قائمة السياق الخاصة بالعملية.
المتطلبات: Visual Studio 2022، Windows SDK 10.0.26100.0+، WDK (من أجل KWinSys)
NtWarden.sln
├── NtWarden/ # GUI app
├── WinSys/ # Core library (static lib)
├── KWinSys/ # Kernel driver
└── WinSysServer/ # Remote server
NtWarden.sln في Visual Studiox64/Release/يتطلب KWinSys توقيع اختبار أو توقيعًا صالحًا.
# Enable test signing (reboot required)
bcdedit /set testsigning on
# On VMs you may also need
bcdedit /set nointegritychecks on
شغّل NtWarden بصلاحيات Administrator. عند التبديل إلى تبويب وضع Kernel، سيتم تثبيت برنامج التشغيل وتشغيله تلقائيًا إذا لم يكن محمّلًا بالفعل. يمكنك أيضًا إدارته يدويًا من قائمة Driver.
يعمل WinSysServer على جهاز هدف (غالبًا جهاز افتراضي) ويقدّم بيانات النظام عبر TCP. يمكنك الاتصال من NtWarden عبر Remote > Connect.
| الملف | المسار | الغرض |
|---|---|---|
WinSysServer.exe | x64/Release/WinSysServer.exe | دائمًا |
KWinSys.sys | x64/Release/KWinSys/KWinSys.sys | ميزات Kernel فقط |
تعمل ميزات وضع المستخدم (العمليات، الخدمات، الشبكة) بدون برنامج التشغيل. أما تبويبات Kernel فتحتاج إلى تحميل KWinSys على الجهاز الهدف.
# Auto-install driver + start server (run elevated)
WinSysServer.exe --install # default port 50002
WinSysServer.exe --install --port 9000 # custom port
# Or install the driver yourself first
sc create KWinSys type= kernel binPath= "C:\path\to\KWinSys.sys"
sc start KWinSys
WinSysServer.exe [--port <port>] # default: 50002
بروتوكول ثنائي مخصص عبر TCP. ترويسة من 12 بايت (MessageType, DataSize, Status). لا توجد مصادقة - يُستخدم فقط في بيئات المختبر/الأجهزة الافتراضية المعزولة.
MIT - انظر LICENSE.
| مكتبة ثابتة (Static lib) لتعداد العمليات والخدمات والشبكة |
| KWinSys | برنامج تشغيل Kernel للاستدعاءات وSSDT ووحدات Kernel النمطية وغيرها |
| WinSysServer | خادم TCP بدون واجهة رسومية للفحص عن بُعد |
| التبويب | الوظيفة |
|---|
| العمليات | قائمة العمليات مع عرض شجري، والمقابض (handles)، والخيوط (threads)، ومناطق الذاكرة، والوحدات |
| الأداء | رسوم بيانية لحظية لاستخدام CPU وRAM وGPU والشبكة - يمكن تراكبها فوق المهام الأخرى |
| الخدمات | تعداد الخدمات مع الحالة ونوع البدء ومسار الملف الثنائي |
| الشبكة > الاتصالات | اتصالات TCP/UDP مع العملية المالكة ونقاط النهاية البعيدة |
| الشبكة > الشهادات الجذرية | مخزن الشهادات الجذرية الموثوقة مع الموضوع والمُصدِر والبصمة |
| الشبكة > NDIS | معلومات محول الشبكة - برنامج التشغيل وMAC والسرعة ونوع الوسائط |
| ETW | جلسات التتبع النشطة والموفّرون المسجّلون |
| IPC | نقاط نهاية RPC والأنابيب المسماة |
| مدير الكائنات | تصفح مساحة أسماء كائنات Kernel - الدلائل والروابط الرمزية والأجهزة |
| الريجستري | مستعرض الريجستري مع تعداد المفاتيح/القيم |
| الرموز | حالة تحميل رموز وضع المستخدم |
| السجلات | اعتراض سجلات تصحيح أخطاء برنامج تشغيل Kernel وسجلات واجهة المستخدم الرسومية في وضع المستخدم في مكان واحد |
| التبويب | الوظيفة |
|---|
| كائنات العمليات | تعداد EPROCESS، وكشف العمليات المخفية عبر الإسناد الترافقي |
| الوحدات | برامج تشغيل Kernel المُحمّلة مع الأساس (base) والحجم والمسار (مع فحص LolDrivers) |
| الاستدعاءات | استدعاءات Kernel (عملية/خيط/صورة/سجل/كائن/طاقة) + فحوصات السلامة |
| SSDT | إدخالات SSDT مع كشف المالك والخطافات |
| الرموز | تحليل رموز Kernel وتحميل PDB |
| تجمع Kernel | تخصيصات التجمع الكبيرة وإحصائيات وسوم التجمع |
| قراءة/كتابة الذاكرة | قراءة/كتابة ذاكرة Kernel حسب العنوان |
| المؤقتات | عدادات المقاطعة وDPC لكل معالج |
| عامل التصفية | برامج تشغيل Minifilter مع معلومات الارتفاع (altitude) والمثيل |
| جداول الواصفات | إدخالات GDT/IDT |
| IRP Dispatch | جدول توزيع IRP لأي برنامج تشغيل - عناوين المعالجات والوحدة المالكة |
| WFP | برامج تشغيل ومرشحات WFP callout |
| حالة DSE | حالة فرض توقيع برنامج التشغيل (Driver Signature Enforcement) |
| سياسة CI | سياسة تكامل الكود (Code Integrity) ومستوى الإنفاذ |
| سلامة Kernel | التحقق من قسم .text في Kernel مقابل الصورة الموجودة على القرص |
| خطافات Hypervisor | كشف خطافات EPT عبر تحليل التوقيت |
| القسم | ما يفحصه |
|---|
| الذاكرة غير المدعومة | مناطق قابلة للتنفيذ خاصة غير مدعومة بأي ملف (مؤشر على وجود شيلكود) |
| الإفراغ (Hollowing) | عدم تطابق PEB ImageBase مع ImageBase في ترويسة PE |
| التلاعب بالوحدات (Module Stomping) | مقارنة أقسام .text في الذاكرة مع النسخ الأصلية على القرص |
| استدعاءات النظام المباشرة | تعليمات syscall (0F 05) الموجودة خارج ntdll |
| أكواد Syscall التمهيدية (Syscall Stubs) | سلامة Stubs في ntdll - مقارنة بايتات الذاكرة بنسخة القرص النظيفة |
| خطافات المستخدم | الخطافات المضمّنة (تصحيحات JMP/CALL) في ntdll وkernel32 وغيرها (يتطلب capstone لفك تجميع البايتات التي تم تحليلها) |
| الرموز المميزة (Tokens) | الرفع (Elevation)، مستوى السلامة، الانتحال، والامتيازات المشبوهة |
| كائنات التصحيح | كائنات التصحيح ومنافذ التصحيح في العملية |
| Hypervisor | التحقق من بائع CPUID + تشوهات توقيت RDTSC/CPUID |
| كائنات الوظائف (Job Objects) | العضوية في الوظائف، والحدود، وقيود واجهة المستخدم |
| حالة CFG | حالة فرض CFG/XFG وعلامات التخفيف (mitigation flags) |