Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
OWN-Defender — مشروع بحثي يعمل على الهندسة العكسية لواجهات COM الخاصة بمركز أمان Windows لتتبع تسجيل برامج مكافحة الفيروسات عبر ATL وvtable وWSCAPI وRPC، مع التحقق في وقت التشغيل عبر WMI. | Kitploit
أدوات/GitHubGitHub/nirvanaon/own-defender
أدوات دفاعيةالاستغلالالهندسة العكسيةتحليل الملفات الثنائيةالتعلم والتعليم
GitHubnirvanaon/own-defender

OWN-Defender

مشروع بحثي يعمل على الهندسة العكسية لواجهات COM الخاصة بمركز أمان Windows لتتبع تسجيل برامج مكافحة الفيروسات عبر ATL وvtable وWSCAPI وRPC، مع التحقق في وقت التشغيل عبر WMI.

عرض المستودع
10منذ 17س 10دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

OWN-Defender — بحث COM في مركز أمان Windows

OWN-Defender هو مشروع بحث أمني في Windows يركز على فهم كيفية قيام مركز أمان Windows (WSC) بتمثيل وإدارة منتجات الأمان المضادة للفيروسات من خلال واجهات COM الخاصة به.

بدأ المشروع كتحقيق في السلوك الذي أظهره DefendNot، ولكن بدلاً من التعامل مع التنفيذ الحالي كصندوق أسود، استخدمته كنقطة انطلاق للهندسة العكسية والتحقق المستقلين.

Screenshot 2026-08-26 111717

الهدف من هذا المشروع هو فهم مسار التنفيذ الكامل:

root@kitploit:~
COM
 ↓
CLSID / IID
 ↓
CoCreateInstance
 ↓
QueryInterface
 ↓
ATL Interface Map
 ↓
vtable
 ↓
IWscAVStatus4
 ↓
CWscIsv
 ↓
WSCAPI.dll
 ↓
RPC
 ↓
Windows Security Center

تم تطوير المشروع واختباره في بيئة بحث Windows خاضعة للتحكم.

للاستخدام البحثي/التعليمي فقط

هذا المشروع مخصص لأبحاث داخل Windows، والهندسة العكسية، والتعليم الأمني، واختبارات الأمان المصرح بها. لا تستخدمه للتدخل في برامج الأمان على الأنظمة التي لا تملكها أو ليس لديك إذن صريح لاختبارها.


الدافع البحثي

كان السؤال الأولي بسيطًا:

كيف يعرف مركز أمان Windows أن منتج مكافحة الفيروسات موجود؟

بدلاً من التوقف عند توثيق واجهة برمجة التطبيقات العامة، أردت فهم ما يحدث تحت الواجهة.

أدى هذا إلى عدة أسئلة:

  • أي فئة COM تنفذ وظيفة WSC؟
  • أي IID يقابل واجهة مكافحة الفيروسات؟
  • كيف يحل QueryInterface() الواجهة؟
  • أين يتم تخزين الواجهة في خريطة واجهة ATL؟
  • لماذا يعرض IDA أحيانًا __int64 a1 فقط لطريقة ما؟
  • لماذا تحتوي واجهة C++ المعاد بناؤها على معاملات إضافية؟
  • أي دالة Register() هي فعليًا دالة تسجيل مكافحة الفيروسات؟
  • كيف يصل التسجيل في النهاية إلى مركز أمان Windows؟
  • أين تظهر حدود RPC؟
  • كيف يمكن التحقق من النتيجة بشكل مستقل؟

رحلة الهندسة العكسية

1. تحديد فئة COM

كانت الخطوة الأولى هي تحديد فئة COM الخاصة بمركز أمان Windows.

يستخدم المشروع فئة COM الخاصة بـ WSC:

root@kitploit:~
CLSID_WscIsv
F2102C37-90C3-450C-B3F6-92BE1693BDF2

يحتوي التنفيذ أيضًا على منطق لتحديد موقع CLSID ديناميكيًا من سجل Windows بدلاً من الاعتماد حصريًا على قيمة ثابتة.

من الناحية المفاهيمية:

root@kitploit:~
HKLM
 └── SOFTWARE
     └── Classes
         └── CLSID
             └── {CLSID}
                 └── Windows Security Center ISV API

قدم هذا أول علاقة مهمة:

root@kitploit:~
Registry
   ↓
CLSID
   ↓
Windows Security Center ISV API

2. تحديد الواجهة الصحيحة

كان التحدي التالي هو تحديد واجهة COM التي يجب طلبها.

يستخدم المشروع:

root@kitploit:~
IWscAVStatus4

مع:

root@kitploit:~
4DCBAFAC-29BA-46B1-80FC-B8BDE3C0AE4D

كان أحد الدروس المهمة من البحث:

اسم GUID وحده ليس دليلاً كافيًا.

تحققت من العلاقة من خلال الهندسة العكسية بدلاً من افتراض أن اسم الواجهة وGUID صحيحان.

شمل التحقيق:

  • مراجع GUID
  • QueryInterface
  • خرائط واجهة ATL
  • _ATL_INTMAP_ENTRY
  • مواقع vtable
  • المراجع المتقاطعة
  • تطبيقات الدوال
  • سلوك وقت التشغيل

3. فهم QueryInterface

كانت إحدى أكثر خطوات الهندسة العكسية فائدة هي تتبع تنفيذ:

root@kitploit:~
CComAggObject<CWscIsv>::QueryInterface()

الذي يصل في النهاية إلى:

root@kitploit:~
ATL::CComObjectRootBase::InternalQueryInterface()

تُستخدم خريطة واجهة ATL لمقارنة IID المطلوب مع إدخالات الواجهة المسجلة.

من الناحية المفاهيمية:

root@kitploit:~
Requested IID
     ↓
QueryInterface()
     ↓
InternalQueryInterface()
     ↓
ATL Interface Map
     ↓
GUID comparison
     ↓
Matching interface
     ↓
Interface pointer

قدم هذا دليلاً مستقلاً على أن GUID قيد التحقيق يتوافق فعليًا مع واجهة COM المتوقعة.


4. ارتباك Register()

كان أحد أكبر تحديات الهندسة العكسية هو فهم سبب عدم عرض IDA/Ghidra دائمًا لتوقيع الطريقة الذي توقعته.

تحتوي الواجهة المعاد بناؤها على:

root@kitploit:~
virtual HRESULT __stdcall Register(
    BSTR path,
    BSTR name,
    unsigned int,
    unsigned int
) = 0;

ومع ذلك، يمكن أن يعرض المفكك تنفيذًا مثل:

root@kitploit:~
_IWscAVStatus4<CWscIsv>::Register(__int64 a1)

في البداية بدا هذا غير متسق.

أظهر التحقيق الإضافي أن تمثيل المفكك كان يصف غلافًا/كعبًا والاستدعاء غير المباشر الأساسي عبر vtable بدلاً من تقديم توقيع الواجهة المنطقي الكامل.

أصبح هذا درسًا مهمًا:

مخرجات المفكك هي تفسير لرمز الآلة، وليست الحقيقة الأصلية على مستوى المصدر.

لحل هذه التناقضات، قارنت:

root@kitploit:~
COM interface definition
        ↓
vtable layout
        ↓
assembly
        ↓
wrapper/thunk
        ↓
calling convention
        ↓
actual target function

5. دوال Register() المتعددة

كان مصدر ارتباك آخر هو وجود دوال متعددة بأسماء مثل:

root@kitploit:~
IWscAVStatus2::Register
IWscAVStatus4::Register
IWscFWStatus2::Register
RegisterAV

كان الإدراك المهم أن الأسماء المتشابهة لا تعني واجهات متطابقة.

على سبيل المثال:

root@kitploit:~
AV
 ↓
IWscAVStatus4
 ↓
AV registration

بينما:

root@kitploit:~
Firewall
 ↓
IWscFWStatus2
 ↓
Firewall registration

كان يجب التحقق من رقم الواجهة والتنفيذ المحيط بها بدلاً من اختيار دالة لمجرد أن اسمها يحتوي على Register.

كان هذا من أكثر الأجزاء فائدة في البحث لأنه أجبرني على الربط بين:

root@kitploit:~
Interface
+
IID
+
vtable
+
implementation
+
parameter layout
+
call target

6. تتبع مسار التسجيل

بعد تحديد الواجهة الصحيحة، تتبعت عملية التسجيل أعمق داخل الملف الثنائي.

كان المسار الملاحظ تقريبًا:

root@kitploit:~
IWscAVStatus4::Register()
        ↓
CWscIsv
        ↓
RegisterSecurityProductFunction
        ↓
wscRegisterSecurityProduct()
        ↓
WSCAPI.dll
        ↓
s_wscRegisterSecurityProduct()
        ↓
NdrClientCall3()
        ↓
RPC
        ↓
Windows Security Center

كان هذا مهمًا بشكل خاص لأن طريقة COM نفسها لم تكن العملية النهائية.

عبر الاستدعاء في النهاية حدود RPC.

غيّر ذلك طريقة رؤيتي للبنية:

root@kitploit:~
COM
  ≠
final implementation

بدلاً من ذلك:

root@kitploit:~
COM
 ↓
local implementation
 ↓
WSC API
 ↓
RPC client
 ↓
Windows component

7. فهم WSCAPI.dll

كانت الطبقة التالية هي WSCAPI.dll.

وصل المسار المعكوس هندسيًا إلى:

root@kitploit:~
wscRegisterSecurityProduct()

الذي استدعى في النهاية:

root@kitploit:~
s_wscRegisterSecurityProduct()

ثم:

root@kitploit:~
NdrClientCall3()

كانت هذه هي النقطة التي انتقل فيها التحقيق من استدعاء COM عادي إلى بنية RPC في Windows.

ساعد فهم هذه الطبقة في تفسير سبب عدم إمكانية فهم السلوك بالكامل من خلال النظر فقط إلى DLL الأصلي لـ COM.


8. التحقق في وقت التشغيل

كان التحليل الثابت جزءًا واحدًا فقط من البحث.

بعد إعادة بناء الواجهة ومسار الاستدعاء ذي الصلة، أنشأت تنفيذي الخاضع للتحكم وقارنت السلوك الناتج مع مركز أمان Windows.

استخدمت معلومات مركز أمان Windows / WMI مثل:

root@kitploit:~
ROOT\SecurityCenter2
    AntiVirusProduct

لمراقبة معلومات المنتج المسجل بشكل مستقل.

كانت عملية التحقق:

root@kitploit:~
Reverse engineering
       ↓
Interface reconstruction
       ↓
Own implementation
       ↓
Runtime execution
       ↓
Windows Security Center
       ↓
WMI observation
       ↓
Compare results

سمح لي هذا بالتحقق من أن استنتاجات التحليل الثابت تتوافق مع سلوك Windows الملحوظ.


9. ما تعلمته

علّمني هذا المشروع أكثر بكثير من مجرد التفاعل مع واجهة COM واحدة.

COM

  • CLSID مقابل IID
  • تفعيل COM
  • CoCreateInstance
  • QueryInterface
  • عد المراجع
  • مؤشرات الواجهة
  • vtables
  • خرائط واجهة ATL

الهندسة العكسية

  • قيود مفكك IDA/Ghidra
  • تتبع المراجع المتقاطعة
  • تحديد GUIDs
  • إعادة بناء الواجهات
  • تحليل الأغلفة/الكعوب المولدة من المترجم
  • فهم استدعاءات vtable غير المباشرة
  • التحقق من اصطلاحات الاستدعاء

داخل Windows

  • مركز أمان Windows
  • واجهات مزود WSC
  • WSCAPI.dll
  • RPC في Windows
  • كعوب RPC المولدة بواسطة MIDL
  • NdrClientCall3
  • حالة منتج مركز الأمان

منهجية البحث

الأهم من ذلك، تعلمت تجنب الاعتماد على دليل واحد فقط.

بدلاً من ذلك:

root@kitploit:~
Symbol
   ↓
Decompiler
   ↓
Assembly
   ↓
GUID
   ↓
Interface Map
   ↓
vtable
   ↓
Call Graph
   ↓
RPC
   ↓
Runtime Verification

كل طبقة تزيد الثقة في الاستنتاج.


بنية المشروع

يتكون تنفيذ البحث من مكونين رئيسيين.

root@kitploit:~
OWN-Defender
│
├── OWN-Defender.cpp
│   ├── WSC COM interaction
│   ├── CLSID discovery
│   ├── COM initialization
│   ├── IWscAVStatus4 interaction
│   ├── registration
│   ├── status update
│   └── cleanup
│
└── dllmain.cpp
    ├── DLL entry point
    ├── research loader
    ├── controlled execution
    └── cleanup/stop handling

المستودع صغير عمدًا بحيث تظل العلاقة بين السلوك المعكوس هندسيًا والتنفيذ سهلة المتابعة.


أسئلة البحث الرئيسية

بُني هذا المشروع حول أسئلة بدلاً من مجرد إعادة إنتاج الوظيفة:

root@kitploit:~
How does WSC identify the COM class?

How is the IID mapped to the interface?

How does QueryInterface locate the interface?

Why does IDA show different function signatures?

Where is the actual vtable?

Which Register() is the AV implementation?

What happens after the COM method?

Where does WSCAPI.dll enter the call chain?

Where does RPC begin?

How can the result be independently verified?

كانت هذه الأسئلة في النهاية أكثر قيمة من التنفيذ النهائي نفسه.


منظور البحث الأمني

يوفر المشروع أيضًا نقطة بداية مفيدة لدراسة الحدود الأمنية بين:

root@kitploit:~
Application
     ↓
COM
     ↓
Windows Security Center
     ↓
Security Provider Information

من المهم التمييز أن تسجيل معلومات منتج الأمان لا يعادل تلقائيًا تعطيل محرك Defender أو تجاوز آليات الحماية الخاصة به.

لذلك، يجب النظر إلى هذا المشروع في المقام الأول على أنه:

بحث في الهندسة العكسية لمركز أمان Windows / COM

بدلاً من اعتباره ادعاءً بأن تسجيل WSC وحده يشكل ثغرة في Defender.

أي تأثير أمني يتطلب تحقيقًا وتحققًا منفصلين.


الاعتمادات

استُلهم هذا البحث جزئيًا من العمل المعروض في DefendNot بواسطة es3n1n.

شكر خاص للمؤلف على توفير نقطة بداية مفيدة لفهم آلية WSC.

المشروع الأصلي: https://github.com/es3n1n/defendnot

الغرض من هذا المستودع ليس ادعاء البحث الأصلي كبحث خاص بي، بل توثيق عملية الهندسة العكسية الخاصة بي، والتنفيذ المستقل، والتحقق من سلوك Windows الأساسي.


إخلاء المسؤولية

تم توفير هذا المستودع من أجل:

  • أبحاث داخل Windows
  • تعليم الهندسة العكسية
  • البحث الأمني
  • هندسة الكشف
  • الاختبارات المخبرية المصرح بها

استخدم هذا المشروع فقط على الأنظمة التي تملكها أو مصرح لك باختبارها صراحةً.

المؤلف غير مسؤول عن سوء الاستخدام أو الضرر أو فقدان البيانات أو التدخل في ضوابط الأمان أو النشر غير المصرح به.


الترخيص

هذا المشروع مرخص بموجب رخصة GNU العامة العامة الإصدار 3.0.

انظر LICENSE للحصول على التفاصيل.


الخلاصة النهائية

الهدف الرئيسي من OWN-Defender ليس مجرد إعادة إنتاج تقنية تسجيل مكافحة الفيروسات.

إنه إظهار منهجية هندسة عكسية قابلة للتكرار:

root@kitploit:~
Find
 ↓
Map
 ↓
Reverse
 ↓
Reconstruct
 ↓
Trace
 ↓
Implement
 ↓
Verify

ما بدأ بسؤال حول مركز أمان Windows أصبح استكشافًا أعمق لـ COM وATL ورسم خرائط GUID/IID وvtables والكود المولد من المترجم وWSCAPI وRPC وبنية أمان Windows.

التنفيذ هو النتيجة. عملية الهندسة العكسية هي المشروع الحقيقي.

تنزيل الأداة