
नेटवर्क ट्रैफ़िक विश्लेषण और फ़ीचर एक्सट्रैक्शन के लिए एक फ़्रेमवर्क।
LUCX (LUCID नेटवर्क ट्रैफ़िक पार्सर eXtended) एक नेटवर्क ट्रैफ़िक पार्सर है जो pcap प्रारूप में पहले से रिकॉर्ड किए गए ट्रैफ़िक ट्रेस और नेटवर्क इंटरफ़ेस से कैप्चर किए गए लाइव नेटवर्क ट्रैफ़िक दोनों के साथ काम करता है। LUCX, LUCID डेटासेट पार्सर (https://github.com/doriguzzi/lucid-ddos) का एक विस्तारित संस्करण है। मूल संस्करण की तरह, LUCX मौजूदा ऑनलाइन सिस्टम में एकत्र किए गए ट्रैफ़िक अवलोकनों के अनुरूप ट्रैफ़िक अवलोकन उत्पन्न करता है, जहाँ डिटेक्शन एल्गोरिदम को पूर्व-निर्धारित समय विंडो में एकत्र किए गए ट्रैफ़िक प्रवाह के खंडों से निपटना पड़ता है।
इसके अतिरिक्त, LUCX दो अलग-अलग प्रारूपों में अधिक विशेषताएँ (उदाहरण के लिए, TLS-विशिष्ट विशेषताएँ) निकालता है: Packet-Level और Statistical, जिनका वर्णन इस README में नीचे किया गया है।
ट्रैफ़िक प्री-प्रोसेसिंग संचालन दो अलग-अलग चरणों में विभाजित हैं: पहला चरण पैकेटों से विशेषताएँ निकालता है और उन्हें प्रवाह और समय विंडो में व्यवस्थित करता है, दूसरा चरण विशेषता सामान्यीकरण, पैडिंग (या फ़्लैटनिंग, वांछित आउटपुट प्रारूप के आधार पर) करता है और प्रशिक्षण, सत्यापन और परीक्षण सेट को hdf5 प्रारूप में सहेजता है।
इस रिपॉज़िटरी में Jupyter नोटबुक के रूप में प्रदान किया गया नमूना नेटवर्क इंट्रूज़न डिटेक्शन सिस्टम (NIDS), LUCX द्वारा उत्पन्न पैकेट-लेवल और सांख्यिकीय नेटवर्क ट्रैफ़िक प्रतिनिधित्व दोनों का उपयोग करके डीप लर्निंग मॉडल (विशेष रूप से एक मल्टी-लेयर परसेप्ट्रॉन (MLP) या एक कन्वोल्यूशनल न्यूरल नेटवर्क (CNN)) को प्रशिक्षित और मूल्यांकन करने के लिए उपयोग किया जा सकता है।
LUCX को Python v3.X, Numpy और Pyshark में कार्यान्वित किया गया है। LUCX के लिए कई Python टूल और लाइब्रेरी की स्थापना आवश्यक है। यह conda सॉफ़्टवेयर वातावरण (https://docs.conda.io/projects/conda/en/latest/) का उपयोग करके किया जा सकता है।
हम miniconda, जो conda का एक हल्का संस्करण है, की स्थापना का सुझाव देते हैं। miniconda MS Windows, MacOSX और Linux के लिए उपलब्ध है और इसे https://docs.conda.io/en/latest/miniconda.html# पर उपलब्ध दिशानिर्देशों का पालन करके स्थापित किया जा सकता है।
MS Windows 10 संस्करण 2004 और उच्चतर (Build 19041 और उच्चतर) या Windows 11 आवश्यक है।
MS Windows में, पहले कमांड लाइन से Linux के लिए Windows सबसिस्टम स्थापित करें: wsl.exe —install (अधिक जानकारी के लिए यहाँ देखें)। यह कमांड आपके कंप्यूटर पर एक Ubuntu Linux OS स्थापित करेगा। आप Windows मेनू से WSL ऐप निष्पादित करके Linux कमांड लाइन तक पहुँच सकते हैं, फिर नीचे Linux OS के लिए दिशानिर्देशों का पालन करें।
एक टर्मिनल खोलें, निम्नलिखित में से एक कमांड निष्पादित करें (अपने ऑपरेटिंग सिस्टम के आधार पर) और ऑन-स्क्रीन निर्देशों का पालन करें:
bash Miniconda3-latest-Linux-x86_64.sh (on Linux operating systems)
bash Miniconda3-latest-MacOSX-x86_64.sh (on macOS)
फिर Python 3.13.5 पर आधारित एक नया conda वातावरण (जिसे python313 कहा जाता है) बनाएं:
conda create -n python313 python=3.13.5
नया python313 वातावरण सक्रिय करें:
conda activate python313
और कुछ और पैकेजों की स्थापना के साथ वातावरण को कॉन्फ़िगर करें:
(python39)$ pip install scikit-learn h5py pyshark matplotlib graphviz pandas scikeras pydot seaborn
Pyshark का उपयोग डेटा प्री-प्रोसेसिंग के लिए किया जाता है। यह tshark के लिए केवल एक Python wrapper है, जिसका अर्थ है कि tshark भी इंस्टॉल होना चाहिए। Ubuntu-आधारित OS पर, निम्नलिखित कमांड का उपयोग करें:
sudo apt install tshark
macOS में, बस Wireshark को यहाँ से डाउनलोड करें और इसे इंस्टॉल करें।
कृपया ध्यान दें कि वर्तमान parser कोड wireshark/tshark संस्करण 4.4.9 या उससे ऊपर के साथ काम करता है।
LUCX द्विदिशात्मक नेटवर्क ट्रैफ़िक फ़्लो पर विचार करता है, जिन्हें उन पैकेटों के समूह के रूप में परिभाषित किया जाता है जो समान 5‑tuple पहचानकर्ता या उसके transposed 5‑tuple को साझा करते हैं। 5‑tuple IP नेटवर्क में किसी संचार स्ट्रीम को विशिष्ट रूप से चिह्नित करने का एक सामान्य तरीका है, और इसमें निम्नलिखित शामिल होते हैं:
जब पैकेटों के इन पाँच फ़ील्डों के मान समान होते हैं, तो उन्हें एक ही फ़्लो का भाग माना जाता है। transposed 5‑tuple की अवधारणा द्विदिशात्मक संचार को ध्यान में रखती है: यदि स्रोत और गंतव्य पते/पोर्ट बदल दिए जाएँ लेकिन प्रोटोकॉल वही रहे, तो भी पैकेटों को एक ही फ़्लो का भाग माना जाता है। यह सुनिश्चित करता है कि किसी बातचीत की दोनों दिशाएँ (क्लाइंट → सर्वर और सर्वर → क्लाइंट) एक साथ समूहीकृत हों।
उदाहरण: मान लीजिए IP 192.168.1.10 पर एक क्लाइंट IP 203.0.113.5 पर एक वेब सर्वर को पोर्ट 80 पर TCP अनुरोध भेजता है। क्लाइंट स्रोत पोर्ट 54321 का उपयोग करता है।
पैकेटों के दोनों समूह एक ही ट्रैफ़िक फ़्लो के हैं क्योंकि विपरीत दिशा अग्र दिशा के transposed 5‑tuple से मेल खाती है। इसके अतिरिक्त, LUCX किसी डेटासेट के नेटवर्क ट्रैफ़िक ट्रेस (या आने वाले नेटवर्क ट्रैफ़िक) से निकाले गए प्रत्येक ट्रैफ़िक फ़्लो को समय विंडो के आधार पर उप‑फ़्लो में विभाजित करता है। यह विभाजन उन वास्तविक दुनिया के परिदृश्यों का अनुकरण करता है जिनमें ट्रैफ़िक को स्थिर या गतिशील समय‑विंडो के भीतर एकत्र किया जाता है और फिर विश्लेषण के लिए क्लासिफायर को भेजा जाता है। ऐसा करके, सिस्टम घुसपैठ का पता लगाने वाले सिस्टम (IDS) की परिचालन प्रथाओं को प्रतिबिंबित करता है, जो अक्सर अल्पकालिक व्यवहारों की पहचान करने और हमलों का पता लगाने के लिए समय‑बद्ध पैकेट एकत्रीकरण पर निर्भर करते हैं।
पैकेटों को फ़्लो में समूहीकृत करने और फ़्लो को आगे उप‑फ़्लो में विभाजित करने के बाद, LUCX उप‑फ़्लो को ऐसे सैंपल में परिवर्तित करता है जिनका उपयोग ML‑आधारित क्लासिफायर को प्रशिक्षित, सत्यापित और परीक्षण करने के लिए किया जा सकता है। दो संभावित आउटपुट प्रारूप हैं: arrays (जैसा LUCID में) या vectors। पहला प्रारूप सीधे पैकेटों से निकाले गए फ़ीचर को संरक्षित करता है, जबकि दूसरा पैकेट‑स्तरीय फ़ीचर का सांख्यिकीय प्रतिनिधित्व उत्पन्न करता है। इन दो परिचालन मोड को क्रमशः packet‑level फ़ीचर और statistical फ़ीचर कहा जाता है।
यह मूल LUCID डेटासेट parser के समान प्रारूप का अनुसरण करता है, जो एक उप‑फ़्लो को एक array में परिवर्तित करता है जहाँ प्रत्येक कॉलम एक पैकेट‑स्तरीय फ़ीचर (जैसे, timestamp, पैकेट लंबाई, TCP SYN फ़्लैग, ICMP प्रकार) का प्रतिनिधित्व करता है, और प्रत्येक पंक्ति कालानुक्रमिक क्रम में एक पैकेट से मेल खाती है। हालाँकि संरचना वही रहती है, अतिरिक्त फ़ीचर पेश करके या मौजूदा फ़ीचर को बाइनरी प्रतिनिधित्व (जैसे, IP और TCP फ़्लैग) में विस्तारित करके कॉलम की संख्या बढ़ाई गई है। पहली पंक्ति में उप‑फ़्लो का पहला पैकेट होता है, जो समय विंडो के भीतर एकत्र किए गए फ़्लो का भी पहला पैकेट होता है। पहला कॉलम पैकेट timestamp है: पहले पैकेट के लिए, timestamp को शून्य पर सेट किया जाता है, जबकि बाद के पैकेटों के timestamp को उनके आगमन समय और पहले पैकेट के मूल timestamp के बीच के अंतर के रूप में व्यक्त किया जाता है। यह दृष्टिकोण पैकेट आगमन समय के लिए निरपेक्ष मानों के उपयोग से बचता है और एक ही उप‑फ़्लो से संबंधित पैकेटों के सापेक्ष समय पैटर्न को संरक्षित करता है।
| timestamp | packet_length | IP_ttl | IP_flags_df | ... | ICMP_code |
|---|---|---|---|---|---|
| 0 | 64 | 128 | 0 | ... | 0 |
| 1.2 | 128 | 64 | 1 | ... | 8 |
| ... | ... | ... | ... | ... | ... |
| 0 | 0 | 0 | 0 | ... | 0 |
| 0 | 0 | 0 | 0 | ... | 0 |