
يراقب هجمات DCSYNC و DCSHADOW وينشئ أحداث Windows مخصصة لهذه الأحداث.
هذه الأداة هي تطبيق/خدمة يمكن نشرها على وحدات تحكم المجال (Domain Controllers) لتنبيه حول محاولات مزامنة وحدات تحكم المجال. عند اكتشاف محاولة، ستكتب الأداة حدثًا في سجل أحداث Windows. يمكن ربط هذه الأحداث في نظام SIEM. بالإضافة إلى ذلك، يمكن لهذه الأداة أخذ قائمة بعناوين IP الصالحة لوحدات تحكم المجال، وفي هذا التكوين، التنبيه فقط عندما تأتي محاولة DC SYNC من عنوان IP غير تابع لوحدة تحكم المجال. تهدف هذه الأداة إلى تزويد الفرق الزرقاء (Blue Teams) بطريقة لمواجهة هجمات DC SYNC و DC SHADOW بدون أدوات تجارية مثل Microsoft ATA أو أنظمة IDS/IPS المتطورة.
فيديو قصير على YouTube: https://www.youtube.com/watch?v=oLND9QZfaJc
لتثبيت هذه الأداة، يمكنك استخدام إما الملفات الثنائية المجمعة مسبقًا أو بناء الأداة بنفسك. رابط الملفات الثنائية المجمعة مسبقًا هو:
خدمة 32 بت: https://github.com/shellster/DCSYNCMonitor/raw/master/Release/DCSYNCMONITORSERVICE.exe
خدمة 64 بت: https://github.com/shellster/DCSYNCMonitor/raw/master/x64/Release/DCSYNCMONITORSERVICE.exe
ستحتاج إلى تثبيت إما Winpcap أو Npcap على وحدة تحكم المجال الخاصة بك. يجب أن يعمل Winpcap، ولكنه غير موصى به لأن طرق التقاط الحزمة ليست فعالة أو شاملة مثل Npcap. تم اختبار هذه الأداة فقط لفترة وجيزة مع Winpcap.
لتثبيت Npcap، قم بتنزيل المثبت من هنا: https://nmap.org/npcap/
يجب التأكد من تحديد الخيارات التالية:
بعد التثبيت، ستحتاج إلى إعادة تشغيل وحدة تحكم المجال.
لا يقوم Npcap بتثبيت مكتبات DLL الداعمة في مسار بحث DLL للنظام، لذا ستحتاج إلى تنفيذ المهام التالية بعد التثبيت:
copy "%WINDIR%\System32\Npcap\*.dll" "%WINDIR%\System32\"
#If Applicable (32bit Service on 64bit System):
copy "%WINDIR%\SYSWOW64\Npcap\*.dll" "%WINDIR%\SYSWOW64\"
ملاحظة: إذا لم يتم إكمال الخطوة السابقة، فستتلقى أخطاء حول فقدان wpcap.dll أو Packet.dll عند محاولة تشغيل الأداة.
الآن قم بنسخ DCSYNCMONITOR.EXE من هذا المشروع إلى موقع مناسب. نوصي بـ %WINDIR%\SYSTEM32 للأنظمة 32 بت أو الأنظمة 64 بت مع خدمة 64 بت، أو %WINDIR%\SYSWOW64 إذا كنت تستخدم الخدمة 32 بت على نظام 64 بت.
يمكن الآن تشغيل الأداة. ومع ذلك، يمكنك تشغيلها بإحدى طريقتين:
في هذا الوضع، ستكتب الأداة حدث تحذير DCSYNCALERT إلى سجل أحداث التطبيقات في Windows في كل مرة يحاول فيها عنوان IP جديد (لم يتم رؤيته في الخمس دقائق السابقة) إجراء DC SYNC ضد وحدة تحكم المجال. سيشمل ذلك أنشطة المزامنة المشروعة بين وحدات تحكم المجال.
يمكن وضع ملف تكوين يسمى "dc_ip_list.conf" في نفس دليل الأداة. إذا كان هذا الملف موجودًا، يجب أن يحتوي على عنوان IPv4 واحد (أو IPv6 بالصيغة الطويلة) لكل سطر. ستقوم الأداة باستيراد هذه القائمة عند بدء التشغيل. في هذا الوضع، لن تتم كتابة أي أحداث لمحاولات DC SYNC من عناوين IP المتطابقة. ومع ذلك، إذا حدثت محاولة DC SYNC من أي عنوان IP آخر، فسيتم كتابة حدث خطأ DCSYNCALERT إلى سجل أحداث التطبيقات في Windows.
ملاحظة لن تسري التغييرات على ملف dc_ip_list.conf حتى يتم إيقاف الخدمة وإعادة تشغيلها.
الطريقة المعتادة لاستخدام هذه الأداة هي تثبيتها كخدمة. بمجرد وضع الأداة في المجلد الصحيح، يمكن القيام بذلك بسهولة عن طريق تشغيل:
DCMONITORSERVICE.exe -install
بمجرد تثبيت الخدمة، ستحتاج إلى بدء تشغيلها يدويًا من قائمة Services.msc أو باستخدام أوامر net أو sc المناسبة. ستبدأ تلقائيًا في عمليات إعادة التشغيل المستقبلية.
إذا احتجت إلى إلغاء تثبيت الخدمة، قم بتشغيل الأمر التالي:
DCMONITORSERVICE.exe -remove
أخيرًا، لتشغيل الأداة في الوضع المستقل، بدون تثبيت خدمة (مفيد بشكل خاص لتصحيح الأخطاء):
DCMONITORSERVICE.exe -standalone
تحدث أحداث تحذير DC SYNC عندما لا يتم توفير قائمة بعناوين IP صالحة لوحدات تحكم المجال، أو عندما يحدث DC SYNC من عنوان IP صالح لوحدة تحكم المجال:

تحدث أحداث خطأ DC SYNC عندما يتم توفير قائمة بعناوين IP صالحة لوحدات تحكم المجال ويحدث DC SYNC من أي عنوان IP آخر:

ستحتاج إلى Visual Studio 2015 أو أحدث. إصدار Community (المجاني) مقبول تمامًا. بمجرد فتح المشروع، يجب أن تكون قادرًا على بناء إصدارات Dev و Release على الفور في كل من الإصدارات 32 بت و 64 بت. يجب عدم نشر إصدارات التصحيح (Debug) في بيئة إنتاج. فهي تخرج معلومات خطأ وتصحيح واسعة النطاق، بما في ذلك تفريغ حزم TCP (إذا قمت بإلغاء تعليق السطر التالي) في ملف monitor.cpp:
#ifdef _DEBUG
//debug_print("TCP SRC IP: %s\nData:\n", tcppacket.source_ip.address.c_str());
//print_payload((const u_char *)tcppacket.data, tcppacket.data_length);
#endif
إصدارات Release أصغر بكثير وتقوم تلقائيًا بإزالة عبارات التصحيح.
تحتوي هذه الأداة على القيود المعروفة التالية:
يتم توفير هذه الأداة بموجب ترخيص MIT (انظر LICENSE)
تم كتابة الأداة بواسطة Shelby Spencer:
قدم لي FusionX بسخاء وقتًا لتحديث وتحسين هذه الأداة بالإضافة إلى منصة للإعلان عنها. ومع ذلك، هذا المشروع مملوك ومطور بواسطتي حصريًا.
الاقتراحات والتعليقات وطلبات السحب (PR's) جميعها مرحب بها ومشجعة.