Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
usbrip — تتبع تاريخ أحداث USB على GNU/Linux | Kitploit
أدوات/GitHubGitHub/snovvcrash/usbrip
التحقيق الجنائي الرقميالتحاليل الرقمية الجنائيةاستخبارات التهديداتالاستجابة للحوادثتحليل السجلاتArchived
GitHubsnovvcrash/usbrip

usbrip

تتبع تاريخ أحداث USB على GNU/Linux

عرض المستودع
1.2k113منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

logo.png


version.svg python.svg license.svg blackarch.svg built-with-love.svg

usbrip (موروث من "USB Ripper"، وليس "USB R.I.P.") هو أداة بسيطة للأدلة الجنائية بواجهة سطر أوامر تتيح لك تتبع أثر أجهزة USB (أي سجل أحداث USB) على أجهزة لينكس.

جدول المحتويات:

  • الوصف
  • البدء السريع
  • العرض التوضيحي
  • هيكل سجل النظام
  • التبعيات
    • deb
    • pip
  • التثبيت اليدوي
    • Git Clone
    • install.sh
      • المسارات
      • Cron
      • uninstall.sh
  • الاستخدام
    • موجز
    • المساعدة
  • أمثلة
  • الاعتمادات والمراجع
  • مخطط نجوم المستخدمين
  • خاتمة

الوصف

usbrip هو برنامج صغير يحلل بيانات سجلات لينكس: مخرجات journalctl أو محتويات ملفات /var/log/syslog* (أو /var/log/messages*). استنادًا إلى البيانات المجمعة، يمكن لـ usbrip بناء جداول تاريخ أحداث USB تحتوي على الأعمدة التالية:

  • وقت الاتصال (التاريخ والوقت)
  • المضيف
  • VID (معرف البائع)
  • PID (معرف المنتج)
  • المنتج
  • الشركة المصنعة
  • الرقم التسلسلي
  • المنفذ
  • وقت الفصل (التاريخ والوقت)

بالإضافة إلى ذلك، يمكنه أيضًا:

  • تصدير البيانات المجمعة كملف JSON لاستخدامها لاحقًا.
  • إنشاء قائمة بأجهزة USB المصرح بها (الموثوقة) كملف JSON (أطلق عليه اسم auth.json).
  • البحث عن "أحداث انتهاك" بناءً على auth.json: اكتشاف أجهزة USB التي تظهر في السجل ولا تظهر في ملف auth.json.
  • *عند التثبيت باستخدام العلم -s* إنشاء مخازن محمية (أرشيفات 7-Zip) لعمل نسخ احتياطي تلقائي وتجميع أحداث USB بمساعدة جدولة cron.
  • البحث عن تفاصيل إضافية حول جهاز USB محدد بناءً على VID و/أو PID الخاص به.

البدء السريع

الطريقة 1. التثبيت باستخدام pip:

root@kitploit:~
~$ sudo -H python3 -m pip install -U usbrip
~$ usbrip -h

الطريقة 2. تثبيت الإصدار الأحدث باستخدام install.sh (موصى به، ميزات إضافية متاحة):

root@kitploit:~
~$ sudo apt install python3-venv p7zip-full -y
~$ git clone https://github.com/snovvcrash/usbrip && cd usbrip
~/usbrip$ sudo -H installers/install.sh
~/usbrip$ cd
~$ usbrip -h

العرض التوضيحي

showcase.png

Docker (*للعرض فقط!*)

root@kitploit:~
~$ docker run --rm -it snovvcrash/usbrip

هيكل سجل النظام

يدعم usbrip نوعين من الطوابع الزمنية لتحليلها ضمن ملفات سجل النظام:

  1. غير معدلة – هيكل syslog القياسي لـ GNU/Linux ("%b %d %H:%M:%S"، مثال "Jan 1 00:00:00"). هذا النوع من الطابع الزمني لا يوفر معلومات عن السنة.
  2. معدلة (موصى بها) – هيكل syslog أفضل يوفر طوابع زمنية عالية الدقة تشمل السنوات ("%Y-%m-%dT%H:%M:%S.%f%z"، مثال "1970-01-01T00:00:00.000000-00:00").

إذا كان لديك journalctl مثبتًا، فلا داعي للقلق لأنه يمكنه تحويل الطوابع الزمنية مباشرة. وإلا، يمكن تحقيق هيكل syslog المطلوب عن طريق تعيين تنسيق RSYSLOG_FileFormat في إعدادات rsyslog.

  1. قم بتعليق السطر التالي في /etc/rsyslog.conf:
root@kitploit:~
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  1. أضف ملف .conf مخصص لـ usbrip:
root@kitploit:~
~$ echo '$ActionFileDefaultTemplate RSYSLOG_FileFormat' | sudo tee /etc/rsyslog.d/usbrip.conf
  1. *اختياري* احذف ملفات السجل الموجودة:
root@kitploit:~
~$ sudo rm -f /var/log/syslog* /var/log/messages*
  1. أعد تشغيل الخدمة:
root@kitploit:~
~$ sudo systemctl restart rsyslog

أولاً، سيتحقق usbrip مما إذا كان هناك إمكانية لتفريغ أحداث النظام باستخدام journalctl كأكثر خيار قابلية للنقل. إذا لم يكن الأمر كذلك، فسيبحث ويحلل ملفات سجل النظام /var/log/syslog* أو /var/log/messages*.

التبعيات

deb

  • مترجم python3.6 (أو أحدث)
  • python3-venv
  • p7zip-full (يستخدم بواسطة وحدة storage)

pip

  • terminaltables
  • termcolor
  • tqdm

التثبيت اليدوي

Git Clone

للبساطة، دعنا نتفق على أن جميع الأوامر التي يظهر فيها البادئة ~/usbrip$ يتم تنفيذها في الدليل ~/usbrip الذي يتم إنشاؤه نتيجة لعملية git clone:

root@kitploit:~
~$ git clone https://github.com/snovvcrash/usbrip
~$ cd usbrip
~/usbrip$ pwd

install.sh

بالإضافة إلى التثبيت باستخدام pip، يمكن أيضًا تثبيت usbrip باستخدام السكريبت المخصص installers/install.sh.

عند استخدام install.sh، تصبح بعض الميزات الإضافية متاحة:

  • يتم إنشاء البيئة الافتراضية تلقائيًا.
  • يمكنك استخدام وحدة storage – تعيين مهمة cron لنسخ أحداث USB احتياطيًا وفقًا لجدول زمني (مثال على مهمة cron موجود في usbrip/cron/usbrip.cron).

⚠️ تحذير: إذا كنت تستخدم جدولة cron، فأنت تريد تكوين crontab باستخدام sudo crontab -e لفرض تشغيل الوحدة الفرعية storage update كجذر. كلمات مرور التخزين محفوظة في /var/opt/usbrip/usbrip.ini ولا يمكن الوصول إليها إلا من قبل الجذر بشكل افتراضي.

لتثبيت usbrip باستخدام install.sh استخدم:

root@kitploit:~
~/usbrip$ sudo -H installers/install.sh [-l/--local] [-s/--storages]
~/usbrip$ cd
~$ usbrip -h
  • عند تمكين المفتاح -l، يتم حل تبعيات Python من حزم .tar المحلية (دليل 3rdPartyTools) بدلاً من PyPI.
  • عند تمكين المفتاح -s، لا يتم تثبيت مشروع usbrip فحسب، بل يتم أيضًا إنشاء قائمة أجهزة USB الموثوقة ومخازن التاريخ والانتهاكات.

بعد اكتمال التثبيت، يمكنك حذف الدليل ~/usbrip بحرية.

المسارات

عند التثبيت باستخدام install.sh، يستخدم usbrip المسارات التالية:

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

Cron

يمكن تعيين مهام cron على النحو التالي:

root@kitploit:~
~/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

يقوم السكريبت installers/uninstall.sh بإزالة usbrip وجميع آثار التثبيت من نظامك.

لإلغاء تثبيت usbrip استخدم:

root@kitploit:~
~/usbrip$ sudo installers/uninstall.sh [-a/--all]
  • عند تمكين المفتاح -a، لا يتم حذف دليل مشروع usbrip فحسب، بل يتم أيضًا حذف جميع المخازن وسجلات usbrip.

لا تنس إزالة مهمة cron إذا كنت قد قمت بإعدادها.

الاستخدام

موجز

root@kitploit:~
# ---------- BANNER ----------

~$ usbrip banner
الحصول على شعار usbrip.

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

~$ usbrip events history [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--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]
الحصول على سجل أحداث USB.

~$ usbrip events open <DUMP.JSON> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
فتح تفريغ أحداث USB.

~$ sudo usbrip events genauth <OUT_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
إنشاء قائمة بأجهزة USB الموثوقة (المصرح بها).

~$ sudo usbrip events violations <IN_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--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]
الحصول على أحداث انتهاك USB بناءً على قائمة الأجهزة الموثوقة.

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

~$ sudo usbrip storage list <STORAGE_TYPE> [-q] [--debug]
سرد محتويات المخزن المحدد. STORAGE_TYPE إما "history" أو "violations".

~$ sudo usbrip storage open <STORAGE_TYPE> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
فتح المخزن المحدد. يتصرف بشكل مشابه للوحدة الفرعية EVENTS OPEN.

~$ sudo usbrip storage update <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
تحديث المخزن – إضافة أحداث USB إلى المخزن الحالي. COMPRESSION_LEVEL رقم في [0..9].

~$ sudo usbrip storage create <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
إنشاء مخزن – إنشاء أرشيف 7-Zip وإضافة أحداث USB إليه وفقًا للخيارات المحددة.

~$ sudo usbrip storage passwd <STORAGE_TYPE> [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
تغيير كلمة مرور المخزن الحالي.

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

~$ usbrip ids search [--vid <VID>] [--pid <PID>] [--offline] [-q] [--debug]
الحصول على تفاصيل إضافية حول جهاز USB محدد بواسطة <VID> و/أو <PID> من قاعدة بيانات معرفات USB.

~$ usbrip ids download [-q] [--debug]
تحديث (تنزيل) قاعدة بيانات معرفات USB.

المساعدة

للحصول على قائمة بأسماء الوحدات استخدم:

root@kitploit:~
~$ usbrip -h

للحصول على قائمة بأسماء الوحدات الفرعية لوحدة معينة استخدم:

root@kitploit:~
~$ usbrip <MODULE> -h

للحصول على قائمة بجميع المفاتيح لوحدة فرعية معينة استخدم:

root@kitploit:~
~$ usbrip <MODULE> <SUBMODULE> -h

أمثلة

  • عرض سجل أحداث جميع أجهزة USB، مع إخفاء إخراج الشعار ورسائل المعلومات وتفاعل المستخدم (-q, --quiet)، معروضًا كقائمة (-l, --list) بأحدث 100 إدخال (-n NUMBER, --number NUMBER):

    root@kitploit:~
    ~$ usbrip events history -ql -n 100
    
  • عرض سجل أحداث أجهزة USB الخارجية (-e, --external, التي تم فصلها فعليًا) معروضًا كجدول (-t, --table) يحتوي على أعمدة (متصل، VID، PID، مفصول، رقم تسلسلي) (-c COLUMN [COLUMN ...], --column COLUMN [COLUMN ...]) تمت تصفيته حسب التاريخ (-d DATE [DATE ...], ) و PID () مع سجلات مأخوذة من ملفات خارجية (, ):

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

  • usbrip / أدوات Kali Linux
  • كيفية معرفة أجهزة USB التي تم توصيلها بـ Linux / HackWare.ru
  • usbrip: أدلة جنائية USB للينكس، أو كيف أصبحت أليس إيفا / منتدى أمن المعلومات Codeby.net

13cubed.jpg

مخطط نجوم المستخدمين

stargazers

تنزيل الأداة
--date DATE [DATE ...]
--pid <PID> [<PID> ...]
-f FILE [FILE ...]
--file FILE [FILE ...]
root@kitploit:~
~$ usbrip events history -et -c conn vid pid disconn serial -d '1995-09-15' '2018-07-01' --pid 1337 -f /var/log/syslog.1 /var/log/syslog.2.gz

👽 ملاحظة: هناك شيء يجب تذكره عند العمل مع المرشحات. هناك 4 أنواع من التصفية المتاحة: فقط أحداث USB الخارجية (الأجهزة التي يمكن إزالتها بسهولة، -e)، حسب التاريخ (-d)، حسب الحقول (--host, --vid, --pid, --product, --manufact, --serial, --port) و حسب عدد الإدخالات التي تحصل عليها كمخرج (-n). عند تطبيق مرشحات مختلفة في وقت واحد، ستحصل على السلوك التالي: أولاً، يتم تطبيق مرشحات الخارجية و حسب التاريخ، ثم سيبحث usbrip عن قيم الحقل المحددة في تقاطع المرشحين الأخيرين، وفي النهاية سيقطع الإخراج إلى العدد الذي حددته مع الخيار -n. لذا فكر فيه كـ تقاطع لتصفية الخارجية و حسب التاريخ و اتحاد لتصفية حسب الحقول. أتمنى أن يكون هذا واضحًا.

  • بناء سجل أحداث جميع أجهزة USB وإعادة توجيه الإخراج إلى ملف لمزيد من التحليل. عندما لا يكون دفق الإخراج هو stdout الطرفي (| أو > مثلاً) لن تكون هناك أحرف هروب ANSI (لون) في الإخراج لذا لا تتردد في استخدامه بهذه الطريقة. لاحظ أيضًا أن usbrip يستخدم بعض رموز UNICODE لذا سيكون من الجيد تحويل الملف الناتج إلى ترميز UTF-8 (باستخدام encov مثلاً) بالإضافة إلى تغيير أحرف السطر الجديد إلى نمط Windows لسهولة النقل (باستخدام awk مثلاً):

    root@kitploit:~
    ~$ usbrip events history -t | awk '{ sub("$", "\r"); print }' > usbrip.out && enconv -x UTF8 usbrip.out
    

    👽 ملاحظة: يمكنك دائمًا التخلص من أحرف الهروب بنفسك حتى لو حصلت على الإخراج إلى stdout. للقيام بذلك، ما عليك سوى نسخ بيانات الإخراج إلى usbrip.out وتطبيق تعليمة awk إضافية:

    root@kitploit:~
    ~$ awk '{ sub("$", "\r"); gsub("\\x1B\\[[0-?]*[ -/]*[@-~]", ""); print }' usbrip.out && enconv -x UTF8 usbrip.out
    
  • إنشاء قائمة بأجهزة USB الموثوقة كملف JSON (trusted/auth.json) مع سمات VID و PID تحتوي على أول ثلاثة أجهزة متصلة في 30 نوفمبر 1984:

    root@kitploit:~
    ~$ sudo usbrip events genauth trusted/auth.json -a vid pid -n 3 -d '1984-11-30'
    

    ⚠️ تحذير: هناك حالات قد تحتوي فيها محركات أقراص USB مختلفة على أرقام تسلسلية متطابقة. يمكن أن يحدث هذا نتيجة خطأ في التصنيع أو ببساطة بعض الهاكرز تمكنوا من إعادة كتابة شريحة ذاكرة المحرك التي تبين أنها غير قابلة للبرمجة لمرة واحدة وهكذا... على أي حال، "لا يوجد نظام آمن". usbrip لا يتعامل مع مثل هذه الحالات بطريقة ذكية حتى الآن، أي سيعامل زوجًا من الأجهزة بأرقام تسلسلية متطابقة (إذا وجد) كجهاز واحد فيما يتعلق بقائمة الأجهزة الموثوقة ووحدة genauth.

  • البحث في سجل أحداث أجهزة USB الخارجية عن انتهاكات بناءً على قائمة أجهزة USB الموثوقة (trusted/auth.json) بواسطة سمة PID، وتقييد الأحداث الناتجة لتلك التي تحتوي على Bob-PC كاسم مضيف، EvilUSBManufacturer كشركة مصنعة، 0123456789 كرقم تسلسلي، وتمثيل الإخراج كجدول بأعمدة (متصل، VID، PID):

    root@kitploit:~
    ~$ sudo usbrip events violations trusted/auth.json -a pid -et --host Bob-PC --manufact EvilUSBManufacturer --serial 0123456789 -c conn vid pid
    
  • البحث عن تفاصيل حول جهاز USB محدد بواسطة VID (--vid VID) و PID (--pid PID):

    root@kitploit:~
    ~$ usbrip ids search --vid 0781 --pid 5580
    
  • تنزيل أحدث إصدار من قاعدة بيانات usb.ids قاعدة البيانات:

    root@kitploit:~
    ~$ usbrip ids download