سياسة تدقيق أمن Windows وتحقيق سجلّ الأحداث عمليّاً ── لتصبح نظم المعلومات قادرة على قراءة 4625
· غو كومورا · Windows, الأمن, سجلّ الأحداث, سياسة التدقيق, تصميم السجلّات, PowerShell, نظم المعلومات
«حساب يُقفَل مراراً منذ الليلة الماضية. أريد معرفة السبب.» «أريد التحقّق هل يحاول أحد تسجيل الدخول بحساب موظّف سابق.» «هذا الخادم، هل نعرف متى ومن وماذا نفَّذ؟» ── طلبات يتلقّاها فجأة موظّفو تقنيّة المعلومات في المنشآت الصغيرة والمتوسّطة، أو المطوِّرون الذين سلَّموا نظاماً لعميل. وما ينتهون إلى الاعتماد عليه هو سجلّ أحداث Security في Windows.
غير أنّك حين تفتح عارض الأحداث فعلاً، ينتظرك واقعان. الحدث الذي تريد رؤيته لم يُسجَّل(سياسة التدقيق غير مفعَّلة)، أو هو مدفون تحت كمّ هائل من الأحداث فلا تقدر على قراءته(ضوضاء وتضخّم). تدقيق الأمن شيء «يُسجَّل إن فعَّلته»، لكن ما لم تصمِّم ماذا تسجِّل وإلى أيّ حدّ، فلن ينفعك حين تحتاجه.
flowchart TB
accTitle: واقعان ينتظرانك في عارض الأحداث
accDescr: عند فتح عارض الأحداث تواجه أحد واقعين سياسة التدقيق غير مفعَّلة فلا يُسجَّل الحدث المطلوب أو الضوضاء تضخّم السجلّ فيُدفَن الحدث تحت كمّ هائل فلا يُقرأ لذا يلزم تصميم ما الذي يُسجَّل وإلى أيّ حدّ
open["فتح عارض الأحداث"] --> real{"أيّ واقع ينتظرك؟"}
real -->|غير مسجَّل| none["الحدث المطلوب غير مسجَّل"]
real -->|مدفون| noise["أحداث هائلة فلا تُقرأ"]
none -.-> cause1["سياسة التدقيق معطَّلة"]
noise -.-> cause2["ضوضاء وتضخّم"]
none --> design["صمِّم ماذا تسجِّل وإلى أيّ حدّ"]
noise --> design
الشكل 1: «غير مسجَّل» أو «مدفون فلا يُقرأ». السبب في الحالتين أنّ نطاق التسجيل لم يُصمَّم.
ينظِّم هذا المقال آليّة سياسة التدقيق (النظامان: الأساسيّ والمفصَّل)، والفئات الفرعيّة التي ينبغي تفعيلها كحدّ أدنى في بيئة صغيرة ومتوسّطة، وكيفيّة قراءة معرِّفات الأحداث الثابتة ── 4624/4625/4740/4688 وغيرها ── وتصميم سعة سجلّ Security، وكيفيّة التحقيق بـ PowerShell، استناداً إلى مصادر أوّليّة حتّى أغسطس 2026. إذا كانت مقالات تدقيق NTLM وتوقيع SMB وBitLocker والجدار الناريّ التي تناولها هذا الموقع عن «تثبيت الدفاعات»، فهذا المقال عن «تمكين التحقّق لاحقاً ممّا حدث» ── تتمّة تربطها.
1. الخلاصة أوّلاً
- لسياسة التدقيق نظامان ── «أساسيّ» و«مفصَّل (Advanced Audit Policy)» ── ولا يجوز خلطهما. مايكروسوفت تنصّ صراحةً على أنّ استخدام الاثنين يترك نتائج التدقيق في حالة غير متوقَّعة. وحِّد على الجانب المفصَّل (أكثر من 40 فئة فرعيّة).1
- افحص الحالة الحاليّة بـ
auditpol /get /category:*. يسرد ما هو نافذ الآن فعليّاً، بغضّ النظر عن كونه من GPO أو إعداد محلّيّ.2 - «تفعيل الكلّ» شيء لا يجوز فعله. تفعيل فئات فرعيّة تولِّد كمّاً هائلاً من الأحداث يدفن الأحداث الجوهريّة تحت الضوضاء، ويؤثّر على الأداء أيضاً. ابدأ من توصيات خطّ الأساس لدى مايكروسوفت وأضف ما تحتاجه فقط.34
- نجاح تسجيل الدخول 4624؛ والفشل 4625. في 4624 اقرأ «أيّ نوع تسجيل دخول كان» من نوع تسجيل الدخول (2 = Interactive، 3 = Network، 10 = RemoteInteractive، وهكذا).5
- في 4625 يخبرك رمز Status/Sub Status بسبب الفشل. الثوابت: 0xC0000064 = اسم مستخدم غير موجود، 0xC000006A = كلمة مرور خاطئة، 0xC0000072 = حساب معطَّل، 0xC0000234 = الحساب مقفول.6
- مكان تسجيل الحدث ثابت. 4624/4625 يُسجَّلان على الآلة التي جرى الوصول إليها؛ تحقّق بيانات الاعتماد (4776) وفشل المصادقة المسبقة لـ Kerberos (4771) يُسجَّلان على متحكّم النطاق. إن نظرت إلى الآلة الخطأ شخصت خطأ «لا سجلّ».678
- نصف تصميم سجلّ Security هو الوعاء نفسه ── الحجم الأقصى والاحتفاظ. إن كان الاحتفاظ وضع كتابة فوق، تختفي الأحداث القديمة أوّلاً. افحص الحجم الأقصى وعدد السجلّات بـ
Get-WinEvent -ListLog Security، ووسِّعه عدّاً عكسيّاً من عدد الأيّام التي تحتاج إبقاؤها فعليّاً.910 - تسجيل سطر الأوامر لإنشاء العمليّة (4688) قويّ، لكنّ ثمنه أسرار تهبط في السجلّ بنصّ واضح. دقِّق سكربتاتك قبل التفعيل.1112
2. أساس سياسة التدقيق ── لا تخلط «الأساسيّ» و«المفصَّل»
لسياسة تدقيق Windows نظامان.1
- سياسة التدقيق الأساسيّة: إعدادات الفئات التسع تحت «Local Policies > Audit Policy». هذا النظام الأقدم، من قبل Windows Vista.
- تكوين سياسة التدقيق المفصَّلة (Advanced Audit Policy Configuration): إعدادات الفئات الفرعيّة الأربعين فأكثر تحت «Security Settings > Advanced Audit Policy Configuration». تفكّك كلّ فئة أساسيّة إلى عدّة فئات فرعيّة ── مثلاً فئة أساسيّة واحدة «Audit account logon events» تقابل أربع فئات فرعيّة على الجانب المفصَّل. تفعيل فئة أساسيّة واحدة له أثر تفعيل كلّ فئاتها الفرعيّة المقابلة، فيُسجَّل كمّ كبير من الأحداث قد لا تهمّك أصلاً.1
المهمّ أنّ هذين النظامين غير متوافقين. مايكروسوفت تقول بصراحة: «لا تستخدم سياسة التدقيق الأساسيّة والمفصَّلة معاً ── فقد يؤول ذلك إلى نتائج تدقيق غير متوقَّعة.» عندما تُطبَّق سياسة التدقيق المفصَّلة عبر نهج المجموعة، تُمسَح أوّلاً إعدادات التدقيق القائمة على ذلك الحاسوب ثم تُطبَّق إعدادات الجانب المفصَّل؛ ومن تلك النقطة لا يستطيع ضبط التدقيق بثقة إلا الجانب المفصَّل. في البيئات التي تستخدم الجانب المفصَّل، فعِّل خيار الأمن «Audit: Force audit policy subcategory settings to override audit policy category settings» حتّى لا تستطيع الإعدادات الأساسيّة الكتابة فوقه (مفعَّل افتراضيّاً على الآلات المستقلّة).14
flowchart TB
accTitle: علاقة سياسة التدقيق الأساسيّة والمفصَّلة
accDescr: سياسة التدقيق الأساسيّة والمفصَّلة غير متوافقتين واستخدامهما معاً يترك نتائج التدقيق في حالة غير متوقَّعة لذا وحِّد على الجانب المفصَّل وفعِّل فرض إعدادات الفئة الفرعيّة لمنع الكتابة فوقه من الجانب الأساسيّ
basic["سياسة التدقيق الأساسيّة(9 فئات)"] --> both{"تستخدم الاثنتين؟"}
adv["سياسة التدقيق المفصَّلة(أكثر من 40 فئة فرعيّة)"] --> both
both -->|نعم| bad["نتائج تدقيق غير متوقَّعة"]
both -->|لا| unify["وحِّد على الجانب المفصَّل"]
unify --> force["فعِّل فرض إعدادات الفئة الفرعيّة"]
force -.-> guard["يمنع الكتابة فوقه من الجانب الأساسيّ"]
الشكل 2: النظامان غير متوافقين. وحِّد على الجانب المفصَّل، وامنع الكتابة فوقه من الجانب الأساسيّ بإعداد «الفرض».
فحص الحالة الحاليّة أمر واحد، يُشغَّل من موجه أوامر بامتياز المسؤول.2
rem سرد إعدادات التدقيق النافذة الآن، حسب الفئة الفرعيّة
auditpol /get /category:*
rem نسخة احتياطيّة (CSV) قبل التغيير ثمّ الاستعادة
auditpol /backup /file:C:\logs\auditpol-backup.csv
auditpol /restore /file:C:\logs\auditpol-backup.csv
خرج auditpol هو «السياسة النافذة فعليّاً كنتيجة»، بغضّ النظر عن كونها من GPO أو إعداد محلّيّ. يصلح أيضاً للمضاهاة عندما يبدو أنّ إعداداً موزَّعاً عبر GPO لم ينعكس. ولاحظ أنّ تغييراً في إعدادات التدقيق نفسها يُسجَّل حدثاً 4719، لذا «التدقيق أُطفئ دون أن ينتبه أحد» يمكن تتبّعه لاحقاً أيضاً.12
flowchart TB
accTitle: ما يظهره auditpol هو السياسة الناتجة
accDescr: خرج auditpol هو سياسة التدقيق النافذة فعليّاً بغضّ النظر عن كونها من GPO أو إعداد محلّيّ فيصلح للمضاهاة عندما لا تنعكس إعدادات GPO وتغيير إعداد التدقيق نفسه يُسجَّل في الحدث 4719 ويمكن تتبّعه لاحقاً
gpo["إعداد موزَّع بـ GPO"] --> eff["السياسة النافذة فعليّاً"]
local["الإعداد المحلّيّ"] --> eff
eff --> get["سرد بـ auditpol /get"]
get -.-> diff["يصلح للمضاهاة عند عدم انعكاس GPO"]
change["تغيير إعداد التدقيق نفسه"] -.-> e4719["يُسجَّل 4719 ويمكن تتبّعه لاحقاً"]
الشكل 3: auditpol يعيد «الإعداد النافذ» بغضّ النظر عن المصدر. تغيير إعداد التدقيق نفسه يبقى في 4719.
3. جدول قرار للفئات الفرعيّة الواجب تفعيلها كحدّ أدنى
سبب كون «فعِّل الكلّ احتياطاً» حركة سيّئة واضح. مثلاً تحذِّر مايكروسوفت أنّ تدقيق النجاح لفئات استخدام الامتيازات الفرعيّة يولِّد كمّاً هائلاً من الأحداث حتّى يصعب إيجاد مدخلات أخرى في سجلّ الأمن، ويمكن أن يؤثّر أيضاً تأثيراً كبيراً على الأداء.4 وعاء السجلّ (الفصل 5) محدود، فكلّما سجَّلت ضوضاء اقتطعت من أيّام احتفاظ الأحداث التي تحتاجها فعلاً. تصميم التدقيق في جوهره تقرير ما لا تُسجِّله.
flowchart TB
accTitle: لماذا تفعيل الكلّ حركة سيّئة
accDescr: تفعيل كلّ الفئات الفرعيّة يولِّد كمّاً هائلاً من الأحداث فيُدفَن الحدث الجوهريّ تحت الضوضاء ويتأثّر الأداء وفي وعاء السجلّ المحدود تُقتطع أيضاً أيّام الاحتفاظ بالأحداث اللازمة
all["تفعيل كلّ الفئات الفرعيّة"] --> flood["تحدث أحداث هائلة"]
flood --> noise["يُدفَن الحدث الجوهريّ"]
flood --> perf["تأثير على الأداء"]
flood --> keep["تُقتطع أيّام الاحتفاظ"]
noise --> lesson["تصميم التدقيق هو تقرير ما لا تُسجِّله"]
perf --> lesson
keep --> lesson
الشكل 4: «تفعيل الكلّ» يدفن الحدث الجوهريّ. تصميم التدقيق هو تقرير ما لا تُسجِّله.
تنشر مايكروسوفت توصيات خطّ أساس وأقوى مفصَّلة حسب محطّة العمل والخادم، وهذه هي نقطة الانطلاق.3 ومن هناك ينظِّم الجدول أدناه منظور البيئة الصغيرة والمتوسّطة: «ما الذي نريد أن نقدر على قراءته كحدّ أدنى عند حادث».
| الفئة الفرعيّة (الفئة) | معرِّفات الأحداث الرئيسة | ماذا تُخبرك | التوصية في بيئة صغيرة ومتوسّطة |
|---|---|---|---|
| Logon (Logon/Logoff) | 4624 / 4625 | نجاح/فشل تسجيل الدخول، نوع تسجيل الدخول، المصدر | نجاح + فشل. Windows 10 1809 فما بعد مفعَّل فيه النجاح والفشل افتراضيّاً أصلاً3 |
| Special Logon (نفسها) | 4672 / 4964 | حدوث تسجيل دخول بامتياز المسؤول | نجاح |
| Account Lockout (نفسها) | 4625 | محاولة تسجيل دخول فاشلة على حساب مقفول حالياً | فشل (4625 حدث فشل؛ لا أحداث نجاح لهذه الفئة الفرعيّة)13 |
| User Account Management (Account Management) | 4720 / 4726 / 4738 / 4740 | إنشاء الحساب وحذفه وتعديله وقفله | نجاح + فشل |
| Security Group Management (نفسها) | 4728 / 4732 / 4756 (إضافة)، 4729 / 4733 / 4757 (إزالة) | أعضاء أُضيفوا إلى مجموعات إداريّة وغيرها أو أُزيلوا منها (عامّة/محلّيّة/شاملة) | نجاح (لا أحداث فشل لهذه الفئة الفرعيّة)14 |
| Credential Validation (Account Logon) | 4776 | نجاح مصادقة NTLM أو فشلها. يُسجَّل على DC لحسابات النطاق7 | نجاح + فشل |
| Kerberos Authentication Service (نفسها، DC فقط) | 4768 / 4771 | إصدار TGT وفشل المصادقة المسبقة (كلمة مرور خاطئة وغيرها)8 | نجاح + فشل، على DC |
| Process Creation (Detailed Tracking) | 4688 | من شغَّل ماذا، ومن أيّ عمليّة أصل | نجاح. اقرأ تحذير الفصل 7 قبل تفعيل تسجيل سطر الأوامر |
| Other Object Access Events (Object Access) | 4698 | إنشاء مهمّة مجدولة (أسلوب شائع للاستمرار)15 | انظر في تفعيل النجاح |
| Audit Policy Change (Policy Change) | 4719 | تغييرات إعدادات التدقيق نفسها | نجاح + فشل |
بالمقابل، الأسلم عموماً ألا تمسّ افتراضيّاً تدقيق الوصول إلى الكائنات في نظام الملفّات أو السجلّ، ولا استخدام الامتيازات، ولا فئات مرشّح الحزم الفرعيّة (5152 وما شابه). هذه تنفع عندما تضيِّقها بضبط SACL موجَّه أو بتحقيق محدود المدّة، لا شيئاً يُترَك مفتوحاً دائماً على نطاق واسع ── فذلك يلتهم سجلّك.4
flowchart TB
accTitle: التعامل مع فئات فرعيّة كثيرة الأحداث
accDescr: تدقيق الوصول إلى الكائنات في نظام الملفّات والسجلّ واستخدام الامتيازات وفئات مرشّح الحزم إن تُركت مفتوحة دائماً تلتهم السجلّ فلا تنفع إلا بضبط SACL مضيَّق أو لفترة عزل محدودة
heavy["فئات فرعيّة كثيرة الأحداث"] --> use{"كيف تفعِّلها؟"}
heavy -.-> ex1["تدقيق الوصول إلى الكائنات"]
heavy -.-> ex2["استخدام الامتيازات ومرشّح الحزم"]
use -->|مفتوحة دائماً| eat["تلتهم السجلّ"]
use -->|SACL مضيَّق الهدف| ok1["تنفع"]
use -->|لفترة عزل محدودة| ok2["تنفع"]
الشكل 5: لا تترك الوصول إلى الكائنات واستخدام الامتيازات مفتوحين دائماً. لا ينفعان إلا بتضييق الهدف والمدّة.
4. كيفيّة قراءة معرِّفات الأحداث الثابتة
4.1. 4624 ── نجاح تسجيل الدخول يُفرَز بنوع تسجيل الدخول
4624، «تمّ تسجيل دخول حساب بنجاح»، يُسجَّل على الآلة التي أُنشئت عليها جلسة تسجيل الدخول (الآلة التي جرى الوصول إليها).5 ولأنّه حدث عالي الكمّ، أوّل خطوة في قراءته الفرز بـ Logon Type.5
| نوع تسجيل الدخول | الاسم | معناه عمليّاً |
|---|---|---|
| 2 | Interactive | تسجيل دخول على وحدة التحكّم الخاصّة بذلك الحاسوب |
| 3 | Network | وصول عبر الشبكة (مجلّدات مشتركة، أدوات إدارة، وغيرها). الأكثر شيوعاً، لأنّه يطلق مرّة لكلّ آلة |
| 4 | Batch | تنفيذ دفعيّ (مهام مجدولة وغيرها) |
| 5 | Service | بدء خدمة (عبر مدير التحكّم بالخدمات) |
| 7 | Unlock | إلغاء قفل الشاشة |
| 8 | NetworkCleartext | تسجيل دخول شبكيّ مُرِّرت فيه كلمة المرور إلى حزمة المصادقة بنصّ واضح |
| 9 | NewCredentials | استنساخ رمزة قائمة ببيانات اعتماد بديلة (مكافئ runas /netonly) |
| 10 | RemoteInteractive | سطح المكتب البعيد |
| 11 | CachedInteractive | تسجيل دخول ببيانات اعتماد مخزَّنة مؤقتاً (عندما تعذَّر بلوغ DC) |
حقول أخرى يجدر النظر إليها معها: اسم الحساب تحت «New Logon»، وعنوان المصدر تحت «Network Information»، و«Authentication Package» (NTLM أو Kerberos)، و«Elevated Token» (هل للجلسة امتياز مسؤول). إن أردت تتبّع تسجيلات الدخول بامتياز المسؤول فقط، يفيد أيضاً الحدث 4672 (Special privileges assigned to new logon) المسجَّل تحت نفس Logon ID.5
flowchart TB
accTitle: خطوات قراءة 4624 وتمييزه
accDescr: أحداث 4624 الكثيرة تُفرَز أوّلاً بنوع تسجيل الدخول ثم تُفحَص اسم الحساب والمصدر وحزمة المصادقة والرمزة المرتفعة وتُضاهاة تسجيلات الدخول بامتياز المسؤول مع 4672 لنفس معرِّف تسجيل الدخول
ev["4624 نجاح تسجيل الدخول"] --> type["فرز بنوع تسجيل الدخول"]
type --> fields["فحص الحقول الرئيسة"]
fields -.-> f1["اسم الحساب والمصدر"]
fields -.-> f2["حزمة المصادقة"]
fields -.-> f3["الرمزة المرتفعة"]
fields --> admin["تتبّع امتياز المسؤول"]
admin -.-> e4672["4672 لنفس Logon ID"]
الشكل 6: افرز 4624 بنوع تسجيل الدخول ثم اقرأ الحقول. اربط تسجيل الدخول المتميّز بـ 4672.
4.2. 4625 ── ثبِّت سبب الفشل برمز Status/Sub Status
4625، «فشل تسجيل دخول حساب»، يُسجَّل على الآلة التي جرت عليها محاولة تسجيل الدخول.6 بدل الوثوق بصياغة حقل «Failure Reason»، القراءة الموثوقة هي رمز Status/Sub Status السداسيّ عشر. الثوابت كالتالي.6
- 0xC0000064: اسم مستخدم غير موجود. تتابع سريع في نافذة قصيرة يمكن أن يدلّ على هجوم تعداد حسابات
- 0xC000006A: كلمة مرور خاطئة. إخفاقات متكرِّرة على حساب معيّن يمكن أن تدلّ على هجوم تخمين كلمة مرور
- 0xC000006D: اسم مستخدم أو معلومات مصادقة غير صالحة
- 0xC000006F: خارج ساعات تسجيل الدخول المسموحة
- 0xC0000070: من محطّة عمل غير مسموحة
- 0xC0000072: حساب عطَّله مسؤول (محاولات حساب موظّف سابق تظهر هنا)
- 0xC000015B: نوع تسجيل الدخول المطلوب غير مسموح على هذه الآلة
- 0xC0000193: حساب منتهٍ
- 0xC0000234: مقفول
«من، ومن أين، ولماذا فشل» تُثبَّت بثلاثيّة الحساب المستهدف، والمصدر (اسم محطّة العمل / عنوان IP)، وهذا الرمز. الفصل 6 يتضمّن PowerShell يستخرج الثلاثة معاً دفعة واحدة.
flowchart TB
accTitle: تدفّق تثبيت سبب فشل 4625
accDescr: سبب فشل 4625 يُثبَّت برمز Status/Sub Status السداسيّ عشر وبعد قراءة دلالة الرمز على هجوم محتمل تُحدَّد الحالة بثلاثيّة الحساب المستهدف والمصدر والرمز
ev["4625 فشل تسجيل الدخول"] --> code["فحص رمز Sub Status"]
code --> sign{"ما اتّجاه الرمز؟"}
sign -->|تتابع 0xC0000064| enum["دلالة تعداد حسابات"]
sign -->|تتابع 0xC000006A| guess["دلالة تخمين كلمة مرور"]
sign -->|0xC0000072| disabled["محاولة حساب موظّف سابق"]
enum --> triple["التثبيت بالثلاثيّة"]
guess --> triple
disabled --> triple
triple -.-> t1["الحساب المستهدف+المصدر+الرمز"]
الشكل 7: ثبِّت سبب الفشل بالرمز، واقرأه بثلاثيّة الحساب المستهدف والمصدر والرمز.
4.3. 4740 ── مصدر القفل هو «Caller Computer Name»
4740، «تمّ قفل حساب مستخدم» (الفئة الفرعيّة: User Account Management). الحقل المحوريّ في هذا الحدث هو «Caller Computer Name»، ويسجِّل الحاسوب الذي صدرت منه محاولة تسجيل الدخول التي أشعلت القفل.16 الإجراء الثابت تحديد آلة المصدر من هذا الحقل، ثم غسل بيانات الاعتماد القديمة ما تزال مخزَّنة على تلك الآلة. في معظم الحالات السبب شيء يواصل استخدام بيانات قديمة بعد تغيير كلمة المرور ── بيانات محفوظة، أو جلسة RDP مقطوعة متروكة، أو خدمة أو مهمّة مجدولة مضبوطة بكلمة المرور القديمة.
flowchart TB
accTitle: الإجراء الثابت لتحقيق قفل الحساب
accDescr: حدِّد الجهاز المصدر من اسم الحاسوب المستدعي في 4740 ثم اغسل بيانات الاعتماد القديمة المتبقّية عليه بيانات محفوظة وجلسة RDP مقطوعة متروكة وخدمة أو مهمّة بكلمة مرور قديمة
ev["4740 حدوث قفل حساب"] --> caller["فحص اسم الحاسوب المستدعي"]
caller --> src["تحديد الجهاز المصدر"]
src --> sweep["اغسل بيانات الاعتماد القديمة"]
sweep -.-> c1["بيانات اعتماد محفوظة"]
sweep -.-> c2["جلسة RDP مقطوعة متروكة"]
sweep -.-> c3["خدمة أو مهمّة بكلمة مرور قديمة"]
الشكل 8: حدِّد المصدر من «اسم الحاسوب المستدعي» في 4740، ثم اغسل بيانات الاعتماد القديمة على ذلك الجهاز.
ثمّة أمر واحد يستحق الانتباه. 4625 يُسجَّل على الحاسوب الذي استقبل محاولة تسجيل الدخول. إن كان السبب تسجيل دخول شبكيّاً من آلة المصدر إلى خادم ملفّات مثلاً، لا يبقى 4625 في سجلّ Security الخاصّ بآلة المصدر نفسها؛ بل يبقى الأثر في 4625 على خادم الوجهة، أو لحساب نطاق في 4776 (NTLM) أو 4771 (فشل المصادقة المسبقة لـ Kerberos) على DC.78 عندما «لا شيء في سجلّ آلة المصدر»، اذهب وانظر جانب الاستقبال.
flowchart TB
accTitle: الآلة التي تبقى فيها أثر الفشل
accDescr: فشل تسجيل الدخول الشبكيّ لا يبقى على الجهاز المصدر نفسه بل يُسجَّل في 4625 على خادم الوجهة الذي استقبل المحاولة وإن كان حساب نطاق يبقى أثر أيضاً في 4776 أو 4771 على متحكّم النطاق
src["الجهاز المصدر(لا يبقى عليه 4625)"] -->|تسجيل دخول شبكيّ| target["خادم الوجهة"]
target -.-> e4625["يُسجَّل 4625"]
src -->|مصادقة حساب نطاق| dc["متحكّم النطاق"]
dc -.-> e4776["4776(NTLM)/4771(Kerberos)"]
الشكل 9: 4625 يبقى على الجانب الذي استقبل المحاولة. إن لم يوجد شيء على الجهاز المصدر، انظر خادم الوجهة ومتحكّم النطاق.
4.4. عائلة 4720 ── إنشاء الحساب وتعديله وإضافات المجموعات
أحداث إدارة الحسابات تشكِّل سلسلة أرقام متجاورة: 4720 (إنشاء حساب مستخدم)17، و4726 (حذف)، و4738 (تعديل)، وعلى جانب المجموعة إضافة عضو/إزالته. لاحظ أنّ معرِّف الحدث الذي يُطلَق لتغيير عضويّة مجموعة يعتمد على نوع المجموعة. 4732/4733 للمجموعات المحلّيّة، و4728/4729 للعامّة، و4756/4757 للشاملة.14 Domain Admins مجموعة عامّة، لذا تظهر إضافة إليها 4728 ── إن نبَّهت على 4732 فقط، فاتك بالضبط الحدث الذي تريد التقاطه أكثر من غيره. يوميّاً هذا في الغالب سجلّ عمل مكتب المساعدة، لكن «مستخدم قياسيّ أُضيف فجأة إلى مجموعة إداريّة» أو «أُنشئ حساب لا يعرفه أحد» يستحقّ التحقيق ولو وقع مرّة واحدة. مايكروسوفت نفسها تعطي الإضافات غير المتوقَّعة لأعضاء إلى مجموعات متميّزة مثالاً على حدث يستحقّ تنبيهاً منفرداً.3
flowchart TB
accTitle: نوع المجموعة وحدث إضافة عضو
accDescr: إضافة عضو إلى مجموعة تنقسم فيها معرِّفات الأحداث حسب نوع المجموعة المحلّيّة 4732 والعامّة 4728 والشاملة 4756 لذا إضافة إلى Domain Admins وهي مجموعة عامّة تُرى في 4728
add["إضافة عضو إلى مجموعة"] --> kind{"ما نوع المجموعة؟"}
kind -->|محلّيّة| lg["تُسجَّل في 4732"]
kind -->|عامّة| gg["تُسجَّل في 4728"]
kind -->|شاملة| ug["تُسجَّل في 4756"]
gg -.-> da["إضافة Domain Admins هنا"]
lg -.-> miss["مراقبة 4732 وحدها تُسقط الحدث"]
الشكل 10: معرِّف حدث إضافة عضو ينقسم حسب نوع المجموعة. الإضافة إلى Domain Admins هي 4728.
4.5. 4688 ── إنشاء العمليّة. تسجيل سطر الأوامر مفتاح منفصل
4688، «أُنشئت عمليّة جديدة»، يسجِّل حساب الإنشاء، ومسار الملفّ التنفيذيّ للعمليّة الجديدة، والعمليّة الأصل، ونوع رفع الرمزة في كلّ مرّة تُنشأ عمليّة.11 حدث ذو قيمة تحقيقيّة عالية يستطيع الإجابة عن «من نفَّذ ماذا على هذا الخادم».
غير أنّه افتراضيّاً لا تُسجَّل وسيطات سطر الأوامر. فقط متى فعَّلت على حدة إعداد نهج المجموعة «Include command line in process creation events» (Administrative Templates > System > Audit Process Creation) يُملأ حقل «Process Command Line» في 4688 بالوسيطات.1112 هذا في الواقع ضروريّ لتتبّع إطلاقات مريبة مثل powershell -EncodedCommand ...، لكن لا تفعِّله إلا بعد فهم خطر انكشاف الأسرار الموصوف في الفصل 7.
flowchart TB
accTitle: علاقة 4688 بتسجيل سطر الأوامر
accDescr: تفعيل تدقيق إنشاء العمليّة يسجِّل في 4688 الحساب ومسار الملفّ التنفيذيّ والعمليّة الأصل لكن وسيطات سطر الأوامر لا تُسجَّل إلا بعد تفعيل نهج مجموعة منفصل وفيها خطر ظهور أسرار بنصّ واضح
audit["تفعيل تدقيق إنشاء العمليّة"] --> ev["يُسجَّل 4688"]
ev -.-> base["الحساب والمسار والعمليّة الأصل"]
ev --> args{"تريد الوسيطات أيضاً؟"}
args -->|كما هو افتراضيّاً| none["سطر الأوامر فارغ"]
args -->|تفعيل GPO إضافيّ| cmd["تُسجَّل الوسيطات"]
cmd -.-> risk["خطر ظهور أسرار بنصّ واضح"]
الشكل 11: تسجيل سطر أوامر 4688 مفتاح منفصل. افحص خطر اختلاط الأسرار قبل التفعيل.
4.6. 4698 ── إنشاء مهمّة مجدولة
4698، «أُنشئت مهمّة مجدولة»، يسجِّل اسم المهمّة وXML تعريف المهمّة كاملاً (بما فيه الأمر الذي تشغِّله). ولأنّ تسجيل مهمّة مجدولة أسلوب شائع تستخدمه البرمجيّات الخبيثة للبقاء بعد إعادة التشغيل، توصي مايكروسوفت بمراقبة أحداث إنشاء المهمّات.15 حتّى في البيئات التي تستخدم المهام المجدولة بكثافة لأغراض الأعمال، الإنشاء نفسه ليس شيئاً يحدث كلّ يوم، فتبقى الضوضاء صغيرة نسبيّاً.
flowchart TB
accTitle: الاستمرار بتسجيل مهمّة و4698
accDescr: البرمجيّات الخبيثة تستخدم تسجيل مهمّة مجدولة وسيلة معتادة للبقاء بعد إعادة التشغيل لذا مراقبة 4698 المسجَّل عند إنشاء المهمّة تتيح تتبّع تعريف المهمّة بما فيه أمر التنفيذ
mal["استمرار البرمجيّة الخبيثة"] --> task["تسجِّل مهمّة لتبقى"]
task --> ev["يُسجَّل 4698"]
ev -.-> xml["XML كامل يتضمّن أمر التنفيذ"]
ev --> watch["كشف بمراقبة إنشاء المهمّة"]
watch -.-> low["الإنشاء ليس يوميّاً والضوضاء قليلة"]
الشكل 12: تسجيل المهمّة، الوسيلة المعتادة للاستمرار، يبقى في 4698. XML التعريف الكامل يوصل حتّى أمر التنفيذ.
وثمّة واحد آخر يستحقّ التذكّر: 1102، «تمّ مسح سجلّ التدقيق». مسح سجلّ Security يترك هذا الحدث دائماً، لذا إن وجدت «السجلّ فارغ»، يتيح لك تمييز حادث عن عمليّة روتينيّة.18
flowchart TB
accTitle: تمييز مسح السجلّ بـ 1102
accDescr: مسح سجلّ Security يترك دائماً 1102 لذا عندما يكون السجلّ فارغاً تفحص وجود 1102 فتميِّز هل كان ثمّة عمليّة مسح أم يُشتبه بحادث
empty["السجلّ فارغ"] --> rule["المسح يترك دائماً 1102"]
rule --> check{"هل يوجد 1102؟"}
check -->|نعم| op["حدثت عمليّة مسح"]
check -->|لا| acc["اشتبه بحادث"]
الشكل 13: مسح سجلّ Security يترك دائماً 1102. السجلّ الفارغ يُميَّز حادثاً أو عمليّة بوجود 1102 أو غيابه.
5. تصميم وعاء السجلّ ── الحجم الأقصى والاحتفاظ
قبل أن تزيد سياسة التدقيق، افحص الوعاء المستقبِل. لسجلّ Security حجم أقصى ووضع احتفاظ: في وضع الكتابة فوق (التكوين المعتاد)، متى بلغ الحجم الأقصى، تكتب الأحداث الجديدة فوق أقدمها. بالمقابل، في وضع الاحتفاظ (عدم الكتابة فوق)، متى امتلأ السجلّ، الأحداث الجديدة هي التي تُهمَل بدل ذلك.10 أيّ السلوكين يمكن أن يتركك بـ«السجلّ الذي احتجته غير موجود»، لذا فهم الحالة الحاليّة يأتي أوّلاً.
# فحص وعاء سجلّ Security: وضع الاحتفاظ، الحجم الأقصى، العدد الحاليّ
Get-WinEvent -ListLog Security |
Select-Object LogName, LogMode, MaximumSizeInBytes, RecordCount
# كم يوماً يبقى فعليّاً الآن (وقت أقدم حدث)
Get-WinEvent -LogName Security -Oldest -MaxEvents 1 |
Select-Object TimeCreated
Get-WinEvent -ListLog يعيد تكوين السجلّ وعدد السجلّات معاً.9 الفرق بين «وقت أقدم حدث» والوقت الحاليّ هو مدّة الاحتفاظ الفعليّة؛ إن قصرت عن متطلّبك (كم يوماً تريد أن تقدر على الرجوع إليه في تحقيق حادث)، وسِّع الحجم الأقصى. يمكنك ضبط هذا بـ wevtutil sl Security /ms:<عدد البايتات>، أو توزيعه عبر نهج المجموعة.10
flowchart TB
accTitle: تصميم السعة بالعدّ العكسيّ من أيّام الاحتفاظ
accDescr: افحص التكوين والعدد بـ ListLog لـ Get-WinEvent واحسب أيّام الاحتفاظ الفعليّة من وقت أقدم حدث وإن قصرت عن الأيّام التي تريد الرجوع إليها في تحقيق حادث وسِّع الحجم الأقصى
check["افحص التكوين والعدد بـ ListLog"] --> oldest["افحص وقت أقدم حدث"]
oldest --> days["احسب أيّام الاحتفاظ الفعليّة"]
days --> enough{"هل تكفي المتطلّبات؟"}
enough -->|تكفي| keep["أبقِ الحجم الحاليّ"]
enough -->|لا تكفي| grow["وسِّع الحجم الأقصى"]
grow -.-> how["اضبط بـ wevtutil sl أو GPO"]
الشكل 14: تأكَّد من الأيّام المتبقّية فعليّاً، واحسب الحجم الأقصى عدّاً عكسيّاً من الأيّام التي تريد الرجوع إليها.
وثمّة أيضاً خيار أمن اسمه «Audit: Shut down system immediately if unable to log security audits» (المعروف بـ CrashOnAuditFail). متى فُعِّل، إن صار النظام عاجزاً عن تسجيل حدث تدقيق، توقّف بخطأ STOP C0000244. موجود لمتطلّبات مصادقة لا تحتمل إضاعة أثر تدقيق إطلاقاً، وهو معطَّل افتراضيّاً. مايكروسوفت نفسها تحذِّر أنّ هذا يمكن تحويله إلى DoS، بمهاجم يولِّد عمداً سيلاً من الأحداث لإيقاف خادم ── لذا ليس شيئاً يُفعَّل باستخفاف في بيئة صغيرة ومتوسّطة معتادة.19
flowchart TB
accTitle: السلوك عند امتلاء السجلّ
accDescr: تكوين الاحتفاظ وضعان الكتابة فوق وعدم الكتابة فوق وعندما يتعذّر تسجيل التدقيق في وضع عدم الكتابة فوق إن كان CrashOnAuditFail مفعَّلاً وهو إعداد منفصل يتوقّف النظام بخطأ STOP C0000244
full["سجلّ Security بلغ الحجم الأقصى"] --> mode{"ما تكوين الاحتفاظ؟"}
mode -->|وضع الكتابة فوق| ow["يُكتَب فوق أقدم الأحداث"]
mode -->|عدم الكتابة فوق| drop["تُهمَل الأحداث الجديدة"]
ow -.-> lost["كلاهما سبب لا سجلّ حين تنتبه"]
drop -.-> lost
drop --> caf{"CrashOnAuditFail مفعَّل أيضاً؟"}
caf -->|نعم| crash["توقّف بخطأ STOP C0000244"]
الشكل 15: تكوين الاحتفاظ وضعان: كتابة فوق أو إهمال. CrashOnAuditFail إعداد منفصل يوقف النظام عندما يتعذّر التسجيل.
6. التحقيق عمليّاً ── التصفية، وGet-WinEvent، والتصدير
6.1. التضييق في عارض الأحداث
لتحقيق لمرّة واحدة، عارض الأحداث يكفي. افتح سجلّ Security وحدِّد معرِّف حدث (مثلاً 4625) ونطاقاً زمنيّاً بـ «Filter Current Log». احفظ الشروط التي تفحصها مراراً كـ «Custom View» فتصير نقراً واحداً في المرّة التالية. إن أردت التضييق بحساب معيّن لا بمعرِّف حدث فقط، يمكنك تحرير استعلام XPath مباشرةً في علامة تبويب XML بحوار المرشّح.
6.2. الاستخراج بـ Get-WinEvent
للتحقيقات ذات عدد سجلّات كبير، أو شروط متعدّدة، أو تشغيل دوريّ، حوِّل إلى Get-WinEvent في PowerShell. النقطة الجوهريّة استخدام -FilterHashtable، الذي يطبِّق المرشّح على جانب الخادم.9
flowchart TB
accTitle: المفاضلة بين وسائل التحقيق
accDescr: التحقيق لمرّة واحدة يكفي فيه مرشّح عارض الأحداث والشروط التي تعود إليها تُحفَظ في عرض مخصَّص والتحقيق كثير العدد أو متعدّد الشروط أو الدوريّ يُحوَّل إلى Get-WinEvent
q{"أيّ نوع تحقيق؟"}
q -->|مرّة واحدة| viewer["تصفية بعارض الأحداث"]
q -->|شروط تعود إليها| view["احفظها في عرض مخصَّص"]
q -->|كمّ كبير ومتعدّد ودوريّ| ps["حوِّل إلى Get-WinEvent"]
ps -.-> hash["صفِّ بـ FilterHashtable"]
الشكل 16: المرّة الواحدة عارض الأحداث، والتكرار عرض مخصَّص، والكمّ الكبير Get-WinEvent.
# جلب فشل تسجيل الدخول (4625) في آخر 24 ساعة
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 4625
StartTime = (Get-Date).AddDays(-1)
}
# تشكيل «من، من أين، ولماذا» في جدول
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 4625
StartTime = (Get-Date).AddDays(-1)
} | ForEach-Object {
$x = [xml]$_.ToXml()
$d = @{}
$x.Event.EventData.Data | ForEach-Object { $d[$_.Name] = $_.'#text' }
[pscustomobject]@{
Time = $_.TimeCreated
Account = "$($d.TargetDomainName)\$($d.TargetUserName)"
LogonType = $d.LogonType
Source = "$($d.WorkstationName) $($d.IpAddress)"
Status = $d.Status
SubStatus = $d.SubStatus
}
} | Group-Object Account, Status, SubStatus, Source |
Sort-Object Count -Descending |
Format-Table Count, Name -AutoSize
متى ملكت هذا القالب لسحب EventData من تمثيل XML للحدث، أعدت استخدامه كما هو لـ 4624 أو 4688. تصميم تصفية Get-WinEvent ── متى تستخدم FilterHashtable مقابل XPath، وكيف تصلح استعلاماً بطيئاً ── مشروح بالتفصيل في «تحقيق سجلّ الأحداث عمليّاً بـ Get-WinEvent ── سرعة التصفية تحدّد مدّة التحقيق».
flowchart TB
accTitle: قالب سحب EventData وتنسيقه
accDescr: تحويل الأحداث المسترجَعة بـ Get-WinEvent إلى تمثيل XML وسحب حقول EventData وتنسيقها جدولاً قالب يُعاد استخدامه بالمنوال نفسه لـ 4624 أو 4688 لا لـ 4625 وحدها
get["استرجع بـ Get-WinEvent"] --> xml["حوِّل الحدث إلى تمثيل XML"]
xml --> pull["اسحب EventData"]
pull --> shape["نسِّق جدولاً وجمِّع"]
shape -.-> reuse["المنوال نفسه لـ 4624 و4688"]
الشكل 17: قالب سحب EventData من تمثيل XML وتنسيقه جدولاً يُعاد استخدامه ولو تغيّر معرِّف الحدث.
6.3. التصدير بـ wevtutil
القاعدة لسجلّات الآلة قيد التحقيق تصديرها وتأمين نسخة أوّلاً، قبل أن تمحوها الكتابة فوق.10
rem حفظ سجلّ Security بالكامل كملفّ evtx
wevtutil epl Security C:\logs\security-20260801.evtx
rem تصدير أحداث 4625 فقط، مضيَّقة بـ XPath
wevtutil epl Security C:\logs\security-4625.evtx /q:"*[System[(EventID=4625)]]"
ملفّ .evtx مُصدَّر يمكن تحليله على آلة أخرى بالمنوال نفسه تماماً، بـ Get-WinEvent -Path C:\logs\security-20260801.evtx.9 عادة الحفظ قبل التحليل هي العقلية نفسها «أمِّن التفريغ أوّلاً» في تحقيق الانهيار (انظر «مدخل إلى جمع ملفّات تفريغ انهيار Windows - WER/ProcDump/WinDbg»).
flowchart TB
accTitle: تدفّق الحفظ ثم التحليل
accDescr: صدِّر سجلّ Security على الآلة قيد التحقيق بـ wevtutil epl إلى ملفّ evtx لتحفظه ثم حلِّله بالمنوال نفسه على آلة أخرى عبر Path في Get-WinEvent
target["الآلة قيد التحقيق"] --> export["احفظ evtx بـ wevtutil epl"]
export --> copy["انقل إلى آلة أخرى"]
copy --> analyze["حلِّل بـ Get-WinEvent -Path"]
export -.-> note["احفظ قبل أن تمحوه الكتابة فوق"]
الشكل 18: احفظ أوّلاً، ثم حلِّل. إن أمَّنته في evtx استطعت التحقيق بالمنوال نفسه على آلة أخرى.
7. المطبات ── أربعة يسهل الوقوع فيها في الميدان
(1) أسرار تهبط في سطر أوامر 4688. تفعيل تسجيل سطر الأوامر يضع وسيطات كلّ عمليّة في سجلّ Security بنصّ واضح. مايكروسوفت تنصّ صراحةً على أنّ «أيّ مستخدم يملك صلاحية قراءة أحداث الأمن يستطيع قراءة وسيطات سطر الأوامر لكلّ عمليّة أُنشئت بنجاح. وقد تتضمّن وسيطات سطر الأوامر معلومات حسّاسة أو خاصّة مثل كلمات المرور.»12 إن وُجد تطبيق أعمال واحد أو سكربت واحد يطلق شيئاً مثل myapp.exe /user:admin /password:P@ssw0rd، فذلك سرّ مكشوف لكلّ من يستطيع عرض السجلّ. قبل التفعيل، امسح المواضع التي تمرِّر أسراراً وسيطات سطر أوامر وأصلحها. حيث تصدِّر السجلّ أو تعيد توجيهه يحتاج أيضاً تعاملاً بمستوى السرّيّة نفسه.
flowchart TB
accTitle: ترتيب تفعيل تسجيل سطر الأوامر
accDescr: قبل تفعيل تسجيل سطر أوامر 4688 امسح تطبيقات الأعمال والسكربتات التي تمرِّر أسراراً وسيطات وأصلح المواضع المعنيّة ثم فعِّل واطلب مستوى التعامل نفسه في وجهة الحفظ وإعادة التوجيه
audit["امسح تمرير الأسرار وسيطات"] --> found{"هل ثمّة موضع؟"}
found -->|نعم| fix["أصلح المواضع التي تمرِّر"]
found -->|لا| on["فعِّل تسجيل سطر الأوامر"]
fix --> on
on -.-> dest["وجهة الحفظ والنقل بالمستوى نفسه"]
الشكل 19: تسجيل سطر الأوامر «امسح وأصلح ثم فعِّل». عكس الترتيب يجعله نشراً للأسرار.
(2) التشغيل دون معرفة ما يحدث عندما يمتلئ السجلّ. في وضع الكتابة فوق، يختفي الأثر القديم بهدوء؛ وفي وضع عدم الكتابة فوق، تُهمَل الأحداث الجديدة؛ ومع CrashOnAuditFail مفعَّلاً، يتوقّف النظام كلّه (الفصل 5).1019 المنهج الصحيح أن تعرف أيّ سلوك اخترت، وأن تضع آليّة ── تصديرات مجدولة، أو منصّة جمع سجلّات ── تجمع البيانات قبل أن تُمحى بالكتابة فوق.
(3) متحكّمات النطاق ومحطّات العمل تتطلّب النظر في سجلّات مختلفة. 4624/4625 يُسجَّلان على الآلة التي جرى الوصول إليها.56 بالمقابل، تحقّق بيانات الاعتماد لحساب نطاق (4776 لـ NTLM) يُسجَّل على الآلة التي لها سلطة على بيان الاعتماد ── لحساب نطاق، ذلك هو DC7 ── وفشل المصادقة المسبقة لـ Kerberos (4771) يُسجَّل على DC فقط.8 «لا 4625 على خادم الملفّات» لا يعني «لم يكن ثمّة هجوم»؛ لا تكتمل الصورة إلا بعد مضاهاة 4776/4771 على DC أيضاً. انظر «NTLM وKerberos مشروحان بالرسوم ── لماذا تسقط المصادقة إلى NTLM» لكيفيّة تدفّق كلّ بروتوكول مصادقة فعليّاً.
(4) انحراف الساعة يكسر المضاهاة. صفّ سجلّات عدّة آلات لتتبّع «أيّ محطّة أنتجت 4625 مباشرة قبل هذا 4740» لا يعمل إلا إن اتفقت ساعة كلّ آلة. في بيئة نطاق، Kerberos نفسه يضع حدّاً أعلى لانحراف الساعة (5 دقائق افتراضيّاً)، وبعده تبدأ المصادقة نفسها بالفشل.20 من منظور التحقيق، انحراف ثوانٍ ── فضلاً عن خمس دقائق ── يمكن أن يدفعك إلى إساءة قراءة ترتيب الأحداث، لذا ينبغي أن يكون فحص حالة مزامنة w32time أوّل خطوة في إجراء التحقيق. وتذكَّر أيضاً أنّ أوقات الأحداث تُحفَظ بـ UTC وتُعرَض حسب المنطقة الزمنيّة لآلة العرض، فلا تنسَ تحويل المناطق الزمنيّة عند قراءة .evtx جُلب من موقع في الخارج أو خادم مضبوط على UTC.
flowchart TB
accTitle: مزامنة الوقت وفرضيّة تحقيق المضاهاة
accDescr: تحقيق مضاهاة سجلّات عدّة آلات حسب الوقت يفترض أنّ ساعات الآلات متوافقة وانحراف ثوانٍ يُخطئ قراءة الترتيب وانحراف يتجاوز 5 دقائق افتراضيّاً يفشل مصادقة Kerberos نفسها لذا اجعل فحص مزامنة w32time أوّل خطوة التحقيق
merge["مضاهاة سجلّات عدّة آلات"] --> pre["توافق الساعات فرضيّة"]
pre --> skew{"ما انحراف الساعة؟"}
skew -->|متوافقة| ok["تُتتبَّع حسب الوقت"]
skew -->|انحراف ثوانٍ| misread["خطأ في قراءة الترتيب"]
skew -->|يتجاوز 5 دقائق افتراضيّاً| kerb["تفشل مصادقة Kerberos"]
pre -.-> first["فحص w32time أوّل الخطوة"]
الشكل 20: مضاهاة عدّة آلات تفترض ضبط الساعات. انحراف ثوانٍ يكفي لإساءة قراءة الترتيب.
8. الخلاصة
- لسياسة التدقيق نظامان، «أساسيّ» و«مفصَّل»، وخلطهما يُنتج نتائج غير متوقَّعة. وحِّد على الجانب المفصَّل، افحص الحالة الحاليّة بـ
auditpol /get /category:*، وصمِّم من هناك. - «تفعيل الكلّ» يقتل تحقيقك بالضوضاء والتضخّم. ابدأ من توصيات خطّ الأساس لدى مايكروسوفت واعمل عبر جدول القرار في الفصل 3، المبنيّ حول تسجيل الدخول وإدارة الحسابات وإنشاء العمليّات.
- 4624 يُقرأ بنوع تسجيل الدخول، و4625 برمز Status/Sub Status، و4740 بـ Caller Computer Name، و4688 بالعمليّة الأصل وسطر الأوامر ── لكلّ حدث حقل معيّن يلزم فحصه.
- وعاء السجلّ (الحجم الأقصى ووضع الاحتفاظ) نصف تصميم التدقيق. افحص كم يوماً يبقى فعليّاً، حدِّد الحجم عدّاً عكسيّاً من متطلّبك، وصدِّر أو جمِّع قبل أن تمحوه الكتابة فوق.
- دقِّق خطر انكشاف الأسرار قبل تفعيل تسجيل سطر الأوامر لـ 4688. أين يُسجَّل كلّ حدث، ومزامنة الساعة، فرضيّتان لمضاهاة عبر الآلات.
- ابدأ التحقيق بمرشّحات عارض الأحداث؛ حوِّل إلى
Get-WinEvent -FilterHashtableلأيّ شيء متكرِّر؛ احفظ بـwevtutil epl. لا تكسر ترتيب «احفظ أوّلاً، ثم حلِّل».
مقالات ذات صلة
- تحقيق سجلّ الأحداث عمليّاً بـ Get-WinEvent ── سرعة التصفية تحدّد مدّة التحقيق
- هل إهمال NTLM يوقف تطبيقات أعمالك؟ ── كيف تجمع سجلّات التدقيق، وبأيّ ترتيب تقتل التبعيّات
- NTLM وKerberos مشروحان بالرسوم ── لماذا تسقط المصادقة إلى NTLM
- توقيع SMB وربط قناة LDAP ── إغلاق «النصف الآخر» من دفاعات NTLM عمليّاً
- مدخل إلى سجلّ أحداث Windows وETW ── وضع سجلّات تطبيق الأعمال على آليّة نظام التشغيل القياسيّة
- مدخل إلى جمع ملفّات تفريغ انهيار Windows - WER/ProcDump/WinDbg
مجالات الاستشارة ذات الصلة
تتعامل شركة كومورا سوفت ذ.م.م. مع استشارات سياسة التدقيق وتصميم السجلّات في بيئة Windows، وتحقيقات «متى ومن وماذا» استناداً إلى سجلّ الأحداث، وتحليل السبب الجذري للأعطال التي تقع فيها تطبيقات الأعمال حول المصادقة والتدقيق. يصحّ البدء من مرحلة «طُلب منّي النظر في السجلّات، لكن لا أعرف من أين أبدأ».
روابط مرجعيّة
-
Microsoft Learn, Advanced security auditing FAQ. حول الفرق بين سياسة التدقيق الأساسيّة (الإعدادات التسعة تحت Local Policies) وسياسة التدقيق المفصَّلة؛ وحول تفعيل فئة أساسيّة واحدة يكافئ تفعيل كلّ فئاتها الفرعيّة المقابلة؛ وحول عدم توافق النظامين، واستخدامهما معاً يترك نتائج التدقيق في حالة غير متوقَّعة لذا لا يجوز خلطهما؛ وحول تطبيق الجانب المفصَّل عبر نهج المجموعة يمسح إعدادات التدقيق القائمة؛ وحول لزوم تفعيل «Audit: Force audit policy subcategory settings to override audit policy category settings»؛ وحول تقليل كمّ الأحداث بتحديد الموارد والأنشطة والمستخدمين المهمّين وتضييق النطاق إليهم. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, auditpol. حول قدرة أمر
auditpolعلى عرض سياسة تدقيق النظام (/get)، وضبطها (/set)، والنسخ الاحتياطيّ إلى CSV (/backup)، والاستعادة (/restore)، والمسح (/clear). ↩ ↩2 -
Microsoft Learn, System Audit Policy recommendations. حول جدول قيم Windows الافتراضيّة وتوصيات خطّ الأساس والتوصيات الأقوى مفصَّلة حسب محطّة العمل والخادم؛ وحول كون التوصيات نقطة انطلاق فقط، تُراجَع وتُختبَر وفق تهديدات كلّ منظّمة وتحمّلها للخطر؛ وحول فئة Logon الفرعيّة مفعَّل فيها النجاح والفشل كليهما افتراضيّاً منذ Windows 10 1809 فما بعد؛ وحول أهمّيّة مراقبة محطّات العمل بقدر مراقبة الخوادم؛ وحول أمثلة أحداث تستحقّ تنبيهاً منفرداً، كإضافات أعضاء غير متوقَّعة إلى مجموعات متميّزة؛ وحول كشف طفرات فشل تسجيل الدخول بالمقارنة مع خطّ أساس. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Audit: Force audit policy subcategory settings (Windows Vista or later) to override audit policy category settings. حول إمكان إدارة التدقيق بدقّة عبر أكثر من 40 فئة فرعيّة؛ وحول إبقاء هذا الإعداد مفعَّلاً ممارسة فضلى، والقيمة الافتراضيّة Enabled للعملاء وخوادم الأعضاء وDC على حدّ سواء؛ وحول التحذير أنّ إعدادات تولِّد كمّاً هائلاً من الأحداث، كتفعيل تدقيق النجاح لفئة استخدام الامتيازات الفرعيّة كلّها، تجعل إيجاد مدخلات أخرى في سجلّ الأمن صعباً ويمكن أن تؤثّر تأثيراً كبيراً على الأداء. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, 4624(S): An account was successfully logged on. حول تسجيل 4624 على الآلة التي جرى الوصول إليها عند إنشاء جلسة تسجيل الدخول؛ وحول قائمة أنواع تسجيل الدخول (2 = Interactive، 3 = Network، 4 = Batch، 5 = Service، 7 = Unlock، 8 = NetworkCleartext، 9 = NewCredentials، 10 = RemoteInteractive، 11 = CachedInteractive)؛ وحول علامة Elevated Token؛ وحول Authentication Package (NTLM/Kerberos/Negotiate) وPackage Name لـ NTLM (NTLM V1/V2/LM)؛ وحول المضاهاة عبر Logon ID مع أحداث مثل 4672. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, 4625(F): An account failed to log on. حول تسجيل 4625 على الحاسوب الذي جرت عليه محاولة تسجيل الدخول (لمحاولة على محطّة المستخدم، تلك المحطّة)؛ وحول فئتيه الفرعيّتين Account Lockout وLogon؛ وحول معنى رموز Status/Sub Status (0xC0000064 = اسم مستخدم سيّئ، 0xC000006A = كلمة مرور خاطئة، 0xC000006D = اسم مستخدم أو معلومات مصادقة سيّئة، 0xC000006F = خارج ساعات تسجيل الدخول المسموحة، 0xC0000070 = محطّة عمل غير مسموحة، 0xC0000072 = حساب معطَّل، 0xC000015B = نوع تسجيل دخول غير مسموح، 0xC0000193 = حساب منتهٍ، 0xC0000234 = مقفول)؛ وحول تكرار 0xC0000064 يمكن أن يدلّ على هجوم تعداد حسابات. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, 4776(S, F): The computer attempted to validate the credentials for an account. حول تسجيل 4776 لكلّ تحقّق من بيانات اعتماد يُجرى لمصادقة NTLM؛ وحول التسجيل فقط على الحاسوب الذي له سلطة على بيان الاعتماد ── متحكّم النطاق لحساب نطاق، أو الحاسوب المحلّيّ لحساب محلّيّ؛ وحول تسجيل النجاح والفشل كليهما. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, 4771(F): Kerberos pre-authentication failed. حول تسجيل 4771 لكلّ فشل من KDC في إصدار TGT لـ Kerberos (كلمة مرور خاطئة، انتهاء، وغيرها)؛ وحول توليد هذا الحدث على متحكّمات النطاق فقط. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Get-WinEvent (Microsoft.PowerShell.Diagnostics). حول استرجاع تكوين السجلّ (LogMode، MaximumSizeInBytes، RecordCount) عبر -ListLog؛ وحول التصفية الكفؤة عبر -FilterHashtable محدَّداً كجدول تجزئة من LogName وId وStartTime وغيرها؛ وحول قراءة ملفّ .evtx محفوظ عبر -Path؛ وحول استرجاع الأحداث من الأقدم وعدّاً عبر -Oldest / -MaxEvents. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, wevtutil. حول ضبط الحجم الأقصى (/ms) ووضع الاحتفاظ (/rt) عبر set-log (sl)؛ وحول وضع الاحتفاظ true يعني الاحتفاظ بالأحداث القائمة وإهمال الجديدة متى امتلأ السجلّ، بينما false يعني كتابة الأحداث الجديدة فوق أقدم القائمة؛ وحول تصدير سجلّ أحداث إلى ملفّ عبر export-log (epl)، مع خيار /q للتضييق باستعلام XPath؛ وحول تشغيل استعلام عبر query-events (qe). ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, 4688(S): A new process has been created. حول تسجيل 4688 لكلّ بدء عمليّة جديدة؛ وحول تضمّنه حساب المنشئ، ومسار الملفّ التنفيذيّ للعمليّة الجديدة، واسم عمليّة المنشئ (الأصل)، ونوع رفع الرمزة؛ وحول حقل Process Command Line فارغ افتراضيّاً، ولا يُملأ إلا بعد تفعيل إعداد نهج المجموعة «Include command line in process creation events». ↩ ↩2 ↩3
-
Microsoft Learn, Command line process auditing. حول لزوم تسجيل سطر الأوامر تدقيق إنشاء العمليّة في سياسة التدقيق المفصَّلة و«Include command line in process creation events» كليهما (Administrative Templates > System > Audit Process Creation، غير مضبوط افتراضيّاً)؛ وحول التحذير أنّه متى فُعِّل تُسجَّل معلومات سطر أوامر كلّ عمليّة في سجلّ أحداث الأمن بنصّ واضح، وأيّ مستخدم يملك صلاحية قراءة أحداث الأمن يستطيع قراءة وسيطات سطر الأوامر لكلّ عمليّة أُنشئت بنجاح، وقد تتضمّن معلومات حسّاسة مثل كلمات المرور؛ وحول كتابة الإعدادات الأساسيّة فوق سياسة التدقيق المفصَّلة تولِّد الحدث 4719، وهو ما يمنعه إعداد «الفرض». ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Audit Account Lockout. حول فئة Account Lockout الفرعيّة تدقِّق محاولات تسجيل الدخول الفاشلة على حساب مقفول حالياً؛ وحول الحدث المُولَّد 4625(F)؛ وحول عدم وجود أحداث نجاح لهذه الفئة الفرعيّة، لذا تفعيل تدقيق النجاح لها لا فائدة منه؛ وحول توصية تدقيق الفشل عبر كلّ أنواع الحواسيب. ↩
-
Microsoft Learn, Audit Security Group Management. حول هذه الفئة الفرعيّة تدقِّق إنشاء مجموعات الأمن وتعديلها وحذفها، وإضافة الأعضاء وإزالتهم؛ وحول اختلاف معرِّفات أحداث إضافة/إزالة الأعضاء حسب نوع المجموعة ── 4732/4733 للمحلّيّة، و4728/4729 للعامّة، و4756/4757 للشاملة؛ وحول وجود أحداث مخصَّصة لمجموعات النطاق مثل 4728؛ وحول عدم وجود أحداث فشل لهذه الفئة الفرعيّة، لذا يُوصى بتدقيق النجاح عبر كلّ أنواع الحواسيب. ↩ ↩2
-
Microsoft Learn, 4698(S): A scheduled task was created. حول تسجيل 4698 لكلّ مهمّة مجدولة تُنشأ؛ وحول فئته الفرعيّة Other Object Access Events؛ وحول تسجيله اسم المهمّة وXML تعريف المهمّة كاملاً، بما فيه الأمر المراد تشغيله؛ وحول التوصية بمراقبة أحداث إنشاء المهمّات، خصوصاً على الآلات المهمّة، لأنّ البرمجيّات الخبيثة تستخدم المهام المجدولة عادةً للبقاء عبر إعادات التشغيل. ↩ ↩2
-
Microsoft Learn, 4740(S): A user account was locked out. حول تسجيل 4740 لكلّ قفل حساب مستخدم؛ وحول فئته الفرعيّة User Account Management؛ وحول حقل Caller Computer Name يسجِّل اسم الحاسوب الذي صدرت منه محاولة تسجيل الدخول التي تسبَّبت بالقفل. ↩
-
Microsoft Learn, 4720(S): A user account was created. حول تسجيل 4720 على متحكّمات النطاق وخوادم الأعضاء ومحطّات العمل لكلّ كائن مستخدم جديد يُنشأ؛ وحول فئته الفرعيّة User Account Management. ↩
-
Microsoft Learn, 1102(S): The audit log was cleared. حول تسجيل الحدث 1102 لكلّ مسح لسجلّ تدقيق أمن Windows. ↩
-
Microsoft Learn, Audit: Shut down system immediately if unable to log security audits. حول توقّف النظام برسالة STOP هي C0000244 {Audit Failed} إن فُعِّل هذا الإعداد وتعذَّر تسجيل تدقيقات الأمن؛ وحول القيمة الافتراضيّة Disabled؛ وحول إمكان تحويله إلى DoS عبر توليد كمّ كبير من أحداث الأمن عمداً لفرض إيقاف؛ وحول خطر صيرورة بيانات التطبيق غير قابلة للاستخدام بسبب توقّف مفاجئ. ↩ ↩2
-
Microsoft Learn, Maximum tolerance for computer clock synchronization. حول استخدام Kerberos v5 للطوابع الزمنيّة دفاعاً ضدّ هجمات إعادة التشغيل، ولهذا يُضبط حدّ أقصى للتحمّل (5 دقائق افتراضيّاً وبالتوصية) لانحراف الساعة بين عميل ومتحكّم نطاق، وبعده لا يُعدّ الطابع الزمنيّ أصيلاً. ↩
مقالات ذات صلة
أحدث المقالات التي تشترك في نفس الوسوم. عمّق فهمك بمواضيع مرتبطة.
دليل عمليّ لنهج المجموعة (GPO) ── كيف يعمل، وتأكيد التطبيق، والاختيار بين GPO وIntune
هل تعمل في بيئة AD دون أن تعرف حقّاً ماذا يعني «موزَّع عبر GPO»؟ يشرح المقال عمليّاً كيف يعمل نهج المجموعة وترتيب تطبيق LSDOU، وتأكيد الا...
من نهج المجموعة إلى Intune ── دليل ترحيل إدارة الأجهزة للمنشآت الصغيرة والمتوسّطة
عندما يحين استبدال خادم AD، أتبقى مع نهج المجموعة أم تنتقل إلى Entra ID زائد Intune؟ ينظِّم المقال للمنشآت الصغيرة والمتوسّطة فروق آليّة ...
اختيار حساب خدمة ويندوز — LocalSystem والحسابات الافتراضية وgMSA
هل ما زلت تشغّل خدمات ويندوز بحساب LocalSystem؟ تقارن هذه المقالة الامتيازات وهويّة الشبكة لـ LocalService وNetworkService والحسابات الاف...
نسخة الظلّ لوحدة التخزين (VSS): الآليّة والممارسة ── لماذا تستطيع برمجيّات النسخ الاحتياطيّ نسخ ملفّات قيد الاستخدام
الملفّات قيد الاستخدام لا تُنسَخ عادة بسبب انتهاك المشاركة، فكيف تتمكّن برمجيّات النسخ الاحتياطيّ من ذلك؟ يشرح المقال أدوار الطالب والكات...
استخدام WMI/CIM من C# وPowerShell ── دليل عمليّ لاسترجاع معلومات العتاد ومراقبة العمليّات والاستعلام عن بُعد
الإجابة الكلاسيكيّة للحصول على الرقم التسلسليّ للحاسوب، ومراقبة المساحة الحرّة على القرص، وكشف بدء عمليّة هي WMI/CIM. يشرح المقال أوامر C...
أين يتصل هذا الموضوع
ترتبط هذه المقالة بشكل طبيعي بصفحات الخدمات التالية.
تطوير تطبيقات ويندوز
ندعم تطوير برامج ويندوز للأعمال، وتكامل الأجهزة، وأدوات التواصل.
الأسئلة الشائعة
أسئلة شائعة حول موضوع هذه المقالة.
- لم نضبط أيّ سياسة تدقيق، فلماذا يظهر 4624 و4625 أصلاً في سجلّ Security؟
- لأنّ Windows فيه فئات فرعيّة للتدقيق مفعَّلة افتراضيّاً. فئة «Logon» مثلاً مفعَّل فيها تدقيق النجاح والفشل كليهما افتراضيّاً منذ Windows 10 الإصدار 1809، لذا يُسجَّل 4624 (نجاح) و4625 (فشل) ولو لم تضبط شيئاً بنفسك. غير أنّ الإبقاء على الافتراضيّ يترك كثيراً من الأحداث التي تريدها في التحقيق ── تحقّق بيانات الاعتماد (4776) أو إنشاء العمليّة (4688) مثلاً ── بلا تسجيل. ما المفعَّل في بيئتك تتأكَّد منه بـ `auditpol /get /category:*`. ومن هناك الإجراء العمليّ تفعيل الفئات الفرعيّة الناقصة صراحةً على جانب سياسة التدقيق المفصَّلة.
- أريد التحقيق في فشل تسجيل دخول، لكن لا أجد الحدث 4625 في سجلّ Security على الخادم المستهدف. أين أنظر؟
- أوّلاً أكِّد المبدأ: 4625 يُسجَّل على «الحاسوب الذي جرت عليه محاولة تسجيل الدخول». فشل تسجيل دخول على جهاز المستخدم يبقى على الجهاز؛ فشل وصول إلى خادم ملفّات يبقى على خادم الملفّات. ثم افحص بـ `auditpol /get /category:*` هل تدقيق الفشل مفعَّل لفئة «Logon» الفرعيّة. لحسابات النطاق كثيراً ما يبقى الأثر بدل ذلك في تحقّق بيانات الاعتماد (4776) أو فشل المصادقة المسبقة لـ Kerberos (4771) على متحكّم النطاق، وعندما لا تستطيع تثبيت الجهاز المعنيّ يكون البدء من جانب DC أسرع في الغالب. إن لم تجد شيئاً بعد ذلك، افحص هل محيت الأحداث الأقدم بالكتابة فوق (قارن الحجم الأقصى للسجلّ بوقت أقدم حدث).
- هل ينبغي تفعيل تسجيل سطر الأوامر لإنشاء العمليّة (4688)؟
- قيمته التحقيقيّة عالية جدّاً، لكنّه إعداد لا تفعِّله إلا بعد فهم الخطر. متى فُعِّل، تُسجَّل وسيطات سطر أوامر كلّ عمليّة في سجلّ Security بنصّ واضح. إن وُجد سكربت واحد أو تطبيق أعمال واحد يمرِّر كلمة مرور أو مفتاح API وسيطة سطر أوامر، صار ذلك السرّ مرئيّاً لكلّ من يستطيع قراءة سجلّ Security. مايكروسوفت نفسها توثِّق هذا التحذير صراحةً. الترتيب الموصى به أن تفحص أوّلاً هل تمرِّر سكربتاتك أسراراً وسيطات سطر أوامر، وتصلح ما يفعل ذلك، ثم تفعِّل الإعداد.
- كم ينبغي أن يكون الحجم الأقصى لسجلّ Security؟
- المنهج الصحيح العدّ العكسيّ من «كم يوماً نريد إبقاؤه في اليد»، لا رقم واحد يناسب الجميع. الإعداد الحاليّ وسلوكه الفعليّ تتأكَّد منهما بـ `Get-WinEvent -ListLog Security`؛ الفرق بين وقت أقدم حدث والوقت الحاليّ هو «كم يوماً يبقى فعليّاً الآن». زيادة فئات التدقيق الفرعيّة تزيد كمّ الأحداث، فبعد تغيير الإعداد أعد فحص مدّة الاحتفاظ الفعليّة هذه حتماً. الاستجابة للحوادث تحتاج أحياناً سجلّات من أسابيع أو أشهر سابقة، لذا يطمئنّك إمّا تصدير السجلّ دوريّاً قبل أن تمحوه الكتابة فوق، أو تجميعه على آلة أخرى بآليّة جمع سجلّات.
- كيف أحقِّق سبب قفل حساب (4740)؟
- أوّل دليل حقل «Caller Computer Name» في الحدث 4740. يسجِّل الحاسوب الذي صدرت منه محاولة تسجيل الدخول الفاشلة التي أشعلت القفل. انتبه مع ذلك أنّ سجلّ الفشل نفسه (4625) يبقى على الجانب الذي استقبل المحاولة، لا على آلة المصدر. إن كان المصدر تسجيل دخول شبكيّاً، اتبعه زمنيّاً عبر 4625 على خادم الوجهة، أو لحساب نطاق عبر 4776/4771 على متحكّم النطاق. متى حدَّدت آلة المصدر، افحص عليها ما يزال يحمل بيانات اعتماد قديمة من قبل تغيير كلمة المرور ── بيانات محفوظة، أو جلسة سطح مكتب بعيد مقطوعة متروكة، أو خدمة أو مهمّة مجدولة مضبوطة بكلمة المرور القديمة. إن تكرَّر القفل، افحص أيضاً هل انحرفت مزامنة الساعة.
الملف الشخصي للمؤلف
صفحة الملف الشخصي لمؤلف المقالة.
غو كومورا
مؤسّس شركة كومورا سوفت ذ.م.م.
يركّز على تطوير برامج ويندوز، والاستشارات التقنية، والتحقيق في الأخطاء، ويتميّز في المشاريع التي تبقى فيها الأصول القديمة ناشطة، وفي تشخيص الأعطال التي يصعب تحديد سببها.