
أداة أمنية متعددة الجوانب تستفيد من واجهات برمجة تطبيقات REST العامة لـ GitHub لأغراض OSINT وForensics وPentesting والمزيد.
Gitxray (اختصار لـ Git X-Ray) هو أداة أمنية متعددة الجوانب مصممة للاستخدام على مستودعات GitHub. يمكن أن تخدم أغراضًا عديدة، بما في ذلك OSINT والطب الشرعي. يستخدم gitxray واجهات برمجة تطبيقات REST العامة لـ GitHub لجمع المعلومات التي قد تستغرق وقتًا طويلًا جدًا للحصول عليها يدويًا. بالإضافة إلى ذلك، فإنه يبحث عن المعلومات في أماكن غير تقليدية.

يمكن استخدام Gitxray، على سبيل المثال، لـ:
العثور على معلومات حساسة في ملفات المساهمين تم الكشف عنها عن طريق الخطأ داخل، على سبيل المثال، مفاتيح PGP المُدرَّعة، أو أسماء المفاتيح.
تحديد الجهات الفاعلة التهديدية في المستودع. يمكنك اكتشاف الحسابات المملوكة بشكل مشترك أو المشتركة، بالإضافة إلى فحص الأحداث العامة لاكتشاف المتابعين المزيفين (Stargazers).
تحديد المستودعات المزيفة أو المخترقة. يمكنه كشف تواريخ الالتزامات التي تم العبث بها وكذلك، على سبيل المثال، أصول الإصدارات التي تم تحديثها بعد الإصدار.
حالات استخدام الطب الشرعي، مثل تصفية النتائج حسب التاريخ للتحقق مما حدث أيضًا في يوم الحادث.
وأكثر من ذلك بكثير! قم بتشغيل أشعة سينية كاملة لجمع كمية هائلة من البيانات.
gitxray -r https://github.com/some-org/some-repository
gitxray -r https://github.com/some-org/some-repository -f user_input -outformat text
gitxray -r https://github.com/some-org/some-repository -f keys,association,starred -outformat text
gitxray -r https://github.com/some-org/some-repository -f warning -outformat text
gitxray -r https://github.com/some-org/some-repository -f 2024-09-01 -outformat text
يرجى الرجوع إلى الوثائق للحصول على حالات استخدام إضافية ومعلومات تمهيدية.
يتعامل Gitxray بلطف مع حدود المعدل ويمكنه العمل خارج الصندوق بدون رمز واجهة برمجة تطبيقات GitHub، ولكن من المحتمل أن تصطدم بحدود المعدل بسرعة كبيرة (قد يستغرق مستودع صغير إلى متوسط الحجم مع 10+ مساهمين ساعات لإكماله أثناء انتظار إعادة تعيين حدود المعدل). هذا موضح بالتفصيل من قبل GitHub في وثائقهم هنا.
إنشاء رمز وصول بسيط للقراءة فقط مخصص للمستودعات العامة سيساعدك مع ذلك على زيادة تلك القيود بشكل كبير. إذا لم تكن في عجلة من أمرك أو يمكنك ترك gitxray قيد التشغيل، فستتمكن من استخدام سعته الكاملة، حيث يتوقف مؤقتًا عن التنفيذ أثناء انتظار رفع الحدود.
يمكنك بعد ذلك تحميل الرمز بأمان باستخدام (يمنع عرض الرمز على الشاشة أو تسجيله في سجل shell الخاص بك):
read -rs GH_ACCESS_TOKEN
export
يمكن لـ Gitxray اختياريًا استخدام واجهة برمجة تطبيقات VirusTotal للتحقق من أي مضيفات تم تحديدها باستخدام واجهة برمجة تطبيقات البحث عن الكود في GitHub، ولكنه يتطلب مفتاح واجهة برمجة تطبيقات VirusTotal للعمل. التعليمات حول كيفية الحصول على مفتاح واجهة برمجة تطبيقات VirusTotal متاحة على: https://docs.virustotal.com/docs/please-give-me-an-api-key
لسوء الحظ، فإن مفاتيح واجهة برمجة التطبيقات الشخصية محدودة (حتى اليوم) من قبل VirusTotal إلى 500 عملية بحث في اليوم.
بمجرد حصولك على مفتاح واجهة برمجة التطبيقات، يمكنك تحميله بأمان في بيئتك باستخدام:
read -rs VT_API_KEY
export
تمت كتابة gitxray بدون استخدام تبعيات حزمة خارجية بخلاف مكتبة requests.
gitxray موجود على PyPI ويمكن تثبيته وتحديثه باستخدام:
pip install gitxray --upgrade
بمجرد التثبيت، قم ببساطة بتشغيل gitxray من سطر الأوامر بكتابة:
gitxray -h
gitxray -o https://github.com/kulkansecurity

يمكنك أيضًا تشغيل gitxray مباشرة عن طريق استنساخ أو تنزيل مستودع GitHub الخاص به وتشغيله.
python3 -m pip install -r requirements.txt
cd src/
python3 -m gitxray.gitxray
يجب تحديد أحد ما يلي:
-r, --repository [URL] - تحديد مستودع واحد للفحص. يمكن أن يبدأ عنوان URL اختياريًا بـ https://github.com/. مثال: --repository https://github.com/example/repo
-rf, --repositories-file [FILEPATH] - تقديم مسار ملف يحتوي على قائمة من المستودعات، كل منها في سطر جديد. يجب أن يكون الملف موجودًا. مثال: --repositories-file ./list_of_repos.txt
-o, --organization [URL] - تحديد مؤسسة لفحص جميع المستودعات تحت تلك المؤسسة. يمكن أن يبدأ عنوان URL اختياريًا بـ https://github.com/. مثال: --organization https://github.com/exampleOrg
ستجد هذه الوسائط اختيارية ولكنها مفيدة جدًا في استخدام gitxray الشائع.
-l, --list - قائمة المساهمين إذا تم تحديد مستودع أو قائمة المستودعات إذا تم تحديد مؤسسة. مفيد لمزيد من التركيز على كيانات محددة. مثال: --list
-c, --contributor [USERNAMES] - قائمة بأسماء مستخدمين GitHub مفصولة بفواصل للتركيز عليها داخل المستودع أو المؤسسة المحددة. مثال: --contributor user1,user2
-f, --filters [KEYWORDS] - كلمات مفتاحية مفصولة بفواصل لتصفية النتائج بها، مثل 'user_input' أو 'association' أو 'mac'. مثال: --filters user_input,association,mac
-out, --outfile [FILEPATH] - تحديد مسار الملف لسجل الإخراج. لا يمكن أن يكون دليلاً. مثال: --outfile ./output.log
-outformat, --output-format [FORMAT] - تعيين تنسيق ملف السجل. التنسيقات المدعومة هي html و text و json. الافتراضي هو html. مثال: --output-format json
--shush - يجعل Gitxray أكثر هدوءًا بعدم عرض الإخراج المتعلق بالتقدم. مثال: --shush--debug - تمكين وضع التصحيح للحصول على إخراج مفصل وشامل. مثال: --debugالمستخدم هو المسؤول الوحيد عن ضمان استخدام هذه الأداة وفقًا للقوانين واللوائح المعمول بها، بما في ذلك الحصول على التفويض المناسب لفحص المستودعات وتوزيع أي نتائج يتم إنشاؤها. قد يؤدي الاستخدام غير المصرح به أو مشاركة النتائج إلى انتهاك القوانين المحلية أو الوطنية أو الدولية.