Windows इवेंट लॉग के लिए Sigma नियमों का क्यूरेशन¶
यह पेज दस्तावेज़ करता है कि Yamato Security किस प्रकार Windows इवेंट लॉग के लिए अपस्ट्रीम Sigma नियमों को logsource फ़ील्ड को डी-एब्स्ट्रैक्ट करके और ऐसे नियमों को फ़िल्टर करके — जो उपयोग करने योग्य नहीं हैं या उपयोग करने में कठिन हैं — एक अधिक उपयोगी रूप में क्यूरेट करती है। यह sigma-to-hayabusa-converter टूल से किया जाता है, जिसका उपयोग मुख्य रूप से hayabusa-rules में होस्ट किए गए क्यूरेटेड Sigma रूलसेट को बनाने के लिए किया जाता है। उस रूलसेट का उपयोग Hayabusa और Velociraptor करते हैं।
स्रोत
यह दस्तावेज़ीकरण कनवर्टर टूल के साथ Yamato-Security/sigma-to-hayabusa-converter पर बनाए रखा जाता है। हमें आशा है कि यह जानकारी अन्य प्रोजेक्ट्स के लिए भी उपयोगी होगी जो Windows इवेंट लॉग में हमलों का पता लगाने के लिए Sigma नियमों का उपयोग करना चाहते हैं। यह भी देखें नियम फ़ाइलें बनाना और फ़ील्ड मॉडिफ़ायर।
TL;DR¶
logsourceफ़ील्ड को डी-एब्स्ट्रैक्ट करना और बिल्ट-इन नियमों के साथ-साथ मूल Sysmon-आधारित नियमों के लिए नई.ymlनियम फ़ाइलें बनाना Sigma नियमों के लिए संपूर्ण बिल्ट-इन इवेंट समर्थन को आसान बनाता है, और नियमों को विश्लेषकों के लिए पढ़ने में आसान बनाता है।- Windows इवेंट लॉग के लिए Sigma नियम लिखते समय, मूल Sysmon-आधारित लॉग और संगत बिल्ट-इन लॉग के बीच के अंतर को समझना महत्वपूर्ण है, और आदर्श रूप से अपने नियमों को इस तरह लिखना चाहिए कि वे दोनों के साथ संगत हों।
- कई संगठन अपने सभी Windows एंडपॉइंट पर Sysmon एजेंट को इंस्टॉल और मेंटेन नहीं कर सकते या नहीं करना चाहते, क्योंकि उनके पास इसे संभालने के लिए समर्पित संसाधन नहीं होते, या वे Sysmon के कारण होने वाली किसी भी धीमेपन या क्रैश के जोखिम से बचना चाहते हैं। इसी कारण, यह महत्वपूर्ण है कि जितने संभव हो उतने बिल्ट-इन इवेंट लॉग सक्षम किए जाएं और ऐसे टूल का उपयोग किया जाए जो उन बिल्ट-इन लॉग में हमलों का पता लगा सकें।
Windows इवेंट लॉग के लिए अपस्ट्रीम Sigma नियमों के साथ चुनौतियाँ¶
हमारे अनुभव में, Windows इवेंट लॉग के लिए एक नेटिव Sigma नियम पार्सर बनाने की मुख्य चुनौती logsource फ़ील्ड का समर्थन करना रही है। वर्तमान में यह उन कुछ चीज़ों में से एक है जिसका Hayabusa अभी तक नेटिव रूप से समर्थन नहीं करता, क्योंकि यह अभी भी बहुत जटिल है और प्रगति पर है। फ़िलहाल, हम अपस्ट्रीम नियमों को एक आसान-उपयोग-योग्य फ़ॉर्मेट में परिवर्तित करके इसका समाधान करते हैं, जैसा कि नीचे विस्तार से बताया गया है।
logsource फ़ील्ड के बारे में¶
Windows इवेंट लॉग के लिए Sigma नियमों में, product फ़ील्ड को windows पर सेट किया जाता है, जिसके बाद या तो service फ़ील्ड या category फ़ील्ड आता है।
service फ़ील्ड का उदाहरण:
category फ़ील्ड का उदाहरण:
Service फ़ील्ड¶
service फ़ील्ड को संभालना अपेक्षाकृत सरल है और यह Sigma नियम का उपयोग करने वाले किसी भी बैकएंड को Windows XML इवेंट लॉग में Channel फ़ील्ड के आधार पर एक या कई चैनलों में खोज करने के लिए बताता है।
सिंगल चैनल उदाहरण
service: application का अर्थ Sigma नियम में Channel: Application की एक selection शर्त जोड़ने के समान ही है।
मल्टीपल चैनल उदाहरण
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 |
service मैपिंग के स्रोत
हमने services से चैनल नामों के लिए YAML मैपिंग फ़ाइलें बनाई हैं, जिन्हें हम समय-समय पर मेंटेन करते हैं और कनवर्टर रिपॉज़िटरी में होस्ट करते हैं। ये SigmaHQ/sigma tests/thor.yml से service मैपिंग जानकारी पर आधारित हैं: हालाँकि यह लोगों के उपयोग के लिए एक आधिकारिक जेनेरिक कॉन्फ़िग फ़ाइल नहीं लगती, फिर भी यह सबसे अद्यतित प्रतीत होती है।
Category फ़ील्ड¶
अधिकांश category फ़ील्ड किसी विशिष्ट Channel की खोज के अतिरिक्त EventID फ़ील्ड में कुछ निश्चित इवेंट ID की जाँच के लिए बस एक शर्त जोड़ते हैं। category नाम अधिकतर Sysmon इवेंट पर आधारित हैं, जिनमें बिल्ट-इन PowerShell लॉग और Windows Defender के लिए कुछ अतिरिक्त categories हैं।
category फ़ील्ड का उदाहरण
category मैपिंग की वर्तमान सूची
कुछ categories एक से अधिक service/EventID से मैप होती हैं (बोल्ड में दिखाया गया है)।
| 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 कई services और इवेंट ID का उपयोग कर सकती है (बोल्ड में दर्शाया गया है)। इसका अर्थ है कि sysmon के लिए डिज़ाइन किए गए कुछ Sigma नियमों का उपयोग समान बिल्ट-इन Windows security इवेंट लॉग के साथ करना संभव है, यदि नियम द्वारा उपयोग की जाने वाली फ़ील्ड बिल्ट-इन इवेंट लॉग में भी मौजूद हों। ऐसी स्थिति में, फ़ील्ड नामों — और कभी-कभी मानों — को भी बिल्ट-इन security इवेंट लॉग के फ़ील्ड नामों और मानों से मिलाने के लिए परिवर्तित करने की आवश्यकता हो सकती है। हालाँकि कुछ categories के लिए यह उतना ही सरल हो सकता है जितना कुछ फ़ील्ड नामों को बदलना, अन्य categories के लिए इसमें फ़ील्ड मानों में भी विभिन्न परिवर्तनों की आवश्यकता हो सकती है। हम यह परिवर्तन कैसे करते हैं, और sysmon लॉग तथा security लॉग के बीच संगतता के बारे में नीचे विस्तार से बताया गया है।
category मैपिंग के स्रोत
categories के लिए YAML मैपिंग फ़ाइलें भी कनवर्टर रिपॉज़िटरी में होस्ट की गई हैं और SigmaHQ/sigma tests/thor.yml की जानकारी पर आधारित हैं।
लॉग स्रोत को एब्स्ट्रैक्ट करने के लाभ और चुनौतियाँ¶
लॉग स्रोत को एब्स्ट्रैक्ट करने और बैकएंड पर विभिन्न Channel, EventID और फ़ील्ड के लिए मैपिंग बनाने के लाभ और चुनौतियाँ दोनों हैं।
लाभ¶
- Sigma नियमों को अन्य बैकएंड क्वेरी में परिवर्तित करते समय
ChannelऔरEventIDफ़ील्ड नामों को उपयुक्त बैकएंड फ़ील्ड नामों में परिवर्तित करना आसान हो सकता है। - दो नियमों को एक में समेकित करना संभव है। उदाहरण के लिए, प्रोसेस निर्माण इवेंट को
Sysmon 1के साथ-साथSecurity 4688में भी लॉग किया जा सकता है। ऐसे दो नियम लिखने के बजाय जो अलग-अलग चैनल, इवेंट ID और फ़ील्ड देखते हैं लेकिन अन्यथा समान लॉजिक रखते हैं, फ़ील्ड को Sysmon द्वारा उपयोग किए जाने वाले रूप में मानकीकृत करना संभव है और फिर एक बैकएंड कनवर्टर सेChannelऔरEventIDफ़ील्ड जुड़वाना तथा आवश्यकता होने पर अन्य फ़ील्ड जानकारी परिवर्तित करवाना संभव है। इससे नियमों का रखरखाव आसान हो जाता है, क्योंकि रखरखाव के लिए कम नियम होते हैं। - हालाँकि बहुत दुर्लभ, यदि कोई लॉग स्रोत अपना डेटा किसी भिन्न
ChannelयाEventIDमें लॉग करना शुरू कर देता है, तो सभी Sigma नियमों को अपडेट करने के बजाय केवल मैपिंग लॉजिक को अपडेट करने की आवश्यकता होती है, जिससे रखरखाव आसान हो जाता है।
चुनौतियाँ¶
- यदि Sysmon पर आधारित मूल Sigma नियम किसी ऐसे फ़ील्ड का उपयोग करता है जो झूठे-सकारात्मक (false positive) को फ़िल्टर करने के लिए बिल्ट-इन लॉग में मौजूद नहीं है, तो क्या होगा? क्या आपको संभावित पहचान को प्राथमिकता देते हुए फिर भी नियम बनाना चाहिए, या कम झूठे-सकारात्मक को प्राथमिकता देने के लिए इसे अनदेखा करना चाहिए? आदर्श रूप से, उपयोगकर्ता के लिए इसे बेहतर ढंग से संभालने हेतु अलग-अलग
severity,status, और झूठे-सकारात्मक जानकारी के साथ दो नियम बनाने की आवश्यकता होगी। - यह नियमों को फ़िल्टर करना अधिक कठिन बना देता है, क्योंकि आप केवल
.ymlफ़ाइल मेंChannelयाEventIDफ़ील्ड या नियम के फ़ाइल पथ के आधार पर फ़िल्टर नहीं कर सकते यदि फ़ाइल अभी तक बनाई नहीं गई है — क्योंकि यह मूल Sysmon नियम के बजाय बिल्ट-इन लॉग के लिए एक व्युत्पन्न (derived) नियम है। साथ ही, चूँकि नियम ID समान होती है, आप नियम ID पर फ़िल्टर नहीं कर सकते। - जब अलर्ट किसी ऐसे बिल्ट-इन लॉग के नियम से आता है जो Sysmon लॉग से व्युत्पन्न किया गया था, तो यह अलर्ट की पुष्टि करना अधिक कठिन बना देता है। फ़ील्ड नाम और मान मेल नहीं खाएंगे, इसलिए विश्लेषक को कुछ हद तक जटिल परिवर्तन प्रक्रिया को समझने की आवश्यकता होती है।
- यह बैकएंड लॉजिक बनाना अधिक जटिल बना देता है।
जबकि पहली समस्या के बारे में हम कुछ नहीं कर सकते — सिवाय तब जब कोई महत्वपूर्ण उपयोग-मामला हो जो प्रयास को उचित ठहराता है, तब नए नियम बनाने और उनका रखरखाव करने के — समस्याओं 2–4 को हल करने के लिए हमने logsource फ़ील्ड को डी-एब्स्ट्रैक्ट करने और किसी भी ऐसे नियम के लिए दो सेट नियम बनाने का निर्णय लिया है जो कई नियम उत्पन्न कर सकते हैं। ऐसे नियम जो बिल्ट-इन लॉग में हमलों का पता लगा सकते हैं उन्हें builtin डायरेक्टरी में आउटपुट किया जाता है, और Sysmon के लिए नियम sysmon डायरेक्टरी में आउटपुट किए जाते हैं।
परिवर्तन का उदाहरण¶
परिवर्तन प्रक्रिया को बेहतर ढंग से समझने के लिए यहाँ एक सरल उदाहरण दिया गया है।
परिवर्तन से पहले — मूल Sigma नियम:
logsource:
category: process_creation
product: windows
detection:
selection:
- Image|endswith: '.exe'
condition: selection
परिवर्तन के बाद — Sysmon लॉग के लिए एक Hayabusa-संगत नियम:
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
...और Windows बिल्ट-इन लॉग के लिए एक Hayabusa-संगत नियम:
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 लॉग के लिए। चैनल और इवेंट ID जानकारी के साथ एक नई process_creation शर्त जोड़ी गई है, और इस शर्त को अनिवार्य करने के लिए इसे condition फ़ील्ड में जोड़ा गया है। साथ ही, मूल Image फ़ील्ड नाम को NewProcessName में बदल दिया गया है।
परिवर्तन की समानताएँ¶
विशिष्ट categories को हम कैसे परिवर्तित करते हैं, इसे विस्तार से समझाने से पहले, यहाँ परिवर्तन का वह भाग दिया गया है जो सभी नियमों पर लागू होता है।
- किसी भी नियम को जिसकी ID
ignore-uuid-list.txtमें है, अनदेखा किया जाता है। वर्तमान में हम केवल उन नियमों को अनदेखा करते हैं जो Windows Defender पर झूठे-सकारात्मक उत्पन्न करते हैं क्योंकि उनमेंmimikatzजैसे कीवर्ड होते हैं। - "Placeholder" नियमों को अनदेखा किया जाता है क्योंकि उन्हें जैसे-के-तैसे उपयोग नहीं किया जा सकता। ये वे नियम हैं जो Sigma रिपॉज़िटरी में
rules-placeholderफ़ोल्डर में रखे गए हैं। -
असंगत फ़ील्ड मॉडिफ़ायर का उपयोग करने वाले नियमों को हटा दिया जाता है। Hayabusa अधिकांश फ़ील्ड मॉडिफ़ायर का समर्थन करता है, इसलिए कनवर्टर पार्सिंग त्रुटियों से बचने के लिए इनके अलावा किसी मॉडिफ़ायर का उपयोग करने वाला कोई नियम आउटपुट नहीं करेगा (देखें फ़ील्ड मॉडिफ़ायर):
all,base64,base64offset,cased,cidr,contains,endswith,endswithfield,equalsfield,exists,fieldref,gt,gte,lt,lte,re,startswith,utf16,utf16be,utf16le,wide,windash -
सिंटैक्स त्रुटियों वाले नियमों को परिवर्तित नहीं किया जाता।
deprecatedऔरunsupportedनियमों में टैग को V1 फ़ॉर्मेट से V2 फ़ॉर्मेट में अपडेट किया जाता है, जो_के बजाय-का उपयोग करता है, ताकि सब कुछ सुसंगत बना रहे और Hayabusa में संक्षिप्ताक्षरों को अधिक आसानी से संभाला जा सके। उदाहरण:initial_accessबन जाता हैinitial-access।-
चूँकि हम नियमों में
ChannelऔरEventIDजानकारी जोड़ रहे हैं, इसलिए हम मूल ID के MD5 हैश का उपयोग करके एक नई UUIDv4 ID बनाते हैं, मूल ID कोrelatedफ़ील्ड में निर्दिष्ट करते हैं, औरtypeकोderivedके रूप में चिह्नित करते हैं। ऐसे नियमों के लिए जिन्हें कई नियमों (sysmonऔरbuiltin) में परिवर्तित किया जा सकता है, हमें व्युत्पन्नbuiltinनियमों के लिए भी नई नियम ID बनानी होती हैं। ऐसा करने के लिए, हमsysmonनियम ID का MD5 हैश निकालते हैं और उसका उपयोग UUIDv4 ID के लिए करते हैं। उदाहरण के लिए:मूल 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 रिपॉज़िटरी की डायरेक्टरियों से मेल खाती उप-डायरेक्टरियाँ होती हैं।
परिवर्तन की सीमाएँ¶
फ़िलहाल केवल एक ज्ञात बग है: Sigma नियमों में टिप्पणी पंक्तियाँ आउटपुट नियमों में शामिल नहीं की जाएंगी जब तक कि टिप्पणियाँ किसी सोर्स कोड के बाद न आती हों।
Sysmon और बिल्ट-इन इवेंट की तुलना तथा नियम परिवर्तन¶
Process creation¶
- Category:
process_creation - Sysmon
- Channel:
Microsoft-Windows-Sysmon/Operational - Event ID:
1
- Channel:
- बिल्ट-इन लॉग
- Channel:
Security - Event ID:
4688
- Channel:
तुलना
परिवर्तन नोट्स
Userफ़ील्ड जानकारी कोSubjectUserNameऔरSubjectDomainNameफ़ील्ड में अलग करने की आवश्यकता होती है।LogonIdफ़ील्ड नाम बदलकरSubjectLogonIdहो जाता है, और हेक्स मान में कोई भी अक्षर लोअरकेस में होना चाहिए।ProcessIdफ़ील्ड नाम बदलकरNewProcessIdहो जाता है, और मान को हेक्स में परिवर्तित करने की आवश्यकता होती है।Imageफ़ील्ड नाम बदलकरNewProcessNameहो जाता है।ParentProcessIdफ़ील्ड नाम बदलकरProcessIdहो जाता है, और मान को हेक्स में परिवर्तित करने की आवश्यकता होती है।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फ़ील्ड आवश्यक है (selection के भीतरANDलॉजिक):¶हालाँकि, निम्नलिखित शर्त वाले नियम को एक
Security 4688नियम बनाना चाहिए क्योंकिOriginalFileNameवैकल्पिक है (selection के भीतर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लॉजिक का उपयोग करता है:
अन्य नोट्स
Security 4688मेंSubjectUserSidफ़ील्ड SID दिखाता है; हालाँकि, रेंडर किए गए इवेंट लॉगMessageमें इसेDOMAIN\Userमें परिवर्तित कर दिया जाता है।- सेटिंग्स के आधार पर
Security 4688इवेंट मेंCommandLineमें कमांड लाइन विकल्प जानकारी शामिल नहीं हो सकती। TokenElevationTypeकोMessageमें जैसे-का-तैसा प्रदर्शित किया जाता है और रेंडर नहीं किया जाता।MandatoryLabelके भीतरS-1-16-4096आदि को रेंडर किए गएMessageमेंMandatory Label\Low Mandatory Levelआदि में परिवर्तित कर दिया जाता है।
बिल्ट-इन लॉग सेटिंग्स
डिफ़ॉल्ट रूप से सक्षम नहीं
महत्वपूर्ण बिल्ट-इन Security 4688 प्रोसेस निर्माण इवेंट लॉग डिफ़ॉल्ट रूप से सक्षम नहीं होते। अधिकांश Sigma नियमों का उपयोग करने के लिए आपको 4688 इवेंट और कमांड लाइन विकल्प लॉगिंग दोनों को सक्षम करना होगा।
ग्रुप पॉलिसी से सक्षम करना:
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¶
- Category:
network_connection - Sysmon
- Channel:
Microsoft-Windows-Sysmon/Operational - Event ID:
3
- Channel:
- बिल्ट-इन लॉग
- Channel:
Security - Event ID:
5156
- Channel:
तुलना
परिवर्तन नोट्स
ProcessIdफ़ील्ड नाम बदलकरProcessIDहो जाता है।Imageफ़ील्ड नाम बदलकरApplicationहो जाता है, औरC:\बदलकर\device\harddiskvolume?\हो जाता है। (ध्यान दें: चूँकि हमें हार्ड डिस्क वॉल्यूम संख्या ज्ञात नहीं होती, इसलिए हम इसे एकल-वर्ण वाइल्डकार्ड?से बदल देते हैं।)Protocolफ़ील्ड का मानtcpबदलकर6औरudpबदलकर17हो जाता है।Initiatedफ़ील्ड नाम बदलकरDirectionहो जाता है, औरtrueका मान बदलकर%%14593औरfalseबदलकर%%14592हो जाता है।SourceIpफ़ील्ड नाम बदलकरSourceAddressहो जाता है।DestinationIpफ़ील्ड नाम बदलकरDestAddressहो जाता है।DestinationPortफ़ील्ड नाम बदलकरDestPortहो जाता है।
बिल्ट-इन लॉग सेटिंग्स
डिफ़ॉल्ट रूप से सक्षम नहीं
बिल्ट-इन Security 5156 नेटवर्क कनेक्शन लॉग डिफ़ॉल्ट रूप से सक्षम नहीं होते। ये बड़ी मात्रा में लॉग बनाते हैं, जो Security इवेंट लॉग में अन्य महत्वपूर्ण लॉग को अधिलेखित कर सकते हैं और यदि सिस्टम में नेटवर्क कनेक्शनों की संख्या अधिक हो तो संभावित रूप से सिस्टम को धीमा कर सकते हैं। सुनिश्चित करें कि Security लॉग के लिए अधिकतम फ़ाइल आकार अधिक हो, और परीक्षण करें कि सिस्टम पर कोई प्रतिकूल प्रभाव न पड़े।
ग्रुप पॉलिसी से सक्षम करना:
Computer Configuration -> Windows Settings -> Security Settings -> Advanced Audit Policy Configuration -> System Audit Policies -> Object Access -> Filtering Platform Connection:Success and Failure
कमांड लाइन पर सक्षम करना:
...या यदि आप गैर-अंग्रेज़ी लोकेल का उपयोग कर रहे हैं तो निम्नलिखित:
यह भी देखें
इन नियमों जिन साक्ष्यों पर निर्भर करते हैं, उन्हें कैप्चर करने के लिए आवश्यक बिल्ट-इन Windows इवेंट लॉग को सक्षम करने के बारे में अधिक जानकारी के लिए, देखें Windows Logging & Sysmon और EnableWindowsLogSettings प्रोजेक्ट।
Sigma नियम लेखन सलाह¶
Tip
यदि आप कोई ऐसा फ़ील्ड उपयोग करते हैं जो sysmon लॉग में मौजूद है लेकिन builtin लॉग में नहीं, तो सुनिश्चित करें कि आप उस फ़ील्ड को वैकल्पिक बनाएं ताकि नियम का उपयोग builtin लॉग के लिए भी संभव रहे।
उदाहरण के लिए:
यह selection तब खोजता है जब प्रोसेस (Image) का नाम addinutil.exe हो। समस्या यह है कि एक हमलावर नियम को बायपास करने के लिए बस फ़ाइल का नाम बदल सकता है। OriginalFileName फ़ील्ड, जो केवल Sysmon लॉग में मौजूद होता है, वह फ़ाइलनाम है जो कंपाइल समय पर बाइनरी में एम्बेड हो जाता है। भले ही कोई हमलावर फ़ाइल का नाम बदल दे, एम्बेडेड नाम नहीं बदलेगा, इसलिए यह नियम Sysmon का उपयोग करते समय ऐसे हमलों का पता लगा सकता है जहाँ हमलावर ने फ़ाइल का नाम बदल दिया हो, और मानक बिल्ट-इन लॉग का उपयोग करते समय ऐसे हमलों का भी पता लगा सकता है जहाँ फ़ाइलनाम नहीं बदला गया हो।
पूर्व-परिवर्तित Sigma नियम¶
इस पेज पर वर्णित तरीके से — logsource फ़ील्ड को डी-एब्स्ट्रैक्ट करके — क्यूरेट किए गए Sigma नियम hayabusa-rules रिपॉज़िटरी में sigma फ़ोल्डर के अंतर्गत होस्ट किए गए हैं।
टूल परिवेश¶
यदि आप स्थानीय रूप से Sigma नियमों को Hayabusa-संगत फ़ॉर्मेट में परिवर्तित करना चाहते हैं, तो आपको सबसे पहले Poetry इंस्टॉल करना होगा। कृपया आधिकारिक Poetry इंस्टॉलेशन दस्तावेज़ीकरण देखें।
टूल उपयोग¶
sigma-to-hayabusa-converter.py Sigma नियमों के logsource फ़ील्ड को 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 डायरेक्टरी में आउटपुट किए जाएंगे।

