
अगली पीढ़ी का फायरवॉल ऑडिट और बाईपास टूल
v0.2
Fireaway एक उपकरण है जो अगली पीढ़ी के फायरवॉल (NGFW) पर लेयर 7/AppID निरीक्षण नियमों के साथ-साथ डीप पैकेट इंस्पेक्शन रक्षा तंत्रों, जैसे डेटा लॉस प्रिवेंशन (DLP) और एप्लिकेशन अवेयर प्रॉक्सीज़ के विरुद्ध ऑडिटिंग, बाईपास और डेटा एक्सफ़िल्ट्रेशन के लिए है। ये रणनीतियाँ इस सिद्धांत पर आधारित हैं कि लेयर 7 डेटा को फ़िल्टर करने के लिए NGFW के माध्यम से कनेक्शन स्थापित करने की अनुमति देनी होती है, साथ ही सामान्य उपयोगकर्ता ट्रैफ़िक जैसे इंटरनेट ब्राउज़िंग के रूप में फ़ायरवॉल लॉग में संचार चैनलों को छिपाने के लिए एप्लिकेशन को स्पूफ़ करना शामिल है। डेटा लॉस प्रिवेंशन टूल को बाईपास करने के मामले में, Fireaway डेटा को छोटे "चंक्स" में भेजता है, जो रेगुलर एक्सप्रेशन ट्रिगर और अन्य DLP नियमों से मेल नहीं खाते, साथ ही वैध एप्लिकेशन के स्पूफ़ किए गए HTTP हेडर में डेटा एम्बेड करता है, जिसका अधिकांश DLP तकनीक निरीक्षण करने के लिए डिज़ाइन नहीं की गई हैं। यह उपकरण एप्लिकेशन हेडर को स्पूफ़ करने और उनके अंदर डेटा छिपाने की क्षमता के माध्यम से एनोमली डिटेक्शन और ह्यूरिस्टिक्स इंजन को भी हराने में सफल रहा है।
FireAway सर्वर प्रारंभ करना: आमतौर पर FireAway सर्वर फ़ायरवॉल के ईग्रेस साइड (जैसे इंटरनेट पर एक सर्वर) पर शुरू किया जाएगा, और यह देखने के लिए कि क्या कोई एप्लिकेशन-आधारित नियम इस पोर्ट पर ट्रैफ़िक को बाहर जाने देते हैं, या कच्चे डेटा चंक्स प्राप्त करने के लिए एक ऐसे पोर्ट पर सुनता है जो बंद माना जाता है, यह जाँचने के लिए कि क्या DLP या एप्लिकेशन प्रॉक्सी उन्हें पहचान सकते हैं:
python fa_server.py <सुनने के लिए पोर्ट> <मोड नंबर>
सर्वर को चार मोड में शुरू किया जा सकता है:
परीक्षण मोड (मोड 0)-क्रमिक या यादृच्छिक रूप से उत्पन्न परीक्षण डेटा प्राप्त करें। डेटा प्राप्त होते ही लिखा जाता है और किसी पुन: संयोजन की आवश्यकता नहीं होती है।
अनुक्रमिक चंक प्राप्ति (मोड 1)-डेटा एक या अधिक सर्वरों को क्लाइंट द्वारा निर्धारित चंक आकारों में क्रमिक रूप से भेजा जाता है। fa_server आउटपुट में उस टाइमस्टैम्प को रिकॉर्ड करेगा जब चंक प्राप्त हुआ था, और पुन: संयोजन के दौरान ऑर्डर कुंजी के रूप में प्राप्ति समय का उपयोग करेगा। fa_assembler.py के साथ उपयोग करने के लिए सर्वर द्वारा एक "पुन: संयोजन कुंजी" भी उत्पन्न की जाएगी। यह चंक्स के बीच सीमांकक के रूप में उपयोग की जाने वाली एक यादृच्छिक रूप से उत्पन्न 4-अक्षर की कुंजी है, इस विचार के साथ कि ये वर्ण प्रेषित किए जा रहे डेटा चंक्स में मौजूद नहीं होंगे।
यादृच्छिक चंक प्राप्ति (मोड 2)-डेटा एक या अधिक सर्वरों को यादृच्छिक क्रम में भेजा जाता है। यह मोड क्लाइंट से पूल में एक यादृच्छिक सर्वर को "अनुक्रम कुंजी" संदेश के प्रेषण पर निर्भर करता है। प्रत्येक सर्वर शुरू करते समय, सर्वर एक "अनुक्रम कुंजी पहचानकर्ता" दर्ज करने का संकेत देगा। यह प्रेषित की जा रही फ़ाइल में मौजूद नहीं होने वाला एक पैटर्न होना चाहिए ताकि सर्वर एक कनेक्शन पर प्राप्त डेटा को अनुक्रम कुंजी के रूप में ठीक से पहचान सके। सुनिश्चित करें कि सभी सर्वरों पर समान अनुक्रम कुंजी पहचानकर्ता का उपयोग किया गया है! क्लाइंट यादृच्छिक रूप से अनुक्रम कुंजी प्रेषित करने के लिए एक सर्वर का चयन करेगा, इसलिए यह महत्वपूर्ण है कि सभी सर्वर अपने प्राप्त डेटा में अनुक्रम कुंजी का पता लगा सकें। अनुक्रम कुंजी प्राप्त करने वाले सर्वर द्वारा 'SequenceKey.txt' नामक फ़ाइल में रिकॉर्ड की जाएगी।
स्पूफ़ किए गए ऐप चंक प्राप्ति (मोड 3)-बेस 64 एन्कोडेड डेटा एक या अधिक सर्वरों को वैध एप्लिकेशन की नकल करने वाले HTTP हेडर के अंदर भेजा जाता है। यह मोड fa_assembler स्क्रिप्ट के साथ उपयोग करने के लिए एक "पुन: संयोजन कुंजी" भी उत्पन्न करेगा।
निर्दिष्ट पोर्ट पर सर्वरों द्वारा प्राप्त सभी डेटा को उस निर्देशिका में ReceivedData.txt फ़ाइल में सहेजा जाएगा जहाँ से सर्वर लॉन्च किया गया था। यदि सर्वर प्राप्त डेटा की मात्रा में भिन्न आकार का पता लगाता है (जो फ़ायरवॉल फ़िल्टरिंग के प्रभावी होने का संकेत देता है), तो यह आउटपुट सर्वर कंसोल पर दिखाया जाएगा:
लगातार दो रनों पर समान या कम मात्रा में डेटा प्राप्त हुआ। यदि परीक्षण डेटा भेज रहे हैं, तो अधिकतम डेटा लीक आकार तक पहुँच गया हो सकता है।
FireAway क्लाइंट/एप्लिकेशन स्पूफ़र प्रारंभ करना: FireAway क्लाइंट के तीन मोड हैं:
परीक्षण मोड (मोड 0)-यह देखने के लिए बढ़ते चंक आकारों में यादृच्छिक डेटा भेजें कि लेयर 7 नियंत्रण कितना डेटा भेजने से पहले संलग्न होते हैं और ट्रैफ़िक प्रवाह रोकते हैं।
अनुक्रमिक एक्सफ़िल्ट्रेशन मोड (मोड 1)-एक फ़ाइल खोलें और उसे निर्दिष्ट आकार के चंक्स में भेजें। डेटा क्रमिक रूप से प्रेषित किया जाएगा।
यादृच्छिक एक्सफ़िल्ट्रेशन मोड (मोड 2)-एक फ़ाइल खोलें और उसे निर्दिष्ट आकार के चंक्स में, लेकिन यादृच्छिक क्रम में भेजें। इस मोड का उपयोग करते समय, क्लाइंट अनुक्रम कुंजी पहचानकर्ता माँगेगा। यह दूरस्थ सर्वरों पर निर्दिष्ट मान है, और क्लाइंट उत्पन्न अनुक्रम कुंजी को पहचानकर्ता के साथ टैग करेगा, जो फ़ाइल प्रेषित होने से पहले एक सूची प्रदान किए जाने पर या निर्दिष्ट सर्वर IP पर एक यादृच्छिक सर्वर को प्रेषित किया जाता है।
मूल क्लाइंट प्रारंभ करने के लिए:
python fa_client.py <FireAway सर्वर IP या सर्वर सूची फ़ाइल का पथ> <Fireaway सर्वर पोर्ट> <क्लाइंट मोड>
सर्वरों की सूची एक साधारण टेक्स्ट फ़ाइल होनी चाहिए जिसमें प्रति पंक्ति एक IP पतों की सूची हो। यदि केवल एक सर्वर का उपयोग कर रहे हैं, तो एक एकल IP निर्दिष्ट किया जा सकता है।
एप्लिकेशन स्पूफ़िंग क्लाइंट के तीन मोड हैं:
परीक्षण मोड (मोड 0)-यह निर्धारित करने के लिए कि लेयर 7 नियंत्रण संलग्न होने और ट्रैफ़िक प्रवाह रोकने से पहले कितना डेटा भेजा जा सकता है, HTTP हेडर के अंदर क्रमशः बड़े चंक्स में यादृच्छिक परीक्षण डेटा भेजें।
बेस64 एन्कोडेड एक्सफ़िल्ट्रेशन मोड (मोड 1)-एक इनपुट फ़ाइल को बेस64 में एन्कोड करें और DLP को बायपास करने और प्रेषण को वैध एप्लिकेशन के रूप में छिपाने के लिए यादृच्छिक रूप से उत्पन्न HTTP हेडर के अंदर एन्कोडेड फ़ाइल के टुकड़े प्रेषित करें।
एप्लिकेशन स्पूफ़िंग क्लाइंट प्रारंभ करने के लिए:
python fa_spoof.py <FireAway सर्वर IP या सर्वर सूची फ़ाइल का पथ> <Fireaway सर्वर पोर्ट> <क्लाइंट मोड>
एप्लिकेशन स्पूफ़िंग यादृच्छिक रूप से HTTP हेडर को वैध दिखने वाले एप्लिकेशन हेडर (जैसे Facebook, LinkedIn, आदि) के अंदर डेटा चंक्स के साथ सम्मिलित करेगा ताकि लॉग को विभिन्न एप्लिकेशनों से प्रदूषित किया जा सके और डेटा एक्सफ़िल्ट्रेशन को छिपाया जा सके।
Fireaway पुन: संयोजक: Fireaway पुन: संयोजक (fa_assembler.py) का उपयोग Fireaway सर्वरों द्वारा प्राप्त डेटा को पुन: संयोजित करने के लिए किया जाता है। संयोजक के तीन मोड हैं, जो उन सर्वरों के मोड के अनुरूप हैं जिन्होंने डेटा प्राप्त किया:
मोड 1-उस डेटा को पुन: संयोजित करें जो सर्वरों द्वारा मोड 1 में क्रमिक क्रम में प्राप्त किया गया था। संयोजक प्रत्येक सर्वर के लिए प्राप्त डेटा वाली फ़ाइल के लिए पुन: संयोजन कुंजी निर्दिष्ट करने का संकेत देगा, जो वह यादृच्छिक मान है जो सर्वर ने शुरू होने पर उत्पन्न और प्रदर्शित किया था। यह मान प्राप्त चंक्स वाली फ़ाइलों की जाँच करके और पहले चार वर्णों को देखकर भी पाया जा सकता है।
मोड 2-उस डेटा को पुन: संयोजित करें जो सर्वरों द्वारा मोड 2 में यादृच्छिक क्रम में प्राप्त किया गया था। संयोजक अनुक्रम कुंजी के पथ के लिए पूछेगा, जो प्रेषण के दौरान एक यादृच्छिक सर्वर द्वारा क्लाइंट से प्राप्त किया गया था। यह प्रत्येक फ़ाइल के लिए पुन: संयोजन कुंजी के लिए भी संकेत देगा।
मोड 3-बेस64 एन्कोडेड डेटा को पुन: संयोजित करें जो स्पूफ़ किए गए एप्लिकेशन HTTP हेडर में प्राप्त किया गया था। यह डेटा, मोड 1 की तरह, पुन: संयोजन कुंजी के लिए भी पूछेगा।
पुन: संयोजक प्रारंभ करने के लिए:
python fa_assembler.py <पुन: संयोजन मोड> <पुन: संयोजित करने के लिए फ़ाइलों के अल्पविराम से अलग किए गए पथ>
आउटपुट निर्दिष्ट फ़ाइल नाम में सहेजा जाएगा।
कृपया किसी भी समस्या या प्रश्न की रिपोर्ट Github के माध्यम से करें।