U3F1ZWV6ZTE1Njg4NDY3OTQ0X0FjdGl2YXRpb24xNzc3Mjg2OTg2NDQ=

Usbrip - أداة شرعية بسيطة لأوامر القيادة لتتبع آثار جهاز USB (تاريخ أحداث USB) على جنو / لينكس

Usbrip - أداة شرعية بسيطة لأوامر القيادة لتتبع آثار جهاز USB (تاريخ أحداث USB) على جنو / لينكس

يعد usbrip (مشتقا من "USB Ripper" ، وليس "USB RIP") أداة شرعية مفتوحة المصدر مع واجهة CLI تتيح لك تتبع آثار أجهزة USB (ويعرف أيضا باسم سجل أحداث USB ، وأحداث "متصلة" و "قطع الاتصال" ) علي نظام Linux الآلات.

الوصف
usbrip هو جزء صغير من البرنامج مكتوب في Python 3 النقي (باستخدام بعض الوحدات الخارجية ، انظر Dependencies / PIP ) الذي يوزع ملفات سجل Linux (/var/log/syslog*أو/var/log/messages*حسب التوزيع) لإنشاء جداول محفوظات أحداث USB. قد تحتوي هذه الجداول على الأعمدة التالية: "متصل" (التاريخ والوقت) ، "المستخدم" ، "VID" (معرف البائع) ، "PID" (معرف المنتج) ، "المنتج" ، "الصانع" ، "الرقم التسلسلي" ، "منفذ" و "غير متصل" (التاريخ والوقت). 
إلى جانب ذلك ، يمكنه أيضًا:
  • تصدير المعلومات التي تم جمعها كملف تفريغ JSON (وفتح هذه المقالب ، بالطبع) ؛
  • إنشاء قائمة بأجهزة USB المصرّح بها ( الموثوقة ) باعتبارها JSON (نسميها auth.json) ؛
  • ابحث عن "أحداث انتهاك" بناءً على auth.json: show (أو إنشاء JSON آخر باستخدام) أجهزة USB التي تظهر في السجل ولا تظهر في auth.json؛
  • * عند تثبيته مع -sالعلم * إنشاء مخازن مشفرة (أرشيفات 7zip) للنسخ الاحتياطي وتخزين أحداث USB تلقائيًا بمساعدة برنامج crontabجدولة ؛
  • البحث عن تفاصيل إضافية حول جهاز USB معين استنادًا إلى VID و / أو PID الخاص به.

البدء السريع
usbrip يتوفر للتحميل وتثبيته في PyPI :
$ pip3 install usbrip

لقطات



Git Clone من
أجل البساطة ، يتيح لك الموافقة على تنفيذ جميع الأوامر التي~/usbrip$ظهرت بها البادئة في~/usbripالدليل الذي تم إنشاؤه كنتيجة git clone:
~$ git clone https://github.com/snovvcrash/usbrip.git usbrip && cd usbrip
~/usbrip$

التبعيات
يعمل usbrip معبنية غير معدلة لملفات سجل النظام فقط ، لذلك ، لسوء الحظ ، لن يكون بإمكانه تحليل سجل USB إذا قمت بتغيير تنسيق syslogs (معsyslog-ngأوrsyslog، على سبيل المثال). هذا هو السبب في أن الطوابع الزمنية لحقول "متصلة" و "غير متصلة" ليست لديها السنة ، بالمناسبة. ضع ذلك في الاعتبار. 

حزم ديب
  • python3.6 (أو الأحدث) مترجم
  • python3-venv
  • p7zip ممتلئ (تستخدمه storagesالوحدة)
~$ sudo apt install -y python3-venv p7zip-full


تستخدم حزم PIP USBrip الوحدات النمطية الخارجية التالية:

محمول
لحل تبعيات Python يدويًا (ليس ضروريًا فعليًا بسببpipأوsetup.pyيمكن أتمتة العملية ، انظر التثبيت ) إنشاء بيئة افتراضية (اختياري) وتشغيلهاpipمن الداخل:
~/usbrip$ python3 -m venv venv && source venv/bin/activate
(venv) ~/usbrip$ pip install -r requirements.txt
أو اسمح pipenvللواحد أن يقوم بكل الأعمال القذرة من أجلك:
~/usbrip$ pipenv install && pipenv shell
بعد ذلك يمكنك تشغيل usbrip المنقول:
(venv) ~/usbrip$ python -m usbrip -h
Or
(venv) ~/usbrip$ python __main__.py -h

التثبيت
هناك طريقتان لتثبيت usbrip في النظام:pipأوsetup.py

pipأوsetup.py
أولاً وقبل كل شيء ، usbrip هو pip للتثبيت. هذا يعني أنه بعد استنساخ الريبو ، يمكنك ببساطة بدء عملية تثبيت النقاط وبعد ذلك تشغيل usbrip من أي مكان في جهازك مثل:
~/usbrip$ python3 -m venv venv && source venv/bin/activate
(venv) ~/usbrip$ pip install .

(venv) ~/usbrip$ usbrip -h
أو إذا كنت ترغب في حل تبعيات Python محليًا (دون إزعاج PyPI) ، فاستخدم setup.py:
~/usbrip$ python3 -m venv venv && source venv/bin/activate
(venv) ~/usbrip$ python setup.py install

(venv) ~/usbrip$ usbrip -h
ملاحظة : من المحتمل أنك تريد تشغيل عملية التثبيت أثناء تنشيط بيئة Python الافتراضية (كما هو موضح أعلاه). ثانياً ، يمكن أيضًا تثبيت usbrip في النظام باستخدام البرنامج النصي. عند استخدام بعض الميزات الإضافية تصبح متوفرة:

install.sh
./installers/install.sh
./installers/install.sh

  • يتم إنشاء البيئة الافتراضية تلقائيا.
  • و storageحدة تصبح متوفرة: يمكنك تحديد وظيفة كرونتاب للأحداث USB النسخ الاحتياطي على جدول زمني (على سبيل المثال الوظائف كرونتاب يمكن العثور عليها في usbrip/cron/usbrip.cron).
تحذير : إذا كنت تستخدم جدولة crontab ، فأنت تريد تكوين مهمة cron من sudo crontab -eأجل فرض storage updateتشغيل الوحدة الفرعية كجذر وكذلك حماية كلمات مرور مخازن أحداث USB. يتم حفظ كلمات مرور التخزين في /var/opt/usbrip/usbrip.ini
في ./installers/uninstall.shالسيناريو يزيل جميع التحف التثبيت من النظام الخاص بك. 
لتثبيت استخدام usbrip:
~/usbrip$ chmod +x ./installers/install.sh
~/usbrip$ sudo -H ./installers/install.sh [-l/--local] [-s/--storages]
~/usbrip$ cd

~$ usbrip -h
  • عند -lتمكين التبديل ، يتم حل تبعيات Python من حزم ./3rdPartyTools/.tar المحلية ( ) بدلاً من PyPI.
  • عند -sتمكين التبديل ، لا يتم تثبيت مشروع usbrip فقط ، ولكن يتم أيضًا إنشاء قائمة بأجهزة USB الموثوق بها ، كما يتم إنشاء مخازن وسجلات المخالفات.
ملاحظة : عند استخدام -sالخيار أثناء التثبيت ، تأكد من احتواء سجلات النظام على إدخال جهاز USB خارجي واحد على الأقل يعد شرطي usbrip ضروريًا لإنشاء قائمة الأجهزة الموثوقة (ونتيجة لذلك ، يمكنك إنشاء تخزين المخالفات بنجاح). 
بعد اكتمال التثبيت ، لا تتردد في إزالة المجلد usbrip. 

المسارات
عند التثبيت ، يستخدم usbrip المسارات التالية:
  • /opt/usbrip/ - الدليل الرئيسي للمشروع ؛
  • /var/opt/usbrip/usbrip.ini - ملف تكوين usbrip: يحتفظ بكلمات المرور لمخازن 7zip ؛
  • /var/opt/usbrip/storage/- تخزين أحداث USB: history.7zو violations.7z(تم إنشاؤه أثناء عملية التثبيت) ؛
  • /var/opt/usbrip/log/- سجلات usbrip (يُنصح بتسجيل نشاط usbrip عند استخدام crontab ، انظر usbrip/cron/usbrip.cron) ؛
  • /var/opt/usbrip/trusted/ - قائمة بأجهزة USB الموثوق بها (التي تم إنشاؤها أثناء عملية التثبيت) ؛
  • /usr/local/bin/usbrip- الارتباط إلى /opt/usbrip/venv/bin/usbripالبرنامج النصي.


يمكن تعيين وظائف cron Cron على النحو التالي:
~/usbrip$ sudo crontab -l > tmpcron && echo "" >> tmpcron
~/usbrip$ cat usbrip/cron/usbrip.cron | tee -a tmpcron
~/usbrip$ sudo crontab tmpcron
~/usbrip$ rm tmpcron

uninstall.sh
لإزالة تثبيت استخدام usbrip:
~/usbrip$ chmod +x ./installers/uninstall.sh
~/usbrip$ sudo ./installers/uninstall.sh [-a/--all]
  • عند -aتمكين التبديل ، لا يتم حذف دليل مشروع usbrip فقط ، ولكن أيضًا يتم حذف كل سجلات وسجلات usbrip أيضًا.
ولا تنسَ إزالة وظيفة cron. ملخص 

الاستخدام


# ---------- BANNER ----------

$ usbrip banner
Get usbrip banner.

# ---------- EVENTS ----------

$ usbrip events history [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--user <USER> [<USER> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Get USB event history.

$ usbrip events open <DUMP.JSON> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--user <USER> [<USER> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT>    ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Open USB event dump.

$ usbrip events gen_auth <OUT_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--user <USER> [<USER> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Generate a list of trusted (authorized) USB devices.

$ usbrip events violations <IN_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--user <USE   R> [<USER> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Get USB violation events based on the list of trusted devices.

# ---------- STORAGE ----------

$ usbrip storage list <STORAGE_TYPE> [-q] [--debug]
List contents of the selected storage (7zip archive). STORAGE_TYPE is "history" or "violations".

$ usbrip storage open <STORAGE_TYPE> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--user <USER> [<USER> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]]    [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
Open selected storage (7zip archive). Behaves similary to the EVENTS OPEN submodule.

$ usbrip storage update <STORAGE_TYPE> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--user <USER> [<USER> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Update storage — add USB events to the existing storage (7zip archive). COMPRESSION_LEVEL is a number in [0..9].

$ usbrip storage create <STORAGE_TYPE> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBE   R_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--user <USER> [<USER> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Create storage — create 7zip archive and add USB events to it according to the selected options.

$ usbrip storage passwd <STORAGE_TYPE> [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Change password of the existing storage.

# ---------- IDs ----------

$ usbrip ids search [--vid <VID>] [--pid <PID>] [--offline] [-q] [--debug]
Get extra details about a specific USB device by its <VID> and/or <PID> from the USB ID database.

$ usbrip ids download [-q] [--debug]
Update (download) the USB ID database.
   

مساعدة
للحصول على قائمة اسماء الوحدات النمطية استخدام:
$ usbrip -h
للحصول على قائمة بأسماء الوحدات الفرعية لاستخدام وحدة نمطية محددة:
$ usbrip <module> -h
للحصول على قائمة بجميع مفاتيح التبديل لاستخدام وحدة فرعية محددة:
$ usbrip <module> <submodule> -h

أمثلة
  •  عرض سجل الأحداث لجميع أجهزة USB ، وإخراج لافتة الضغط ، ورسائل المعلومات ، وتفاعل المستخدم ( -q، --quiet) ، ممثلة كقائمة ( -l، --list) مع أحدث 100 إدخال ( -n NUMBER، --number NUMBER):
    $ usbrip events history -ql -n 100
  •  عرض سجل أحداث أجهزة USB الخارجية ( -e، --externalالتي تم قطع اتصالها فعليًا ) والمتمثلة كجدول ( -t، --table) يحتوي على أعمدة "Connected" و "VID" و "PID" و "Disconnected" و "الرقم التسلسلي" ( -c COLUMN [COLUMN]، --column COLUMN [COLUMN]) التي تمت تصفيتها حسب التاريخ ( -d DATE [DATE ...]، --date DATE [DATE ...]) مع السجلات المأخوذة من الملفات الخارجية ( -f FILE [FILE ...]، --file FILE [FILE ...]):
    $ usbrip events history -et -c conn vid pid disconn serial -d "Dec  9" "Dec 10" -f /var/log/syslog.1 /var/log/syslog.2.gz
  •  أنشئ سجل أحداث جميع أجهزة USB وأعد توجيه الإخراج إلى ملف لمزيد من التحليل. عندما لا يكون دفق الإخراج stdout الطرفي ( |أو >على سبيل المثال) ، لن يكون هناك أي أحرف الهروب (اللون) ANSI في الإخراج لذلك لا تتردد في استخدامه بهذه الطريقة. لاحظ أيضًا أن usbrip يستخدم بعض رموز UNICODE ، لذا سيكون من الجيد تحويل الملف الناتج إلى تشفير UTF-8 ( encovعلى سبيل المثال) وكذلك تغيير أحرف السطر الجديد إلى نمط Windowsلقابلية النقل ( awkعلى سبيل المثال):
    usbrip history events -t | awk '{ sub("$", "\r"); print }' > usbrip.out && enconv -x UTF8 usbrip.out
    ملاحظة : يمكنك دائمًا التخلص من شخصيات الهروب لوحدك حتى إذا كنت قد حصلت بالفعل على الإخراج. للقيام بذلك ، قم فقط بنسخ بيانات الإخراج إلىusbrip.outوإضافة awkتعليمة أخرى:
    awk '{ sub("$", "\r"); gsub("\\x1B\\[[0-?]*[ -/]*[@-~]", ""); print }' usbrip.out && enconv -x UTF8 usbrip.out
  •  إنشاء قائمة بأجهزة USB الموثوق بها كملف JSON ( trusted/auth.json) مع سمات "VID" و "PID" التي تحتوي على أول ثلاثة أجهزة متصلة في 26 سبتمبر:
    $ usbrip events gen_auth trusted/auth.json -a vid pid -n 3 -d "Sep 26"
  •  ابحث في سجل أحداث أجهزة USB الخارجية عن الانتهاكات بناءً على قائمة أجهزة USB الموثوق بها ( trusted/auth.json) حسب السمة "PID" ، وقصر الأحداث الناتجة على تلك التي لها "Bob" كمستخدم ، "EvilUSBManufacturer" كشركة مصنعة ، "1234567890 "كرقم تسلسلي وتمثيل الإخراج كجدول مع أعمدة" متصلة "و" VID "و" PID ":
    $ usbrip events violations trusted/auth.json -a pid -et --user Bob --manufact EvilUSBManufacturer --serial 1234567890 -c conn vid pid
  •  ابحث عن تفاصيل حول جهاز USB معين بواسطة VID ( --vid VID) و PID ( --pid PID):
    $ usbrip ids search --vid 0781 --pid 5580
  •  قم بتنزيل أحدث إصدار من usb_ids/usb.idsقاعدة البيانات (المصدر هنا ):
    $ usbrip ids download

الاعتمادات والمراجع



ليست هناك تعليقات
إرسال تعليق

إرسال تعليق

اذا اعجبك الموضوع علق بتعليق If you like the subject, comment on the comment