
एक व्यापक ब्राउज़र एक्सटेंशन (.xpi) मैलवेयर स्कैनर जो कई सामान्य मैलवेयर ट्रिक्स की जाँच करता है, जैसे: क्रेडेंशियल-स्टीलर ऑब्सफस्केशन रणनीतियाँ, स्टेग्नोग्राफ़ी, base64 पेलोड, ज़िप-ट्रिक्स, रिमोट-कोड निष्पादन, पॉलीग्लॉट ट्रिक्स, मेटा डेटा ट्रिक्स — ताकि विश्लेषक को यह जानकारी मिल सके कि गहन विश्लेषण की आवश्यकता कहाँ है।
एक कमांड-लाइन उपकरण जो फ़ायरफ़ॉक्स एक्सटेंशन फ़ाइलों (.xpi) का विश्लेषण करता है मैलवेयर, अस्पष्टीकरण, छिपे हुए पेलोड, स्टेग्नोग्राफ़ी, और अन्य तकनीकों के संकेतों के लिए जिनका उपयोग एक्सटेंशन समीक्षा टीमों के पास दुर्भावनापूर्ण कोड छुपाने के लिए किया जाता है।
extension-scanner.py एक फ़ायरफ़ॉक्स एक्सटेंशन को खोलता है और उसके अंदर प्रत्येक फ़ाइल पर सुरक्षा जांचों की एक श्रृंखला करता है। फिर यह एक रंग-कोडित रिपोर्ट तैयार करता है जिसमें निष्कर्ष गंभीरता के अनुसार क्रमबद्ध होते हैं।
| श्रेणी | यह क्या खोजता है |
|---|---|
| अनुमतियाँ | खतरनाक या अत्यधिक व्यापक अनुमतियाँ (nativeMessaging, <all_urls>, debugger, desktopCapture, आदि) |
| सामग्री सुरक्षा नीति | unsafe-inline, unsafe-eval, CSP में रिमोट स्क्रिप्ट स्रोत |
| जावास्क्रिप्ट अस्पष्टीकरण | eval(), atob(), Function() कंस्ट्रक्टर दुरुपयोग, हेक्स एस्केप अनुक्रम, split/join/reverse पुनःसंयोजन, एन्कोडेड स्ट्रिंग लिटरल, स्ट्रिंग आर्गुमेंट के साथ setTimeout |
| संदिग्ध URLs | हार्डकोडेड बाहरी डोमेन जिन्हें ज्ञात-बुरा (ब्लॉकलिस्ट हिट → HIGH), अज्ञात (अनुमतिसूची पर नहीं → MEDIUM), या ज्ञात-अच्छा (अनुमतिसूची पर → दबा दिया गया) के रूप में वर्गीकृत किया गया है। डोमेन ब्लॉकलिस्ट को URLhaus और Peter Lowe की सूची से ताज़ा करने के लिए --update-blocklist चलाएँ। |
| क्रेडेंशियल्स और रहस्य | हार्डकोडेड API कुंजियाँ, टोकन (AWS, GitHub, Slack, Google), पासवर्ड, निजी कुंजियाँ, और IP पते |
| Base64 पेलोड | एम्बेडेड base64 ब्लॉब को डीकोड करता है और उन्हें एक्ज़ीक्यूटेबल, स्क्रिप्ट और नेटवर्क कोड के लिए स्कैन करता है |
| PNG स्टेग्नोग्राफ़ी | PNG IEND के बाद जोड़े गए डेटा का पता लगाता है और स्वचालित रूप से ट्रेलर को डीकोड करता है (base64, zlib, gzip, और संयोजन); डीकोड किए गए पेलोड को JS अस्पष्टीकरण, क्रेडेंशियल्स और संदिग्ध URLs के लिए पुनरावर्ती रूप से स्कैन किया जाता है। अज्ञात चंक प्रकार, LSB चैनल विसंगतियाँ, और असामान्य रूप से उच्च पिक्सेल एंट्रॉपी का भी पता लगाता है |
| फ़ाइल मेटाडेटा | एक्ज़ीक्यूटेबल के मैजिक-बाइट का पता लगाना (.exe, .elf, .dylib), डबल एक्सटेंशन (जैसे photo.png.js), संदिग्ध फ़ाइल नाम (keylog, miner, wallet) |
| पॉलीग्लॉट फ़ाइलें | वे फ़ाइलें जो एक साथ दो प्रारूपों में मान्य हैं (जैसे HTML + ZIP) |
| ZIP ट्रिक्स | पथ ट्रैवर्सल प्रविष्टियाँ, फ़ाइल नामों में नल बाइट, डुप्लिकेट प्रविष्टियाँ जो पार्सर्स को बेवकूफ बना सकती हैं, पेलोड ले जाने वाली ZIP टिप्पणियाँ |
| रिमोट कोड | रिमोट URLs से लोड की गई पृष्ठभूमि पृष्ठ या सेवा वर्कर |
| उच्च एंट्रॉपी | संदिग्ध रूप से उच्च एंट्रॉपी वाली फ़ाइलें या स्ट्रिंग लिटरल (संभावित रूप से एन्क्रिप्टेड या संपीड़ित पेलोड) |
| API दुरुपयोग | डेटा चोरी या बहिर्वाह को इंगित करने वाले ब्राउज़र एक्सटेंशन API कॉल: cookies.getAll({}), tabs.query({}), history.search, कीबोर्ड श्रोता, क्लिपबोर्ड रीड, एक गतिशील फ़ंक्शन के साथ scripting.executeScript। जब एक ही फ़ाइल में डेटा-संग्रह कॉल को आउटबाउंड नेटवर्क भेजने के साथ जोड़ा जाता है तो CRITICAL तक बढ़ जाता है। |
| छिपे हुए तत्व | गतिशील रूप से बनाए गए अदृश्य iframes (display:none, शून्य आयाम) DOM में इंजेक्ट किए गए — मौन सहबद्ध पिंग या C2 चैनल। new Image().src के माध्यम से बाहरी URLs की ओर इशारा करते हुए ट्रैकिंग पिक्सेल। |
| टाइम बम | ≥ 5 मिनट की देरी के साथ setTimeout/setInterval; Date.now() अंकगणितीय द्वार; localStorage स्थापना-तिथि जांच जो पहले रन के दिनों बाद व्यवहार सक्रिय करती है; Math.random() सीमा द्वार जो केवल पृष्ठ लोड के एक अंश पर फायर करते हैं। |
| विरोधी-विश्लेषण | navigator.webdriver जाँच; शून्य-चौड़ाई/ऊँचाई विंडो तुलना; नंगे debugger कथन; सैंडबॉक्स का पता लगाने के लिए समय-आधारित performance.now() अंकगणित। |
CRITICAL — लगभग निश्चित रूप से दुर्भावनापूर्ण; तत्काल जांच आवश्यकHIGH — दृढ़ता से संदिग्ध; सावधानीपूर्वक समीक्षा के योग्यMEDIUM — संभावित रूप से जोखिम भरा; संदर्भ में समीक्षा करेंLOW — मामूली चिंता; सूचनात्मकINFO — मेटाडेटा (हैश, फ़ाइल का आकार, आदि)python3.11, python3.12 या python3.13**python3-venv** - यदि आप वर्चुअल वातावरण का उपयोग करते हैं तो आवश्यकवर्चुअल वातावरण का उपयोग करना:
sudo apt install python3 python3-venv
git clone https://github.com/ernos/extension-scanner.git
cd extension-scanner
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
**python3-numpy** - स्टेग्नोग्राफ़ी के लिए अनुशंसित, सिस्टम-वाइड इंस्टॉलेशन (अन्यथा pip install -r requirements.txt)pip install pillow numpy
#System-wide install on ubuntu:
sudo apt install python3-pillow python3-numpy
git clone https://github.com/ernos/extension-scanner.git
cd extension-scanner
chmod +x extension-scanner.py
mkdir -p ~/.local/share/bin
ln -s $PWD/extension-scanner.py ~/.local/share/bin/extension-scanner
# LSB स्टेग्नोग्राफ़ी विश्लेषण के लिए आवश्यक (वैकल्पिक लेकिन अनुशंसित)
pip install pillow numpy
# विकल्प 1. केवल वर्तमान उपयोगकर्ता के लिए:
# सरल उपयोग के लिए bash पूर्णता सक्षम करें (कमांड को स्वतः पूर्ण करने के लिए TAB)
mkdir -p ~/.local/share/bash-completion/completions
cp extension-scanner-completions ~/.local/share/bash-completion/completions
echo "source ~/.local/share/bash-completion/completions/extension-scanner-completions" >> ~/.bashrc
# विकल्प 2. सभी उपयोगकर्ताओं के लिए वैश्विक रूप से पूर्णता सक्षम करें (आपके .bashrc से स्वतः स्रोत होना चाहिए)
cp extension-scanner-completions /usr/share/bash-completion/completions
यदि Pillow/NumPy स्थापित नहीं हैं तो उपकरण फिर भी चलता है — LSB और पिक्सेल-एंट्रॉपी जाँच केवल छोड़ दी जाती हैं, और एक चेतावनी मुद्रित की जाती है।
usage: xpiscanner [-h] [--update-blocklist] [--min-severity {CRITICAL,HIGH,MEDIUM,LOW,INFO}] [--json] [--compact] [-v] [-m] [--scans CHECK [CHECK ...]]
[targets ...]
Firefox Extension Scanner - Scans XPI files for security risks and malware indicators
positional arguments:
targets One or more XPI files or directories containing XPIs to analyze