
Umap2 is the second revision of NCC Group's python based USB host security assessment tool.
Umap2, NCC Group का दूसरा संशोधन है, जो पायथन-आधारित USB होस्ट सुरक्षा मूल्यांकन उपकरण है।
इस संशोधन में वे सभी विशेषताएँ होंगी जो पहले संशोधन में समर्थित थीं:
इस संशोधन में कुछ अतिरिक्त विशेषताएँ होंगी:
Umap2 को NCC Group और Cisco SAS टीम द्वारा विकसित किया गया है।
चेतावनी: umap2 अभी भी एक प्रायोगिक, अल्फा चरण का उपकरण है। API, निष्पादन योग्य नाम, आदि निकट भविष्य में बदले जाने की संभावना है। अपने जोखिम पर उपयोग करें।
#umap2 Freenode पर <https://webchat.freenode.net/?channels=umap2>_
स्थापनाचूँकि यह बहुत प्रारंभिक संस्करण है, Umap2 अभी pypi से उपलब्ध नहीं है, इसके बजाय, इसे सीधे github से स्थापित करने के लिए pip का उपयोग करें:
::
$ pip install git+https://github.com/nccgroup/umap2.git#egg=umap2
Umap2 अधिकांश भागों के लिए python2/3 के साथ संगत है। हालाँकि, फ़ज़र स्क्रिप्ट (umap2kitty) केवल python2 पर चलती है।
Umap2 की निर्भरताएँ setup.py में सूचीबद्ध हैं और umap2 के साथ स्थापित होंगी, हालाँकि, कुछ उपकरणों के लिए समर्थन जोड़ने हेतु कुछ चीज़ें हैं जो आप करना चाहेंगे:
मास स्टोरेज
1. चल रही निर्देशिका में **stick.img** नामक डिस्क इमेज की आवश्यकता होती है
MTP
~~~
1. वर्तमान निर्देशिका में **mtp_fs** नामक फ़ोल्डर/फ़ाइल की आवश्यकता होती है।
2. पायथन पैकेज pymtpdevice की आवश्यकता होती है। यह पैकेज अभी pypi पर नहीं है,
लेकिन इसे यहाँ से डाउनलोड और स्थापित किया जा सकता है:
https://github.com/BinyaminSharet/Mtp
हार्डवेयर
--------
- `Facedancer <http://goodfet.sourceforge.net/hardware/facedancer21/>`_
Umap2 के लिए अनुशंसित हार्डवेयर है।
Umap2 इसी पर आधारित विकसित किया गया था, और आपको इसके साथ सबसे अधिक समर्थन मिलेगा।
- `Raspdancer <http://wiki.yobi.be/wiki/Raspdancer>` RPi पर समर्थित है।
- **GadgetFS** आंशिक रूप से समर्थित है।
यह समर्थन बहुत प्रायोगिक है (Umap2 के बाकी हिस्सों से भी अधिक)
और सीमित है।
- Linux कर्नेल 4.4.9 से BeagleboneBlack, एक पैच्ड gadgetfs
ड्राइवर के साथ
- RaspberryPi Zero W, Linux कर्नेल 4.12.0-rc3+ से, जिसे
किसी पैच की आवश्यकता नहीं है
- चूँकि 4.12.0-rc3+ को किसी पैच की आवश्यकता नहीं है, संभावना है कि अन्य डिवाइस भी
समर्थित हो सकते हैं; यदि आपको ऐसा कोई डिवाइस पता है या आपने इसे अन्य डिवाइसों पर
चलाने के लिए बदलाव किए हैं, तो कृपया हमें बताएं।
यदि आप रुचि रखते हैं, तो अधिक जानकारी के लिए **gadget/README.rst** पढ़ें।
उपयोग
-----
डिवाइस अनुकरण
Umap2 की मूल कार्यक्षमता एक USB डिवाइस का अनुकरण करना है। आप मौजूदा डिवाइसों में से किसी एक का अनुकरण कर सकते हैं (उपलब्ध डिवाइसों को देखने के लिए umap2list का उपयोग करें):
::
$ umap2emulate -P fd:/dev/ttyUSB0 -C mass_storage
या अपना स्वयं का डिवाइस अनुकरण करें:
::
$ umap2emulate -P fd:/dev/ttyUSB0 -C ~/my_mass_storage.py
अपना डिवाइस जोड़ने के लिए एक विस्तृत मार्गदर्शिका जल्द ही जोड़ी जाएगी, तब तक, आप umap2/dev/ के अंतर्गत umap2 डिवाइसों पर नज़र डाल सकते हैं।
डिवाइस समर्थन स्कैनिंग
Umap2 यह पता लगाने का प्रयास कर सकता है कि होस्ट द्वारा किस प्रकार के USB डिवाइस
समर्थित हैं।
यह Umap2 में लागू प्रत्येक डिवाइस का थोड़े समय के लिए अनुकरण करके और यह जाँच करके किया जाता है
कि कोई डिवाइस-विशिष्ट संदेश भेजा गया था या नहीं।
::
$ umap2scan -P fd:/dev/ttyUSB0
विक्रेता-विशिष्ट डिवाइस समर्थन स्कैनिंग
विभिन्न डिवाइस कक्षाओं के समर्थन की स्कैनिंग के अतिरिक्त, Umap2 विक्रेता-विशिष्ट डिवाइसों के समर्थन के लिए होस्ट को स्कैन कर सकता है।
विक्रेता-विशिष्ट स्कैनिंग होस्ट पर उपलब्ध विक्रेता-विशिष्ट ड्राइवरों की पहचान करने में सहायता करती है।
यह वर्तमान Umap2 VID-PID DB (अभी भी कार्य जारी है) या उसी प्रारूप में एक अन्य फ़ाइल का उपयोग करके किया जा सकता है:
::
$ umap2vsscan -P fd:/dev/ttyUSB0 -d $UMAP2_DIR/data/vid_pid_db.py
या किसी विशिष्ट vid-pid श्रेणी को स्कैन करके - इस उदाहरण में - VID 0x1001 से 0x1004 तक और PID 0x0000 से 0xffff तक के प्रत्येक संयोजन के लिए स्कैन करें:
::
$ umap2vsscan -P fd:/dev/ttyUSB0 -s 1001-1004:0000-ffff
vid_pid_db.py फ़ाइल में किसी भी पैच/परिवर्धन का स्वागत है!
फ़ज़िंग
Umap2 का उपयोग करके फ़ज़िंग के लिए एक विस्तृत मार्गदर्शिका निम्न में पाई जा सकती है:
`docs/fuzzing.rst <https://github.com/nccgroup/umap2/blob/master/docs/fuzzing.rst>`_
Umap2 के साथ फ़ज़िंग तीन चरणों से बनी है,
जिन्हें भविष्य में एकल स्क्रिप्ट में एकीकृत किया जा सकता है।
1. उन संदेशों का क्रम पता करें
जिस होस्ट को आप फ़ज़ करना चाहते हैं और उस
USB डिवाइस के लिए जिसका आप अनुकरण करते हैं:
::
$ umap2stages -P fd:/dev/ttyUSB0 -C keyboard -s keyboard.stages
2. किटी फ़ज़र को एक अलग शेल में प्रारंभ करें,
और इसे चरण 1 में उत्पन्न stages के साथ प्रदान करें।
::
$ umap2kitty -s keyboard.stages
3. umap2 कीबोर्ड अनुकरण को फ़ज़ मोड में प्रारंभ करें
::
$ umap2fuzz -P fd:/dev/ttyUSB0 -C keyboard
चरण 3 पूरा होने के बाद, फ़ज़िंग सत्र शुरू हो जाएगा।
MTP फ़ज़िंग के बारे में नोट
++++++++++++++++++++++
हालाँकि umap2 का उपयोग MTP डिवाइसों का अनुकरण और पता लगाने के लिए किया जा सकता है
(इस README का "सॉफ्ट निर्भरताएँ" अनुभाग देखें),
यह इस समय MTP परत को फ़ज़ नहीं करता है।
MTP परत को फ़ज़ करने के लिए, आप MTP लाइब्रेरी में निर्मित फ़ज़र का उपयोग कर सकते हैं।
हम भविष्य के रिलीज़ों में सीधे umap2 से MTP फ़ज़िंग को समर्थन देने की योजना बना रहे हैं।
होस्ट OS पहचान
TBD
यदि आपको Umap2 के साथ समस्याएँ हैं, तो
समस्या निवारण अनुभाग <https://github.com/nccgroup/umap2/blob/master/docs/troubleshooting.rst>_ देखें।
आपको SPI-Py https://github.com/lthiery/SPI-Py और GPIO पायथन लाइब्रेरीज़ की आवश्यकता है।
phy rd का उपयोग करें।