SUNBURST
शैनन एन्ट्रॉपी का उपयोग करके SUNBURST C2 स्टेज-1 का पता लगाना
परिचय:
डोमेन-जनरेशन एल्गोरिदम (DGA) का पता लगाने के लिए शैनन एन्ट्रॉपी का उपयोग करना।
इस फ़ंक्शन में केवल FQDN ही इनपुट किए जाने चाहिए या CSV फ़ाइल से पढ़े जाने चाहिए।
SYNTAX: Prefix_or_subdomain.Domain.TLD
APT द्वारा किल चेन: C2 के लिए लंबी-स्ट्रिंग DGA का लाभ उठाने के कारण बनाया गया।
उन लंबी स्ट्रिंग URL की पहचान करें जिनकी एन्ट्रॉपी > 2x मानक विचलन है।
लंबे उपसर्गों/सबडोमेन वाले URL के ऊपरी 2.5% को देखना।
यदि CND विश्लेषकों को इसकी आवश्यकता हो तो अतिरिक्त मेटाडेटा सहेजना (जैसे उपसर्ग लंबाई)
आवश्यकताएँ:
- Python 3.9+
- Python PATH वेरिएबल में मौजूद हो
- सभी सूचीबद्ध imports (यदि आवश्यक हो तो pip install)
- इनपुट DNS लॉग में प्रति पंक्ति 1x FQDN हो (कोई अन्य विराम चिह्न नहीं)
- Cisco Top-1M (CSV, ZIP) या Majestic (CSV) Top-1M स्क्रिप्ट के समान फ़ोल्डर में मौजूद हों।
कैसे-चलाएँ (इंटरैक्टिव मोड चालू है, VARIABLES देखें):
- Python 3.9.x इंस्टॉल करें
- सभी इनपुट फ़ाइलों को सही स्वरूपण के साथ तैयार करें (एक टेक्स्ट फ़ाइल में डोमेन, प्रति पंक्ति 1, कोई विराम चिह्न नहीं)
- सुनिश्चित करें कि इनपुट फ़ाइलें इस स्क्रिप्ट के समान निर्देशिका/फ़ोल्डर में हैं।
4a) (Windows) इस स्क्रिप्ट को Python IDLE या Visual Studio Code में खोलें।
4b) (Linux) $~: python3 shannon.py
- जाँचने के लिए इनपुट DNS लॉग फ़ाइल दर्ज करें।
- लाभ उठाने के लिए Cisco Umbrella (CSV/ZIP) या Majestic Top-1M फ़ाइल (CSV) दर्ज करें।
- आवृत्ति (Frequency) और शैनन एन्ट्रॉपी मान उत्पन्न होने की प्रतीक्षा करें।
- आउटपुट फ़ाइलों की जाँच करें।
कैसे-चलाएँ (इंटरैक्टिव मोड बंद है, VARIABLES देखें):
- Python 3.9.x इंस्टॉल करें
- सभी इनपुट फ़ाइलों को सही स्वरूपण के साथ तैयार करें (एक टेक्स्ट फ़ाइल में डोमेन, प्रति पंक्ति 1, कोई विराम चिह्न नहीं)
- सुनिश्चित करें कि इनपुट फ़ाइलें इस स्क्रिप्ट के समान निर्देशिका/फ़ोल्डर में हैं।
4a) (Windows) इस स्क्रिप्ट को Python IDLE या Visual Studio Code में खोलें।
4b) (Linux) $~: python3 shannon.py
- विश्लेषण करने के लिए इनपुट लॉग "domains.txt" है, VARIABLES देखें।
- शब्दकोश संभावना बनाने के लिए Top-N फ़ाइल चुनें, VARIABLES देखें।
- आवृत्ति (Frequency) और शैनन एन्ट्रॉपी मान उत्पन्न होने की प्रतीक्षा करें।
- आउटपुट फ़ाइलों की जाँच करें।
धारणाएँ:
- बड़े और छोटे अक्षरों के प्रकट होने की संभावना बराबर है।
a) इस बात की अनदेखी करना कि TOR नोड DNS क्वेरी में केस-संवेदनशीलता और 0x20-एन्कोडिंग को बदलते हैं।
- ETOAN वर्ण आवृत्ति चार्ट अपर्याप्त है क्योंकि इसमें 0-9, "-", और "" गायब हैं।
a) डोमेन में हाइफ़न (-), अंडरस्कोर () और संख्याएँ हो सकती हैं।
- ExploderBot DGA का मुकाबला करने के लिए डिज़ाइन नहीं किया गया है।
- इनपुट: साधारण टेक्स्ट फ़ाइल, प्रत्येक URL अपनी पंक्ति में - और कुछ नहीं।
- इनपुट में केवल URL स्ट्रिंग्स हैं, बिना प्रतिबंधित वर्णों के।
- इनपुट और आउटपुट फ़ाइलें इस स्क्रिप्ट के समान फ़ोल्डर में होनी चाहिए।
- Python3 PATH वेरिएबल में है।
डेटा सेट (डोमेन):
उपयोग किया गया डेटा सेट SQLite से निकाले गए Pi-Hole क्वेरी लॉग (12 घंटे की विंडो) से प्राप्त हुआ था।
BASH:
$~: sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain FROM queries WHERE timestamp >='$(($(date +%s) - 43200))'" > domains.txt
डेटा को Excel > Data > Remove Duplicates का उपयोग करके डीडुप किया गया था।
रिवर्स लुकअप (PTR) in-addr.arpa के डेटा को भी हटा दिया गया था।
डेटा सेट (संभावनाएँ):
DGA विश्लेषण के लिए RedCanary के परिणामों का लाभ उठाते हुए, यह स्क्रिप्ट URL लेती है और शैनन एन्ट्रॉपी की गणना करती है।
DevOps परीक्षण चरण रेखा:
- shannon.py (1.0) - स्थिर RedCanary शब्दकोश के साथ गणनाओं को कार्यशील बनाना।
- shannon.py (1.1) - मामूली परीक्षण को 1.0 में विलय करना।
- dictionary.py (1.0) - Cisco + Majestic Top-1M को खोलने/बंद करने का परीक्षण।
- shannon.py (2.0) - 1.0 को dictionary.py के परीक्षणित फ़ंक्शनों के साथ संयोजित करना।
संदर्भ:
Splunk Shannon Entropy - जहाँ से यह विचार आया*
https://www.splunk.com/en_us/blog/tips-and-tricks/when-entropy-meets-shannon.html
SANS Mark Baggett - RedCanary द्वारा Alexa Top 1M के विश्लेषण हेतु उपयोग किया गया टूल
https://github.com/markbaggett/freq
RedCanary - वह ब्लॉग जहाँ से प्रायिकता स्कोर आते हैं
https://redcanary.com/blog/threat-hunting-entropy/
Alexa के Top 1M डोमेन - RedCanary द्वारा उपयोग किया गया डेटा कॉर्पस
https://www.alexa.com/topsites
DGA Detector
https://github.com/exp0se/dga_detector
Shannon Entropy - सूत्र
https://towardsdatascience.com/the-intuition-behind-shannons-entropy-e74820fe9800