
ब्लू टीमों के लिए इंटरैक्टिव डेटा विज़ुअलाइज़ेशन टूल, जो डिटेक्शन डेटा का विश्लेषण करने, संबंधों को समझने, अलर्ट थकान को कम करने और घटना प्रतिक्रिया में सुधार करने में मदद करता है।
Detectree ब्लू टीमों के लिए एक डेटा विज़ुअलाइज़ेशन टूल है। यह डिटेक्शन डेटा का ग्राफिकल प्रतिनिधित्व प्रदान करता है, जो एक विश्लेषक को अंतर्निहित गतिविधि की प्रकृति के बारे में लगभग तुरंत राय उत्पन्न करने और डेटा बिंदुओं के बीच जटिल संबंधों को समझने की अनुमति देता है। अंततः, यह प्रतिक्रिया समय को कम करने, अलर्ट थकान को कम करने और टीमों के भीतर विश्लेषकों के बीच संचार को सुविधाजनक बनाने में मदद कर सकता है।
Detectree svelte में लिखा गया है और force-graph जावास्क्रिप्ट लाइब्रेरी पर आधारित है।
अपने वातावरण में Detectree का उपयोग करने के लिए डिटेक्शन को न्यूनतम गुणों के सेट को संतुष्ट करना होगा। निम्नलिखित तालिका में आप देख सकते हैं कि प्रत्येक डिटेक्शन में कौन से फ़ील्ड शामिल होने चाहिए और कौन से वैकल्पिक हैं।
| फ़ील्ड | आवश्यक |
|---|---|
| एंडपॉइंट आईडी | हाँ |
| श्रेणी | हाँ |
| गंभीरता | हाँ |
| डिटेक्शन नाम | हाँ |
| पैरेंट प्रोसेस नाम | हाँ |
| पैरेंट प्रोसेस आईडी | हाँ |
| प्रोसेस नाम | हाँ |
| प्रोसेस आईडी | हाँ |
| उपयोगकर्ता | नहीं |
| कमांड लाइन | नहीं |
| फ़ाइल नाम | नहीं |
| रजिस्ट्री कुंजी | नहीं |
| नेटवर्क पता | नहीं |
| लक्ष्य प्रोसेस नाम | नहीं |
| लक्ष्य प्रोसेस आईडी | नहीं |
प्रत्येक फ़ील्ड के लिए मैपिंग schema.yml फ़ाइल में परिभाषित की गई हैं, एक उदाहरण फ़ाइल schema.yml.example प्रदान की गई है। यह फ़ाइल परिभाषित करती है कि बैकएंड में डेटा से कौन से फ़ील्ड निकाले जाने चाहिए और उन्हें आंतरिक रूप से कैसे मैप किया जाता है। विशेष रूप से मैपिंग भाग में बाईं ओर detectree मैपिंग और दाईं ओर बैकएंड मैपिंग होती है, आपको अपने वातावरण के अनुसार मैपिंग को भरना होगा।
स्कीमा में बैकएंड कॉन्फ़िगरेशन भी शामिल है, elastic के लिए यह सीधा होना चाहिए लेकिन विभिन्न फ़ील्ड का अर्थ निम्नलिखित है:
primaryId एंडपॉइंट के लिए अद्वितीय पहचानकर्ता है। इसका उपयोग डिटेक्शन प्राप्त करने के लिए किया जाता है।
timeField क्वेरी को प्रतिबंधित करने के लिए उपयोग किया जाने वाला समय फ़ील्ड है।
source वह फ़ील्ड है जो डिटेक्शन प्रकार की पहचान करता है, उदाहरण स्कीमा में इसे NewProcess, RegistryWrite, FileAccess इत्यादि से मैप किया गया है।
इसके बाद mappings में type फ़ील्ड एक विशिष्ट डिटेक्शन की पहचान करता है, उदाहरण के लिए यदि आपका बैकएंड केवल NewProcess डिटेक्शन (या जो भी संबंधित नाम हो) का समर्थन करता है तो आपको केवल एक मैपिंग की आवश्यकता होगी। इससे सख्ती से संबंधित, kind फ़ील्ड डिटेक्शन प्रकार को detectree प्रकार से जोड़ता है। उदाहरण के रूप में यदि kind file है तो मैपिंग को एक filePath प्रदान करना चाहिए जिसका उपयोग संदर्भ नोड बनाने के लिए किया जाएगा।
वर्तमान में एकमात्र समर्थित बैकएंड elastic है, हालांकि किसी भी नए बैकएंड के लिए एडाप्टर बनाना आसान होना चाहिए। अधिक जानकारी के लिए नया बैकएंड जोड़ना अनुभाग देखें।
अपने वातावरण में एप्लिकेशन को तैनात करने के लिए आपको npm install (या pnpm install या yarn) के साथ आवश्यक निर्भरताएँ स्थापित करनी होंगी। फिर आपको अपने वातावरण के लिए सही एडाप्टर चुनना होगा, सबसे अद्यतित जानकारी के लिए इस गाइड का पालन करें।
उदाहरण के लिए यदि आप node को अपने बैकएंड के रूप में उपयोग करना चाहते हैं तो आपको @sveltejs/adapter-node स्थापित करना होगा और अपनी svelte.config.js को संशोधित करके @sveltejs/adapter-auto को @sveltejs/adapter-node से प्रतिस्थापित करना होगा। फिर प्रोजेक्ट को निम्नलिखित कमांड के साथ बनाया जा सकता है, आउटपुट output फ़ोल्डर में होगा।
npm run build
एक विकास सर्वर निम्नलिखित के साथ शुरू किया जा सकता है, यह एप्लिकेशन को स्थानीय रूप से सेवा करने की अनुमति देगा।
npm run dev
# या सर्वर शुरू करें और ऐप को नए ब्राउज़र टैब में खोलें
npm run dev -- --open
एक उदाहरण ग्राफ निम्नलिखित स्क्रीनशॉट में देखा जा सकता है

नए बैकएंड का समर्थन करने के लिए आपको backend_adapters फ़ोल्डर में एक समर्पित TypeScript फ़ाइल बनानी होगी। आप elastic वाले को टेम्पलेट के रूप में उपयोग कर सकते हैं, नए मॉड्यूल को एक क्वेरी फ़ंक्शन उजागर करना चाहिए जो elastic फ़ाइल वाले के समान पैरामीटर इनपुट के रूप में ले। फिर आप चुने हुए बैकएंड को पसंदीदा तरीके से क्वेरी कर सकते हैं। क्वेरी फ़ंक्शन को schema.yaml फ़ाइल में परिभाषित मैपिंग के अनुसार मैप किया गया डेटा युक्त एक ऑब्जेक्ट लौटाना चाहिए। अंत में बैकएंड को सही ढंग से चुनने के लिए आपको इसे draw_tree.ts के अंदर निम्नलिखित ऑब्जेक्ट में भी जोड़ना होगा, ऑब्जेक्ट कुंजियाँ यहाँ भी होंगी कि बैकएंड को schema.yml में कैसे संदर्भित किया जाता है
const backendTypes = {
elastic: '../backend_adapters/elastic'
};