
Umap2 is the second revision of NCC Group's python based USB host security assessment tool.
Umap2 هي المراجعة الثانية لأداة تقييم أمان مضيف USB المبنية على Python من NCC Group.
ستتضمن هذه المراجعة جميع الميزات التي كانت مدعومة في المراجعة الأولى:
في هذه المراجعة ستكون هناك بعض الميزات الإضافية:
Umap2 مطوَّرة بواسطة فريق NCC Group وفريق Cisco SAS.
تحذير: لا تزال umap2 أداة تجريبية، في مرحلة ألفا. من المحتمل أن تتغير واجهات برمجة التطبيقات وأسماء الملفات القابلة للتنفيذ وما إلى ذلك في المستقبل القريب. استخدمها على مسؤوليتك الخاصة.
#umap2 على Freenode <https://webchat.freenode.net/?channels=umap2>_
Installationنظرًا لأن هذه نسخة مبكرة جدًا، فإن Umap2 غير متاحة بعد على pypi، وبدلاً من ذلك استخدم pip لتثبيتها مباشرة من github:
::
$ pip install git+https://github.com/nccgroup/umap2.git#egg=umap2
Umap2 متوافقة مع python2/3 في معظم الأجزاء. ومع ذلك، فإن سكربت التشويش (umap2kitty) يعمل فقط على python2.
تُدرج اعتماديات Umap2 في setup.py وستُثبَّت مع umap2، ومع ذلك هناك بعض الأشياء التي قد ترغب في القيام بها لإضافة دعم لبعض الأجهزة:
Mass Storage
1. يتطلب صورة قرص باسم **stick.img** في دليل التشغيل
MTP
~~~
1. يتطلب مجلدًا/ملفًا باسم **mtp_fs** في الدليل الحالي.
2. يتطلب حزمة Python باسم pymtpdevice. هذه الحزمة غير متوفرة على pypi
في الوقت الحالي، ولكن يمكن تنزيلها وتثبيتها من هنا:
https://github.com/BinyaminSharet/Mtp
Hardware
--------
- `Facedancer <http://goodfet.sourceforge.net/hardware/facedancer21/>`_
هو العتاد الموصى به لـ Umap2.
تم تطوير Umap2 بناءً عليه، وستحصل على أفضل دعم معه.
- `Raspdancer <http://wiki.yobi.be/wiki/Raspdancer>` مدعوم على RPi
- **GadgetFS** مدعوم جزئيًا.
هذا الدعم تجريبي جدًا (أكثر من بقية أجزاء Umap2)
ومحدود.
- BeagleboneBlack ابتداءً من نواة Linux 4.4.9 مع برنامج تشغيل gadgetfs
معدَّل
- RaspberryPi Zero W ابتداءً من نواة Linux 4.12.0-rc3+ التي لا تتطلب
تصحيحات
- نظرًا لأن 4.12.0-rc3+ لا تتطلب تصحيحات، فقد تكون هناك أجهزة أخرى
يمكن دعمها. إذا كنت تعرف جهازًا من هذا القبيل أو أجريت تغييرات لجعله
يعمل على أجهزة أخرى، فيُرجى إخبارنا.
إذا كنت مهتمًا، فاقرأ **gadget/README.rst** لمزيد من المعلومات.
Usage
-----
Device Emulation
الوظيفة الأساسية لـ Umap2 هي محاكاة جهاز USB. يمكنك محاكاة أحد الأجهزة الموجودة (استخدم umap2list لرؤية الأجهزة المتاحة):
::
$ umap2emulate -P fd:/dev/ttyUSB0 -C mass_storage
أو محاكاة جهازك الخاص:
::
$ umap2emulate -P fd:/dev/ttyUSB0 -C ~/my_mass_storage.py
سيُضاف دليل تفصيلي لإضافة جهازك قريبًا، وفي هذه الأثناء، يمكنك إلقاء نظرة على أجهزة umap2 داخل umap2/dev/
Device Support Scanning
يمكن لـ Umap2 محاولة اكتشاف أنواع أجهزة USB التي يدعمها المضيف.
ويتم ذلك عن طريق محاكاة كل جهاز من الأجهزة المنفذة في Umap2
لفترة زمنية قصيرة،
والتحقق مما إذا كانت رسالة خاصة بالجهاز قد أُرسلت.
::
$ umap2scan -P fd:/dev/ttyUSB0
Vendor Specific Device Support Scanning
بالإضافة إلى فحص دعم فئات الأجهزة المختلفة، يمكن لـ Umap2 فحص المضيف بحثًا عن دعم الأجهزة الخاصة ببائع محدد.
يساعد الفحص الخاص بالبائع في تحديد برامج التشغيل الخاصة بالبائع المتوفرة على المضيف.
يمكن القيام بذلك باستخدام قاعدة بيانات Umap2 VID-PID الحالية (لا تزال قيد العمل عليها)، أو ملف آخر بنفس الصيغة:
::
$ 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!
Fuzzing
يمكن العثور على دليل تفصيلي لاختبار التشويش باستخدام 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. ابدأ أداة التشويش kitty في شل منفصل،
وزوّدها بالمراحل التي تم إنشاؤها في الخطوة 1.
::
$ umap2kitty -s keyboard.stages
3. ابدأ محاكاة لوحة مفاتيح umap2 في وضع التشويش
::
$ umap2fuzz -P fd:/dev/ttyUSB0 -C keyboard
بعد تنفيذ الخطوة 3، ستبدأ جلسة التشويش.
Note About MTP fuzzing
++++++++++++++++++++++
على الرغم من أن umap2 قد تُستخدم لمحاكاة واكتشاف أجهزة MTP
(انظر قسم "الاعتماديات الاختيارية" في هذا README)،
إلا أنها لا تقوم بتشويش طبقة MTP في الوقت الحالي.
من أجل تشويش طبقة MTP،
يمكنك استخدام أداة التشويش المدمجة في مكتبة MTP.
نخطط لدعم تشويش MTP مباشرة من umap2 في الإصدارات المستقبلية.
Host OS Detection
TBD
إذا واجهت مشكلات مع Umap2، فجرّب
قسم استكشاف الأخطاء وإصلاحها <https://github.com/nccgroup/umap2/blob/master/docs/troubleshooting.rst>_
تحتاج إلى مكتبات SPI-Py https://github.com/lthiery/SPI-Py و GPIO الخاصة بـ Python.
استخدم phy rd