
डिटेक्शन और रिस्पॉन्स के लिए ग्राफ प्लेटफॉर्म
Grapl एक ग्राफ-आधारित SIEM प्लेटफॉर्म है जो घटना प्रतिक्रिया इंजीनियरों द्वारा और उनके लिए बनाया गया है।
Grapl ने एक कंपनी के रूप में अपना संचालन बंद कर दिया है। इस प्रकार, इस कोड का सक्रिय रूप से विकास नहीं किया जा रहा है, लेकिन यह एक संग्रहीत अवस्था में उपलब्ध रहेगा।
Grapl अपने मूल में ग्राफ डेटा संरचनाओं का लाभ उठाता है ताकि यह सुनिश्चित किया जा सके कि आप अपने डेटा को कुशलता से क्वेरी और कनेक्ट कर सकें, पहचान के लिए जटिल हमलावर व्यवहारों का मॉडल बना सकें, और एक चल रहे घुसपैठ के पूर्ण दायरे को समझने के लिए संदिग्ध व्यवहारों में आसानी से गहराई से जा सकें।
Grapl के अधिक गहन अवलोकन के लिए, यह पढ़ें।
मूल रूप से, Grapl कच्चे लॉग लेगा, उन्हें ग्राफ़ में बदलेगा, और उन ग्राफ़ को एक मास्टर ग्राफ़ में मर्ज करेगा। फिर यह आपके हमले के हस्ताक्षरों के निष्पादन को व्यवस्थित करेगा, और आपकी जांच करने के लिए उपकरण प्रदान करेगा।
आप हमारी कुछ बातचीत BSidesLV पर या BSides San Francisco पर देख सकते हैं।
Grapl मूल रूप से निम्नलिखित के लिए नोड्स का समर्थन करता है:
Grapl ग्राफ़ उत्पन्न करने के लिए निम्नलिखित इनपुट प्रारूपों का मूल रूप से समर्थन करता है:
Grapl को प्लगइन्स को ध्यान में रखकर विकसित किया जा रहा है - ऑपरेटर आसानी से नए इनपुट लॉग प्रारूपों और नए नोड प्रकारों का समर्थन कर सकते हैं।
ध्यान रखें कि Grapl अभी तक एक स्थिर, 1.0 अवस्था में नहीं है, और यह एक तेज़ी से बदलता प्रोजेक्ट है। कुछ मामूली बग और ब्रेकिंग परिवर्तनों की अपेक्षा करें!
प्रश्न? इस रिपॉजिटरी में एक मुद्दा खोलने का प्रयास करें, या Grapl स्लैक चैनल (आमंत्रण के लिए क्लिक करें) में शामिल हों।
पहचान
यदि आप Sysmon जैसे लॉग स्रोतों से परिचित हैं, तो सबसे अच्छी विशेषताओं में से एक यह है कि प्रक्रियाओं को पहचान दी जाती है। Grapl उसी अवधारणा को लागू करता है लेकिन किसी भी समर्थित लॉग प्रकार के लिए, प्रक्रिया आईडी जैसे छद्म पहचानकर्ताओं को लेता है और विहित पहचानों का पता लगाता है।
Grapl फिर इस पहचान अवधारणा को अपने ग्राफ दृष्टिकोण के साथ जोड़ता है, जिससे संस्थाओं और उनके व्यवहारों के बारे में तर्क करना आसान हो जाता है। इसके अलावा, यह पहचान गुण का अर्थ है कि Grapl आपके लॉग से केवल अद्वितीय जानकारी संग्रहीत करता है, जिसका अर्थ है कि आपका डेटा भंडारण लॉग वॉल्यूम के अनुपात में उप-रैखिक रूप से बढ़ता है।
इससे भंडारण लागत कम होती है और आपको अपने डेटा को देखने के लिए केंद्रीय स्थान मिलते हैं, बजाय इसके कि वह हजारों लॉग में फैला हो। एक उदाहरण के रूप में, एक प्रक्रिया के विहित पहचानकर्ता को देखते हुए, आप नोड का चयन करके उसके लिए सभी जानकारी देख सकते हैं।
विश्लेषक https://grapl.readthedocs.io/en/latest/analyzers/implementing.html
विश्लेषक आपके हमलावर हस्ताक्षर हैं। वे Python मॉड्यूल हैं, जो Grapl के S3 बकेट पर तैनात किए जाते हैं, और Grapl के मास्टर ग्राफ़ में परिवर्तनों पर निष्पादित होने के लिए व्यवस्थित किए जाते हैं।
हमले के व्यवहारों के लिए विश्लेषक द्विआधारी "अच्छा" या "बुरा" मान निर्धारित करने का प्रयास करने के बजाय, Grapl जोखिम की अवधारणा का लाभ उठाता है, और फिर आपके वातावरण के सबसे जोखिम भरे हिस्सों को उजागर करने के लिए स्वचालित रूप से जोखिमों को सहसंबंधित करता है।
विश्लेषक मास्टर ग्राफ़ के अपडेट होने पर वास्तविक समय में निष्पादित होते हैं, निरंतर समय संचालन का उपयोग करते हुए। Grapl का विश्लेषक हार्नेस स्वचालित रूप से आपकी क्वेरी को बैच, समानांतर और अनुकूलित करेगा। निरंतर समय और उप-रैखिक संचालन का लाभ उठाकर, Grapl सुनिश्चित करता है कि जैसे-जैसे आपका संगठन बढ़ता है, और इसके साथ आपका डेटा वॉल्यूम भी बढ़ता है, आप अभी भी अपनी क्वेरी के कुशल निष्पादन पर भरोसा कर सकते हैं।
Grapl एक विश्लेषक लाइब्रेरी प्रदान करता है ताकि आप शुद्ध Python का उपयोग करके हमलावर हस्ताक्षर लिख सकें। उदाहरणों के लिए यह repo देखें।
यहाँ svchost.exe के संदिग्ध निष्पादन का पता लगाने का एक संक्षिप्त उदाहरण है,
class SuspiciousSvchost(Analyzer):
def get_queries(self) -> OneOrMany[ProcessQuery]:
invalid_parents = [
Not("services.exe"),
Not("smss.exe"),
Not("ngentask.exe"),
Not("userinit.exe"),
Not("GoogleUpdate.exe"),
Not("conhost.exe"),
Not("MpCmdRun.exe"),
]
return (
ProcessQuery()
.with_process_name(eq=invalid_parents)
.with_children(
ProcessQuery().with_process_name(eq="svchost.exe")
)
)
def on_response(self, response: ProcessView, output: Any):
output.send(
ExecutionHit(
analyzer_name="Suspicious svchost",
node_view=response,
risk_score=75,
)
)
अपने विश्लेषकों को कोड में रखने का अर्थ है कि आप:
Grapl के विश्लेषक परिनियोजक प्लगइन को देखें कि कैसे आप अपने विश्लेषकों को एक git रिपॉजिटरी में रख सकते हैं जो मास्टर पर पुश करने पर उन्हें स्वचालित रूप से तैनात करता है।
सगाई
Grapl जांच के लिए एक उपकरण प्रदान करता है जिसे सगाई कहा जाता है। सगाई एक पृथक ग्राफ है जो एक उप-ग्राफ का प्रतिनिधित्व करता है जिसे आपके विश्लेषकों ने संदिग्ध माना है।
AWS Sagemaker होस्टेड Jupyter Notebooks और Grapl द्वारा प्रदान की गई Python लाइब्रेरी का उपयोग करके, आप किसी भी संदिग्ध उप-ग्राफ का विस्तार कर सकते हैं ताकि वह हमले के पूर्ण दायरे को शामिल कर सके। जैसे-जैसे आप अपने Jupyter notebook के साथ हमले के दायरे का विस्तार करते हैं, सगाई ग्राफ अपडेट होता है, जो हमले के दायरे को दृष्टिगत रूप से प्रस्तुत करता है।

ईवेंट-संचालित और विस्तार योग्य
Grapl को विस्तारित करने के लिए बनाया गया था - कोई भी सेवा हर संगठन की जरूरतों को संतुष्ट नहीं कर सकती। प्रत्येक मूल Grapl सेवा ईवेंट भेजने और प्राप्त करके काम करती है, जिसका अर्थ है कि Grapl का विस्तार करने के लिए आपको केवल संदेशों की सदस्यता लेना शुरू करना होगा।
यह Grapl को अपनी मौजूदा सेवाओं में विस्तार या एकीकृत करने के लिए सरल बनाता है।
Grapl एक प्लगइन सिस्टम भी प्रदान करता है, जो वर्तमान में बीटा में है, जो आपको प्लेटफ़ॉर्म की क्षमताओं का विस्तार करने की अनुमति देता है - कस्टम नोड्स और क्वेरी करने की क्षमताएँ जोड़ना।