
Tshark का उपयोग करके pcap फ़ाइलों से मैलवेयर HTTP अनुरोधों के अद्वितीय फिंगरप्रिंट उत्पन्न करता है, जो अनुरोध संरचना, हेडर और पेलोड विशेषताओं के विश्लेषण के माध्यम से मैलवेयर परिवारों की पहचान और समूहीकरण को सक्षम बनाता है।
मैलवेयर के HTTP अनुरोधों की फ़िंगरप्रिंटिंग के लिए उपकरण। Tshark पर आधारित और Python3 में लिखा गया। कार्यशील प्रोटोटाइप चरण :-)
इसका मुख्य उद्देश्य मैलवेयर अनुरोधों का अद्वितीय प्रतिनिधित्व (फ़िंगरप्रिंट) प्रदान करना है, जो उनकी पहचान में सहायता करते हैं। अद्वितीय का अर्थ है कि प्रत्येक फ़िंगरप्रिंट केवल एक विशेष मैलवेयर परिवार में ही देखा जाना चाहिए, फिर भी एक परिवार में कई फ़िंगरप्रिंट हो सकते हैं। Hfinger अनुरोध को पूरे अनुरोध को मुद्रित करने की तुलना में छोटे रूप में प्रस्तुत करता है, लेकिन फिर भी मानव द्वारा व्याख्या योग्य है।
Hfinger का उपयोग मैन्युअल मैलवेयर विश्लेषण के साथ-साथ सैंडबॉक्स सिस्टम या SIEM में भी किया जा सकता है। उत्पन्न फ़िंगरप्रिंट अनुरोधों को समूहित करने, अनुरोधों को विशेष मैलवेयर परिवारों से जोड़ने, एक परिवार के विभिन्न संचालनों की पहचान करने, या अन्य सुरक्षा प्रणालियों द्वारा छोड़े गए अज्ञात दुर्भावनापूर्ण अनुरोधों की खोज करने के लिए उपयोगी होते हैं जो फ़िंगरप्रिंट साझा करते हैं।
एक शैक्षणिक पेपर इस उपकरण पर काम के साथ है, जो उदाहरण के लिए, डिज़ाइन विकल्पों की प्रेरणा, और p0f, FATT, और Mercury की तुलना में उपकरण के मूल्यांकन का वर्णन करता है।
इस परियोजना की मूल धारणा यह है कि विभिन्न मैलवेयर परिवारों के HTTP अनुरोध कमोबेश अद्वितीय होते हैं, इसलिए उन्हें किसी प्रकार की पहचान प्रदान करने के लिए फ़िंगरप्रिंट किया जा सकता है। Hfinger कुछ हेडर की संरचना और मूल्यों के बारे में जानकारी बनाए रखता है ताकि आगे के विश्लेषण के साधन प्रदान किए जा सकें। उदाहरण के लिए, समान अनुरोधों का समूहीकरण - इस समय, यह अभी भी कार्य प्रगति पर है।
मैलवेयर के HTTP अनुरोधों और हेडर के विश्लेषण के बाद, हमने अनुरोधों के कुछ हिस्सों को सबसे विशिष्ट के रूप में पहचाना है। इनमें शामिल हैं:
इसके अतिरिक्त, अनुरोध URL की कुछ मानक सुविधाओं पर भी विचार किया गया। इन सभी भागों को सुविधाओं के एक सेट में अनुवादित किया गया, जिसका विस्तार से वर्णन यहाँ किया गया है।
उपरोक्त सुविधाओं को अलग-अलग लंबाई के प्रतिनिधित्व में अनुवादित किया जाता है, जो वास्तविक फ़िंगरप्रिंट है। रिपोर्ट मोड के आधार पर, अनुरोधों को फ़िंगरप्रिंट करने के लिए विभिन्न सुविधाओं का उपयोग किया जाता है। इन मोडों के बारे में अधिक जानकारी नीचे प्रस्तुत की गई है। फीचर चयन प्रक्रिया का वर्णन आगामी शैक्षणिक पेपर में किया जाएगा।
स्थापना से पहले न्यूनतम आवश्यकताएँ:
Python >= 3.3,Tshark >= 2.2.0.PyPI से स्थापना उपलब्ध है:
pip install hfinger
Hfinger का Xubuntu 22.04 LTS पर tshark पैकेज संस्करण 3.6.2 के साथ परीक्षण किया गया है,
लेकिन Xubuntu 18.04 पर 2.6.10 या Xubuntu 20.04 पर 3.2.3 जैसे पुराने संस्करणों के साथ भी काम करना चाहिए।
कृपया ध्यान दें कि किसी भी PoC की तरह, आपको Hfinger को एक अलग वातावरण में चलाना चाहिए, कम से कम Python वर्चुअल वातावरण के साथ। इसकी सेटअप यहाँ शामिल नहीं है, लेकिन आप इस ट्यूटोरियल को आज़मा सकते हैं।
स्थापना के बाद, आप टूल को सीधे कमांड लाइन से hfinger के साथ
या Python मॉड्यूल के रूप में python -m hfinger के साथ कॉल कर सकते हैं।
उदाहरण के लिए:
foo@bar:~$ hfinger -f /tmp/test.pcap
[{"epoch_time": "1614098832.205385000", "ip_src": "127.0.0.1", "ip_dst": "127.0.0.1", "port_src": "53664", "port_dst": "8080", "fingerprint": "2|3|1|php|0.6|PO|1|us-ag,ac,ac-en,ho,co,co-ty,co-le|us-ag:f452d7a9/ac:as-as/ac-en:id/co:Ke-Al/co-ty:te-pl|A|4|1.4"}]
सहायता को छोटे -h या लंबे --help स्विच के साथ प्रदर्शित किया जा सकता है:
usage: hfinger [-h] (-f FILE | -d DIR) [-o output_path] [-m {0,1,2,3,4}] [-v]
[-l LOGFILE]
Hfinger - pcap फ़ाइलों में संग्रहीत मैलवेयर HTTP अनुरोधों की फ़िंगरप्रिंटिंग
वैकल्पिक तर्क:
-h, --help यह सहायता संदेश दिखाएं और बाहर निकलें
-f FILE, --file FILE एकल pcap फ़ाइल पढ़ें
-d DIR, --directory DIR
निर्देशिका DIR से pcap फ़ाइलें पढ़ें
-o output_path, --output-path output_path
आउटपुट निर्देशिका का पथ
-m {0,1,2,3,4}, --mode {0,1,2,3,4}
फ़िंगरप्रिंट रिपोर्ट मोड।
0 - मोड 2 के समान संख्या में टकराव और फ़िंगरप्रिंट, लेकिन कम सुविधाओं का उपयोग करते हुए,
1 - सभी डिज़ाइन की गई सुविधाओं का प्रतिनिधित्व, लेकिन मोड 0, 2 और 4 की तुलना में थोड़ा अधिक टकराव,
2 - इष्टतम (डिफ़ॉल्ट मोड),
3 - उत्पन्न फ़िंगरप्रिंट की सबसे कम संख्या, लेकिन टकरावों की सबसे अधिक संख्या,
4 - उच्चतम फ़िंगरप्रिंट एन्ट्रॉपी, लेकिन मोड 0-2 की तुलना में थोड़ा अधिक फ़िंगरप्रिंट
-v, --verbose अनुरोध में गैर-मानक मानों के बारे में जानकारी रिपोर्ट करें
(जैसे, गैर-ASCII वर्ण, कोई CRLF टैग नहीं, कॉन्फ़िगरेशन सूची में मौजूद नहीं मान)।
--logfile (-l) के बिना त्रुटि मानक पर प्रिंट करेगा।
-l LOGFILE, --logfile LOGFILE
वर्बोज़ मोड में आउटपुट लॉग फ़ाइल। -v या --verbose स्विच को दर्शाता है।
आपको pcap फ़ाइल (-f) या pcap फ़ाइलों वाली निर्देशिका (-d) का पथ प्रदान करना होगा। आउटपुट JSON प्रारूप में है। यह मानक आउटपुट पर या प्रदान की गई निर्देशिका (-o) में स्रोत फ़ाइल के नाम का उपयोग करके सहेजा जाएगा। उदाहरण के लिए, कमांड का आउटपुट:
hfinger -f example.pcap -o /tmp/pcap
यहाँ सहेजा जाएगा:
/tmp/pcap/example.pcap.json
रिपोर्ट मोड -m/--mode का उपयोग 0-4 श्रेणी में एक पूर्णांक प्रदान करके डिफ़ॉल्ट रिपोर्ट मोड को बदलने के लिए किया जा सकता है।
मोड प्रतिनिधित्व अनुरोध सुविधाओं या राउंडिंग मोड में भिन्न होते हैं।
डिफ़ॉल्ट मोड (2) को हमारे द्वारा चुना गया था ताकि उन सभी सुविधाओं का प्रतिनिधित्व किया जा सके जो आमतौर पर अनुरोधों के विश्लेषण के दौरान उपयोग की जाती हैं,
लेकिन यह टकरावों और उत्पन्न फ़िंगरप्रिंटों की कम संख्या भी प्रदान करता है।
अन्य मोड के साथ, आप अलग-अलग लक्ष्य प्राप्त कर सकते हैं।
उदाहरण के लिए, मोड 3 में आपको उत्पन्न फ़िंगरप्रिंटों की कम संख्या मिलती है
लेकिन मैलवेयर परिवारों के बीच टकराव की अधिक संभावना होती है। यदि आप अनिश्चित हैं, तो आपको कुछ भी बदलने की आवश्यकता नहीं है।
रिपोर्ट मोड के बारे में अधिक जानकारी यहाँ है।
संस्करण 0.2.1 से शुरू करते हुए Hfinger कम वर्बोज़ है। यदि आप प्राप्त करना चाहते हैं तो आपको -v/--verbose का उपयोग करना चाहिए
हेडर के गैर-मानक मानों, अनुरोध के गैर-पेलोड भाग में गैर-ASCII वर्णों,
CRLF टैग (\r\n\r\n) की कमी, और विश्लेषित अनुरोधों के साथ अन्य समस्याओं के बारे में जानकारी जो एप्लिकेशन त्रुटियाँ नहीं हैं।
जब वर्बोज़ मोड में ऐसी कोई समस्या आती है, तो उन्हें मानक त्रुटि आउटपुट पर मुद्रित किया जाएगा।
आप -l/--log स्विच (जो -v/--verbose को दर्शाता है) का उपयोग करके लॉग को एक परिभाषित स्थान पर भी सहेज सकते हैं।
लॉग डेटा लॉग फ़ाइल में जोड़ा जाएगा।
संस्करण 0.2.0 से शुरू करते हुए, Hfinger अन्य Python अनुप्रयोगों में आयात का समर्थन करता है।
इसे अपने ऐप में उपयोग करने के लिए बस hfinger.analysis से hfinger_analyze फ़ंक्शन आयात करें
और इसे pcap फ़ाइल और रिपोर्टिंग मोड के पथ के साथ कॉल करें।
लौटाया गया परिणाम फ़िंगरप्रिंटिंग परिणामों के साथ dicts की एक सूची है।
उदाहरण के लिए:
from hfinger.analysis import hfinger_analyze
pcap_path = "SPECIFY_PCAP_PATH_HERE"
reporting_mode = 4
print(hfinger_analyze(pcap_path, reporting_mode))