
مستودع لوحدات تكوين sysmon
هذا مستودع إعدادات Microsoft Sysinternals Sysmon حمّله من هنا، صُمم بطريقة نمطية لتسهيل الصيانة وتوليد إعدادات محددة.
يرجى الأخذ في الاعتبار أن أيًا من هذه الإعدادات يجب اعتباره نقطة بداية، ويُوصى بشدة بضبطه حسب البيئة.
ملاحظة: للحصول على قيمة أكبر من حدث FileExecutable، فكّر في دمج النسخة الأحدث من إعداد LOLdrivers في الإعداد أيضًا. يمكنك القيام بذلك بسهولة عن طريق الحصول على الملف وإضافته إلى مجلد 29_file_execute_detected ثم توليد إعداد جديد.
يتم إنشاء sysmonconfig.xml داخل المستودع تلقائيًا بعد دمج ناجح بواسطة سكربت PowerShell وتحميل ناجح بواسطة Sysmon في تشغيل Azure Pipeline. مزيد من المعلومات حول كيفية توليد إعداد مخصص يتضمن وحداتك الخاصة هنا
إلى جانب التوثيق أدناه، يوجد أيضًا فيديو حول كيفية استخدام هذا المشروع.
الإصدارات الأقدم ما تزال متاحة في الفروع، لكنها ليست مكتملة مثل الفرع الحالي
لفهم الميزات المضافة في الإصدارات، ألقِ نظرة على تدوينتي القصيرة والمقالات الأحدث أو شاهد محاضرة DerbyCon
ملاحظة: أنصح باستخدام عدد محدود من الإعدادات داخل بيئتك لأسباب واضحة متعددة، مثل: الصيانة، وتوحد المخرجات، وسهولة الإدارة، وما إلى ذلك. لكن احرص على إنشاء إعدادات مخصصة لوحدات تحكم المجال والخوادم ومحطات العمل.
أنصح بشدة بالاطلاع على الإعدادات قبل تطبيقها في بيئة الإنتاج. سيتيح لك ذلك الحصول على تسجيل قابل للتنفيذ بأكبر قدر ممكن مع أقل قدر ممكن من الضوضاء.
ستحتاج إلى تثبيت الإعداد ومراقبة نتائجه في بيئتك الخاصة قبل نشره على نطاق واسع. على سبيل المثال، ستحتاج إلى استبعاد إجراءات برنامج مكافحة الفيروسات لديك، وإلا فسيملأ سجلاتك بمعلومات عديمة الفائدة على الأرجح.
$> git clone https://github.com/olafhartong/sysmon-modular.git
$> cd sysmon modular
$> . .\Merge-SysmonXml.ps1
$> Merge-AllSysmonXml -Path ( Get-ChildItem '[0-9]*\*.xml') -AsString | Out-File sysmonconfig.xml
الدوال التالية بفضل كبير من mbmy
الدالة الجديدة:
Find-RulesInBasePath - تأخذ مسارًا أساسيًا (أي C:\folder\sysmon-modular) وتعثر على جميع ملفات قواعد xml المرشحة بناءً على نمط regex
مثال:
PS C:\Users\sysmon\sysmon-modular> Find-RulesInBasePath -BasePath C:\users\sysmon\sysmon-modular\ -OutputRules | Out-File available_rules.txt
معاملات Merge-AllSysmonXml الجديدة:
-BasePath - يعثر على جميع ملفات قواعد xml المرشحة من مسار معين بناءً على نمط regex ويدمجها
مثال:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\
-ExcludeList - بالدمج مع -BasePath، يأخذ قائمة من القواعد ويستثنيها من القواعد التي تم العثور عليها قبل الدمج
مثال:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\ -ExcludeList C:\users\sysmon\sysmon-modular\exclude_rules.txt
-IncludeList - بالدمج مع -BasePath، يعثر على جميع القواعد المتاحة من المسار الأساسي لكنه يدمج فقط تلك المحددة في قائمة
مثال:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\ -IncludeList C:\users\sysmon\sysmon-modular\include_rules.txt
ملاحظة يجب أن يكون BasePath هو المسار الكامل إلى ملفات sysmon-modular (على سبيل المثال c:\tools\sysmon-modular)، وإلا فلن يتمكن PowerShell من تحديد موقعها، مما سينتج عنه إعداد افتراضي.
مثال على تنسيق قائمة التضمين/الاستبعاد:
3_network_connection_initiated\include_native_windows_tools.xml
12_13_14_registry_event\exclude_internet_explorer_settings.xml
12_13_14_registry_event\exclude_webroot.xml
17_18_pipe_event\include_winreg.xml
19_20_21_wmi_event\include_wmi_create.xml
2_file_create_time\exclude_chrome.xml
3_network_connection_initiated\include_native_windows_tools.xml
3_network_connection_initiated\include_ports_proxies.xml
8_create_remote_thread\include_general_commment.xml
8_create_remote_thread\include_psinject.xml
9_raw_access_read\include_general_commment.xml
بناء إعداد يحتوي على جميع قواعد sysmon-modular لمعرّفات أحداث معينة (بتضمين مجلد كامل) ثم تعطيل جميع معرّفات الأحداث التي لا تحتوي على قواعد مستوردة
مثال:
# generate the config
$sysmonconfig = Merge-AllSysmonXml -BasePath . -IncludeList $workingFolder\include.txt -VerboseLogging -PreserveComments
# flip off any rule groups where rules were not imported
foreach($rg in $sysmonconfig.SelectNodes("/Sysmon/EventFiltering/RuleGroup [*/@onmatch]"))
{
$ruleNodes = $rg.SelectNodes("./* [@onmatch]")
if( $ruleNodes -eq $null `
-or $ruleNodes.ChildNodes.count -gt 0)
{
# no rule nodes found (unlikely) or more than one rule found
continue
}
# RuleGroup with only one rule node
$ruleNode = $ruleNodes[0]
if($ruleNode.onmatch -eq "exclude" -and $ruleNode.ChildNodes.count -eq 0 )
{
$message = "{0} {1} has no matching conditions. Toggled to 'include' to limit output" -f $ruleNode.Name,$rg.Name
Write-Warning $message
$ruleNode.onmatch = "include"
$comment = $sysmonconfig.CreateComment($message)
$rg.AppendChild($comment) | Out-Null
}
}
مثال على تنسيق قائمة التضمين/الاستبعاد (لأسر القواعد/الأحداث بأكملها):
1_process_creation
5_process_ended
11_file_create
23_file_delete
7_image_load
17_18_pipe_event
شغّل بصلاحيات المسؤول
sysmon.exe -accepteula -i sysmonconfig.xml
شغّل بصلاحيات المسؤول
sysmon.exe -c sysmonconfig.xml
هذه ميزة جديدة، أنشأها cnnrshd
الإعدادات المولدة باستخدام هذا السكربت تحتفظ بالتعليقات، مع فرض مسافات بادئة XML صحيحة، مما يزيد قابلية القراءة ويتيح إسنادًا ترافقيًا أسهل بين ملفات القواعد
مثال على الأمر:
python merge_sysmon_configs.py config_lists/default_list/default_list.csv -f csv -b templates/sysmon_template.xml -o test.xml
** هذه الطريقة في توليد المحتوى ما تزال جديدة وتجريبية. لا يوجد دعم حتى الآن للإصدارات المخصصة مثل إصدار MDE augment وإصدار exclude-only.
توجد ثلاثة إعدادات رئيسية لـ Sysmon:
@SwiftOnSecurity: دليل تمهيدي رائع للكثير من الإعدادات. ابدأ بأمر واحد https://github.com/SwiftOnSecurity/sysmon-config/.
@cyb3rops: فرع من SwiftOnSecurity، يواكب أحدث المستجدات واستباقي. **https://github.com/Neo23x0/sysmon-config
@olafhartong: هذا المستودع، الذي يركز على سهولة الصيانة العالية مع ملاحظات قواعد مفصّلة للاستجابة الموجّهة وSIEM.
دليل مجتمعي ممتاز من @Carlos_Perez: https://github.com/trustedsec/SysmonCommunityGuide
طلبات السحب / تذاكر المشكلات والإضافات الجديدة ستكون موضع تقدير كبير!
بدأت سلسلة من التدوينات تغطي هذا المستودع؛
قوى اكتشاف نقاط النهاية بتكلفة منخفضة - الجزء 1 - MITRE ATT&CK وSysmon وإعدادي النمطي
قوى اكتشاف نقاط النهاية بتكلفة منخفضة - الجزء 2 - النشر والصيانة
قوى اكتشاف نقاط النهاية بتكلفة منخفضة - الجزء 3 - العبث بـ Sysmon
أسعى إلى ربط جميع الإعدادات بإطار ATT&CK كلما كان Sysmon قادرًا على اكتشاف ذلك. يرجى ملاحظة أن هذا إدخال سجل محتمل قد يؤدي إلى اكتشاف، وليس في جميع الحالات هو القياس (telemetry) الوحيد لتلك التقنية. بالإضافة إلى ذلك، قد تكون هناك تقنيات أخرى مرتبطة بتلك القاعدة، والتقنية المربوطة هي التي رأيتها الأكثر احتمالًا.
| النوع | الإعداد | الوصف |
|---|
| default | sysmonconfig.xml | هذا هو الإعداد المتوازن والأكثر استخدامًا، مزيد من المعلومات هنا |
| default+ | sysmonconfig-with-filedelete.xml | هذا هو الإعداد المتوازن والأكثر استخدامًا، مع معلومات إضافية بما في ذلك حفظ ملفات FileDelete |
| verbose | sysmonconfig-excludes-only.xml | هذا إعداد مفصّل جدًا، حيث يتم تضمين جميع الأحداث، ولا تُطبَّق سوى وحدات الاستبعاد. لا ينبغي استخدامه في الإنتاج دون تحقق، لأنه سيولّد كمية كبيرة من البيانات وقد يؤثر على الأداء. مزيد من المعلومات هنا |
| super verbose | sysmonconfig-research.xml | إعداد بتفصيل شديد. حجم السجلات المتوقع من هذا الملف مرتفع جدًا، لا تستخدمه في الإنتاج إطلاقًا! هذا الإعداد مخصص للبحث فقط، وسيستخدم المزيد من CPU/الذاكرة. فعّله فقط قبل تنفيذ التقنية التي تريد فحصها، وعند الانتهاء حمّل إعدادًا أخف. |
| MDE augment | sysmonconfig-mde-augmentation.xml | إعداد لتعزيز Defender for Endpoint، يهدف إلى تحسين المعلومات وتقليل التداخل قدر الإمكان. يعتمد هذا على الإعداد الافتراضي/المتوازن ولن يولّد جميع الأحداث لـ Sysmon، وتوجد تعليقات في الإعداد. لصالح الاستجابة للحوادث، فكّر في استخدام إعداد الاستبعادات فقط واستيعاب الأحداث المُثرية فقط. (سيتم نشر تدوينة بمزيد من الأسباب قريبًا) |