
Google Workspace ऑडिट लॉग के लिए स्वचालित फोरेंसिक विश्लेषण उपकरण। सभी लॉग प्रकार प्राप्त करता है, घटनाओं को MITRE ATT&CK क्लाउड फ्रेमवर्क से मैप करता है, और सांख्यिकीय स्कोरिंग के माध्यम से किल चेन की पहचान करता है।
कॉपीराइट (c) 2026 Invictus Incident Response
मूल लेखक Greg Charitonos और BertJanCyber को Invictus Incident Response द्वारा अनुरक्षित किया गया है
समर्थित ऑपरेटिंग सिस्टम पर एक नोट, ALFA का परीक्षण कई लिनक्स वितरणों (Debian और Ubuntu) पर किया गया है।
हालाँकि इसे Windows या macOS पर उपयोग करना संभव हो सकता है, परिणाम भिन्न हो सकते हैं, इसलिए अपने स्वयं के जोखिम पर आगे बढ़ें।
sudo pip install -e . या sudo pip3 install -e . चलाएँpyenv का उपयोग करके Python 3.9 स्थापित करें
ALFA Python 3.9 के साथ सबसे अच्छा काम करता है। आप इस संस्करण को प्रबंधित और स्थापित करने के लिए pyenv का उपयोग कर सकते हैं।
pyenv स्थापित नहीं किया है, तो आप Homebrew का उपयोग करके ऐसा कर सकते हैं:
brew install pyenv
~/.zshrc या ~/.bashrc) में निम्नलिखित जोड़कर अपने शेल में pyenv सेट अप करें:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
source ~/.zshrc # or source ~/.bashrc
pyenv का उपयोग करके Python 3.9 स्थापित करें:
pyenv install 3.9
pyenv global 3.9
pyenv shell 3.9
(वैकल्पिक) एक वर्चुअल वातावरण बनाएँ निर्भरताओं को अलग रखने के लिए प्रोजेक्ट को वर्चुअल वातावरण में चलाना एक अच्छा अभ्यास है। आपके द्वारा सेट किए गए Python के 3.9 संस्करण का उपयोग करके, एक वर्चुअल वातावरण बनाएँ:
python -m venv alfa
source alfa/bin/activate
ALFA स्थापित करें
जिस फ़ोल्डर में ALFA प्रोजेक्ट स्थित है, उसके अंदर pip का उपयोग करके इसे स्थापित करें:
pip install -e .
यदि आप वर्चुअल वातावरण का उपयोग नहीं कर रहे हैं, तो आपको sudo की आवश्यकता हो सकती है:
sudo pip install -e .
स्थापना सत्यापित करें
स्थापना के बाद, आप यह सत्यापित कर सकते हैं कि ALFA स्थापित है, इसके कमांड-लाइन टूल alfa को चलाने का प्रयास करके।
नोट: credentials.json प्राप्त करने के लिए, कृपया CREDENTIALS.md देखें
alfa init projectname चलाकर करें, यह कमांड आपके कॉन्फ़िगरेशन और डेटा को संग्रहीत करने के लिए एक नई निर्देशिका बनाएगा। उदाहरण के लिए alfa init project_xALFA के 3 विकल्प हैं जैसा कि नीचे बताया गया है:
alfa acquire चलाएँalfa acquire -h टाइप करेंआप अपने द्वारा एकत्र किए जा रहे डेटा को सीमित करने के लिए सभी प्रकार की फ़िल्टरिंग कर सकते हैं, नीचे कुछ उदाहरण दिए गए हैं:
alfa acquire --logtype=adminalfa acquire -d /tmp/project_secretalfa acquire --user=insert_usernamealfa acquire --start-time=2022-07-10T10:00:00Z --end-time=2022-07-11T14:26:01Z समय प्रारूप (RFC3339) हैअब आप जानते हैं कि ALFA की शक्ति को उजागर करने के लिए कुछ शानदार चीज़ों के लिए डेटा समय कैसे प्राप्त करें।
विश्लेषण फ़ंक्शन संदिग्ध गतिविधि की पहचान करने के लिए किसी दिए गए Google Workspace के सभी ऑडिट लॉग डेटा का स्वचालित रूप से विश्लेषण करता है।
वर्गीकरण प्रत्येक व्यक्तिगत घटना को alfa/config/event_to_mitre.yml में बनाई गई मैपिंग के आधार पर वर्गीकृत किया जाता है। यदि कोई घटना उस सूची से मेल खाती है, तो इसे MITRE ATT&CK क्लाउड फ्रेमवर्क (https://attack.mitre.org/matrices/enterprise/cloud/) का हिस्सा एक तकनीक पर मैप किया जाता है।
स्कोरिंग इसके बाद ALFA किल चेन या तार्किक हमले के पथों की पहचान करने का प्रयास करने के लिए सभी मैप किए गए घटनाओं का कालानुक्रमिक क्रम में विश्लेषण करेगा। उदाहरण के लिए, एक घटना जो Persistence चरण पर मैप की गई है, उसके बाद एक घटना जो Credential Access चरण पर मैप की गई है, उच्च स्कोर का परिणाम देगी।
परिणाम अंततः ALFA विश्लेषक को पहचानी गई 'उप-श्रृंखलाओं' की एक सूची देगा जिनका आगे विश्लेषण किया जा सकता है।
alfa analyze चलाएँ जो स्वचालित रूप से पहचान करेगा (या यदि कोई नहीं मिला तो नहीं करेगा)। यह आपको एक शेल में भी डाल देगा जहाँ आप अनुवर्ती गतिविधियाँ कर सकते हैं।A.aoi(export='activities.json') का उपयोग करके सभी पहचानी गई उप-श्रृंखलाओं को एक फ़ाइल में निर्यात करें, जिसका उपयोग आप आगे के विश्लेषण के लिए कर सकते हैं।स्थानीय भंडारण से लॉग लोड और विश्लेषण करने के लिए A = Alfa.load([logname]) का उपयोग करें। सभी लॉग लोड करने के लिए A = Alfa.load('all') का उपयोग करें। Alfa डिफ़ॉल्ट रूप से हानिरहित गतिविधियों को फ़िल्टर करता है। सभी गतिविधियों और घटनाओं को बिना फ़िल्टर किए लोड करने के लिए Alfa.load([logname], filter=False) का उपयोग करें।
config/event_to_mitre.yml फ़ाइल को सीधे संपादित करना संभव है, लेकिन अनुशंसित नहीं है। इस फ़ाइल का लेआउट अंतर्ज्ञानी नहीं है। इसके बजाय, utils/mappings.yml में संशोधन करने पर विचार करें। फिर utils/event_mitre_remap.py चलाकर config/event_to_mitre.yml को पुनः आबाद करें।
किल चेन डिस्कवरी फ़ंक्शन हार्ड-कोडेड स्थिरांक का उपयोग करता है। ये config/config.yml में पाए जा सकते हैं। फोरेंसिक विश्लेषकों को सलाह दी जाती है कि वे मानों की समीक्षा करें और आवश्यकतानुसार अपने वर्कस्पेस के लिए संशोधन करें। ये स्थिरांक किल चेन सांख्यिकी (kcs) और किल चेन डिस्कवरी (उप-श्रृंखलाओं) दोनों के लिए जिम्मेदार हैं।
ALFA के लिए उपयोग किए जाने वाले आँकड़ों और एल्गोरिदम के बारे में और अधिक जानना चाहते हैं, हमने इसके बारे में एक ब्लॉग पोस्ट लिखा है यहाँ (https://medium.com/@invictus-ir/automated-forensic-analysis-of-google-workspace-859ed50c5c92)
आपको प्रोजेक्ट फ़ोल्डर में 'config' उपनिर्देशिका में एक credentials.json फ़ाइल जोड़नी होगी। निर्देश 'CREDENTIALS.md' फ़ाइल में हैं।
इसका मतलब है कि पोर्ट 8089 पहले से ही किसी अन्य एप्लिकेशन द्वारा उपयोग में है, ऐसा हो सकता है यदि आप इस पोर्ट पर एक वेबसर्वर चला रहे हैं और Splunk भी डिफ़ॉल्ट रूप से पोर्ट 8089 का उपयोग करता है। समाधान यह है कि उस पोर्ट का उपयोग (अस्थायी रूप से) बंद कर दिया जाए क्योंकि प्रमाणीकरण प्रवाह के लिए आवश्यक है कि पोर्ट उपलब्ध हो।
कभी-कभी प्राधिकरण जानकारी को अद्यतन करने की आवश्यकता होती है, ऐसा करने का सबसे आसान तरीका project_name/config फ़ोल्डर से 'token.json' को हटाना है। और फिर कमांड को पुनः चलाना है। यदि यह अभी भी समस्या देता है तो token.json और credentials.json को हटा दें और OAuth एप्लिकेशन को पुनः पंजीकृत करें जैसा कि वर्णित है
CREDENTIALS.MD
सुनिश्चित करें कि आपके एप्लिकेशन के OAuth 2.0 क्लाइंट आईडी के अधिकृत रीडायरेक्ट URI URI http://localhost:8089 में पिछला स्लैश (/) है।
