
Gophish से अभियान डेटा एकत्र करने और एक रिपोर्ट उत्पन्न करने के लिए एक Python स्क्रिप्ट
यह स्क्रिप्ट आपके Gophish अभियान आईडी (IDs) को पैरामीटर के रूप में स्वीकार करती है और फिर अभियान के परिणाम एकत्र करके आँकड़े प्रस्तुत करती है, साथ ही उपयोगकर्ता-एजेंट पार्सिंग और IP पतों के लिए जियोलोकेशन लुकअप करती है। Goreport IP पतों, ऑपरेटिंग सिस्टम, ब्राउज़र प्रकारों और संस्करणों, और स्थानों की सूची उत्पन्न करता है, जिसमें प्रत्येक को अभियान के दौरान कितनी बार देखा गया, इसकी गणना शामिल होती है।
आँकड़ों पर एक नोट: Goreport घटनाओं की कुल संख्या और प्रत्येक घटना में भाग लेने वाले ईमेल प्राप्तकर्ताओं की संख्या रिपोर्ट करेगा। दूसरे शब्दों में, Goreport दिखाएगा कि Gophish ने कितनी बार "लिंक पर क्लिक किया गया" घटना दर्ज की और कितने प्राप्तकर्ताओं ने लिंक पर क्लिक किया। ये बहुत अलग संख्याएँ हैं। 10 लोगों को भेजे गए अभियान में 9 "लिंक पर क्लिक" घटनाएँ हो सकती हैं, जबकि केवल 3 प्राप्तकर्ताओं ने लिंक पर क्लिक किया। यह जानना कि प्राप्तकर्ताओं ने एक से अधिक बार किसी लिंक पर क्लिक किया या डेटा सबमिट किया, मूल्यवान जानकारी है, लेकिन सुनिश्चित करें कि आप संख्याओं को सीधा रखें।
इस स्क्रिप्ट के लिए एक Gophish सर्वर, एक सक्रिय या पूर्ण अभियान, और आपके Gophish एप्लिकेशन के लिए API कुंजी आवश्यक है। यह कुंजी प्राप्त करने के लिए Settings टैब पर क्लिक करें। API कुंजी पहले पृष्ठ पर मिलेगी। प्रत्येक Gophish उपयोगकर्ता खाते की अपनी API कुंजी होती है जो उस उपयोगकर्ता के लिए Gophish API में प्रमाणीकरण की विधि के रूप में कार्य करती है। यदि आप Gophish के साथ कई खातों का उपयोग करते हैं, तो सुनिश्चित करें कि आप सही उपयोगकर्ता की API कुंजी लेते हैं।
इन Python पुस्तकालयों की भी आवश्यकता है:
आरंभ करने के लिए आपको कुछ चीजें करने की आवश्यकता है:
pip install -r requirements.txt चलाएँ।यह उदाहरण मान लेगा कि Gophish किसी अन्य सर्वर पर है और HTTPS का उपयोग किया जा रहा है। API एंडपॉइंट तक पहुँचने के लिए, आपको पोर्ट 3333 (या कोई अन्य स्थानीय पोर्ट जो आप उपयोग करना चाहते हैं) के साथ SSH पोर्ट फ़ॉरवर्डिंग का उपयोग करने की आवश्यकता होगी:
[Gophish]
gp_host: https://127.0.0.1:3333
api_key: <YOUR_API_KEY>
[ipinfo.io]
ipinfo_token: <IPINFO_API_KEY>
[Google]
geolocate_key: <GEOLOCATE_API_KEY>
python3 Goreport.py --id 26 --format excel
यह https://localhost:3333/api/campaigns/26/?api_key=<Your_API_Key> से अभियान 26 के परिणाम लाएगा और परिणामों को xlsx फ़ाइल में आउटपुट करेगा।
एक साथ कई रिपोर्टों के लिए कई IDs प्रदान की जा सकती हैं। IDs को अल्पविराम से अलग की गई सूची, एक श्रेणी, या दोनों का उपयोग करके प्रदान किया जा सकता है।
उदाहरण: python3 Goreport.py --id 26,29-33,54 --format csv
यदि आप कई Gophish उपयोगकर्ता खातों या सर्वरों का उपयोग करते हैं, तो आपके पास कई API कुंजियाँ होंगी। कुंजियों के बीच स्विच करना आसान बनाने के लिए, Goreport का --config विकल्प आपको डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल, gophish.config, को आपके द्वारा नामित कॉन्फ़िगरेशन फ़ाइल से ओवरराइड करने में सक्षम बनाता है। यदि यह तर्क एक मान्य, पठनीय कॉन्फ़िगरेशन फ़ाइल के साथ प्रदान किया गया है, तो Goreport API कनेक्शन स्थापित करने के लिए gophish.config के बजाय इसका उपयोग करेगा।
आप इस विकल्प का उपयोग कर सकते हैं यदि, उदाहरण के लिए, तीन फ़िशिंग सर्वर Gophish चला रहे हों। आप तीन कॉन्फ़िगरेशन फ़ाइलें बना सकते हैं, प्रत्येक में एक अलग Gophish API कुंजी हो, और फिर आवश्यकतानुसार उनका उपयोग करें।
उदाहरण: python3 Goreport.py --id 26,29-33,54 --format csv --config phish_server_2.config
यदि आपने विभिन्न लक्ष्य समूहों के लिए समान सेटिंग्स का उपयोग करके कई अभियान चलाए, तो आप एक साथ इन सभी अभियानों के विरुद्ध Goreport चलाना चाह सकते हैं और फिर परिणामों को एक रिपोर्ट में संयोजित करना चाह सकते हैं। यह Goreport के --combine फ़्लैग को जोड़कर पूरा किया जा सकता है।
उदाहरण: python3 Goreport.py --id 26,29-33,54 --format excel --combine
यह आदेश अभियान 26, 29, 30, 31, 32, 33, और 54 के परिणाम एकत्र करेगा। सामान्यतः, Goreport सात xlsx फ़ाइलें आउटपुट करेगा, लेकिन --combine जोड़ने से Goreport परिणामों को संयोजित करने और केवल एक रिपोर्ट आउटपुट करने का निर्देश देता है, जैसे कि वे सभी एक बड़ा अभियान हों।
Goreport या तो एक Excel स्प्रेडशीट (xlsx) या एक Word दस्तावेज़ (docx) आउटपुट कर सकता है। एक "त्वरित" रिपोर्ट विकल्प भी है। बस ऊपर नमूना उपयोग अनुभाग में दिखाए अनुसार --format कमांड लाइन तर्क का उपयोग करके अपना पसंदीदा प्रारूप चुनें। csv प्रारूप के बारे में ज्यादा कहने की आवश्यकता नहीं है।
Word दस्तावेज़ एक टेम्पलेट, template.docx से बनाया गया है। अपनी टेम्पलेट फ़ाइल, जिसका नाम template.docx है, को मुख्य स्क्रिप्ट के साथ Goreport निर्देशिका में रखें। आपके टेम्पलेट में एक तालिका शैली होनी चाहिए जिसका आप उपयोग करना चाहते हैं और Heading 1 और Heading 2 के लिए शीर्षक शैलियाँ होनी चाहिए। अपनी पसंदीदा तालिका शैली को "Goreport" नाम दें और अपनी Heading 1 और 2 शैलियाँ सेट करें।
बेझिझक एक कस्टम शैली बनाएं या मौजूदा शैली का उपयोग करें। केवल इतना मायने रखता है कि एक template.docx फ़ाइल मौजूद है और इसमें "Goreport" तालिका शैली है।
किसी शैली का नाम बदलने के लिए, शैली पर राइट-क्लिक करें, तालिका शैली संशोधित करें चुनें, और एक नया नाम सेट करें।
Excel विकल्प एक सुंदर ढंग से स्वरूपित Excel कार्यपुस्तिका को कई कार्यपत्रकों के साथ आउटपुट करता है, जो परिणामों और आँकड़ों के विभिन्न संग्रहों के लिए होते हैं। यह एक अच्छा विकल्प है यदि आप परिणाम तालिकाओं को आसानी से सॉर्ट या फ़िल्टर करना चाहते हैं।
अंत में, एक "त्वरित" विकल्प है। यह कोई रिपोर्ट दस्तावेज़ उत्पन्न नहीं करता है। इसके बजाय, यह अभियान के बारे में बुनियादी जानकारी आपके टर्मिनल पर आउटपुट करता है। यह अभियान की प्रगति की शीघ्र जाँच करने या अभियान पूरा होने के बाद परिणामों का संदर्भ देने के लिए सुविधाजनक है।
यदि आप अपनी रिपोर्ट चलाते समय किसी अभियान की स्थिति को "पूर्ण" पर सेट करना चाहते हैं, तो Goreport --complete फ़्लैग के साथ स्वचालित रूप से ऐसा करने में आपकी सहायता कर सकता है। यदि आप यह फ़्लैग प्रदान करते हैं, तो Goreport प्रत्येक अभियान आईडी को "पूर्ण" के रूप में चिह्नित करने के लिए API का उपयोग करेगा ताकि अभियान समाप्त हो जाए और Gophish में स्थिति अपडेट हो जाए।
Gophish IP पतों के साथ अपने स्वयं के जियोलोकेशन लुकअप करता है और अक्षांश और देशांतर लौटाता है। यह ठीक काम करता है, लेकिन विफल हो सकता है और 0,0 के निर्देशांक लौटा सकता है या पुरानी जानकारी लौटा सकता है।
Goreport में दो विकल्प हैं जिनका उपयोग स्थान परिणामों को बेहतर बनाने के लिए किया जा सकता है। पहला और अनुशंसित विकल्प ipinfo.io API है। API एक्सेस तब तक मुफ्त है जब तक आप 24 घंटे की अवधि में 1,000 से कम क्वेरी करते हैं। फ़िशिंग अभियान के लिए यह बहुत कठिन नहीं होना चाहिए।
यदि ipinfo.io API कुंजी कॉन्फ़िगरेशन फ़ाइल में जोड़ी जाती है, तो Goreport स्वचालित रूप से प्रत्येक अद्वितीय IP पते के लिए वर्तमान जियोलोकेशन जानकारी एकत्र करने के लिए ipinfo.io का उपयोग करेगा।
दूसरा विकल्प Google Maps API है। Goreport v1.0 ने Maps API का उपयोग तब किया जब वह मुफ्त था। Google अब Geolocate API (जैसा कि इसे अब कहा जाता है) के लिए $0.005/अनुरोध शुल्क लेता है। यदि आप ipinfo.io का उपयोग नहीं करना चाहते हैं, तो किसी Google खाते पर Maps Geolocate API सक्रिय करें और API कुंजी को Goreport कॉन्फ़िगरेशन फ़ाइल में जोड़ें। फिर अपने Goreport कमांड में --google फ़्लैग जोड़ें जब भी आप चाहते हैं कि Goreport Gophish के निर्देशांकों को देखने के लिए API का उपयोग करके एक स्वरूपित पता प्राप्त करे।
यदि आप कोड की समीक्षा करना चाहते हैं, तो प्रक्रिया की एक बुनियादी रूपरेखा यहाँ दी गई है:
Goreport.py Python 3 और Command Line Interface Creation Kit (CLICK) लाइब्रेरी का उपयोग करता है। जब स्क्रिप्ट चलाई जाती है, तो एक नया Goreport ऑब्जेक्ट बनाया जाता है। Goreport वर्ग का __init__ फ़ंक्शन प्रमाणीकरण के लिए प्रदान की गई API कुंजी का उपयोग करके आपके Gophish सर्वर से कनेक्शन बनाता है। फिर run() फ़ंक्शन को कॉल किया जाता है।
Run() रिपोर्टिंग शुरू करने के लिए कमांड लाइन विकल्पों का उपयोग करता है। --id के साथ प्रदान की गई सभी अभियान IDs पर लूप करने के लिए एक For लूप का उपयोग किया जाता है। प्रत्येक व्यक्तिगत ID के लिए अभियान विवरण के लिए आपके Gophish सर्वर से संपर्क किया जाता है।
पहले, collect_all_campaign_info() को चर में बुनियादी अभियान जानकारी संग्रहीत करने के लिए कॉल किया जाता है। इसमें अभियान का नाम, यह कब चलाया गया, इसकी स्थिति, उपयोग किया गया SMTP सर्वर, टेम्पलेट का नाम और अधिक जैसा डेटा शामिल है।
दूसरे, process_timeline_events() को ID के लिए Gophish का टाइमलाइन मॉडल प्राप्त करने के लिए कॉल किया जाता है। इसमें Gophish द्वारा दर्ज की गई घटनाएँ शामिल हैं। यह फ़ंक्शन दूसरा चलता है क्योंकि यह कुछ सूचियाँ भरता है जिनकी समीक्षा process_results() द्वारा की जाती है।
तीसरे, process_results() को ID के लिए Gophish का परिणाम मॉडल प्राप्त करने के लिए कॉल किया जाता है। यह अभियान में लक्ष्यों की संख्या जैसा डेटा प्रदान करता है।
Goreport इन चरणों का उपयोग अभियान के बुनियादी परिणामों को निर्धारित करने के लिए कुछ सूचियाँ स्थापित करने के लिए करता है, उदाहरण के लिए, किसे सफलतापूर्वक ईमेल भेजा गया, किन प्राप्तकर्ताओं ने लिंक पर क्लिक किया, और किन प्राप्तकर्ताओं ने डेटा प्रदान किया।
इस आधार के साथ, Goreport डेटा को रिपोर्ट के लिए कई तरीकों से व्यवस्थित कर सकता है। किसी भी समय, सूचियों से पूछताछ की जा सकती है कि क्या परिणाम मॉडल में एक निश्चित ईमेल पता targets_clicked सूची में दिखाई देता है, यह पुष्टि करने के लिए कि उस प्राप्तकर्ता ने लिंक पर क्लिक किया। फिर यह विवरण एकत्र करने के लिए टाइमलाइन मॉडल की समीक्षा शुरू कर सकता है। Gophish टाइमलाइन मॉडल में IP पता और उपयोगकर्ता-एजेंट जैसे विवरण और परिणाम मॉडल में बुनियादी जानकारी रखता है।