تنظيم قواعد Sigma لسجلات أحداث Windows¶
توضّح هذه الصفحة كيف تقوم Yamato Security بتنظيم قواعد Sigma الأصلية (upstream) الخاصة بسجلات أحداث Windows وتحويلها إلى صيغة أكثر قابلية للاستخدام، وذلك عبر إزالة التجريد عن حقل logsource وتصفية القواعد غير القابلة للاستخدام أو التي يصعب استخدامها. ويتم ذلك باستخدام أداة sigma-to-hayabusa-converter، التي تُستخدم بشكل أساسي لإنشاء مجموعة قواعد Sigma المنظَّمة المستضافة في hayabusa-rules. وتُستخدم مجموعة القواعد تلك بواسطة Hayabusa وVelociraptor.
المصدر
تُصان هذه الوثائق جنبًا إلى جنب مع أداة التحويل في Yamato-Security/sigma-to-hayabusa-converter. ونأمل أن تكون هذه المعلومات مفيدة أيضًا للمشاريع الأخرى التي ترغب في استخدام قواعد Sigma لاكتشاف الهجمات في سجلات أحداث Windows. راجع أيضًا إنشاء ملفات القواعد ومعدّلات الحقول.
الخلاصة¶
- إن إزالة التجريد عن حقل
logsourceوإنشاء ملفات قواعد.ymlجديدة للقواعد المُدمجة (built-in) إلى جانب القواعد الأصلية المبنية على Sysmon يجعل الدعم الكامل للأحداث المُدمجة في قواعد Sigma أسهل، ويجعل القواعد أيسر للمحلّلين على القراءة. - عند كتابة قواعد Sigma لسجلات أحداث Windows، من المهم فهم الفروق بين السجلات الأصلية المبنية على Sysmon والسجلات المُدمجة المتوافقة معها، ويُفضَّل كتابة قواعدك بحيث تكون متوافقة مع كليهما.
- كثير من المؤسسات لا تستطيع أو لا ترغب في تثبيت وكلاء Sysmon وصيانتهم على جميع نقاط النهاية (endpoints) الخاصة بها التي تعمل بنظام Windows، إما لأنها لا تملك الموارد المخصصة للتعامل مع ذلك، أو لأنها ترغب في تجنّب خطر أي تباطؤ أو أعطال قد يسببها Sysmon. ولهذا السبب، من المهم تفعيل أكبر عدد ممكن من سجلات الأحداث المُدمجة واستخدام أدوات قادرة على اكتشاف الهجمات في تلك السجلات المُدمجة.
التحديات المتعلقة بقواعد Sigma الأصلية (upstream) لسجلات أحداث Windows¶
استنادًا إلى تجربتنا، كان التحدي الرئيسي في إنشاء مُحلِّل (parser) أصلي لقواعد Sigma الخاصة بسجلات أحداث Windows هو دعم حقل logsource. وهذا حاليًا أحد الأمور القليلة التي لا يدعمها Hayabusa بشكل أصلي بعد، إذ إنه لا يزال معقدًا جدًا وقيد التطوير. وفي الوقت الحالي، نتجاوز هذه المشكلة عبر تحويل القواعد الأصلية إلى صيغة أسهل في الاستخدام، كما هو موضَّح بالتفصيل أدناه.
حول حقل logsource¶
في قواعد Sigma الخاصة بسجلات أحداث Windows، يُضبط حقل product على windows، متبوعًا إما بحقل service أو بحقل category.
مثال على حقل service:
مثال على حقل category:
حقول Service¶
حقول service بسيطة نسبيًا في التعامل معها، وهي تُخبر أيّ واجهة خلفية (backend) تستخدم قاعدة Sigma بأن تبحث في قناة واحدة أو عدة قنوات استنادًا إلى حقل Channel في سجل أحداث Windows بصيغة XML.
مثال على قناة واحدة
service: application يعادل إضافة شرط تحديد (selection) هو Channel: Application إلى قاعدة Sigma.
مثال على قنوات متعددة
يُنشئ service: applocker حاليًا أكبر عدد من القنوات التي يجب البحث فيها، لأن AppLocker يحفظ المعلومات في أربعة سجلات مختلفة. وللبحث في سجلات AppLocker فقط بشكل صحيح، يجب إضافة الشرط التالي إلى منطق قاعدة Sigma:
Channel:
- Microsoft-Windows-AppLocker/MSI and Script
- Microsoft-Windows-AppLocker/EXE and DLL
- Microsoft-Windows-AppLocker/Packaged app-Deployment
- Microsoft-Windows-AppLocker/Packaged app-Execution
القائمة الحالية لتعيينات الخدمات (service)
| الخدمة (Service) | القناة (Channel) |
|---|---|
| application | Application |
| application-experience | Microsoft-Windows-Application-Experience/Program-Telemetry, Microsoft-Windows-Application-Experience/Program-Compatibility-Assistant |
| applocker | Microsoft-Windows-AppLocker/MSI and Script, Microsoft-Windows-AppLocker/EXE and DLL, Microsoft-Windows-AppLocker/Packaged app-Deployment, Microsoft-Windows-AppLocker/Packaged app-Execution |
| appmodel-runtime | Microsoft-Windows-AppModel-Runtime/Admin |
| appxpackaging-om | Microsoft-Windows-AppxPackaging/Operational |
| bits-client | Microsoft-Windows-Bits-Client/Operational |
| capi2 | Microsoft-Windows-CAPI2/Operational |
| certificateservicesclient-lifecycle-system | Microsoft-Windows-CertificateServicesClient-Lifecycle-System/Operational |
| codeintegrity-operational | Microsoft-Windows-CodeIntegrity/Operational |
| diagnosis-scripted | Microsoft-Windows-Diagnosis-Scripted/Operational |
| dhcp | Microsoft-Windows-DHCP-Server/Operational |
| dns-client | Microsoft-Windows-DNS Client Events/Operational |
| dns-server | DNS Server |
| dns-server-analytic | Microsoft-Windows-DNS-Server/Analytical |
| driver-framework | Microsoft-Windows-DriverFrameworks-UserMode/Operational |
| firewall-as | Microsoft-Windows-Windows Firewall With Advanced Security/Firewall |
| hyper-v-worker | Microsoft-Windows-Hyper-V-Worker |
| kernel-event-tracing | Microsoft-Windows-Kernel-EventTracing |
| kernel-shimengine | Microsoft-Windows-Kernel-ShimEngine/Operational, Microsoft-Windows-Kernel-ShimEngine/Diagnostic |
| ldap_debug | Microsoft-Windows-LDAP-Client/Debug |
| lsa-server | Microsoft-Windows-LSA/Operational |
| microsoft-servicebus-client | Microsoft-ServiceBus-Client |
| msexchange-management | MSExchange Management |
| ntfs | Microsoft-Windows-Ntfs/Operational |
| ntlm | Microsoft-Windows-NTLM/Operational |
| openssh | OpenSSH/Operational |
| powershell | Microsoft-Windows-PowerShell/Operational, PowerShellCore/Operational |
| powershell-classic | Windows PowerShell |
| printservice-admin | Microsoft-Windows-PrintService/Admin |
| printservice-operational | Microsoft-Windows-PrintService/Operational |
| security | Security |
| security-mitigations | Microsoft-Windows-Security-Mitigations* |
| shell-core | Microsoft-Windows-Shell-Core/Operational |
| smbclient-connectivity | Microsoft-Windows-SmbClient/Connectivity |
| smbclient-security | Microsoft-Windows-SmbClient/Security |
| system | System |
| sysmon | Microsoft-Windows-Sysmon/Operational |
| taskscheduler | Microsoft-Windows-TaskScheduler/Operational |
| terminalservices-localsessionmanager | Microsoft-Windows-TerminalServices-LocalSessionManager/Operational |
| vhdmp | Microsoft-Windows-VHDMP/Operational |
| wmi | Microsoft-Windows-WMI-Activity/Operational |
| windefend | Microsoft-Windows-Windows Defender/Operational |
مصادر تعيينات الخدمات
لقد أنشأنا ملفات تعيين بصيغة YAML تربط الخدمات بأسماء القنوات، ونتولّى صيانتها دوريًا ونستضيفها في مستودع أداة التحويل. وهي مبنية على معلومات تعيين الخدمات المأخوذة من SigmaHQ/sigma tests/thor.yml: ومع أنه لا يبدو أن هذا ملف إعداد عام رسمي مُخصَّص للاستخدام، إلا أنه يبدو الأحدث تحديثًا.
حقول Category¶
تكتفي معظم حقول category بإضافة شرط للتحقق من معرّفات أحداث معينة في حقل EventID، بالإضافة إلى البحث في Channel محدَّدة. وأسماء الفئات مبنية في معظمها على أحداث Sysmon، مع بعض الفئات الإضافية لسجلات PowerShell المُدمجة و Windows Defender.
مثال على حقل Category
القائمة الحالية لتعيينات الفئات (category)
تُعيَّن بعض الفئات إلى أكثر من خدمة/معرّف حدث واحد (تظهر بخط عريض).
| الفئة (Category) | الخدمة (Service) | معرّفات الأحداث (EventIDs) |
|---|---|---|
| antivirus | windefend | 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1017, 1018, 1019, 1115, 1116 |
| clipboard_change | sysmon | 24 |
| create_remote_thread | sysmon | 8 |
| create_stream_hash | sysmon | 15 |
| dns_query | sysmon | 22 |
| driver_load | sysmon | 6 |
| file_block_executable | sysmon | 27 |
| file_block_shredding | sysmon | 28 |
| file_change | sysmon | 2 |
| file_creation | sysmon | 11 |
| file_delete | sysmon | 23, 26 |
| file_delete_detected | sysmon | 26 |
| file_executable_detected | sysmon | 29 |
| image_load | sysmon | 7 |
| network_connection | sysmon | 3 |
| network_connection | security | 5156 |
| pipe_created | sysmon | 17, 18 |
| process_access | sysmon | 10 |
| process_creation | sysmon | 1 |
| process_creation | security | 4688 |
| process_tampering | sysmon | 25 |
| process_termination | sysmon | 5 |
| ps_classic_provider_start | powershell-classic | 600 |
| ps_classic_start | powershell-classic | 400 |
| ps_module | powershell | 4103 |
| ps_script | powershell | 4104 |
| raw_access_thread | sysmon | 9 |
| registry_add | sysmon | 12 |
| registry_add | security | 4657 |
| registry_delete | sysmon | 12 |
| registry_event | sysmon | 12, 13, 14 |
| registry_event | security | 4657 |
| registry_rename | sysmon | 14 |
| registry_set | sysmon | 13 |
| registry_set | security | 4657 |
| sysmon_error | sysmon | 255 |
| sysmon_status | sysmon | 4, 16 |
| wmi_event | sysmon | 19, 20, 21 |
تحديات حقل Category
كما هو موضَّح أعلاه، يمكن أن تستخدم الفئة category نفسها خدمات ومعرّفات أحداث متعددة (مُشار إليها بخط عريض). وهذا يعني أنه من الممكن استخدام بعض قواعد Sigma المصمَّمة لـ sysmon مع سجلات أحداث security المُدمجة المماثلة في Windows، إذا كانت الحقول التي تستخدمها القاعدة موجودة أيضًا في سجل الأحداث المُدمج. وفي هذه الحالة، قد يلزم تحويل أسماء الحقول — وأحيانًا القيم أيضًا — لتتطابق مع أسماء الحقول والقيم الموجودة في سجل أحداث security المُدمج. ومع أن هذا قد يكون بسيطًا كإعادة تسمية بعض أسماء الحقول لفئات معينة، إلا أنه قد يتطلب في فئات أخرى تحويلات متنوعة في قيم الحقول أيضًا. وتُشرح كيفية إجرائنا لهذا التحويل، وكذلك التوافق بين سجلات sysmon وسجلات security، بالتفصيل أدناه.
مصادر تعيينات الفئات
تُستضاف ملفات تعيين الفئات بصيغة YAML أيضًا في مستودع أداة التحويل، وهي مبنية كذلك على المعلومات المأخوذة من SigmaHQ/sigma tests/thor.yml.
مزايا وتحديات تجريد مصدر السجل (log source)¶
هناك مزايا وتحديات على حد سواء لتجريد مصدر السجل وإنشاء تعيينات لمختلف قيم Channel وEventID والحقول في الواجهة الخلفية.
المزايا¶
- قد يكون من الأسهل تحويل أسماء حقلي
ChannelوEventIDإلى أسماء الحقول المناسبة في الواجهة الخلفية عند تحويل قواعد Sigma إلى استعلامات واجهات خلفية أخرى. - من الممكن دمج قاعدتين في قاعدة واحدة. على سبيل المثال، يمكن تسجيل أحداث إنشاء العمليات في
Sysmon 1وكذلك فيSecurity 4688. فبدلًا من كتابة قاعدتين تنظران إلى قنوات ومعرّفات أحداث وحقول مختلفة لكنهما تحتويان على المنطق نفسه فيما عدا ذلك، من الممكن توحيد الحقول لتطابق ما يستخدمه Sysmon، ثم جعل مُحوِّل الواجهة الخلفية يضيف حقليChannelوEventIDويحوّل معلومات الحقول الأخرى عند الحاجة. وهذا يجعل صيانة القواعد أسهل، لأن عدد القواعد التي يجب صيانتها يصبح أقل. - ومع أن ذلك نادر جدًا، إذا بدأ مصدر سجلٍ ما بتسجيل بياناته في
ChannelأوEventIDمختلف، فلن يلزم سوى تحديث منطق التعيين بدلًا من تحديث جميع قواعد Sigma، مما يجعل الصيانة أسهل.
التحديات¶
- ماذا يحدث إذا كانت قاعدة Sigma الأصلية المبنية على Sysmon تستخدم حقلًا غير موجود في السجلات المُدمجة من أجل تصفية النتائج الإيجابية الكاذبة (false positives)؟ هل ينبغي لك إنشاء القاعدة على أي حال مع إعطاء الأولوية لإمكانية الاكتشاف، أم تجاهلها لإعطاء الأولوية لتقليل النتائج الإيجابية الكاذبة؟ من الناحية المثالية، سيلزم إنشاء قاعدتين بمعلومات مختلفة في
severityوstatusوالنتائج الإيجابية الكاذبة، لكي يتمكن المستخدم من التعامل معها بشكل أفضل. - يجعل تصفية القواعد أكثر صعوبة، إذ لا يمكنك التصفية بالاعتماد فقط على حقلي
ChannelأوEventIDفي ملف.ymlأو على مسار ملف القاعدة إذا لم يكن الملف قد أُنشئ بعد — لأنها قاعدة مُشتقّة (derived) لسجل مُدمج بدلًا من قاعدة Sysmon الأصلية. كما أنه بما أن معرّف القاعدة نفسه واحد، فلا يمكنك التصفية بناءً على معرّفات القواعد. - يجعل تأكيد التنبيه أكثر صعوبة عندما يأتي التنبيه من قاعدة خاصة بالسجلات المُدمجة اشتُقّت من سجل Sysmon. إذ لن تتطابق أسماء الحقول وقيمها، ولذلك يحتاج المحلّل إلى فهم عملية التحويل المعقّدة نوعًا ما.
- يجعل إنشاء منطق الواجهة الخلفية أكثر تعقيدًا.
ورغم أننا لا نستطيع فعل شيء حيال المشكلة الأولى سوى إنشاء قواعد جديدة وصيانتها عندما توجد حالة استخدام مهمة تبرّر هذا الجهد، فقد قررنا — لمعالجة المشكلات من 2 إلى 4 — إزالة التجريد عن حقل logsource وإنشاء مجموعتين من القواعد لأي قاعدة يمكن أن تُنتج قواعد متعددة. تُخرَج القواعد القادرة على اكتشاف الهجمات في السجلات المُدمجة إلى دليل builtin، وتُخرَج القواعد الخاصة بـ Sysmon إلى دليل sysmon.
مثال على التحويل¶
إليك مثالًا بسيطًا لفهم عملية التحويل بشكل أفضل.
قبل التحويل — قاعدة Sigma الأصلية:
logsource:
category: process_creation
product: windows
detection:
selection:
- Image|endswith: '.exe'
condition: selection
بعد التحويل — قاعدة متوافقة مع Hayabusa لسجلات Sysmon:
logsource:
category: process_creation
product: windows
detection:
process_creation:
Channel: Microsoft-Windows-Sysmon/Operational
EventID: 1
selection:
- Image|endswith: '.exe'
condition: process_creation and selection
...وقاعدة متوافقة مع Hayabusa لسجلات Windows المُدمجة:
logsource:
category: process_creation
product: windows
detection:
process_creation:
Channel: Security
EventID: 4688
selection:
- NewProcessName|endswith: '.exe'
condition: process_creation and selection
كما ترى، أُنشئت قاعدتان: واحدة لسجلات Sysmon 1 وأخرى لسجلات Security 4688 المُدمجة. أُضيف شرط process_creation جديد يحتوي على معلومات القناة ومعرّف الحدث، وأُضيف إلى حقل condition لجعل هذا الشرط مطلوبًا. كما تم تغيير اسم الحقل الأصلي Image إلى NewProcessName.
القواسم المشتركة في التحويل¶
قبل الشرح المفصَّل لكيفية تحويلنا لفئات محددة، إليك الجزء من عملية التحويل الذي ينطبق على جميع القواعد.
- يتم تجاهل أي قاعدة يوجد معرّفها في
ignore-uuid-list.txt. حاليًا نتجاهل فقط القواعد التي تسبب نتائج إيجابية كاذبة على Windows Defender لأنها تحتوي على كلمات مفتاحية مثلmimikatz. - يتم تجاهل القواعد "النائبة" (Placeholder) لأنه لا يمكن استخدامها كما هي. وهذه هي القواعد الموضوعة في مجلد
rules-placeholderفي مستودع Sigma. -
يتم إسقاط القواعد التي تستخدم معدّلات حقول (field modifiers) غير متوافقة. يدعم Hayabusa غالبية معدّلات الحقول، لذا لن يُخرِج المُحوِّل أي قاعدة تستخدم معدّلًا غير هذه المعدّلات، تجنّبًا لأخطاء التحليل (راجع معدّلات الحقول):
all,base64,base64offset,cased,cidr,contains,endswith,endswithfield,equalsfield,exists,fieldref,gt,gte,lt,lte,re,startswith,utf16,utf16be,utf16le,wide,windash -
لا يتم تحويل القواعد التي تحتوي على أخطاء في الصياغة (syntax errors).
- يتم تحديث الوسوم (tags) في القواعد
deprecatedوunsupportedمن صيغة V1 إلى صيغة V2، التي تستخدم-بدلًا من_، للحفاظ على اتساق كل شيء ولتسهيل التعامل مع الاختصارات في Hayabusa. مثال: يصبحinitial_accessهوinitial-access. -
بما أننا نضيف معلومات
ChannelوEventIDإلى القواعد، فإننا ننشئ معرّف UUIDv4 جديدًا باستخدام تجزئة MD5 للمعرّف الأصلي، ونحدد المعرّف الأصلي في حقلrelated، ونضع علامة علىtypeبأنهderived. أما القواعد التي يمكن تحويلها إلى قواعد متعددة (sysmonوbuiltin)، فنحتاج إلى إنشاء معرّفات قواعد جديدة للقواعدbuiltinالمشتقّة أيضًا. وللقيام بذلك، نحسب تجزئة MD5 لمعرّف قاعدةsysmonونستخدمها لمعرّف UUIDv4. على سبيل المثال:قاعدة Sigma الأصلية:
قاعدة
sysmonالجديدة:title: 7Zip Compressing Dump Files id: ec570e53-4c76-45a9-804d-dc3f355ff7a7 related: - id: 1ac14d38-3dfc-4635-92c7-e3fd1c5f5bfc type: derivedقاعدة
builtinالجديدة: -
تُخرَج القواعد التي تكتشف الأمور في سجلات أحداث Windows المُدمجة إلى دليل
builtin، بينما تُخرَج القواعد التي تعتمد على سجلات Sysmon إلى دليلsysmon، مع أدلة فرعية تطابق الأدلة الموجودة في مستودع Sigma الأصلي (upstream).
قيود التحويل¶
يوجد خلل معروف واحد فقط في الوقت الحالي: لن تُضمَّن أسطر التعليقات في قواعد Sigma ضمن القواعد الناتجة ما لم تأتِ التعليقات بعد بعض التعليمات البرمجية (source code).
مقارنة أحداث Sysmon والأحداث المُدمجة وتحويل القواعد¶
إنشاء العملية¶
- الفئة:
process_creation - Sysmon
- القناة:
Microsoft-Windows-Sysmon/Operational - معرّف الحدث:
1
- القناة:
- السجل المُدمج
- القناة:
Security - معرّف الحدث:
4688
- القناة:
المقارنة
ملاحظات التحويل
- يجب فصل معلومات حقل
Userإلى حقليSubjectUserNameوSubjectDomainName. - يتغير اسم الحقل
LogonIdإلىSubjectLogonId، ويجب تحويل أي أحرف في القيمة الست عشرية (hex) إلى أحرف صغيرة. - يتغير اسم الحقل
ProcessIdإلىNewProcessId، ويجب تحويل القيمة إلى النظام الست عشري (hex). - يتغير اسم الحقل
ImageإلىNewProcessName. - يتغير اسم الحقل
ParentProcessIdإلىProcessId، ويجب تحويل القيمة إلى النظام الست عشري (hex). - يتغير اسم الحقل
ParentImageإلىParentProcessName. - يتغير اسم الحقل
IntegrityLevelإلىMandatoryLabel، ويلزم تحويل القيم التالي:Low:S-1-16-4096Medium:S-1-16-8192High:S-1-16-12288System:S-1-16-16384
- إذا كانت القاعدة تحتوي على الحقول التالية التي توجد فقط في أحداث
Security 4688، فإننا لا ننشئ قاعدةSysmon 1:SubjectUserSid,TokenElevationType,TargetUserSid,TargetUserName,TargetDomainName,TargetLogonId
- إذا كانت القاعدة تحتوي على الحقول التالية التي توجد فقط في أحداث
Sysmon 1، فإننا لا ننشئ قاعدةSecurity 4688:RuleName,UtcTime,ProcessGuid,FileVersion,Description,Product,Company,OriginalFileName,CurrentDirectory,LogonGuid,TerminalSessionId,Hashes,ParentProcessGuid,ParentCommandLine,ParentUser
-
هناك استثناء للنقطتين #8 و#9: حتى لو استُخدم حقل موجود في نوع سجل واحد فقط، فإذا كان ذلك الحقل ضمن شرط
ORفينبغي لك مع ذلك إنشاء تلك القاعدة. على سبيل المثال، القاعدة التالية ينبغي أن لا تُنتج قاعدةSecurity 4688لأن حقلOriginalFileNameمطلوب (منطقANDداخل التحديد):غير أن القاعدة ذات الشرط التالي ينبغي أن تُنشئ قاعدة
Security 4688لأنOriginalFileNameاختياري (منطقORداخل التحديد):تتعقّد الأمور في أن مُحلِّلك يجب أن يفهم ليس فقط المنطق داخل التحديدات (selections) بل أيضًا داخل حقل
condition. على سبيل المثال، القاعدة التالية لا ينبغي أن تُنشئ قاعدةSecurity 4688لأنها تستخدم منطقAND:selection_img: Image|endswith: \addinutil.exe selection_orig: OriginalFileName: AddInUtil.exe condition: selection_img and selection_origغير أن القاعدة التالية ينبغي أن تُنشئ قاعدة
Security 4688لأنها تستخدم منطقOR:
ملاحظات أخرى
- يُظهر حقل
SubjectUserSidفيSecurity 4688مُعرّف الأمان (SID)؛ غير أنه فيMessageالمعروض في سجل الأحداث يُحوَّل إلىDOMAIN\User. - قد لا تتضمن أحداث
Security 4688معلومات خيارات سطر الأوامر فيCommandLineتبعًا للإعدادات. - يُعرض
TokenElevationTypeكما هو فيMessageدون معالجة عرضه. - تُحوَّل قيم مثل
S-1-16-4096داخلMandatoryLabelإلىMandatory Label\Low Mandatory Levelونحو ذلك فيMessageالمعروض.
إعدادات السجل المُدمج
غير مُفعَّل افتراضيًا
سجلات أحداث إنشاء العمليات المُدمجة المهمة Security 4688 ليست مُفعَّلة افتراضيًا. تحتاج إلى تفعيل أحداث 4688 وتسجيل خيارات سطر الأوامر كليهما لكي تتمكن من استخدام غالبية قواعد Sigma.
التفعيل باستخدام نهج المجموعة (group policy):
Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Configuration > Detailed Tracking > Audit Process Creation:EnabledAdministrative Templates > System > Audit Process Creation > Include command line in process creation events:Enabled
التفعيل عبر سطر الأوامر:
auditpol /set /subcategory:{0CCE922B-69AE-11D9-BED3-505054503030} /success:enable /failure:enable
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit /v ProcessCreationIncludeCmdLine_Enabled /f /t REG_DWORD /d 1
اتصال الشبكة¶
- الفئة:
network_connection - Sysmon
- القناة:
Microsoft-Windows-Sysmon/Operational - معرّف الحدث:
3
- القناة:
- السجل المُدمج
- القناة:
Security - معرّف الحدث:
5156
- القناة:
المقارنة
ملاحظات التحويل
- يتغير اسم الحقل
ProcessIdإلىProcessID. - يتغير اسم الحقل
ImageإلىApplication، ويتغيرC:\إلى\device\harddiskvolume?\. (ملاحظة: بما أننا لا نعرف رقم وحدة تخزين القرص الصلب، نستبدله بحرف بدل (wildcard) مكوّن من حرف واحد وهو?.) - تتغير قيمة الحقل
Protocolمنtcpإلى6ومنudpإلى17. - يتغير اسم الحقل
InitiatedإلىDirection، وتتغير القيمةtrueإلى%%14593والقيمةfalseإلى%%14592. - يتغير اسم الحقل
SourceIpإلىSourceAddress. - يتغير اسم الحقل
DestinationIpإلىDestAddress. - يتغير اسم الحقل
DestinationPortإلىDestPort.
إعدادات السجل المُدمج
غير مُفعَّل افتراضيًا
سجلات اتصال الشبكة المُدمجة Security 5156 ليست مُفعَّلة افتراضيًا. فهي تنتج كمية كبيرة من السجلات، مما قد يؤدي إلى الكتابة فوق سجلات مهمة أخرى في سجل أحداث Security وربما إبطاء النظام إذا كان لديه عدد كبير من اتصالات الشبكة. تأكّد من أن الحد الأقصى لحجم ملف سجل Security مرتفع، واختبر للتأكد من عدم وجود آثار سلبية على النظام.
التفعيل باستخدام نهج المجموعة (group policy):
Computer Configuration -> Windows Settings -> Security Settings -> Advanced Audit Policy Configuration -> System Audit Policies -> Object Access -> Filtering Platform Connection:Success and Failure
التفعيل عبر سطر الأوامر:
...أو ما يلي إذا كنت تستخدم لغة (locale) غير الإنجليزية:
راجع أيضًا
لمزيد من المعلومات حول تفعيل سجلات أحداث Windows المُدمجة اللازمة لالتقاط الأدلة التي تعتمد عليها هذه القواعد، راجع تسجيل Windows وSysmon ومشروع EnableWindowsLogSettings.
نصائح لكتابة قواعد Sigma¶
Tip
إذا استخدمت أي حقل موجود في سجل sysmon لكنه غير موجود في سجل builtin، فتأكّد من جعل ذلك الحقل اختياريًا حتى يظل من الممكن استخدام القاعدة مع سجلات builtin.
على سبيل المثال:
يبحث هذا التحديد عن الحالة التي يكون فيها اسم العملية (Image) هو addinutil.exe. المشكلة أن المهاجم يمكنه ببساطة إعادة تسمية الملف لتجاوز القاعدة. أما حقل OriginalFileName، الموجود في سجلات Sysmon فقط، فهو اسم الملف المضمَّن داخل الملف الثنائي (binary) وقت الترجمة (compile time). وحتى لو أعاد المهاجم تسمية الملف، فلن يتغير الاسم المضمَّن، ولذلك يمكن لهذه القاعدة اكتشاف الهجمات التي أعاد فيها المهاجم تسمية الملف عند استخدام Sysmon، كما يمكنها اكتشاف الهجمات التي لم يتغير فيها اسم الملف عند استخدام السجلات المُدمجة القياسية.
قواعد Sigma المُحوَّلة مسبقًا¶
إن قواعد Sigma المنظَّمة بالطريقة الموصوفة في هذه الصفحة — عبر إزالة التجريد عن حقل logsource — مستضافة في مستودع hayabusa-rules ضمن مجلد sigma.
بيئة الأداة¶
إذا كنت ترغب في تحويل قواعد Sigma محليًا إلى صيغة متوافقة مع Hayabusa، فعليك أولًا تثبيت Poetry. يُرجى الرجوع إلى وثائق التثبيت الرسمية الخاصة بـ Poetry.
استخدام الأداة¶
sigma-to-hayabusa-converter.py هي أداتنا الرئيسية لتحويل حقل logsource في قواعد Sigma إلى صيغة متوافقة مع Hayabusa. نفّذ المهام التالية لتشغيلها:
git clone https://github.com/SigmaHQ/sigma.git
git clone https://github.com/Yamato-Security/sigma-to-hayabusa-converter.git
cd sigma-to-hayabusa-converter
poetry install --no-root
poetry run python sigma-to-hayabusa-converter.py -r ../sigma -o ./converted_sigma_rules
بعد تنفيذ الأوامر أعلاه، ستُخرَج القواعد المُحوَّلة إلى الصيغة المتوافقة مع Hayabusa إلى دليل ./converted_sigma_rules.

